Game Multimedia Engine

Client API

Product Documentation

Copyright Notice

©2013-2026 Tencent Cloud. All rights reserved.

Copyright in this document is exclusively owned by Tencent Cloud. You must not reproduce, modify, copy or distribute in any way, in whole or in part, the contents of this document without Tencent Cloud's the prior written consent.

Trademark Notice

All trademarks associated with Tencent Cloud and its services are owned by the Tencent corporate group, including its parent, subsidiaries and affiliated companies, as the case may be. Trademarks of third parties referred to in this document are owned by their respective proprietors.

Service Statement

This document is intended to provide users with general information about Tencent Cloud's products and services only and does not form part of Tencent Cloud's terms and conditions. Tencent Cloud's products or services are subject to change. Specific products and services and the standards applicable to them are exclusively provided for in Tencent Cloud's applicable terms and conditions.

Contents

Client API

SDK for Unity

Integrating SDK

Last updated:2023-01-16 16:08:28

Voice Chat

Last updated:2023-04-27 17:06:33

Speech-to-Text Service

Last updated:2025-08-26 15:50:03

Project Export

Last updated:2024-12-18 14:51:13

SDK for Unreal Engine

Integrating SDK

Last updated:2024-01-18 15:02:24

Speech-to-Text Service

Last updated:2024-01-18 15:02:24

Voice Chat

Last updated:2024-01-18 15:02:24

Cocos2D SDK

Project Configuration

Last updated:2024-01-18 15:11:45

Getting Started

Last updated:2024-01-18 15:11:45

Voice Chat

Last updated:2024-01-18 15:11:45

Speech-to-Text Service

Last updated:2024-01-18 15:11:45

SDK for Windows

Project Configuration

Last updated:2024-01-18 15:11:45

Voice Chat

Last updated:2024-01-18 15:11:45

Speech-to-Text Service

Last updated:2024-01-18 15:11:45

SDK for iOS

Integrating SDK

Last updated:2024-01-18 15:11:45

Voice Chat

Last updated:2024-01-18 15:11:45

Speech-to-Text Service

Last updated:2024-01-18 15:11:45

Project Export

Last updated:2024-01-18 15:11:45

iOS Project Upgrade Guide

Last updated:2024-01-18 15:11:45

SDK for Android

Integrating SDK

Last updated:2024-01-18 15:13:51

Voice Chat

Last updated:2024-01-18 15:13:51

Speech-to-Text Service

Last updated:2024-01-18 15:13:51

Project Export

Last updated:2024-01-18 15:13:51

SDK for macOS

Project Configuration

Last updated:2024-01-18 15:13:51

Voice Chat API

Last updated:2024-01-18 15:13:51

Speech-to-Text Service

Last updated:2024-01-18 15:13:51

H5 SDK

Project Configuration

Last updated:2024-01-18 15:13:51

API Documentation

Last updated:2024-01-18 15:13:51

Electron SDK

Integrating SDK

Last updated:2024-01-18 15:15:48

Voice Chat

Last updated:2024-01-18 15:15:48

Speech-to-Text Service

Last updated:2024-01-18 15:15:48

SDK for Flutter

Integrating SDK

Last updated:2024-01-18 15:15:48

Real-time Voice

Last updated:2025-08-27 09:50:59

Speech-to-Text Service

Last updated:2024-01-18 15:15:48

SDK Version Upgrade Guide

Last updated:2024-01-18 15:15:48

Error Codes

Last updated:2025-10-30 21:44:30

Toolchain

Last updated:2024-01-18 15:15:48

\"}],\"type\":\"code-line\"},{\"id\":\"Q8EFcDf99Xrr9OYVhMdXb\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"KQHl99gq3h_JZ5brP9mvi\",\"children\":[{\"text\":\"3. Add the audio tag\"}],\"nodeId\":\"3.-add-the-audio-tag\",\"type\":\"h4\"},{\"id\":\"yXjj9vhj9mRSIUYel6saG\",\"children\":[{\"id\":\"T4c_22TCRgkBFnXMwkuiP\",\"children\":[{\"text\":\"
\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"aAkF243audEECepQlHJXd\",\"children\":[{\"text\":\"Server-Side Deployment Steps\"}],\"nodeId\":\"server-side-deployment-steps\",\"type\":\"h2\"},{\"id\":\"nsWzO3GchMeImQwVorXvu\",\"children\":[{\"text\":\"The use of the GME SDK requires authentication which involves keys and is not suitable for implementation on the client. You are recommended to deploy it separately.\\nIf only client implementation is needed for the time being, please refer to the provided demo project.\"}],\"type\":\"p\"},{\"id\":\"UByiAbJYCWMTeZjO9LYR5\",\"children\":[{\"text\":\"1. Download the program\"}],\"nodeId\":\"1.-download-the-program\",\"type\":\"h4\"},{\"id\":\"Zfo_4lXpMfT9yNznrG_X7\",\"children\":[{\"id\":\"lDP2q320wEaSpDt2G_yaM\",\"children\":[{\"text\":\"Download\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://main.qcloudimg.com/raw/b1d8e4d8e7321fd67250069d07bf2016.zip\",\"props\":{\"type\":\"link\",\"url\":\"https://main.qcloudimg.com/raw/b1d8e4d8e7321fd67250069d07bf2016.zip\"},\"type\":\"ref\"},{\"text\":\" the sample \"},{\"code\":1,\"text\":\"authBuffer\"},{\"text\":\" program, which can sign the authentication information for a specified \"},{\"code\":1,\"text\":\"SDKAppID\"},{\"text\":\".\"}],\"type\":\"p\"},{\"id\":\"eZ77wFTDisC7t2NKMcwa6\",\"children\":[{\"text\":\"2. Configure the server-side authentication project\"}],\"nodeId\":\"2.-configure-the-server-side-authentication-project\",\"type\":\"h4\"},{\"id\":\"OjLQakFw9aWVryM_ZOazK\",\"children\":[{\"text\":\"Go to the \"},{\"code\":1,\"text\":\"signdemo\"},{\"text\":\" directory and modify the \"},{\"code\":1,\"text\":\"config.js\"},{\"text\":\" file: open the \"},{\"code\":1,\"text\":\"config.js\"},{\"text\":\" file, delete the default configuration, and call the \"},{\"code\":1,\"text\":\"appidMap\"},{\"text\":\" function in the place where the code is deleted (the parameters are the \"},{\"code\":1,\"text\":\"SDKAppid\"},{\"text\":\" applied for on the Tencent Cloud backend and the corresponding authentication key).\"}],\"type\":\"p\"},{\"id\":\"zTtb4sYVFSfv_S_tmqtgR\",\"children\":[{\"id\":\"7COIfKr2quS59KX53faxG\",\"children\":[{\"text\":\"const AuthBufferConfig = function () {\"}],\"type\":\"code-line\"},{\"id\":\"kbTGlGFYS_-Dp_9MQ-JzM\",\"children\":[{\"text\":\" this.appidMap = {};\"}],\"type\":\"code-line\"},{\"id\":\"F8schsUSt7oTb8lVqFD50\",\"children\":[{\"text\":\" this.appidMap[\\\"1400089356\\\"] = \\\"1cfbfd2a1a03a53e\\\";\"}],\"type\":\"code-line\"},{\"id\":\"9UNm3W0PId4IXW7CrZTsA\",\"children\":[{\"text\":\"};\"}],\"type\":\"code-line\"},{\"id\":\"NpLZzyWcB8bOIxzoB220M\",\"children\":[{\"text\":\"// Replace `1400089356` with the `sdkAppid` applied for on the Tencent Cloud backend and replace `1cfbfd2a1a03a53e` with the authentication key corresponding to the `sdkAppid`\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"TmsmyC3TJ1eAm92-AOsDj\",\"children\":[{\"id\":\"Gx1XkbgCFX6SzYqTms57a\",\"children\":[{\"b\":1,\"color\":\"#04C8DC\",\"text\":\"Note: \"}],\"type\":\"p\"},{\"id\":\"NQwN77hO7PUVz7FWMSru5\",\"children\":[{\"text\":\"The \"},{\"code\":1,\"text\":\"AuthKey\"},{\"text\":\" must correspond to your \"},{\"code\":1,\"text\":\"SDKAppid\"},{\"text\":\".\"}],\"type\":\"p\"}],\"hintType\":\"alert\",\"type\":\"hint\"},{\"id\":\"DVQOG1nMp1SQ3xC1r76oA\",\"children\":[{\"text\":\"3. Deploy the server-side authentication project\"}],\"nodeId\":\"3.-deploy-the-server-side-authentication-project\",\"type\":\"h4\"},{\"id\":\"3wzH9frVBo8wMSbQJw8vf\",\"children\":[{\"text\":\"Go to the directory where the sample \"},{\"code\":1,\"text\":\"authBuffer\"},{\"text\":\" program resides and run the following statement to install the dependencies:\"}],\"type\":\"p\"},{\"id\":\"tHlpWrUR9Ciyfs-Z20Odp\",\"children\":[{\"id\":\"xBoEy_V6X-k5yyqvSvgjP\",\"children\":[{\"text\":\"npm i\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"TfYzqmG_xVhUS2wSY5l6C\",\"children\":[{\"text\":\"Then, execute the \"},{\"code\":1,\"text\":\"node index.js\"},{\"text\":\" script to run the signature service.\"}],\"type\":\"p\"},{\"id\":\"Lmp99W6klOzrgwHaukgyK\",\"children\":[{\"id\":\"d9BrH9rwKigoesAc3f3Hg\",\"children\":[{\"b\":1,\"color\":\"#04C8DC\",\"text\":\"Note: \"}],\"type\":\"p\"},{\"id\":\"zwXyMRrk8PK-K-Wm8hMc6\",\"children\":[{\"text\":\"As the async syntax is used, make sure that your node is v8 or later. Run \"},{\"code\":1,\"text\":\"node -v\"},{\"text\":\" on the command line to view the version.\"}],\"type\":\"p\"}],\"hintType\":\"alert\",\"type\":\"hint\"},{\"id\":\"1ujb67isuc01sQd2LnLkK\",\"children\":[{\"text\":\"4. Test the deployment result\"}],\"nodeId\":\"4.-test-the-deployment-result\",\"type\":\"h4\"},{\"id\":\"pLKEuRg2xn0iWcWqgInJw\",\"children\":[{\"text\":\"You can run the following command on the command line for test (make sure that your system has a \"},{\"code\":1,\"text\":\"curl\"},{\"text\":\" command):\"}],\"type\":\"p\"},{\"id\":\"r_p-sG2rdIpAc9oMMm0Kk\",\"children\":[{\"id\":\"GoydkQdWssw1JXULlH6Kt\",\"children\":[{\"text\":\"// Generate a `userSig`:\"}],\"type\":\"code-line\"},{\"id\":\"6QQzQTMeLLvyfSDdZSUlu\",\"children\":[{\"text\":\"curl \\\"http://127.0.0.1:10005/\\\" --data \\\"sdkappid=1400089356&roomid=1234123&openid=1234567\\\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"QeWR9xYq0XgpmrhyINA16\",\"children\":[{\"text\":\"After the signing program is executed, the authentication information will be returned as shown below:\"}],\"type\":\"p\"},{\"id\":\"AdDTJO2bQRYpoYGi1RKfa\",\"children\":[{\"id\":\"W2emlVfI7t2D9RWYOL6XO\",\"children\":[{\"text\":\"{\\\"userSig\\\":\\\"AqhHE7QHLFYPfV/zfyrdRYHfuUn6eOA8g/J6GMjVy//Shr5ByJPTi8hzR2KyXMvn\\\",\\\"errorCode\\\":0}\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"type\":\"p\",\"children\":[{\"text\":\"\"}],\"id\":\"V3iJK0hfYpKE4R-0zA_VQ\"}]"}},"30263":{"categoryId":607,"weight":9,"type":"page","extension":"","pid":30262,"id":30263,"lang":"en","title":"API Documentation","pdfUrl":"","docType":"default","children":[],"firstReleaseTime":"2019-01-12 03:14:22","recentReleaseTime":"2019-01-12 03:14:22","content":{"title":"API Documentation","body":"
Note:
Only some GME features are supported by the SDK for HTML5. Please refer to this document for the supported APIs and evaluate whether the SDK for HTML5 is appropriate for your business scenario.
API
Description
Init
Initializes API
SetTMGDelegate
Sets delegation
EnterRoom
Enters audio room
EnableMic
Turns on/off the capturing device
EnableSpeaker
Turns on/off the playback device
SetMicVolume
Sets mic volume
ExitRoom
Exits audio room
Note:
After a GME API is called successfully, QAVError.OK will be returned with the value being 0.
Authentication is required for room entry in GME. For more information, see the authentication section in relevant documentation.
Operation on devices should be performed after successful room entry.
Starting from Chrome 74, navigator.mediaDevices can only be used in an HTTPS environment; therefore, please use HTTPS.

Integrating JQ

You need to integrate JQ to use the demo.
<!--Step 2: Add the audio container-->
<!--Container, which is used to carry audio tags and cannot be omitted.-->
<div id="gme-audio-wrap"></div>

Initialization APIs

Before initialization, the SDK is in the uninitialized state. A room can be entered only after the initialization authentication is performed and the SDK is initialized.

Initializing the SDK

For more information on how to get parameters, see Access Guide.\nThis API requires the SDKAppID from the Tencent Cloud console and the openId as parameters. The openId uniquely identifies a user with the rules stipulated by the application developer and must be unique in the application (currently, only INT64 is supported).
Note:
The SDK must be initialized before a user can enter a room.

Function prototype

WebGMEAPI.fn.Init = function (document, SdkAppId, openId) {...}
Parameter
Description
document
HTML DOM Document object
SdkAppId
SdkAppId from the Tencent Cloud console
openId
Developer-defined user account with a value greater than 10,000, which is used to identify the user.

Sample code

const cSdkAppId = () => document.getElementById("input-SdkAppId").value;
const cOpenID = () => document.getElementById("input-OpenID").value;
gmeAPI.Init(document, cSdkAppId(), cOpenID());

Setting callbacks

The API class uses the Delegate method to send callback notifications to the application. Register the callback function to the SDK to receive callback messages. The callback function should be registered to the SDK before room entry.

Function prototype

WebGMEAPI.fn.SetTMGDelegate = function (delegate){...}
Parameter
Description
onEvent
SDK callback event

Sample code

gmeAPI.SetTMGDelegate(onEvent);

Voice Chat APIs

You should initialize and call the SDK to enter a room before voice chat can start.

Entering a room

When a user enters a room with the generated authentication information, the ITMG_MAIN_EVENT_TYPE_ENTER_ROOM message will be received as a callback. Mic and speaker are not turned on by default after room entry.

Function prototype

WebGMEAPI.fn.EnterRoom = function (roomId, roomType, authBuffer) {...}
Parameter
Description
roomId
Room ID, which can contain up to 127 characters
roomType
Room audio type
authBuffer
Authentication key. For more information on how to get it, see Project Configuration.

Sample code

function bindButtonEvents() {
$("#start_btn").click(function () {
console.log('start!');
// Step 1: Get the `AuthBuffer`
var FetchSigCgi = 'http://134.175.146.244:10005/';
$.ajax({
type: "POST",
url: FetchSigCgi,
dataType: 'json',
data: {
sdkappid: cSdkAppId(),
roomid: cRoomNum(),
openid: cOpenID(),
},
success: function (json) {
// Step 2: `AuthBuffer` is obtained successfully
if (json && json.errorCode === 0) {
let userSig = json.userSig;
gmeAPI.Init(document, cSdkAppId(), cOpenID());
gmeAPI.SetTMGDelegate(onEvent);
gmeAPI.EnterRoom(cRoomNum(), 1, userSig);
} else {
console.error(json);
}
},
error: function (err) {
console.error(err);
}
});
});

Event Callbacks

After the user enters the room, the message ITMG_MAIN_EVENT_TYPE_ENTER_ROOM will be sent and identified in the OnEvent function.

Sample code

onEvent = function (eventType, result) {
if (eventType === gmeAPI.event.ITMG_MAIN_EVENT_TYPE_ENTER_ROOM)
{
// Entered room successfully
}
else if (eventType === gmeAPI.event.ITMG_MAIN_EVENT_TYPE_USER_UPDATE)
{
app._data.downStreamInfoList = result.PeerInfo;// Received peer information. For more information, see the table below
app._data.brSend = result.UploadBRSend;// Bitrate of the uploaded audio data
app._data.rtt = result.UploadRTT;// Upload RTT
}
else if (eventType === gmeAPI.event.ITMG_MAIN_EVENT_TYPE_EXIT_ROOM)
{
// Exited room successfully
}
else if (eventType === gmeAPI.event.ITMG_MAIN_EVENT_TYPE_ROOM_DISCONNECT)
{
// Room disconnected
}
};
The received peer information is as follows (downStreamInfoList):
Parameter
Description
brRecv
The received bitrate
delay
Receipt delay
jitterBufferMs
Delay caused by jitter
jitterReceived
The received Jitter

Exiting a room

This API is called to exit the current room. It is an async API. There will be a callback after room exit. The returned value of AV_OK indicates a successful async delivery.

Function prototype

WebGMEAPI.fn.ExitRoom = function (){...}

Sample code

gmeAPI.ExitRoom();

Turning on/off the mic

This API is used to turn on/off the mic. Mic and speaker are not turned on by default after room entry.

Function prototype

WebGMEAPI.fn.EnableMic = function (bEnable) {...}
Parameter
Description
isEnabled
To turn on the mic, set this parameter to true; otherwise, set it to false.

Sample code

gmeAPI.EnableMic(false);

Setting the mic volume

This API is used to set the mic volume. The corresponding parameter is volume. 0 indicates that the audio is mute, while 100 indicates that the volume remains unchanged. The default value is 100.

Function prototype

WebGMEAPI.fn.SetMicVolume = function (volume){...}
Parameter
Description
volume
Sets the volume. Value range: 0-100.

Sample code

gmeAPI.SetMicVolume(100);

Turning on/off the speaker

This API is used to turn on/off the speaker.

Function prototype

WebGMEAPI.fn.EnableSpeaker = function (bEnable){...}
Parameter
Description
isEnabled
To turn off the speaker, set this parameter to false; otherwise, set it to true.

Sample code

gmeAPI.EnableSpeaker(true);

","recentReleaseTime":"2024-01-18 15:13:51","slate":"[{\"id\":\"EvtV7WGcymxgHcpZPNLfq\",\"children\":[{\"id\":\"FZ5_WQvAz3M4vFGjgnd54\",\"children\":[{\"b\":1,\"color\":\"#04C8DC\",\"text\":\"Note:\"}],\"type\":\"p\"},{\"id\":\"FZ0Dad1M84DHMOtQzWCZd\",\"children\":[{\"text\":\"Only some GME features are supported by the SDK for HTML5. Please refer to this document for the supported APIs and evaluate whether the SDK for HTML5 is appropriate for your business scenario.\"}],\"type\":\"p\"}],\"hintType\":\"alert\",\"type\":\"hint\"},{\"id\":\"WbrQhpuU4XtGew5j9UkgO\",\"children\":[{\"id\":\"3WcwUjS3ji6Ct42YuNNGf\",\"children\":[{\"id\":\"Bg0PTSaPF0cJPYmFCK9K9\",\"children\":[{\"id\":\"FTwGbhWkmcJQ9PQNEs6TC\",\"children\":[{\"text\":\"API\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"7sIFeenF2HQSaapUYY3nm\",\"children\":[{\"id\":\"dKnk16OA4EwCRH_nzl4dK\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"x4rk328cYOSVD2T7UuyiI\",\"children\":[{\"id\":\"R9wfasupt6PDTxObIcijV\",\"children\":[{\"id\":\"NTDapkUdRG3CQGJg73HrB\",\"children\":[{\"id\":\"HVWgcH9MD3LWpLXEH0c-z\",\"children\":[{\"text\":\"Init\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"g3BJx4PouXPkM_Cm8VYAN\",\"children\":[{\"id\":\"6E6PkKRhtgUnN7dq0z13Q\",\"children\":[{\"id\":\"uy6C-Z0kBwWUyNVEHwdLH\",\"children\":[{\"text\":\"Initializes API\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"B_rQPmTI-hLuDBFFg4BFX\",\"children\":[{\"id\":\"SNGmvQKCNTN6b9R4B9kIr\",\"children\":[{\"id\":\"ZbvzpLFJV1tZwIRHhRfgF\",\"children\":[{\"id\":\"96woKjygTSxGZr_rS6i9N\",\"children\":[{\"text\":\"SetTMGDelegate\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"0OLyjALC2BLRJDOwecgvX\",\"children\":[{\"id\":\"rC4Dr60cyHSNErDPoIFcW\",\"children\":[{\"id\":\"iN_nDdFYMjzWGcJuukCCp\",\"children\":[{\"text\":\"Sets delegation\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"9tzZNgQ_755s5mCTbVj4_\",\"children\":[{\"id\":\"85Tqyw5fwjJk66Yu0SKQz\",\"children\":[{\"id\":\"_--voNAMwFWx4Jb86qTpM\",\"children\":[{\"id\":\"MIO_PE74SpeaLotzynjRR\",\"children\":[{\"text\":\"EnterRoom\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"14bc1CWZkFDFpv59S_9KL\",\"children\":[{\"id\":\"zHkCOEvVyuiQi07YKtfPV\",\"children\":[{\"id\":\"wbmLSVw4PbUYQv4_qsn1D\",\"children\":[{\"text\":\"Enters audio room\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"P0M4HQvNty1fMo8MgdUDC\",\"children\":[{\"id\":\"P8Lo45aiQy6XM10qRI-ON\",\"children\":[{\"id\":\"VJYUenp8JEwbxbyISTII4\",\"children\":[{\"id\":\"BqgwaCaHcNXiW3lWXZ0lM\",\"children\":[{\"text\":\"EnableMic\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"2-9vY36tWj_-hJtgy3B1U\",\"children\":[{\"id\":\"hMSQfR0eXUevVYMdXfTHm\",\"children\":[{\"id\":\"Q9clQX1ba6wUohdta1z7J\",\"children\":[{\"text\":\"Turns on/off the capturing device\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"A-ngaPEgJST0ENvTiKtJH\",\"children\":[{\"id\":\"myr10FYuOkVAp1YkFqlCb\",\"children\":[{\"id\":\"aixc6YKugI83Zg6ld6wyS\",\"children\":[{\"id\":\"yP2KpnH9jfmDK_9EUxRGA\",\"children\":[{\"text\":\"EnableSpeaker\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"dg8uIzToi1aV3sG4fM-Gv\",\"children\":[{\"id\":\"HqYOJm-P_rsukv5sFzmXO\",\"children\":[{\"id\":\"qJ67YwZjHESZdb3ceLWNb\",\"children\":[{\"text\":\"Turns on/off the playback device\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"KI4kT5guhoEUdlhhIbWv_\",\"children\":[{\"id\":\"8Fav1YEo8rR24c_3rY9zj\",\"children\":[{\"id\":\"coisgV5hTxKVzK5-twNVw\",\"children\":[{\"id\":\"vqkoM3vbCc7nrLOlGyhmB\",\"children\":[{\"text\":\"SetMicVolume\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"NyR25PMnSJkVEkUMkYsPN\",\"children\":[{\"id\":\"YdCBYcYfWHCHsM1EJlmjE\",\"children\":[{\"id\":\"d_-Xp_fdGhQjeU0s2G-zh\",\"children\":[{\"text\":\"Sets mic volume\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"dIuiJClq730zFXzx5xMzv\",\"children\":[{\"id\":\"hIf7qo91cpgiGukVgDmLQ\",\"children\":[{\"id\":\"7W4IkjZh3a73jTJb6JOF-\",\"children\":[{\"id\":\"lV6yDkgWP4z8Xst2ygjXg\",\"children\":[{\"text\":\"ExitRoom\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"_WGEKSbMRj2ku6RAqfHah\",\"children\":[{\"id\":\"Ae56UjsGAhMN_07rW25_K\",\"children\":[{\"id\":\"mdxxKROqG6a-VY2q2h9nx\",\"children\":[{\"text\":\"Exits audio room\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[37,63],\"widthMode\":\"percentage\"},{\"id\":\"zQAVVHpHj8oekWYXF810_\",\"children\":[{\"id\":\"2xn28l58iIqWeqwOJ9WG7\",\"children\":[{\"b\":1,\"color\":\"inherit\",\"text\":\"Note: \"}],\"type\":\"p\"},{\"id\":\"pc_MGeiZfK4uF-yk3l8Er\",\"children\":[{\"text\":\"After a GME API is called successfully, \"},{\"code\":1,\"text\":\"QAVError.OK\"},{\"text\":\" will be returned with the value being 0.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"-6CzxemmBPoWoPPGkUlEI\",\"children\":[{\"text\":\"Authentication is required for room entry in GME. For more information, see the authentication section in relevant documentation.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"Hs5Il5Jg3urulnCyg3X_X\",\"children\":[{\"text\":\"Operation on devices should be performed after successful room entry.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"TSpvhB55Erwv5WLJuSrkZ\",\"children\":[{\"text\":\"Starting from Chrome 74, \"},{\"code\":1,\"text\":\"navigator.mediaDevices\"},{\"text\":\" can only be used in an HTTPS environment; therefore, please use HTTPS.\"}],\"start\":false,\"type\":\"uli\"}],\"hintType\":\"info\",\"type\":\"hint\"},{\"id\":\"fP9Y-DWg55reNcjcbsE_Z\",\"children\":[{\"text\":\"Integrating JQ\"}],\"nodeId\":\"integrating-jq\",\"type\":\"h2\"},{\"id\":\"aJVSllv2cwbWb5EAYWYBR\",\"children\":[{\"text\":\"You need to integrate JQ to use the demo.\"}],\"type\":\"p\"},{\"id\":\"Iif8pUSDv-Rs5VmpdRCRy\",\"children\":[{\"id\":\"US26-q2d7jShNQn439H5g\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"},{\"id\":\"QPoKn_-a-N5X-Cg6qXgSu\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"},{\"id\":\"a-63UlxR2Hs-0QIV36sSD\",\"children\":[{\"text\":\"
\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"P4ITCET5CM9aLAGwRZKUo\",\"children\":[{\"text\":\"Initialization APIs\"}],\"nodeId\":\"initialization-apis\",\"type\":\"h2\"},{\"id\":\"mehRK8iNEbh7HEUANceOq\",\"children\":[{\"text\":\"Before initialization, the SDK is in the uninitialized state. A room can be entered only after the initialization authentication is performed and the SDK is initialized.\"}],\"type\":\"p\"},{\"id\":\"PnpFLtfqVdy5kCO9c9n4e\",\"children\":[{\"text\":\"Initializing the SDK\"}],\"nodeId\":\"initializing-the-sdk\",\"type\":\"h3\"},{\"id\":\"gS-V-YNx3HEu23r6oU-st\",\"children\":[{\"text\":\"For more information on how to get parameters, see \"},{\"id\":\"RXHEeTRfP__GlYJ58qA4T\",\"children\":[{\"text\":\"Access Guide\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://intl.cloud.tencent.com/document/product/607/10782\",\"props\":{\"type\":\"link\",\"url\":\"https://intl.cloud.tencent.com/document/product/607/10782\"},\"type\":\"ref\"},{\"text\":\".\\nThis API requires the \"},{\"code\":1,\"text\":\"SDKAppID\"},{\"text\":\" from the Tencent Cloud console and the \"},{\"code\":1,\"text\":\"openId\"},{\"text\":\" as parameters. The \"},{\"code\":1,\"text\":\"openId\"},{\"text\":\" uniquely identifies a user with the rules stipulated by the application developer and must be unique in the application (currently, only INT64 is supported).\"}],\"type\":\"p\"},{\"id\":\"vG-c3XKkHsKYcC8kdlTSk\",\"children\":[{\"id\":\"jHI82gwmgVgEW_VsFy9ph\",\"children\":[{\"b\":1,\"color\":\"#04C8DC\",\"text\":\"Note: \"}],\"type\":\"p\"},{\"id\":\"SNcJgf47FsleLHgQVwwri\",\"children\":[{\"text\":\"The SDK must be initialized before a user can enter a room.\"}],\"type\":\"p\"}],\"hintType\":\"alert\",\"type\":\"hint\"},{\"id\":\"7yohNpYEIdk9CZTuLpwso\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\"function-prototype\",\"type\":\"h3\"},{\"id\":\"KKZWDfX3iOfPSsvHAlPjB\",\"children\":[{\"id\":\"idxPFCeN4nOV_UkU-v524\",\"children\":[{\"text\":\"WebGMEAPI.fn.Init = function (document, SdkAppId, openId) {...}\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"em6vHN3zYufvO5ewbk6GH\",\"children\":[{\"id\":\"0YQ6ZilTkyPaEif6_MPYe\",\"children\":[{\"id\":\"gijq9azEkrWLLGlxyGCnI\",\"children\":[{\"id\":\"4JerF5cIwW3P3BglY00T-\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"l8TVEJ8SEvpNXb4vGAsKl\",\"children\":[{\"id\":\"hMAe1AulHG-pSIVUEUL9E\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"WnlfO8N9VfVbPeZPIlWbS\",\"children\":[{\"id\":\"2aokfBvea1Z24HwudKfOX\",\"children\":[{\"id\":\"PnXkH7wM_UO3S8H3Zdu6h\",\"children\":[{\"id\":\"zvbEh3rJzF20fHbUkP7fL\",\"children\":[{\"text\":\"document\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"FOkbrE7pHFMizxLm8eBiT\",\"children\":[{\"id\":\"XyzdOiaTkLOJyYgdBU16m\",\"children\":[{\"id\":\"Cmz3cOM1PdqCpYbHWhhBv\",\"children\":[{\"text\":\"HTML DOM Document object\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"53vY5q-E2evgkX-TmvSP8\",\"children\":[{\"id\":\"GVGsovsSdSW7FLjuIuW4Y\",\"children\":[{\"id\":\"qjhw-jAhBVFb1H88BZb1q\",\"children\":[{\"id\":\"0o9eA_qFW4hBPgjZU_YFY\",\"children\":[{\"text\":\"SdkAppId\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"h9O6trDAXf8GuUJED4rIB\",\"children\":[{\"id\":\"61Sh779wUzhHBgyiymXaS\",\"children\":[{\"id\":\"BWsf5W9MXVzEr4vu0tIn-\",\"children\":[{\"code\":1,\"text\":\"SdkAppId\"},{\"text\":\" from the Tencent Cloud console\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"wm8kP6D1-y3VgZyCmpKlY\",\"children\":[{\"id\":\"YNGSc_RF-Psh8TxAdI8I6\",\"children\":[{\"id\":\"LKDiRYiSgsnfY4XQwblSb\",\"children\":[{\"id\":\"9ganuU62TXDPMk51FEFnd\",\"children\":[{\"text\":\"openId\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"zJ5I-EGc0P-c2RNKiihbI\",\"children\":[{\"id\":\"XLH-opJldHhm_jlnVRfRv\",\"children\":[{\"id\":\"72b3FpYRIznYL0nJdP3zU\",\"children\":[{\"text\":\"Developer-defined user account with a value greater than 10,000, which is used to identify the user.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[13,87],\"widthMode\":\"percentage\"},{\"id\":\"yOls1R77DHtDRh9CZWSbk\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code\",\"type\":\"h3\"},{\"id\":\"vwgqb9qp3EM7ORG4vzRK7\",\"children\":[{\"id\":\"opXk53aIAUR3hCOZkrqHN\",\"children\":[{\"text\":\"const cSdkAppId = () => document.getElementById(\\\"input-SdkAppId\\\").value;\"}],\"type\":\"code-line\"},{\"id\":\"ZpnmydBMFGESXn45nk2qb\",\"children\":[{\"text\":\"const cOpenID = () => document.getElementById(\\\"input-OpenID\\\").value;\"}],\"type\":\"code-line\"},{\"id\":\"DFX-xiPqXI9P0X3VuC6S0\",\"children\":[{\"text\":\"gmeAPI.Init(document, cSdkAppId(), cOpenID());\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"RSdjWC9ipVG8rtAX8usOI\",\"children\":[{\"text\":\"Setting callbacks\"}],\"nodeId\":\"setting-callbacks\",\"type\":\"h3\"},{\"id\":\"wJfW9Mzbv9hhW6PkxuAso\",\"children\":[{\"text\":\"The API class uses the \"},{\"code\":1,\"text\":\"Delegate\"},{\"text\":\" method to send callback notifications to the application. Register the callback function to the SDK to receive callback messages. The callback function should be registered to the SDK before room entry.\"}],\"type\":\"p\"},{\"id\":\"3eH_KfZw_9Dm7haUtHKBg\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\"function-prototype2\",\"type\":\"h4\"},{\"id\":\"nvQHUgcN24zW1gc00y_ex\",\"children\":[{\"id\":\"0EO9ZiC8wmluPCgYQ0fuz\",\"children\":[{\"text\":\"WebGMEAPI.fn.SetTMGDelegate = function (delegate){...}\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"X948_guZu53SWV0wwLVlD\",\"children\":[{\"id\":\"Dfxg9cIdrkmlMc5EHTiEX\",\"children\":[{\"id\":\"baayOkbHKsKSeMr4iN0ai\",\"children\":[{\"id\":\"f1G3n8I58VlbKR3eB-KdH\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"xHmb9Jtnc9pZASd5UwCyi\",\"children\":[{\"id\":\"5OezttAnKhmJhEUGx1l_m\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"BmZrYWfF7Euyj0UIdTV0N\",\"children\":[{\"id\":\"3s7c6s8y_dRrz9jV5DmVd\",\"children\":[{\"id\":\"578GHcxMuKM_VNi9ZLtaB\",\"children\":[{\"id\":\"hk9eXSu8nekQmeDh5heEL\",\"children\":[{\"text\":\"onEvent\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"3D3_0R3zLHzB4ame3YKdI\",\"children\":[{\"id\":\"dxKUhqX4c4yzZxi8ekEgX\",\"children\":[{\"id\":\"vqXT-czpzHlqpXQHBpAI6\",\"children\":[{\"text\":\"SDK callback event\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[38,62],\"widthMode\":\"percentage\"},{\"id\":\"xOwsBozXwPPRUWvydBRi4\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code2\",\"type\":\"h4\"},{\"id\":\"h0T_F8yzw6VLwgb1CEFCI\",\"children\":[{\"id\":\"rRw9ZabauT96euxodwlF5\",\"children\":[{\"text\":\"gmeAPI.SetTMGDelegate(onEvent);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"V0GGwJwiYiD2fuKUtsWOi\",\"children\":[{\"text\":\"Voice Chat APIs\"}],\"nodeId\":\"voice-chat-apis\",\"type\":\"h2\"},{\"id\":\"RHS4fKyak-qtrw3c1oPJ8\",\"children\":[{\"text\":\"You should initialize and call the SDK to enter a room before voice chat can start.\"}],\"type\":\"p\"},{\"id\":\"SWPNHTPjcfxjyW8BhnaCW\",\"children\":[{\"text\":\"Entering a room\"}],\"nodeId\":\"entering-a-room\",\"type\":\"h3\"},{\"id\":\"uMlBRn6nB_S-X8w164lJm\",\"children\":[{\"text\":\"When a user enters a room with the generated authentication information, the \"},{\"code\":1,\"text\":\"ITMG_MAIN_EVENT_TYPE_ENTER_ROOM\"},{\"text\":\" message will be received as a callback. Mic and speaker are not turned on by default after room entry.\"}],\"type\":\"p\"},{\"id\":\"mb58-bJdgsaz4SfJlB3zs\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\"function-prototype3\",\"type\":\"h4\"},{\"id\":\"XxymkC9XrMyjpQ3jAEkAo\",\"children\":[{\"id\":\"wXtd507j3KqKqgV3AXVA7\",\"children\":[{\"text\":\"WebGMEAPI.fn.EnterRoom = function (roomId, roomType, authBuffer) {...}\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"vtM9CbZC3tX-NWcfFgv2H\",\"children\":[{\"id\":\"qNvQ9ELZGLoFh4p8rDVus\",\"children\":[{\"id\":\"tC_B35aI8zUkSkp6w5-wh\",\"children\":[{\"id\":\"AoZII6Sm0Z_OZl93F6iyB\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"4QLqRR_mdG_k-btHb-RI4\",\"children\":[{\"id\":\"nydEhykCRhYHJfqjMhVCs\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"9dQ_bjN2W4vd-jBYnPomb\",\"children\":[{\"id\":\"95Pls9sRIMRhrTXdi2YVP\",\"children\":[{\"id\":\"U1Tsoz58y8S4740Ny295O\",\"children\":[{\"id\":\"3qWkf2b0xWngFhcgPjdYr\",\"children\":[{\"text\":\"roomId\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"_LO7Vxke7VBZdG_9ej7-3\",\"children\":[{\"id\":\"EblSppEqkbbt6AwX0tsLP\",\"children\":[{\"id\":\"K_z-VamQguLy9AOETqSPK\",\"children\":[{\"text\":\"Room ID, which can contain up to 127 characters\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"0vlP6mfSNtuQdHbqLMwfg\",\"children\":[{\"id\":\"SLuYPrSKyhqXxzhj_u8-T\",\"children\":[{\"id\":\"Vo7mYohGQJ1B20OFpZkxh\",\"children\":[{\"id\":\"YNoxIJMPFNsqi8mk1hnU2\",\"children\":[{\"text\":\"roomType\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ACP6cSL9mu6zOLQwwppZp\",\"children\":[{\"id\":\"ELrwLe_4tkOcIa1c1Fta9\",\"children\":[{\"id\":\"EopzBeVZPApYe8TfbW3Rf\",\"children\":[{\"text\":\"Room audio type\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"3EuVZ2dD3w-00_c_pKLIU\",\"children\":[{\"id\":\"8_JCx7ZSGU4iOuJ0nkezx\",\"children\":[{\"id\":\"BQukc7Wxf1AnDKdOORyno\",\"children\":[{\"id\":\"SradAlRtdoZNe_OXEkZCC\",\"children\":[{\"text\":\"authBuffer\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"y8SuKWpswyrq5iIMfOoA_\",\"children\":[{\"id\":\"IqytCtfwpbJ1HAY-l8Nmu\",\"children\":[{\"id\":\"-NvMnpjbtLoHwmT3jLUV_\",\"children\":[{\"text\":\"Authentication key. For more information on how to get it, see \"},{\"id\":\"Pt4aOkjGQgVpixt1lWC25\",\"children\":[{\"text\":\"Project Configuration\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://intl.cloud.tencent.com/document/product/607/30261\",\"props\":{\"type\":\"link\",\"url\":\"https://intl.cloud.tencent.com/document/product/607/30261\"},\"type\":\"ref\"},{\"text\":\".\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[15,85],\"widthMode\":\"percentage\"},{\"id\":\"myFkILs5xbJ7ZkeGfbNwl\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code3\",\"type\":\"h4\"},{\"id\":\"Da3GHlxgalMM4MYxX9Lnr\",\"children\":[{\"id\":\"539h0Qh57YKEiWiRuewm3\",\"children\":[{\"text\":\" function bindButtonEvents() {\"}],\"type\":\"code-line\"},{\"id\":\"URsDF3WXNGRyxHsia30Mv\",\"children\":[{\"text\":\" $(\\\"#start_btn\\\").click(function () {\"}],\"type\":\"code-line\"},{\"id\":\"12IMC6jIAYo5UMKAMgMyG\",\"children\":[{\"text\":\" console.log('start!');\"}],\"type\":\"code-line\"},{\"id\":\"xnkvYd0oLrnxJ_lhFsaGh\",\"children\":[{\"text\":\" // Step 1: Get the `AuthBuffer`\"}],\"type\":\"code-line\"},{\"id\":\"3savL8GoL1QgCSG8Ut4pm\",\"children\":[{\"text\":\" var FetchSigCgi = 'http://134.175.146.244:10005/';\"}],\"type\":\"code-line\"},{\"id\":\"aF_sAL9WIsIrNHflvPGcI\",\"children\":[{\"text\":\" $.ajax({\"}],\"type\":\"code-line\"},{\"id\":\"x8PSvBF73rH2vH9l-jYcB\",\"children\":[{\"text\":\" type: \\\"POST\\\",\"}],\"type\":\"code-line\"},{\"id\":\"io55JhMZfXyCpFGLSnQeq\",\"children\":[{\"text\":\" url: FetchSigCgi,\"}],\"type\":\"code-line\"},{\"id\":\"49WBxOvF2_w07VbOdDqZB\",\"children\":[{\"text\":\" dataType: 'json',\"}],\"type\":\"code-line\"},{\"id\":\"pkIJzE7oHI84xyEkGPov7\",\"children\":[{\"text\":\" data: {\"}],\"type\":\"code-line\"},{\"id\":\"tspC4YsOLRL9fMAJzZcU3\",\"children\":[{\"text\":\" sdkappid: cSdkAppId(),\"}],\"type\":\"code-line\"},{\"id\":\"CzaIvkJfBGMpfcUKCIXyh\",\"children\":[{\"text\":\" roomid: cRoomNum(),\"}],\"type\":\"code-line\"},{\"id\":\"9JUjpFmGvEHAVuUEA133b\",\"children\":[{\"text\":\" openid: cOpenID(),\"}],\"type\":\"code-line\"},{\"id\":\"mbiUZI9WmZtbNnH16V2Ll\",\"children\":[{\"text\":\" },\"}],\"type\":\"code-line\"},{\"id\":\"kLAyZIuVAivXUIlMM5i94\",\"children\":[{\"text\":\" success: function (json) {\"}],\"type\":\"code-line\"},{\"id\":\"3CKUvYkDMqCSQQuuyuwAF\",\"children\":[{\"text\":\" // Step 2: `AuthBuffer` is obtained successfully\"}],\"type\":\"code-line\"},{\"id\":\"uQx9oK4kGU41Ooq858ZM0\",\"children\":[{\"text\":\" if (json && json.errorCode === 0) {\"}],\"type\":\"code-line\"},{\"id\":\"DF2sV9th_JwAOVj0CYmm7\",\"children\":[{\"text\":\" let userSig = json.userSig;\"}],\"type\":\"code-line\"},{\"id\":\"1TxYaQj1M_OprTo9NLiw-\",\"children\":[{\"text\":\" gmeAPI.Init(document, cSdkAppId(), cOpenID());\"}],\"type\":\"code-line\"},{\"id\":\"1yHV7z97qTVzTHXuRxkxR\",\"children\":[{\"text\":\" gmeAPI.SetTMGDelegate(onEvent);\"}],\"type\":\"code-line\"},{\"id\":\"L0QoNwKXjXuktnk1LU4WR\",\"children\":[{\"text\":\" gmeAPI.EnterRoom(cRoomNum(), 1, userSig);\"}],\"type\":\"code-line\"},{\"id\":\"aZJ59rF4wHGNwY4WSduoh\",\"children\":[{\"text\":\" } else {\"}],\"type\":\"code-line\"},{\"id\":\"g2rqbBOA70GXzVj28no2z\",\"children\":[{\"text\":\" console.error(json);\"}],\"type\":\"code-line\"},{\"id\":\"XFcAVaCuTqBmOTuUHnW7H\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"32K6HjiFUu593299sF9Vv\",\"children\":[{\"text\":\" },\"}],\"type\":\"code-line\"},{\"id\":\"mRK8VfADc6iVHOabjIv5J\",\"children\":[{\"text\":\" error: function (err) {\"}],\"type\":\"code-line\"},{\"id\":\"qmRbsQP67JfZ6AydZ0xIY\",\"children\":[{\"text\":\" console.error(err);\"}],\"type\":\"code-line\"},{\"id\":\"4imuLjchAd-eTntQTWmxf\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"Bqr4tH4wGrRHa4OzNOXtu\",\"children\":[{\"text\":\" });\"}],\"type\":\"code-line\"},{\"id\":\"u-jXJjxTzZqoIYvM3dl3A\",\"children\":[{\"text\":\" });\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"ppuZGClzkYeSZFmw-Mn4D\",\"children\":[{\"text\":\"Event Callbacks\"}],\"nodeId\":\"event-callbacks\",\"type\":\"h3\"},{\"id\":\"6x6I15D9rS1I-9YRTWE3h\",\"children\":[{\"text\":\"After the user enters the room, the message \"},{\"code\":1,\"text\":\"ITMG_MAIN_EVENT_TYPE_ENTER_ROOM\"},{\"text\":\" will be sent and identified in the \"},{\"code\":1,\"text\":\"OnEvent\"},{\"text\":\" function.\"}],\"type\":\"p\"},{\"id\":\"HufKtgsq_NZWqKGPoqVD8\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code4\",\"type\":\"h4\"},{\"id\":\"9okSTplAv7-9szPvD1mSH\",\"children\":[{\"id\":\"5RivNemU3EYjNX951hAWY\",\"children\":[{\"text\":\" onEvent = function (eventType, result) {\"}],\"type\":\"code-line\"},{\"id\":\"6fS7YI_W5Q2ya-4Sracpx\",\"children\":[{\"text\":\" if (eventType === gmeAPI.event.ITMG_MAIN_EVENT_TYPE_ENTER_ROOM)\"}],\"type\":\"code-line\"},{\"id\":\"EIapCmlABfbPODbSqG6bi\",\"children\":[{\"text\":\" {\"}],\"type\":\"code-line\"},{\"id\":\"E61STxuzcDLqz4bmHH9wA\",\"children\":[{\"text\":\" // Entered room successfully\"}],\"type\":\"code-line\"},{\"id\":\"XfPjTY7BJer7f9eWGuSb7\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"e6LGH1j0LhYvlu4VMzd6b\",\"children\":[{\"text\":\" else if (eventType === gmeAPI.event.ITMG_MAIN_EVENT_TYPE_USER_UPDATE)\"}],\"type\":\"code-line\"},{\"id\":\"vTIlKTe72-p2fpzwbMnAt\",\"children\":[{\"text\":\" {\"}],\"type\":\"code-line\"},{\"id\":\"5H2ez3r3E9zy4vskta8ly\",\"children\":[{\"text\":\" app._data.downStreamInfoList = result.PeerInfo;// Received peer information. For more information, see the table below\"}],\"type\":\"code-line\"},{\"id\":\"ATAYJmc-3G2Bso1Nohx5m\",\"children\":[{\"text\":\" app._data.brSend = result.UploadBRSend;// Bitrate of the uploaded audio data\"}],\"type\":\"code-line\"},{\"id\":\"smUhNTMSF4x6WdugVVo8o\",\"children\":[{\"text\":\" app._data.rtt = result.UploadRTT;// Upload RTT\"}],\"type\":\"code-line\"},{\"id\":\"y6tn22Mk6BqyHHLVcRKk0\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"oeVsreDk_jZ31f6FbPm7w\",\"children\":[{\"text\":\" else if (eventType === gmeAPI.event.ITMG_MAIN_EVENT_TYPE_EXIT_ROOM)\"}],\"type\":\"code-line\"},{\"id\":\"PTUp4VQzcgKIWJNAHWlc0\",\"children\":[{\"text\":\" {\"}],\"type\":\"code-line\"},{\"id\":\"250qNP6ejFkXIW7WrJjF-\",\"children\":[{\"text\":\" // Exited room successfully\"}],\"type\":\"code-line\"},{\"id\":\"u2FmE3AkWOb94PNBTXECP\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"CMxjifyp-l7K_7Y5hiffV\",\"children\":[{\"text\":\" else if (eventType === gmeAPI.event.ITMG_MAIN_EVENT_TYPE_ROOM_DISCONNECT)\"}],\"type\":\"code-line\"},{\"id\":\"WuO6oZKnDNajyGr5Io63y\",\"children\":[{\"text\":\" {\"}],\"type\":\"code-line\"},{\"id\":\"ho0MBIVvWqINI_kKwuQ9V\",\"children\":[{\"text\":\" // Room disconnected\"}],\"type\":\"code-line\"},{\"id\":\"zOrldJioF_SfJm6rICVer\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"j3wpM6Md2OvhVn-xvk1lM\",\"children\":[{\"text\":\" };\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"0PRK6KiCvBllqWL1sUel9\",\"children\":[{\"text\":\"The received peer information is as follows (downStreamInfoList):\"}],\"type\":\"p\"},{\"id\":\"DQHNF4oePbxy5OeaH2azN\",\"children\":[{\"id\":\"UUVibR8Q0cBTqLGR8TeGt\",\"children\":[{\"id\":\"8TRguZ3ZxO0VqiyaeDWpA\",\"children\":[{\"id\":\"SFzNeP-9cLPf0AWOAshli\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"3MWyOFYOktVh7pIjwuYQ_\",\"children\":[{\"id\":\"a7y0bSv-i9J4PUjoZxWhG\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"jtzoWEvEc1b4JvJQkmaUJ\",\"children\":[{\"id\":\"oT-AxfF0fsRtJbA4kfolS\",\"children\":[{\"id\":\"UbnLcIeT_PWCASVUBF8Pv\",\"children\":[{\"id\":\"fnFqkV-C5Q6glQOxRqR1K\",\"children\":[{\"text\":\"brRecv\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"RTg8CTnhPvij7xRCANZFC\",\"children\":[{\"id\":\"BAegBZuOPkEJyqbGw_tGn\",\"children\":[{\"id\":\"8Is9yrJiAht3aCOLvh5aH\",\"children\":[{\"text\":\"The received bitrate\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"ib8TMlkYzz1mS5Yzh6Lj3\",\"children\":[{\"id\":\"jrWXQoQ-ZSsrECypkH6A5\",\"children\":[{\"id\":\"lvmtS8GRAzGDUXFE3N5S-\",\"children\":[{\"id\":\"kcDoEAb2SvrsSv_E6Iyeo\",\"children\":[{\"text\":\"delay\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"55YEuDr124LH7kHy2jLPx\",\"children\":[{\"id\":\"OcxzmGcEQh1KKa9BtlLdu\",\"children\":[{\"id\":\"cDISFhZcOJ7OwIH7rb_CK\",\"children\":[{\"text\":\"Receipt delay\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"Md0hmLHvrUf-i4DDAsxA6\",\"children\":[{\"id\":\"WwyAc4uWiy25b6p2AaE3O\",\"children\":[{\"id\":\"DQL0gj_3oyB-HR_W88kOd\",\"children\":[{\"id\":\"iCiAPx-g7UrXy_QsfWSTO\",\"children\":[{\"text\":\"jitterBufferMs\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"BYOKK4ab7_1en0aorKOXZ\",\"children\":[{\"id\":\"99MDNqzrwLxtschZtTgdo\",\"children\":[{\"id\":\"9boBYSyT_JflmXipfIsGC\",\"children\":[{\"text\":\"Delay caused by jitter\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"saf_UH4kvqpwRZRNNvnY-\",\"children\":[{\"id\":\"RNt1xGTJBvpMpTObvR7mS\",\"children\":[{\"id\":\"L2qEeNPWL2--i7qNkS-fY\",\"children\":[{\"id\":\"9yhQnZv_HdWUyKEqk0fR7\",\"children\":[{\"text\":\"jitterReceived\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"hhpoFJYbFgbIggmQSFPRp\",\"children\":[{\"id\":\"QyRD2bBKk0VHXiuIHcF_2\",\"children\":[{\"id\":\"U9_IonPwjOIVIFuF7732Z\",\"children\":[{\"text\":\"The received Jitter\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[41,59],\"widthMode\":\"percentage\"},{\"id\":\"8v8eV7l4PrSyn5kZk282i\",\"children\":[{\"text\":\"Exiting a room\"}],\"nodeId\":\"exiting-a-room\",\"type\":\"h3\"},{\"id\":\"wFKIUIACyddrhJzqzVTXL\",\"children\":[{\"text\":\"This API is called to exit the current room. It is an async API. There will be a callback after room exit. The returned value of \"},{\"code\":1,\"text\":\"AV_OK\"},{\"text\":\" indicates a successful async delivery.\"}],\"type\":\"p\"},{\"id\":\"d26DQBuvBcj4UScgE1KWJ\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\"function-prototype4\",\"type\":\"h4\"},{\"id\":\"PRp1AO4D8fEsF2kDwz4Bd\",\"children\":[{\"id\":\"duy7d5-0chXRLLs4oVUuW\",\"children\":[{\"text\":\"WebGMEAPI.fn.ExitRoom = function (){...}\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"vNCsuRuEJWs5NH75M5269\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code5\",\"type\":\"h4\"},{\"id\":\"9ArNBs6Igok7eboc89oWq\",\"children\":[{\"id\":\"jsCXg7_5NmaQkq5IYEM01\",\"children\":[{\"text\":\"gmeAPI.ExitRoom();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"pNPfd0N83b5PWR9KrttCT\",\"children\":[{\"text\":\"Turning on/off the mic\"}],\"nodeId\":\"turning-on.2Foff-the-mic\",\"type\":\"h3\"},{\"id\":\"lLy3T-BcFN6pMg1LB_WtH\",\"children\":[{\"text\":\"This API is used to turn on/off the mic. Mic and speaker are not turned on by default after room entry.\"}],\"type\":\"p\"},{\"id\":\"ZON4LHKrd8kLU3YhysOlZ\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\"function-prototype5\",\"type\":\"h4\"},{\"id\":\"dC2q7UMc05QXUk37bQ2bn\",\"children\":[{\"id\":\"yCPnYN2H5jXh9BjYx89Bq\",\"children\":[{\"text\":\"WebGMEAPI.fn.EnableMic = function (bEnable) {...}\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"BNe0LuXPetDCAFSW1sr1M\",\"children\":[{\"id\":\"H2wErk0yezZvSUsZHOPmG\",\"children\":[{\"id\":\"BQWP0_c_fXwPRhE1cQyHu\",\"children\":[{\"id\":\"1l4t4fW7p3077EugrbGju\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"-0PJerJKfsF3YruiZZ5o_\",\"children\":[{\"id\":\"NS_6JDKv3Q66dJuEwtYva\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"Jyo_2TWRwcXb1Qi1Jy52D\",\"children\":[{\"id\":\"3v4mJIKnTMgroMBKHGPdc\",\"children\":[{\"id\":\"9Ju9Sf06tPpeyRXJshN_1\",\"children\":[{\"id\":\"7AurpS_zCokJrIj50o1xR\",\"children\":[{\"text\":\"isEnabled\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"zcRqYGwKWHP3xQ0qPV1X4\",\"children\":[{\"id\":\"GtiyxwWEOctFZYJ9dkDqG\",\"children\":[{\"id\":\"oHqWwOQ8uar-1LwNEGbzT\",\"children\":[{\"text\":\"To turn on the mic, set this parameter to \"},{\"code\":1,\"text\":\"true\"},{\"text\":\"; otherwise, set it to \"},{\"code\":1,\"text\":\"false\"},{\"text\":\".\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[16,84],\"widthMode\":\"percentage\"},{\"id\":\"SFx2WH7992fI2GgMWLXIl\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code6\",\"type\":\"h4\"},{\"id\":\"d6LtpJaQmCBjQhoxqW5_S\",\"children\":[{\"id\":\"JgN0kyHKh-CSOrXiE-kl0\",\"children\":[{\"text\":\"gmeAPI.EnableMic(false);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"vpApqUwWcHwCazhnR4Php\",\"children\":[{\"text\":\"Setting the mic volume\"}],\"nodeId\":\"setting-the-mic-volume\",\"type\":\"h3\"},{\"id\":\"AY3oe_E5Jz0tu_zTlRvqS\",\"children\":[{\"text\":\"This API is used to set the mic volume. The corresponding parameter is \"},{\"code\":1,\"text\":\"volume\"},{\"text\":\". 0 indicates that the audio is mute, while 100 indicates that the volume remains unchanged. The default value is 100.\"}],\"type\":\"p\"},{\"id\":\"Ozcr8_9Ox3i4TGOx5tTAC\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\"function-prototype6\",\"type\":\"h4\"},{\"id\":\"MBbrBMIQicqEjro_1u0Uk\",\"children\":[{\"id\":\"NuA7qJ3ugw_rNu0rtqKu1\",\"children\":[{\"text\":\"WebGMEAPI.fn.SetMicVolume = function (volume){...}\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"5XKpY8HotBhqPttZJK_il\",\"children\":[{\"id\":\"o21IwIxEj2SDZl9mUpSeY\",\"children\":[{\"id\":\"8YYtenxATNUjILuY7gOSZ\",\"children\":[{\"id\":\"jQjOwJFpGpz5i83ikttwr\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"97R0iBrWYAqYlEUrfSCGS\",\"children\":[{\"id\":\"2V8GyRTFf_SlTouH49gZh\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"vntk-59YZgRPtBuxqqd7N\",\"children\":[{\"id\":\"NQIhTz263TTNUxt4gICbe\",\"children\":[{\"id\":\"BvjLC-5Pa0n9oReLAhh9U\",\"children\":[{\"id\":\"fuWFFj_9dJPPyogQdst0L\",\"children\":[{\"text\":\"volume\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"SOl2BvHJTHK5v2cMGZw04\",\"children\":[{\"id\":\"hRKIIdYwxzFDuwRlDGLUp\",\"children\":[{\"id\":\"DvmoszNtuULM8hKHRdP3u\",\"children\":[{\"text\":\"Sets the volume. Value range: 0-100.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[27,73],\"widthMode\":\"percentage\"},{\"id\":\"t9sSpEHicfI3H4yZEoyfM\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code7\",\"type\":\"h4\"},{\"id\":\"ra0jc0BZDEIuUHDXBH0MX\",\"children\":[{\"id\":\"QD87-HXcjpGQIJkjKWMWJ\",\"children\":[{\"text\":\"gmeAPI.SetMicVolume(100);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"EXba1Ztb7A7xZNwcr9j-E\",\"children\":[{\"text\":\"Turning on/off the speaker\"}],\"nodeId\":\"turning-on.2Foff-the-speaker\",\"type\":\"h3\"},{\"id\":\"8O70ST7JlX-U3__gSeXNI\",\"children\":[{\"text\":\"This API is used to turn on/off the speaker.\"}],\"type\":\"p\"},{\"id\":\"k-FvDuJIBj10pFdjBC8Dm\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\"function-prototype7\",\"type\":\"h4\"},{\"id\":\"v-oPrRV4osq2WzjPJURBP\",\"children\":[{\"id\":\"njPJ_ahd0o3Zp5weRFIgs\",\"children\":[{\"text\":\"WebGMEAPI.fn.EnableSpeaker = function (bEnable){...}\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"9SZqGQOUFDbSmt4eSGuDj\",\"children\":[{\"id\":\"tj-6DFcfrjpFGnOkmW7dw\",\"children\":[{\"id\":\"76Da6nGw_m5_c1NjDEMPl\",\"children\":[{\"id\":\"dQisc8ZjbLWXy55I5xSM6\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"U99P7WQ_uveQe9q2HX85-\",\"children\":[{\"id\":\"RCuRCrwAi3jDQZzGkz0Qd\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"xqjwo_NbxviDDEB_i8clA\",\"children\":[{\"id\":\"Zsure-efkXQpV-Ezrdbp0\",\"children\":[{\"id\":\"vjBUyWNzAV0JlgJJ1tYa0\",\"children\":[{\"id\":\"O-9ADtBQYqL_yyRxNTv1b\",\"children\":[{\"text\":\"isEnabled\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"kPFnB4zuRhmNjM5ZdXIh_\",\"children\":[{\"id\":\"pUb2QwZvPOs75EPvK3nVR\",\"children\":[{\"id\":\"RUBGkCI7xEBmvv7Mon_Ko\",\"children\":[{\"text\":\"To turn off the speaker, set this parameter to \"},{\"code\":1,\"text\":\"false\"},{\"text\":\"; otherwise, set it to \"},{\"code\":1,\"text\":\"true\"},{\"text\":\".\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[15,85],\"widthMode\":\"percentage\"},{\"id\":\"1TlURk4UDXV96z7Ma0zeN\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code8\",\"type\":\"h4\"},{\"id\":\"7MH4I5lmi8_jzvBzJjzxL\",\"children\":[{\"id\":\"vcu_7zihid6PW8_-ihBGr\",\"children\":[{\"text\":\"gmeAPI.EnableSpeaker(true);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"type\":\"p\",\"children\":[{\"text\":\"\"}],\"id\":\"g4l9-2wDGYvueA37spiO3\"}]"}},"32363":{"categoryId":607,"weight":20,"type":"page","extension":"","pid":10780,"id":32363,"lang":"en","title":"SDK Version Upgrade Guide","pdfUrl":"","docType":"default","children":[],"firstReleaseTime":"2019-10-19 02:04:54","recentReleaseTime":"2019-10-19 02:04:54","content":{"title":"SDK Version Upgrade Guide","body":"
This document describes the upgrade of GME.

Upgrade from GME 2.x to 2.9

SDK updates

Dynamic library split
Rename Android package
The GME SDK is updated with the following new library files in addition to libgmesdk.

Library files' corresponding features

The new version of GME splits the dynamic libraries to reduce the package size. You can only import the library files you need. For example, if you only need the voice changing feature, to import libgme_soundtouch is good.
Library File
Feature
libgmefdkaac
1. Used to enter an SD or HD voice room.
2. Used to play back accompaniment files in ACC format
libgmefaad2
Used to play back accompaniment files in MP4 format
libgmeogg
Used to play back accompaniment files in OGG format
libgmelamemp3
Used to play back accompaniment files in MP3 format
libgmesoundtouch
Used for voice changing and pitch changing

Upgrade Notice

For iOS upgrade, please see iOS Project Upgrade guide.\nFor Android upgrade, you need to rename package(change Tencent into GME) and modify obfuscation configuration. Please see Project Export.\nFor Unity upgrade, if you used SD or HD sound quality, or accompaniment, please see Using HD Sound Quality.

Upgrade from GME 2.2 to 2.3.5

SDK updates

New features
Offline voice can be used during voice chat now.
Voice chat can filter offensive, insecure, or inappropriate information.
HTML5-based voice chat is supported now, making voice chat available across all operating systems.
Android v8a architecture is supported now.
Low-latency capture and playback is adaptive to Android now.
Optimizations
Optimized the range voice APIs of the SDK to lower the access threshold.
Optimized noise reduction for voice.
Greatly reduced memory usage by the SDK.

Changes in Major APIs

EnterRoom

The room entering operation has been changed from sync to async. If the return value is 0, the async delivery is successful and waiting to be processed by the callback function; otherwise, the async delivery fails.
public abstract int EnterRoom();

ExitRoom

The room exiting operation has been changed from sync to async. It is handled in the same way as the RoomExitComplete callback function. If the return value is AV_OK, the async delivery is successful.
Note:
If there is a scenario in the application where room entry is performed immediately after room exit, you don't need to wait for the RoomExitComplete callback notification from the ExitRoom API during API call; instead, you can directly call the API.
public abstract int ExitRoom();

Changes in Error Codes

For uniform processing of all error codes, use !AV_OK.
To handle the errors separately, focus on the type of error returned by the API.
Note:
Error code "1" has no specific meaning and will no longer be returned since v2.3.5, so it has been deleted.

Changes in Other APIs

PauseAudio/ResumeAudio

public int PauseAudio()
public int ResumeAudio()
If the ITMGAudioCtrl::PauseAudio or ResumeAudio API is called in an SDK before v2.3, please see the table below for version comparison.
Before v2.3
v2.3
For mutual exclusivity with other modules
Change PauseAudio to Pause and change ResumeAudio to Resume
For using offline voice in voice chat
Delete PauseAudio and ResumeAudio

Changes in the Parameters of the SetLogLevel API

Original API
ITMGContext virtual void SetLogLevel(int logLevel, bool enableWrite, bool enablePrint)
New API
ITMGContext virtual void SetLogLevel(ITMG_LOG_LEVEL levelWrite, ITMG_LOG_LEVEL levelPrint)
Parameter description
Parameter
Type
Description
levelWrite
ITMG_LOG_LEVEL
Sets the level of logs to be written, TMG_LOG_LEVEL_NONE means not to write
levelPrint
ITMG_LOG_LEVEL
Sets the level of logs to be printed, TMG_LOG_LEVEL_NONE means not to print
ITMG_LOG_LEVEL Type
ITMG_LOG_LEVEL
Description
TMG_LOG_LEVEL_NONE=0
Do not print logs
TMG_LOG_LEVEL_ERROR=1
Prints error logs (default)
TMG_LOG_LEVEL_INFO=2
Prints prompt logs
TMG_LOG_LEVEL_DEBUG=3
Prints development and debugging logs
TMG_LOG_LEVEL_VERBOSE=4
Prints high-frequency logs

Upgrade from GME 2.3.5 to 2.5.1

New APIs

GetSendStreamLevel

This API is used to get the real-time audio upstreaming volume level. An int-type value will be returned. Value range: 0–100.
ITMGContextGetInstance()->GetAudioCtrl()->GetSendStreamLevel();

GetRecvStreamLevel

This API is used to get the real-time audio downstreaming volume levels of other members in the room. An int-type value will be returned. Value range: 0–100.
iter->second.level = ITMGContextGetInstance()->GetAudioCtrl()->GetRecvStreamLevel(iter->second.openid.c_str());

API changes

Type change for returned values of voice messaging and speech-to-text APIs

The type of returned values of the following APIs has been changed to int.
StartRecording
UploadRecordedFile
DownloadRecordedFile
PlayRecordedFile
SpeechToText

Upgrade from GME 2.5 to 2.7

New APIs

PlayRecordedFile(const char* filePath, ITMG_VOICE_TYPE voiceType)

This API is used to playback voice message with voice changing effects.

SetAccompanyKey(int nKey)

This API is used to set the voice chat accompaniment up and down.
","recentReleaseTime":"2024-01-18 15:15:48","slate":"[{\"id\":\"CKjvt_idYPE8SC4lUCt21\",\"children\":[{\"text\":\"This document describes the upgrade of GME.\"}],\"type\":\"p\"},{\"id\":\"dalSXWaKDWE7w5xxV-xPX\",\"children\":[{\"text\":\"Upgrade from GME 2.x to 2.9\"}],\"nodeId\":\"upgrade-from-gme-2.x-to-2.9\",\"type\":\"h2\"},{\"id\":\"7CpoPz7GRNSgp4uJvFq3t\",\"children\":[{\"text\":\"SDK updates\"}],\"nodeId\":\"sdk-updates\",\"type\":\"h3\"},{\"id\":\"X_kLgAGALASGRYFevLcSH\",\"children\":[{\"text\":\"Dynamic library split\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"DdgCXkWOHn1IeczJe5hQU\",\"children\":[{\"text\":\"Rename Android package\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"IJbCo7aGkUQRtUXZ7jMN7\",\"children\":[{\"text\":\"The GME SDK is updated with the following new library files in addition to libgmesdk.\"}],\"type\":\"p\"},{\"id\":\"HA50bBmAbwCeb16N0FccZ\",\"children\":[{\"text\":\"Library files' corresponding features\"}],\"nodeId\":\"library-files'-corresponding-features\",\"type\":\"h3\"},{\"id\":\"061hHxqhqjkCRqdW9HbU6\",\"children\":[{\"text\":\"The new version of GME splits the dynamic libraries to reduce the package size. You can only import the library files you need. For example, if you only need the voice changing feature, to import \"},{\"code\":1,\"text\":\"libgme_soundtouch\"},{\"text\":\" is good.\"}],\"type\":\"p\"},{\"id\":\"V8zTMFsGXiUmjSviw1GHk\",\"children\":[{\"id\":\"siBbWRLeRe2pmR0_fL86L\",\"children\":[{\"id\":\"nxH0M4Ll5UpvEvYoNDGhm\",\"children\":[{\"id\":\"BwFQy9WIbOktUtHT0Fxxn\",\"children\":[{\"text\":\"Library File\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"B0VaoxuDc8ptJ5fDvUdKY\",\"children\":[{\"id\":\"Rh7aeiH3w8kDeuoAq4fCa\",\"children\":[{\"text\":\"Feature\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"rzK9Q_sJbwpRRVs1OQVSF\",\"children\":[{\"id\":\"AkT-0HbiT8S1DFwpCw8V8\",\"children\":[{\"id\":\"3D4ehuOThI3SiatbveD8m\",\"children\":[{\"id\":\"iHx_8UIsJovuHIVE3EG31\",\"children\":[{\"text\":\"libgmefdkaac\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"eKUowAp4RDcp-Q3uqmvb6\",\"children\":[{\"id\":\"x22dxS0ETHjpW8OGMJaEn\",\"children\":[{\"text\":\"Used to enter an SD or HD voice room. \"}],\"type\":\"oli\",\"start\":true},{\"id\":\"RaisWh-d_R3A89g2pRn8r\",\"type\":\"oli\",\"children\":[{\"text\":\"Used to play back accompaniment files in ACC format\"}]}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"nssMRndK-5AjONuORuNJr\",\"children\":[{\"id\":\"ltVpg7iuAIG12zCejYhTh\",\"children\":[{\"id\":\"WMApAHRTWkQKIfp0O05yl\",\"children\":[{\"id\":\"yoUo_8jOmdyJiQ72TilJu\",\"children\":[{\"text\":\"libgmefaad2\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"LOM2ISWIQcGvOfmoyt8Er\",\"children\":[{\"id\":\"yfP-NNwh1T2PZ3AcK7wtb\",\"children\":[{\"id\":\"j6P4FdOotfWlHGA2uMKtD\",\"children\":[{\"text\":\"Used to play back accompaniment files in MP4 format\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"QIpsqW-FLaovU8Oa9WxxP\",\"children\":[{\"id\":\"2e1uZ5Tby9KzH_E-i5C8t\",\"children\":[{\"id\":\"GNxPhruamxzQMzijVMQeR\",\"children\":[{\"id\":\"4pc8CdN3mWDwiwb2tj0jr\",\"children\":[{\"text\":\"libgmeogg\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"JhmtVoTvaN77__uivJWIe\",\"children\":[{\"id\":\"zB5MEY1vgMnQY5KsQgrOp\",\"children\":[{\"id\":\"E7wjB659qGmwZO50slQx-\",\"children\":[{\"text\":\"Used to play back accompaniment files in OGG format\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"0_ZB_T7D7if8JLaLtKMzq\",\"children\":[{\"id\":\"_tc9dS4_Lh_LOTUWVMYca\",\"children\":[{\"id\":\"eIiyM2L2QZA5SGOAdFAsG\",\"children\":[{\"id\":\"Rc5ICi77it60NVhAuXO1O\",\"children\":[{\"text\":\"libgmelamemp3\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"5k4fR8m61ZI6HGK1XOTcx\",\"children\":[{\"id\":\"Uq2fuey01gzMWSIhC7QkZ\",\"children\":[{\"id\":\"ZVqLBzBq2VNU-9albJZ44\",\"children\":[{\"text\":\"Used to play back accompaniment files in MP3 format\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"JDJvIt5eYhkjeQRo-z8NJ\",\"children\":[{\"id\":\"hOSLNVYRWcy60hxmztCyQ\",\"children\":[{\"id\":\"K2sXBd5PFXl95rQ7K-kRP\",\"children\":[{\"id\":\"rGZId2aik5y6TdJODsbXx\",\"children\":[{\"text\":\"libgmesoundtouch\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"iktEnQvCHznoL8k5nLxYO\",\"children\":[{\"id\":\"J-e23sMTuALMIliqkmPpe\",\"children\":[{\"id\":\"cAk9e2IkNEF7r0EtorzJ9\",\"children\":[{\"text\":\"Used for voice changing and pitch changing\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[18,82],\"widthMode\":\"percentage\"},{\"id\":\"tMv06XtZbB70JiTEOMTq_\",\"children\":[{\"text\":\"Upgrade Notice\"}],\"nodeId\":\"upgrade-notice\",\"type\":\"h3\"},{\"id\":\"5gu3q6_TlUDTlAExqbkhV\",\"children\":[{\"text\":\"For iOS upgrade, please see \"},{\"id\":\"pQVpkzX-6WoePtCkbjtBK\",\"children\":[{\"text\":\"iOS Project Upgrade guide\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://intl.cloud.tencent.com/document/product/607/46015\",\"props\":{\"type\":\"link\",\"url\":\"https://intl.cloud.tencent.com/document/product/607/46015\"},\"type\":\"ref\"},{\"text\":\".\\nFor Android upgrade, you need to rename package(change Tencent into GME) and modify obfuscation configuration. Please see \"},{\"id\":\"GhpteB6nuniIUDCGZKb4l\",\"children\":[{\"text\":\"Project Export\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://intl.cloud.tencent.com/document/product/607/40862\",\"props\":{\"type\":\"link\",\"url\":\"https://intl.cloud.tencent.com/document/product/607/40862\"},\"type\":\"ref\"},{\"text\":\".\\nFor Unity upgrade, if you used SD or HD sound quality, or accompaniment, please see \"},{\"id\":\"JD8ehP2rCnpfUi3XAluIf\",\"children\":[{\"text\":\"Using HD Sound Quality\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://intl.cloud.tencent.com/document/product/607/46016\",\"props\":{\"type\":\"link\",\"url\":\"https://intl.cloud.tencent.com/document/product/607/46016\"},\"type\":\"ref\"},{\"text\":\".\"}],\"type\":\"p\"},{\"id\":\"p9rSsU0-u2CNepFNWL_Dl\",\"children\":[{\"text\":\"Upgrade from GME 2.2 to 2.3.5\"}],\"nodeId\":\"upgrade-from-gme-2.2-to-2.3.5\",\"type\":\"h2\"},{\"id\":\"I3VNqWaKxAG2pJSEXWukz\",\"children\":[{\"text\":\"SDK updates\"}],\"nodeId\":\"sdk-updates2\",\"type\":\"h3\"},{\"id\":\"NW7a4Pb1O7JDrs0w_vfmN\",\"children\":[{\"b\":1,\"text\":\"New features\"}],\"type\":\"p\"},{\"id\":\"QyZN5cn_uoUzrvDSBzMrT\",\"children\":[{\"text\":\"Offline voice can be used during voice chat now.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"SIqFY2cRqmwwqyIRCvzgY\",\"children\":[{\"text\":\"Voice chat can filter offensive, insecure, or inappropriate information.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"asVJvahIqCWnQqKz-SBCY\",\"children\":[{\"text\":\"HTML5-based voice chat is supported now, making voice chat available across all operating systems.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"3oE8cERzWYFzy3bCcBhsG\",\"children\":[{\"text\":\"Android v8a architecture is supported now.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"p0t1ixcg31k8r_j16SB4-\",\"children\":[{\"text\":\"Low-latency capture and playback is adaptive to Android now.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"HnNz_KXIN8xJLZB7YmYCl\",\"children\":[{\"b\":1,\"text\":\"Optimizations\"}],\"type\":\"p\"},{\"id\":\"8P8IY1PDd-JSd2qTxg8o2\",\"children\":[{\"text\":\"Optimized the range voice APIs of the SDK to lower the access threshold.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"_YEVpFIgw9nJ5rOiCvN1S\",\"children\":[{\"text\":\"Optimized noise reduction for voice.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"8d6Mo26wOD4Wsymt4aasW\",\"children\":[{\"text\":\"Greatly reduced memory usage by the SDK.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"bAcT-WHD28aQDpKbpkOpE\",\"children\":[{\"text\":\"Changes in Major APIs\"}],\"nodeId\":\"changes-in-major-apis\",\"type\":\"h3\"},{\"id\":\"QaJzChbg1FvMcJHAtRf3C\",\"children\":[{\"text\":\"EnterRoom\"}],\"nodeId\":\"enterroom\",\"type\":\"h4\"},{\"id\":\"UJ6uDRZ-VYGTX53O70mzv\",\"children\":[{\"text\":\"The room entering operation has been changed from sync to async. If the return value is 0, the async delivery is successful and waiting to be processed by the callback function; otherwise, the async delivery fails.\"}],\"type\":\"p\"},{\"id\":\"kK59lElPLXmsDWiE5tZre\",\"children\":[{\"id\":\"TAmMo2XBFlucPuzZqV2bA\",\"children\":[{\"text\":\"public abstract int EnterRoom();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"T6mvr-MZ7lKvP3zmkGlot\",\"children\":[{\"text\":\"ExitRoom\"}],\"nodeId\":\"exitroom\",\"type\":\"h4\"},{\"id\":\"Dt51oJLWuXgu4h-iBie0J\",\"children\":[{\"text\":\"The room exiting operation has been changed from sync to async. It is handled in the same way as the RoomExitComplete callback function. If the return value is AV_OK, the async delivery is successful.\"}],\"type\":\"p\"},{\"id\":\"fVO9y_LEBtLn6PNe6H_A5\",\"children\":[{\"id\":\"EGydFlbkZ6HvDBTqSg8kK\",\"children\":[{\"b\":1,\"color\":\"#04C8DC\",\"text\":\"Note: \",\"type\":\"text\"}],\"type\":\"p\"},{\"id\":\"XOfaQ1DgN4688m3urNC9X\",\"children\":[{\"text\":\" If there is a scenario in the application where room entry is performed immediately after room exit, you don't need to wait for the \"},{\"code\":1,\"text\":\"RoomExitComplete\"},{\"text\":\" callback notification from the \"},{\"code\":1,\"text\":\"ExitRoom\"},{\"text\":\" API during API call; instead, you can directly call the API.\"}],\"type\":\"p\"}],\"hintType\":\"alert\",\"type\":\"hint\"},{\"id\":\"Lj7InbW2NwsCxx867MBbb\",\"children\":[{\"id\":\"EQLQI1TWRx2BprEXrHVfe\",\"children\":[{\"text\":\"public abstract int ExitRoom();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"YyZzss7RLP6o87seSsxY9\",\"children\":[{\"text\":\"Changes in Error Codes\"}],\"nodeId\":\"changes-in-error-codes\",\"type\":\"h3\"},{\"id\":\"i9lXkN8C603T1TKIrbWlq\",\"children\":[{\"text\":\"For uniform processing of all error codes, use !AV_OK. \"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"4kT239kcL1jXv7pepb8PB\",\"children\":[{\"text\":\"To handle the errors separately, focus on the type of error returned by the API.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"5RrAzAYGsl8Uusrc0Kn1H\",\"children\":[{\"id\":\"3uNtEVsi1guCu6PFSrgQe\",\"children\":[{\"b\":1,\"color\":\"inherit\",\"text\":\"Note: \",\"type\":\"text\"}],\"type\":\"p\"},{\"id\":\"qxSzAAH5SXzO5Q8t74Suy\",\"children\":[{\"text\":\" Error code \\\"1\\\" has no specific meaning and will no longer be returned since v2.3.5, so it has been deleted. \"}],\"type\":\"p\"}],\"hintType\":\"info\",\"type\":\"hint\"},{\"id\":\"i3-ekZvWqyyZ-8BTT7L8v\",\"children\":[{\"text\":\"Changes in Other APIs\"}],\"nodeId\":\"changes-in-other-apis\",\"type\":\"h3\"},{\"id\":\"1CPWa2XViVw9xk80HOAhR\",\"children\":[{\"text\":\"PauseAudio/ResumeAudio\"}],\"nodeId\":\"pauseaudio.2Fresumeaudio\",\"type\":\"h4\"},{\"id\":\"JV7RIn3ecOmomnTKF-fTi\",\"children\":[{\"id\":\"jO37oDunlronmFawQYv_l\",\"children\":[{\"text\":\"public int PauseAudio()\"}],\"type\":\"code-line\"},{\"id\":\"9Lnh9sR-xSlheR16SNE20\",\"children\":[{\"text\":\"public int ResumeAudio()\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"-IVsZUNEQJRy1cwBlXB_E\",\"children\":[{\"text\":\"If the \"},{\"code\":1,\"text\":\"ITMGAudioCtrl::PauseAudio\"},{\"text\":\" or \"},{\"code\":1,\"text\":\"ResumeAudio\"},{\"text\":\" API is called in an SDK before v2.3, please see the table below for version comparison.\"}],\"type\":\"p\"},{\"id\":\"nCAPedZXN_GB8dy4InQyX\",\"children\":[{\"id\":\"kIEmq_VcYRtZOif9_Qqg2\",\"children\":[{\"id\":\"RgEUX7VL3fFKm1GeuX2pG\",\"children\":[{\"id\":\"j8m7OomNg5H182RL1dbsF\",\"children\":[{\"text\":\"Before v2.3\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"8LH77yxhthLZduyjC6vPC\",\"children\":[{\"id\":\"n7mRfQBYjLTso31BU4VBI\",\"children\":[{\"text\":\"v2.3\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"0RF9E_n3JzlGrjQA2WIva\",\"children\":[{\"id\":\"4YuXKS9JDUicDM0AI1Og3\",\"children\":[{\"id\":\"bT1yoL4OONg5vrfzL062F\",\"children\":[{\"id\":\"jUu6lSxed7pDxxhJoyD14\",\"children\":[{\"text\":\"For mutual exclusivity with other modules\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"b7AK60YHuPxOesAy3OP-8\",\"children\":[{\"id\":\"VVf8R51L7ChbBWU7eD-9V\",\"children\":[{\"id\":\"EEmWY18VrWlI2gLoNF_8v\",\"children\":[{\"text\":\"Change PauseAudio to Pause and change ResumeAudio to Resume\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"WWwo9EOy9NzhFLh6qvO-1\",\"children\":[{\"id\":\"XwGHmntWvsW9itqHntlNo\",\"children\":[{\"id\":\"DW0LbjIPdJ0AXQwxP7mcq\",\"children\":[{\"id\":\"-nY6VjBe4zPzx1GvU6xfv\",\"children\":[{\"text\":\"For using offline voice in voice chat\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"F1sBSFYhJFyUo9lBZvmLQ\",\"children\":[{\"id\":\"ZvLfHVeqcMNAeNySCVK9j\",\"children\":[{\"id\":\"_Aj0e_FtSqorQ6c28ygHp\",\"children\":[{\"text\":\"Delete PauseAudio and ResumeAudio\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[38,62],\"widthMode\":\"percentage\"},{\"id\":\"_XUxaXMx6IYTqy4ZtBblH\",\"children\":[{\"text\":\"Changes in the Parameters of the SetLogLevel API\"}],\"nodeId\":\"changes-in-the-parameters-of-the-setloglevel-api\",\"type\":\"h4\"},{\"id\":\"xycjq0URLagr_cQzBtWXX\",\"children\":[{\"b\":1,\"text\":\"Original API\"}],\"type\":\"p\"},{\"id\":\"KRkINq8ewaAlBa8ntXj3s\",\"children\":[{\"id\":\"8g-PS6uPPJkv_LQWR6U6Z\",\"children\":[{\"text\":\"ITMGContext virtual void SetLogLevel(int logLevel, bool enableWrite, bool enablePrint)\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"oYepKh7nMn3BDgimQCN-u\",\"children\":[{\"b\":1,\"text\":\"New API\"}],\"type\":\"p\"},{\"id\":\"Ld4TDlQmhroMBYM1N95oT\",\"children\":[{\"id\":\"xTDdCl_QWsXAcEgkQlkTh\",\"children\":[{\"text\":\"ITMGContext virtual void SetLogLevel(ITMG_LOG_LEVEL levelWrite, ITMG_LOG_LEVEL levelPrint)\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"S5ifq8FHUF-gt6yVc-GLo\",\"children\":[{\"b\":1,\"text\":\"Parameter description\"}],\"type\":\"p\"},{\"id\":\"nXr4zhcRLyJ_2hv5B6Lz9\",\"children\":[{\"id\":\"EMTiH87Kh0gh3uxhjahbb\",\"children\":[{\"id\":\"kWvvq5X6gS7a0jDqjOczh\",\"children\":[{\"id\":\"iuG1alUKo1SN707c_HFy8\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"47PVvNPgTK5ZLRgFMEmDa\",\"children\":[{\"id\":\"xI5hqH711ld--JaOjFWdo\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"btQdPMCzjw4BF5WVj_AGI\",\"children\":[{\"id\":\"XxN1h8F2J61O0bj7KcSgr\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"swG-vLEGUkPLJUJAyGX9R\",\"children\":[{\"id\":\"Io9ku2CfhqAeYmuOXCpE9\",\"children\":[{\"id\":\"UOmFLPNakVeM-vihCJTm6\",\"children\":[{\"id\":\"mngMOnD2dhGE_AtxaxXsq\",\"children\":[{\"text\":\"levelWrite\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"iCwlsUXOEXqi0AE3skFGT\",\"children\":[{\"id\":\"itKCT-FyZg8KwM5E6oDDM\",\"children\":[{\"id\":\"7uESkxPbJk3FXlagtMEyt\",\"children\":[{\"text\":\"ITMG_LOG_LEVEL\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"gclGdLeL4Ba59iGsRXBQg\",\"children\":[{\"id\":\"9N1feaCYDs5f2mH7QByrZ\",\"children\":[{\"id\":\"Pj8Dtv_LOY3IM5XYvVWxK\",\"children\":[{\"text\":\"Sets the level of logs to be written, TMG_LOG_LEVEL_NONE means not to write\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"d_eSdBgPxo_gq1aoC7_xX\",\"children\":[{\"id\":\"tjIOGuRvvWctMyERq4iPo\",\"children\":[{\"id\":\"K0TuLU6BiQPE6YHS-PLm-\",\"children\":[{\"id\":\"Y5JpDT3RRwZOsfVRYHp_B\",\"children\":[{\"text\":\"levelPrint\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Zc799AvfUqpnM3mM9z5L5\",\"children\":[{\"id\":\"YqhhBZtFd3A8xOhV7hQHP\",\"children\":[{\"id\":\"U5AnY_kjpSnKssIvw8c3W\",\"children\":[{\"text\":\"ITMG_LOG_LEVEL\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Vaav9VFNhRWkOAscsuWAQ\",\"children\":[{\"id\":\"vvv0WU0wSOP8IWPd-BPI9\",\"children\":[{\"id\":\"Pki_fhr7xMd-dt7qQHUOg\",\"children\":[{\"text\":\"Sets the level of logs to be printed, TMG_LOG_LEVEL_NONE means not to print\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[12,19,69],\"widthMode\":\"percentage\"},{\"id\":\"YWBEIT4DOf2yfM0CRi153\",\"children\":[{\"b\":1,\"text\":\"ITMG_LOG_LEVEL Type\"}],\"type\":\"p\"},{\"id\":\"kM1ugF7wEPNBVZly4sJAj\",\"children\":[{\"id\":\"ljf-cTJmNg4IR4Ig0T72m\",\"children\":[{\"id\":\"nLORg76GjFmd_6x03o3UG\",\"children\":[{\"id\":\"9zjYDkfdLgzp624CuzI-h\",\"children\":[{\"text\":\"ITMG_LOG_LEVEL\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"l-P-oWCqqeFCOEgcTXDMw\",\"children\":[{\"id\":\"igmdekD7mG8GJekHUB1Di\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"im22AsXLVfzTSNh-Y0zbo\",\"children\":[{\"id\":\"kkvzFCewQ74lVPcojEzyO\",\"children\":[{\"id\":\"64Y08Q95A3338d7j2NE-H\",\"children\":[{\"id\":\"jI-FW3CZMBYDrnfA2wNsV\",\"children\":[{\"text\":\"TMG_LOG_LEVEL_NONE=0\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"HTaUqt4glp3gXIScXVW66\",\"children\":[{\"id\":\"3lweWrHW5NIoRirnTwESz\",\"children\":[{\"id\":\"TWGw872VIGvI1k8DEP8zk\",\"children\":[{\"text\":\"Do not print logs\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"YkRyNkILJLy5BUeLIabyu\",\"children\":[{\"id\":\"rOId05WPh0bVT7Ry8JRu5\",\"children\":[{\"id\":\"8rOYkSBQcAA3RnfE31oLb\",\"children\":[{\"id\":\"ZUTUHLHCO8WWeCAKpGuBA\",\"children\":[{\"text\":\"TMG_LOG_LEVEL_ERROR=1\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"h-bHS0eCiw0bgbpsyD3On\",\"children\":[{\"id\":\"Gn01DpJ_We2m4uouUqzvF\",\"children\":[{\"id\":\"Mo_pkIDgsVzi1zrIguHLc\",\"children\":[{\"text\":\"Prints error logs (default)\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"InAZxUKaBjq5uHk0DdIpY\",\"children\":[{\"id\":\"fTV7kqI9BaLRYD17a-Rws\",\"children\":[{\"id\":\"lJY94ygN22N3U3OEjWhYB\",\"children\":[{\"id\":\"McS1fOvHhdTJXYSABJHpD\",\"children\":[{\"text\":\"TMG_LOG_LEVEL_INFO=2\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"kGKailNGwJ0Wop95Yl34V\",\"children\":[{\"id\":\"i5QEMMCp3jwW9uOM-hoXP\",\"children\":[{\"id\":\"rfBiBpbeH8rYqnXjPeehV\",\"children\":[{\"text\":\"Prints prompt logs\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"bOa9695waeb0NFqwpD3vB\",\"children\":[{\"id\":\"sqVAEVwSTb7ciOAj1kPc3\",\"children\":[{\"id\":\"22D5BMdryBjdxKTcpk686\",\"children\":[{\"id\":\"pmv2pyZ3joDLJBGlQpuT-\",\"children\":[{\"text\":\"TMG_LOG_LEVEL_DEBUG=3\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"5uKKBVE352vNRFO6aRS-y\",\"children\":[{\"id\":\"m06HNq8mOjaQgzPTkAETQ\",\"children\":[{\"id\":\"Uza5ZeiJ2HfiJ4AiwCugo\",\"children\":[{\"text\":\"Prints development and debugging logs\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"PtL39u1fSJXz052eQi2Eh\",\"children\":[{\"id\":\"GPh4VRYHRpYP8t8_b6P7L\",\"children\":[{\"id\":\"6ROYDrriNiRqk1OFWr6tS\",\"children\":[{\"id\":\"dby7bkQpbR969-DgoOLmM\",\"children\":[{\"text\":\"TMG_LOG_LEVEL_VERBOSE=4\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"xRGi_wk3yHCCsFrBFUQEz\",\"children\":[{\"id\":\"rqpGKU2d98WyK7K6fpZUu\",\"children\":[{\"id\":\"yMdW6m4FlYT6sOs9seWLt\",\"children\":[{\"text\":\"Prints high-frequency logs\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[46,54],\"widthMode\":\"percentage\"},{\"id\":\"brNkfQAVoSjSyywLXfPeS\",\"children\":[{\"text\":\"Upgrade from GME 2.3.5 to 2.5.1\"}],\"nodeId\":\"upgrade-from-gme-2.3.5-to-2.5.1\",\"type\":\"h2\"},{\"id\":\"31JrWEG357VXDQLXx2rH-\",\"children\":[{\"text\":\"New APIs\"}],\"nodeId\":\"new-apis\",\"type\":\"h3\"},{\"id\":\"u6Msg5x332_gg9NadgYRj\",\"children\":[{\"text\":\"GetSendStreamLevel\"}],\"nodeId\":\"getsendstreamlevel\",\"type\":\"h4\"},{\"id\":\"B7oQ4YRoij2NIYJ7cmrQ2\",\"children\":[{\"text\":\"This API is used to get the real-time audio upstreaming volume level. An int-type value will be returned. Value range: 0–100.\"}],\"type\":\"p\"},{\"id\":\"y7cIE0g8DLm4Ocp5pIjVP\",\"children\":[{\"id\":\"eFj6z0bIkjIF7qhWNg7eY\",\"children\":[{\"text\":\"ITMGContextGetInstance()->GetAudioCtrl()->GetSendStreamLevel();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"nslYeEi6g0kA3ObGmg_uB\",\"children\":[{\"text\":\"GetRecvStreamLevel\"}],\"nodeId\":\"getrecvstreamlevel\",\"type\":\"h4\"},{\"id\":\"ChR4zHXWexZC49fOtdwiu\",\"children\":[{\"text\":\"This API is used to get the real-time audio downstreaming volume levels of other members in the room. An int-type value will be returned. Value range: 0–100.\"}],\"type\":\"p\"},{\"id\":\"_bpWoO4ny2gXyjn6y-e0Z\",\"children\":[{\"id\":\"KrLEsBakCy87QFpCfj5ty\",\"children\":[{\"text\":\"iter->second.level = ITMGContextGetInstance()->GetAudioCtrl()->GetRecvStreamLevel(iter->second.openid.c_str());\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"neRqPVHg_nbum5uXDbGXs\",\"children\":[{\"text\":\"API changes\"}],\"nodeId\":\"api-changes\",\"type\":\"h3\"},{\"id\":\"WykaqB5QhzGpb-gxYIkfK\",\"children\":[{\"text\":\"Type change for returned values of voice messaging and speech-to-text APIs\"}],\"nodeId\":\"type-change-for-returned-values-of-voice-messaging-and-speech-to-text-apis\",\"type\":\"h4\"},{\"id\":\"kHr1PPTJRDwS-hXQLRzTj\",\"children\":[{\"text\":\"The type of returned values of the following APIs has been changed to \"},{\"code\":1,\"text\":\"int\"},{\"text\":\".\"}],\"type\":\"p\"},{\"id\":\"-uIogDuSgdtZj0EBMbmC2\",\"children\":[{\"id\":\"NEcpoRpG-rSqZ4Dw1_b0C\",\"children\":[{\"text\":\"StartRecording\"}],\"type\":\"code-line\"},{\"id\":\"S5M03NAm35wS9w_3PO37E\",\"children\":[{\"text\":\"UploadRecordedFile\"}],\"type\":\"code-line\"},{\"id\":\"K_ZGeT1D6GGLf02o4lKNg\",\"children\":[{\"text\":\"DownloadRecordedFile\"}],\"type\":\"code-line\"},{\"id\":\"Yjl-PD8jIXVxrZ3YRHCG5\",\"children\":[{\"text\":\"PlayRecordedFile\"}],\"type\":\"code-line\"},{\"id\":\"TClEfkRrAISFn6pRXYxUM\",\"children\":[{\"text\":\"SpeechToText\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"zhsSgL3K-C04Hn_EK3w1P\",\"children\":[{\"text\":\"Upgrade from GME 2.5 to 2.7\"}],\"nodeId\":\"upgrade-from-gme-2.5-to-2.7\",\"type\":\"h2\"},{\"id\":\"bx-0dN3acKH8N1BBN774b\",\"children\":[{\"text\":\"New APIs\"}],\"nodeId\":\"new-apis2\",\"type\":\"h3\"},{\"id\":\"0T7VZRfqRsYIlMB-vyPqQ\",\"children\":[{\"text\":\"PlayRecordedFile(const char* filePath, ITMG_VOICE_TYPE voiceType)\"}],\"nodeId\":\"playrecordedfile(const-char*-filepath.2C-itmg_voice_type-voicetype)\",\"type\":\"h4\"},{\"id\":\"8Rz6FLhvnrF_qTpkl-tYZ\",\"children\":[{\"text\":\"This API is used to playback voice message with voice changing effects.\"}],\"type\":\"p\"},{\"id\":\"8ECw8GdPw8qyH0MGIGKpS\",\"children\":[{\"text\":\"SetAccompanyKey(int nKey)\"}],\"nodeId\":\"setaccompanykey(int-nkey)\",\"type\":\"h2\"},{\"id\":\"isQWlB_FdTOnuK14gtmTa\",\"children\":[{\"text\":\"This API is used to set the voice chat accompaniment up and down.\"}],\"type\":\"p\"}]"}},"33223":{"categoryId":607,"weight":8,"type":"page","extension":"","pid":10780,"id":33223,"lang":"en","title":"Error Codes","pdfUrl":"https://main.qcloudimg.com/raw/document/intl/product/pdf/607_33223_en.pdf","docType":"default","children":[],"firstReleaseTime":"2019-12-06 01:28:13","recentReleaseTime":"2019-12-06 01:28:13","content":{"title":"Error Codes","body":"

Feature Description

If there is an Error field in the response, it means that the API call failed. For example:
{
"Response": {
"Error": {
"Code": "AuthFailure.SignatureFailure",
"Message": "The provided credentials could not be validated. Please check your signature is correct."
},
"RequestId": "ed93f3cb-f35e-473f-b9f3-0d451b8b79c6"
}
}
Code in Error indicates the error code, and Message indicates the specific information of the error.

Error Code List

Common Error Codes

Error Code
Description
ActionOffline
This API has been deprecated.
AuthFailure.InvalidAuthorization
Authorization in the request header is invalid.
AuthFailure.InvalidSecretId
Invalid key (not a TencentCloud API key type).
AuthFailure.MFAFailure
MFA failed.
AuthFailure.SecretIdNotFound
Key does not exist. Check if the key has been deleted or disabled in the console, and if not, check if the key is correctly entered. Note that whitespaces should not exist before or after the key.
AuthFailure.SignatureExpire
Signature expired. Timestamp and server time cannot differ by more than five minutes. Please ensure your current local time matches the standard time.
AuthFailure.SignatureFailure
Invalid signature. Signature calculation error. Please ensure you’ve followed the signature calculation process described in the Signature API documentation.
AuthFailure.TokenFailure
Token error.
AuthFailure.UnauthorizedOperation
The request is not authorized. For more information, see the CAM documentation.
DryRunOperation
DryRun Operation. It means that the request would have succeeded, but the DryRun parameter was used.
FailedOperation
Operation failed.
InternalError
Internal error.
InvalidAction
The API does not exist.
InvalidParameter
Incorrect parameter.
InvalidParameterValue
Invalid parameter value.
InvalidRequest
The multipart format of the request body is incorrect.
IpInBlacklist
Your IP is in uin IP blacklist.
IpNotInWhitelist
Your IP is not in uin IP whitelist.
LimitExceeded
Quota limit exceeded.
MissingParameter
A parameter is missing.
NoSuchProduct
The product does not exist.
NoSuchVersion
The API version does not exist.
RequestLimitExceeded
The number of requests exceeds the frequency limit.
RequestLimitExceeded.GlobalRegionUinLimitExceeded
Uin exceeds the frequency limit.
RequestLimitExceeded.IPLimitExceeded
The number of ip requests exceeds the frequency limit.
RequestLimitExceeded.UinLimitExceeded
The number of uin requests exceeds the frequency limit.
RequestSizeLimitExceeded
The request size exceeds the upper limit.
ResourceInUse
Resource is in use.
ResourceInsufficient
Insufficient resource.
ResourceNotFound
The resource does not exist.
ResourceUnavailable
Resource is unavailable.
ResponseSizeLimitExceeded
The response size exceeds the upper limit.
ServiceUnavailable
Service is unavailable now.
UnauthorizedOperation
Unauthorized operation.
UnknownParameter
Unknown parameter.
UnsupportedOperation
Unsupported operation.
UnsupportedProtocol
HTTP(S) request protocol error; only GET and POST requests are supported.
UnsupportedRegion
API does not support the requested region.

Service Error Codes

Error Code
Description
FailedOperation.UserFeeNegative
Operation not allowed as your account is in arrears.
InvalidParameter.DateInvalid
Invalid date.
InvalidParameter.DateOutOfSixtyDays
The entered query date range is longer than 60 days.
InvalidParameter.TagKey
Incorrect tag.
InvalidParameter.TimeRangeError
Incorrect query time range.
InvalidParameterValue.InvalidBizId
Invalid BizId.(SDKAppid)
InvalidParameterValue.InvalidRecordMode
Invalid RecordMode.
InvalidParameterValue.InvalidRoomId
Invalid RoomId.
InvalidParameterValue.InvalidSubscribeRecordUserIds
Incorrect blocklist/allowlist format.
InvalidParameterValue.InvalidSubscribeUserIds
The number of entries on the allowlist exceeds 20.
InvalidParameterValue.InvalidTaskId
Invalid taskid.
InvalidParameterValue.InvalidUNSubscribeUserIds
The number of entries on the blocklist exceeds 20.
LimitExceeded.Application
The number of created applications has reached the upper limit.
OperationDenied
Operation denied.
ResourceInUse.TaskInUse
The task already exists.
ResourceNotFound.BizidIsNotFound
Incorrect application ID.
ResourceNotFound.RoomNotFound
The room does not exist.
ResourceNotFound.TaskNotFound
The task ID does not exist.
UnauthorizedOperation.CreateAppDenied
Application creation is not authorized.
UnauthorizedOperation.UnRealNameAuth
Unverified user.
UnsupportedOperation.ServiceNotOpened
The recording service is not activated.
","recentReleaseTime":"2025-10-30 21:44:30","slate":"[{\"children\":[{\"text\":\"Feature Description\"}],\"nodeId\":\"feature-description\",\"type\":\"h2\",\"id\":\"NlBkwPUJZUioIaYV\"},{\"children\":[{\"text\":\"If there is an Error field in the response, it means that the API call failed. For example:\"}],\"type\":\"p\",\"id\":\"n4mmZE3-ihqTZWKO\"},{\"children\":[{\"children\":[{\"text\":\" {\"}],\"type\":\"code-line\",\"id\":\"9QIcEP-LOS9fwP4B\"},{\"children\":[{\"text\":\" \\\"Response\\\": {\"}],\"type\":\"code-line\",\"id\":\"aauCA4HJOhzPehgb\"},{\"children\":[{\"text\":\" \\\"Error\\\": {\"}],\"type\":\"code-line\",\"id\":\"QqTOiySaDfCIFntl\"},{\"children\":[{\"text\":\" \\\"Code\\\": \\\"AuthFailure.SignatureFailure\\\",\"}],\"type\":\"code-line\",\"id\":\"8Eg8RIYFXUsX7Dln\"},{\"children\":[{\"text\":\" \\\"Message\\\": \\\"The provided credentials could not be validated. Please check your signature is correct.\\\"\"}],\"type\":\"code-line\",\"id\":\"yyctGjV2g96jyQ72\"},{\"children\":[{\"text\":\" },\"}],\"type\":\"code-line\",\"id\":\"wlrlYLHkt4rz3ZWn\"},{\"children\":[{\"text\":\" \\\"RequestId\\\": \\\"ed93f3cb-f35e-473f-b9f3-0d451b8b79c6\\\"\"}],\"type\":\"code-line\",\"id\":\"9KNST1gZxzLjQ_YX\"},{\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\",\"id\":\"Kbk-CxA0mDX_akRV\"},{\"children\":[{\"text\":\"}\"}],\"type\":\"code-line\",\"id\":\"ebqdpEQbHWr_DO1X\"}],\"language\":\"bash\",\"type\":\"code-block\",\"id\":\"EE7-XyMxAEp2YNb7\"},{\"children\":[{\"text\":\"Code in Error indicates the error code, and Message indicates the specific information of the error.\"}],\"type\":\"p\",\"id\":\"PmKdAE5cqVYCDU3y\"},{\"children\":[{\"text\":\"Error Code List\"}],\"nodeId\":\"error-code-list\",\"type\":\"h2\",\"id\":\"xPe-r6qIssUZeqNW\"},{\"children\":[{\"text\":\"Common Error Codes\"}],\"nodeId\":\"common-error-codes\",\"type\":\"h3\",\"id\":\"mxh2kFZljEj00lvI\"},{\"children\":[{\"children\":[{\"children\":[{\"children\":[{\"text\":\"Error Code\"}],\"type\":\"p\",\"id\":\"qc0gfk0mrabKYzq3\"}],\"type\":\"cell\",\"id\":\"max7Xk_NJ89YAQcY\"},{\"children\":[{\"children\":[{\"text\":\"Description\"}],\"type\":\"p\",\"id\":\"0DkrDvEpbOXkFCAu\"}],\"type\":\"cell\",\"id\":\"HRX-QCUJm85qXYBS\"}],\"type\":\"row\",\"id\":\"sKtrCXa4_YgSAnWd\"},{\"children\":[{\"children\":[{\"children\":[{\"children\":[{\"text\":\"ActionOffline\"}],\"type\":\"p\",\"id\":\"oZu32SkIMmfcgJF2\"}],\"type\":\"p\",\"id\":\"U3Hrp8gmH94k3iV7\"}],\"type\":\"cell\",\"id\":\"WumEMObFKan_9g0A\"},{\"children\":[{\"children\":[{\"children\":[{\"text\":\"This API has been deprecated.\"}],\"type\":\"p\",\"id\":\"KNZ74dHfNW7EZDeP\"}],\"type\":\"p\",\"id\":\"hBqt8rVrEnbKkDQa\"}],\"type\":\"cell\",\"id\":\"E0wlDqomlWWvtuKb\"}],\"type\":\"row\",\"id\":\"W7E9tetjncLvsRhx\"},{\"children\":[{\"children\":[{\"children\":[{\"children\":[{\"text\":\"AuthFailure.InvalidAuthorization\"}],\"type\":\"p\",\"id\":\"8QDHP2i1ce1h9OML\"}],\"type\":\"p\",\"id\":\"2jgzWG1Dh-oKFQG1\"}],\"type\":\"cell\",\"id\":\"eA8wwCXARg8vEaWA\"},{\"children\":[{\"children\":[{\"children\":[{\"code\":1,\"text\":\"Authorization\"},{\"text\":\" in the request header is invalid.\"}],\"type\":\"p\",\"id\":\"L7GDd58qEd0VzsCM\"}],\"type\":\"p\",\"id\":\"4FtjxyEuyygwmPm0\"}],\"type\":\"cell\",\"id\":\"hZjPIRUFCyKjzYcQ\"}],\"type\":\"row\",\"id\":\"_GZMK0DZ7d2EQuiu\"},{\"children\":[{\"children\":[{\"children\":[{\"children\":[{\"text\":\"AuthFailure.InvalidSecretId\"}],\"type\":\"p\",\"id\":\"4HitpBVv1YXv7f2o\"}],\"type\":\"p\",\"id\":\"M4me1IYZre__gWXG\"}],\"type\":\"cell\",\"id\":\"t-nNwds0tNgYslNJ\"},{\"children\":[{\"children\":[{\"children\":[{\"text\":\"Invalid key (not a TencentCloud API key type).\"}],\"type\":\"p\",\"id\":\"vkBnXY6CHy_RB_mT\"}],\"type\":\"p\",\"id\":\"iv4UcvVbWepw1eNw\"}],\"type\":\"cell\",\"id\":\"mGLKlKboQSpilx92\"}],\"type\":\"row\",\"id\":\"uSPyhfuIlHNLWDda\"},{\"children\":[{\"children\":[{\"children\":[{\"children\":[{\"text\":\"AuthFailure.MFAFailure\"}],\"type\":\"p\",\"id\":\"-A3Gx_mjPWt-t9Uq\"}],\"type\":\"p\",\"id\":\"rw1CInbwE9cBuV8T\"}],\"type\":\"cell\",\"id\":\"1YChuyizYRZFpijS\"},{\"children\":[{\"children\":[{\"children\":[{\"text\":\"MFA failed.\"}],\"type\":\"p\",\"id\":\"E1NHhuJGTm5OhpkK\"}],\"type\":\"p\",\"id\":\"E7SkXVTdOnAO8Gvi\"}],\"type\":\"cell\",\"id\":\"SnsGhUXUMpUKXmkv\"}],\"type\":\"row\",\"id\":\"S5lGs5D2YBuVMDxW\"},{\"children\":[{\"children\":[{\"children\":[{\"children\":[{\"text\":\"AuthFailure.SecretIdNotFound\"}],\"type\":\"p\",\"id\":\"GK7V7sAt3mUKwUKE\"}],\"type\":\"p\",\"id\":\"MdrUgFTKiFPWYS4z\"}],\"type\":\"cell\",\"id\":\"dHJ4Aftly0A6WAtD\"},{\"children\":[{\"children\":[{\"children\":[{\"text\":\"Key does not exist. Check if the key has been deleted or disabled in the console, and if not, check if the key is correctly entered. Note that whitespaces should not exist before or after the key.\"}],\"type\":\"p\",\"id\":\"mawJXn7m2GOhVA9Z\"}],\"type\":\"p\",\"id\":\"DRGavQhCebc_Owub\"}],\"type\":\"cell\",\"id\":\"x3LH4aSiLksUO-T5\"}],\"type\":\"row\",\"id\":\"IXyXC7Bg3aGbPBp2\"},{\"children\":[{\"children\":[{\"children\":[{\"children\":[{\"text\":\"AuthFailure.SignatureExpire\"}],\"type\":\"p\",\"id\":\"GKR2mgVR21y0x1X4\"}],\"type\":\"p\",\"id\":\"XqlvCPpQ3dVrL13j\"}],\"type\":\"cell\",\"id\":\"nHr1zpomcN8fmTvr\"},{\"children\":[{\"children\":[{\"children\":[{\"text\":\"Signature expired. Timestamp and server time cannot differ by more than five minutes. Please ensure your current local time matches the standard time.\"}],\"type\":\"p\",\"id\":\"_D2poVtrmZnIjGg1\"}],\"type\":\"p\",\"id\":\"rFwrxlr7m6MreWlR\"}],\"type\":\"cell\",\"id\":\"xpjjDC609aX2kG9U\"}],\"type\":\"row\",\"id\":\"jrbq32-UyxQY_6By\"},{\"children\":[{\"children\":[{\"children\":[{\"children\":[{\"text\":\"AuthFailure.SignatureFailure\"}],\"type\":\"p\",\"id\":\"r1Kidc4hDNmHumsY\"}],\"type\":\"p\",\"id\":\"CaV8dCtkGs0pIPeK\"}],\"type\":\"cell\",\"id\":\"cb8qv7bfK_x5d4VC\"},{\"children\":[{\"children\":[{\"children\":[{\"text\":\"Invalid signature. Signature calculation error. Please ensure you’ve followed the signature calculation process described in the Signature API documentation.\"}],\"type\":\"p\",\"id\":\"QT4wTkzsSbhNMgCj\"}],\"type\":\"p\",\"id\":\"M4h0_J6KrMQtO6bd\"}],\"type\":\"cell\",\"id\":\"gg3JZ_7FJNQhoENq\"}],\"type\":\"row\",\"id\":\"8hFPZRgPsRU8F4XB\"},{\"children\":[{\"children\":[{\"children\":[{\"children\":[{\"text\":\"AuthFailure.TokenFailure\"}],\"type\":\"p\",\"id\":\"mk_AU4LUliqLEkxY\"}],\"type\":\"p\",\"id\":\"MXQj284O1XhWIMUg\"}],\"type\":\"cell\",\"id\":\"IWrK2D-IScPNhTpl\"},{\"children\":[{\"children\":[{\"children\":[{\"text\":\"Token error.\"}],\"type\":\"p\",\"id\":\"RgALLnqRI43vJ-BA\"}],\"type\":\"p\",\"id\":\"eHS3lA5OTGEPVhto\"}],\"type\":\"cell\",\"id\":\"OJMNM_mOC21UI31f\"}],\"type\":\"row\",\"id\":\"qrL9JUGvuAo0g60U\"},{\"children\":[{\"children\":[{\"children\":[{\"children\":[{\"text\":\"AuthFailure.UnauthorizedOperation\"}],\"type\":\"p\",\"id\":\"KAq16FTkAWpMvEEQ\"}],\"type\":\"p\",\"id\":\"TWRdFYio_01rn9Vq\"}],\"type\":\"cell\",\"id\":\"bZ8nE75_CfbzlRzX\"},{\"children\":[{\"children\":[{\"children\":[{\"text\":\"The request is not authorized. For more information, see the \"},{\"children\":[{\"text\":\"CAM\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://intl.cloud.tencent.com/document/product/598\",\"props\":{\"type\":\"link\",\"url\":\"https://intl.cloud.tencent.com/document/product/598\"},\"type\":\"ref\",\"id\":\"ZUlKB59wEhA_8B0W\"},{\"text\":\" documentation.\"}],\"type\":\"p\",\"id\":\"J7BI1faZjWEqvbZD\"}],\"type\":\"p\",\"id\":\"e39qLH-XZ_gIb0NM\"}],\"type\":\"cell\",\"id\":\"4sJCnQg-mOmSx0Hf\"}],\"type\":\"row\",\"id\":\"-A6F6p44k_mp55vM\"},{\"children\":[{\"children\":[{\"children\":[{\"children\":[{\"text\":\"DryRunOperation\"}],\"type\":\"p\",\"id\":\"BEzjEc8L7p3vhyQI\"}],\"type\":\"p\",\"id\":\"8OYgPCSJLViwkrFK\"}],\"type\":\"cell\",\"id\":\"-Nyuh2grELh0fFiU\"},{\"children\":[{\"children\":[{\"children\":[{\"text\":\"DryRun Operation. It means that the request would have succeeded, but the DryRun parameter was used.\"}],\"type\":\"p\",\"id\":\"R4lc8k4EzGrGmBX4\"}],\"type\":\"p\",\"id\":\"AGrlxdclDJXj3OfI\"}],\"type\":\"cell\",\"id\":\"f2_AkcaXTZQp1EbJ\"}],\"type\":\"row\",\"id\":\"wh0gOI2LUZHEDcuh\"},{\"children\":[{\"children\":[{\"children\":[{\"children\":[{\"text\":\"FailedOperation\"}],\"type\":\"p\",\"id\":\"xlMgf4ICv_z5WCc8\"}],\"type\":\"p\",\"id\":\"RwZYglpA4ZUX8D1i\"}],\"type\":\"cell\",\"id\":\"fR58Q3fKlAJ7S8PU\"},{\"children\":[{\"children\":[{\"children\":[{\"text\":\"Operation failed.\"}],\"type\":\"p\",\"id\":\"wgV1HjlfGnfb6U2D\"}],\"type\":\"p\",\"id\":\"bSL91H93H7JDm_bt\"}],\"type\":\"cell\",\"id\":\"0JHn8ZwEu0rCFWSe\"}],\"type\":\"row\",\"id\":\"7FapGv254wFovsQz\"},{\"children\":[{\"children\":[{\"children\":[{\"children\":[{\"text\":\"InternalError\"}],\"type\":\"p\",\"id\":\"_BcJdZoB9UWb2deY\"}],\"type\":\"p\",\"id\":\"hYWV1r-iqOaMXQ_-\"}],\"type\":\"cell\",\"id\":\"VsNy9c1naQ4N01E6\"},{\"children\":[{\"children\":[{\"children\":[{\"text\":\"Internal error.\"}],\"type\":\"p\",\"id\":\"8Xr99IoReMFychRY\"}],\"type\":\"p\",\"id\":\"wBT2RlaPzKekMKtA\"}],\"type\":\"cell\",\"id\":\"jYdlDjfxLMg9SUO0\"}],\"type\":\"row\",\"id\":\"YnGmlJXjjhAMzJr_\"},{\"children\":[{\"children\":[{\"children\":[{\"children\":[{\"text\":\"InvalidAction\"}],\"type\":\"p\",\"id\":\"FMf8NHZLQcgtScWJ\"}],\"type\":\"p\",\"id\":\"N866uCcqWP3cRUjJ\"}],\"type\":\"cell\",\"id\":\"LgiI-2EOafRZPI2i\"},{\"children\":[{\"children\":[{\"children\":[{\"text\":\"The API does not exist.\"}],\"type\":\"p\",\"id\":\"u0IpI-8mpDJwi2iI\"}],\"type\":\"p\",\"id\":\"2eVA3cRqOXwhULgH\"}],\"type\":\"cell\",\"id\":\"kkJhOPsizsfSx60b\"}],\"type\":\"row\",\"id\":\"3AM84LoNfs2xOJY-\"},{\"children\":[{\"children\":[{\"children\":[{\"children\":[{\"text\":\"InvalidParameter\"}],\"type\":\"p\",\"id\":\"DU9ZuDULOG6Q3uS4\"}],\"type\":\"p\",\"id\":\"IYSM8fr33c-n9LJo\"}],\"type\":\"cell\",\"id\":\"MkqQgKchiRWYNGOL\"},{\"children\":[{\"children\":[{\"children\":[{\"text\":\"Incorrect parameter.\"}],\"type\":\"p\",\"id\":\"ct4Cx6p4pKEY4NE4\"}],\"type\":\"p\",\"id\":\"vS7FK457_DkkFF4Y\"}],\"type\":\"cell\",\"id\":\"A_uHVcR_JdfL2uBg\"}],\"type\":\"row\",\"id\":\"Vn9wzJG-GldVyWTK\"},{\"children\":[{\"children\":[{\"children\":[{\"children\":[{\"text\":\"InvalidParameterValue\"}],\"type\":\"p\",\"id\":\"6FbFU5J9oP5LGxMr\"}],\"type\":\"p\",\"id\":\"2x3hBnmGIaKrDmk5\"}],\"type\":\"cell\",\"id\":\"j8fcpBhOd5LUS0Os\"},{\"children\":[{\"children\":[{\"children\":[{\"text\":\"Invalid parameter value.\"}],\"type\":\"p\",\"id\":\"XSjrZ__Q6G_k7ESu\"}],\"type\":\"p\",\"id\":\"eMVU_0CQ7RNTs78f\"}],\"type\":\"cell\",\"id\":\"IyBuyf6cpPieM2oG\"}],\"type\":\"row\",\"id\":\"_lqviJjmZApShWsn\"},{\"children\":[{\"children\":[{\"children\":[{\"children\":[{\"text\":\"InvalidRequest\"}],\"type\":\"p\",\"id\":\"bxXn8L8DigM-xMHS\"}],\"type\":\"p\",\"id\":\"tY3KI1U7Enjt0Cpb\"}],\"type\":\"cell\",\"id\":\"k7Jd2lGT2mhqSTDB\"},{\"children\":[{\"children\":[{\"children\":[{\"text\":\"The multipart format of the request body is incorrect.\"}],\"type\":\"p\",\"id\":\"MgnGHmeI58RTD_G3\"}],\"type\":\"p\",\"id\":\"qFU6MiNyMEpf56in\"}],\"type\":\"cell\",\"id\":\"T7NuGIVUhTKLUuAs\"}],\"type\":\"row\",\"id\":\"9644gsu4nCraydoF\"},{\"children\":[{\"children\":[{\"children\":[{\"children\":[{\"text\":\"IpInBlacklist\"}],\"type\":\"p\",\"id\":\"VfNaMulwPgoZC6ww\"}],\"type\":\"p\",\"id\":\"4vCrI9jUPcQmDsdD\"}],\"type\":\"cell\",\"id\":\"J15v2lFmvlNcO5YQ\"},{\"children\":[{\"children\":[{\"children\":[{\"text\":\"Your IP is in uin IP blacklist.\"}],\"type\":\"p\",\"id\":\"4p7hwxXte1T_XXOA\"}],\"type\":\"p\",\"id\":\"VixAv5oKPiChdgwS\"}],\"type\":\"cell\",\"id\":\"G0C768cyLgdRyc-7\"}],\"type\":\"row\",\"id\":\"KO3ZnD8p9EpWQRrw\"},{\"children\":[{\"children\":[{\"children\":[{\"children\":[{\"text\":\"IpNotInWhitelist\"}],\"type\":\"p\",\"id\":\"fG4BPWGir2UYJ7vI\"}],\"type\":\"p\",\"id\":\"9iDfeTZX4CkpiW07\"}],\"type\":\"cell\",\"id\":\"vjNHKJQJQETlF2VW\"},{\"children\":[{\"children\":[{\"children\":[{\"text\":\"Your IP is not in uin IP whitelist.\"}],\"type\":\"p\",\"id\":\"m85W2MCf1m9anahr\"}],\"type\":\"p\",\"id\":\"DwYp3fevuGyoU560\"}],\"type\":\"cell\",\"id\":\"3vzf7wMOKq6PZFN7\"}],\"type\":\"row\",\"id\":\"lWVcGm8VV05RZ348\"},{\"children\":[{\"children\":[{\"children\":[{\"children\":[{\"text\":\"LimitExceeded\"}],\"type\":\"p\",\"id\":\"XVEh7NkK2cBz6vSv\"}],\"type\":\"p\",\"id\":\"lXpLGxfrD2t9ya3-\"}],\"type\":\"cell\",\"id\":\"OYTxJfB3-TPcEdnl\"},{\"children\":[{\"children\":[{\"children\":[{\"text\":\"Quota limit exceeded.\"}],\"type\":\"p\",\"id\":\"bL0gAxWUaSYKCSm9\"}],\"type\":\"p\",\"id\":\"d9HwdFaVWjjdSYhJ\"}],\"type\":\"cell\",\"id\":\"0gXMBqrGJCdPk2vg\"}],\"type\":\"row\",\"id\":\"kDFecNnK_uay9Fhu\"},{\"children\":[{\"children\":[{\"children\":[{\"children\":[{\"text\":\"MissingParameter\"}],\"type\":\"p\",\"id\":\"952nc5Tiv4hFxa1k\"}],\"type\":\"p\",\"id\":\"2-ITCzEVpFIeJ4CX\"}],\"type\":\"cell\",\"id\":\"DfASxRNb91qMj2Hz\"},{\"children\":[{\"children\":[{\"children\":[{\"text\":\"A parameter is missing.\"}],\"type\":\"p\",\"id\":\"BqQXKB3-mDtWaEir\"}],\"type\":\"p\",\"id\":\"39rooW5FFa-yDHv3\"}],\"type\":\"cell\",\"id\":\"I8xYNn-NHdD2a5rm\"}],\"type\":\"row\",\"id\":\"G6NSc0P0z1bphuWo\"},{\"children\":[{\"children\":[{\"children\":[{\"children\":[{\"text\":\"NoSuchProduct\"}],\"type\":\"p\",\"id\":\"WFge11m1xouBVth4\"}],\"type\":\"p\",\"id\":\"vViw_xA_n6ind8-C\"}],\"type\":\"cell\",\"id\":\"vd_x6gD9iyxDvuT5\"},{\"children\":[{\"children\":[{\"children\":[{\"text\":\"The product does not exist.\"}],\"type\":\"p\",\"id\":\"IJYgbCUkd2eZXQRb\"}],\"type\":\"p\",\"id\":\"u4AjdVX1gCjjYsFG\"}],\"type\":\"cell\",\"id\":\"7UNOtKvgy--BKjgD\"}],\"type\":\"row\",\"id\":\"WkPSCm8lIAmJl52q\"},{\"children\":[{\"children\":[{\"children\":[{\"children\":[{\"text\":\"NoSuchVersion\"}],\"type\":\"p\",\"id\":\"sMcpLVrVb0ihPycK\"}],\"type\":\"p\",\"id\":\"R4ubP6E-r5Qu1pO_\"}],\"type\":\"cell\",\"id\":\"eyJXwTA0nma5_SM0\"},{\"children\":[{\"children\":[{\"children\":[{\"text\":\"The API version does not exist.\"}],\"type\":\"p\",\"id\":\"rJXgujEXgEzkvozy\"}],\"type\":\"p\",\"id\":\"Selo-hs4jYU5h4rm\"}],\"type\":\"cell\",\"id\":\"Ba_1iU1o663hHQhl\"}],\"type\":\"row\",\"id\":\"uQZrjD1AfFqDty4u\"},{\"children\":[{\"children\":[{\"children\":[{\"children\":[{\"text\":\"RequestLimitExceeded\"}],\"type\":\"p\",\"id\":\"sAHXPNIBH49dCvkA\"}],\"type\":\"p\",\"id\":\"ddJaBf4V92hVQMLj\"}],\"type\":\"cell\",\"id\":\"mRpPPiG06pSA_o7f\"},{\"children\":[{\"children\":[{\"children\":[{\"text\":\"The number of requests exceeds the frequency limit.\"}],\"type\":\"p\",\"id\":\"TRzxqLS7b4HKM24X\"}],\"type\":\"p\",\"id\":\"3p3sFNBdXDj4G0du\"}],\"type\":\"cell\",\"id\":\"pEJDypKD7Pz14Hzu\"}],\"type\":\"row\",\"id\":\"jgIr8TXvcSUAIeHq\"},{\"children\":[{\"children\":[{\"children\":[{\"children\":[{\"text\":\"RequestLimitExceeded.GlobalRegionUinLimitExceeded\"}],\"type\":\"p\",\"id\":\"DeHAC867DGNjPQ0S\"}],\"type\":\"p\",\"id\":\"CktExWaqgct7hVEE\"}],\"type\":\"cell\",\"id\":\"RBV5LoZjo32iyu0a\"},{\"children\":[{\"children\":[{\"children\":[{\"text\":\"Uin exceeds the frequency limit.\"}],\"type\":\"p\",\"id\":\"QNjOZ1qApbizbQW5\"}],\"type\":\"p\",\"id\":\"tp03iNLoChGwfQLW\"}],\"type\":\"cell\",\"id\":\"uzWKP2vdQQX-zZK8\"}],\"type\":\"row\",\"id\":\"lu9SotjllKHukdSO\"},{\"children\":[{\"children\":[{\"children\":[{\"children\":[{\"text\":\"RequestLimitExceeded.IPLimitExceeded\"}],\"type\":\"p\",\"id\":\"lzxW7f2Mz-Uu4Tyy\"}],\"type\":\"p\",\"id\":\"z7N4s8zhzQJ0vh8N\"}],\"type\":\"cell\",\"id\":\"apX3di3RiYnjuR-7\"},{\"children\":[{\"children\":[{\"children\":[{\"text\":\"The number of ip requests exceeds the frequency limit.\"}],\"type\":\"p\",\"id\":\"7wB4JSbmNGnsyfEy\"}],\"type\":\"p\",\"id\":\"0DTT6_e8y1MnHypS\"}],\"type\":\"cell\",\"id\":\"zlU4g2-8DqdInUD_\"}],\"type\":\"row\",\"id\":\"Npyr7o4hoo6Q_wBh\"},{\"children\":[{\"children\":[{\"children\":[{\"children\":[{\"text\":\"RequestLimitExceeded.UinLimitExceeded\"}],\"type\":\"p\",\"id\":\"ruChTL_d8FhvZsfe\"}],\"type\":\"p\",\"id\":\"w9jvrtdcBO8rZ_Qb\"}],\"type\":\"cell\",\"id\":\"BW9w-Cus7I_7ZJQ8\"},{\"children\":[{\"children\":[{\"children\":[{\"text\":\"The number of uin requests exceeds the frequency limit.\"}],\"type\":\"p\",\"id\":\"ZPNu9HSB_b0qoFpA\"}],\"type\":\"p\",\"id\":\"eBZ8TGXDw9x1WvtW\"}],\"type\":\"cell\",\"id\":\"fKwgRV6gYqbxZI46\"}],\"type\":\"row\",\"id\":\"SDnNrvXWqLmC8K_Q\"},{\"children\":[{\"children\":[{\"children\":[{\"children\":[{\"text\":\"RequestSizeLimitExceeded\"}],\"type\":\"p\",\"id\":\"82OKfTdPNDhIZ-Fh\"}],\"type\":\"p\",\"id\":\"wi7-dN_gMtz4aLgJ\"}],\"type\":\"cell\",\"id\":\"hQeh9jTDP54egumH\"},{\"children\":[{\"children\":[{\"children\":[{\"text\":\"The request size exceeds the upper limit.\"}],\"type\":\"p\",\"id\":\"mZKimx0Zc5g_8jqN\"}],\"type\":\"p\",\"id\":\"v34mAvUZl2M4WQCm\"}],\"type\":\"cell\",\"id\":\"YuVnRCtwO_OGgv2I\"}],\"type\":\"row\",\"id\":\"l7QCrEmGETjfII11\"},{\"children\":[{\"children\":[{\"children\":[{\"children\":[{\"text\":\"ResourceInUse\"}],\"type\":\"p\",\"id\":\"1PndLXC_NkHR1Rus\"}],\"type\":\"p\",\"id\":\"LwWI6x_DhNypjnmE\"}],\"type\":\"cell\",\"id\":\"pt46spFE6xTf1TuV\"},{\"children\":[{\"children\":[{\"children\":[{\"text\":\"Resource is in use.\"}],\"type\":\"p\",\"id\":\"ItgJcUUDSkJ2o_kX\"}],\"type\":\"p\",\"id\":\"CJh8e3c-_vfoERn9\"}],\"type\":\"cell\",\"id\":\"k5LslytG-ov2Af_2\"}],\"type\":\"row\",\"id\":\"HxPzA2w-EpGepOAr\"},{\"children\":[{\"children\":[{\"children\":[{\"children\":[{\"text\":\"ResourceInsufficient\"}],\"type\":\"p\",\"id\":\"Cii-BPDLAWAT5rBL\"}],\"type\":\"p\",\"id\":\"dOlkvDQJGIxsIvNg\"}],\"type\":\"cell\",\"id\":\"K_ohak3QmBemw6Z3\"},{\"children\":[{\"children\":[{\"children\":[{\"text\":\"Insufficient resource.\"}],\"type\":\"p\",\"id\":\"8ZuhRquN5ZnbfZrK\"}],\"type\":\"p\",\"id\":\"Iw_-KSS4EgSkytRj\"}],\"type\":\"cell\",\"id\":\"Ff7yWeabqjN5yhmh\"}],\"type\":\"row\",\"id\":\"-sv1GdZZZq4sgcSJ\"},{\"children\":[{\"children\":[{\"children\":[{\"children\":[{\"text\":\"ResourceNotFound\"}],\"type\":\"p\",\"id\":\"BW-D050ZiEUp9X3V\"}],\"type\":\"p\",\"id\":\"ai4xtweCkswUXm_a\"}],\"type\":\"cell\",\"id\":\"YYyHMH8ESV1qzJFv\"},{\"children\":[{\"children\":[{\"children\":[{\"text\":\"The resource does not exist.\"}],\"type\":\"p\",\"id\":\"psmrDjvhMtCuD5Wi\"}],\"type\":\"p\",\"id\":\"76N1LagdCJ5Nz6AB\"}],\"type\":\"cell\",\"id\":\"8DDdlpD0XRaEFHYs\"}],\"type\":\"row\",\"id\":\"Zhn7a7gx9Pn2dzhE\"},{\"children\":[{\"children\":[{\"children\":[{\"children\":[{\"text\":\"ResourceUnavailable\"}],\"type\":\"p\",\"id\":\"SnHLogU-QGQUGTI9\"}],\"type\":\"p\",\"id\":\"GeVmBUwu1XE6hlyR\"}],\"type\":\"cell\",\"id\":\"DnnFYxpt4-tZHb3_\"},{\"children\":[{\"children\":[{\"children\":[{\"text\":\"Resource is unavailable.\"}],\"type\":\"p\",\"id\":\"fsXWv9vjVVVWxltZ\"}],\"type\":\"p\",\"id\":\"4mLvnVBychJFxUXh\"}],\"type\":\"cell\",\"id\":\"cnAm5d8h6W7XzLvc\"}],\"type\":\"row\",\"id\":\"yLw-WIvr3ygeyj2x\"},{\"children\":[{\"children\":[{\"children\":[{\"children\":[{\"text\":\"ResponseSizeLimitExceeded\"}],\"type\":\"p\",\"id\":\"5riuEJMf-DLrHo-s\"}],\"type\":\"p\",\"id\":\"-mm-RYgy0JLmXW_7\"}],\"type\":\"cell\",\"id\":\"wgMIYsh2fbqg0w5W\"},{\"children\":[{\"children\":[{\"children\":[{\"text\":\"The response size exceeds the upper limit.\"}],\"type\":\"p\",\"id\":\"eL-60E5lyVDOeLve\"}],\"type\":\"p\",\"id\":\"qE3Hidrr9Ojocgo9\"}],\"type\":\"cell\",\"id\":\"VpeSDN7keU-XMAyO\"}],\"type\":\"row\",\"id\":\"bsBC_3UXj4ZMwHVh\"},{\"children\":[{\"children\":[{\"children\":[{\"children\":[{\"text\":\"ServiceUnavailable\"}],\"type\":\"p\",\"id\":\"d1GzZF_L-eHrx5gc\"}],\"type\":\"p\",\"id\":\"nWn9s7wYD58-VBhq\"}],\"type\":\"cell\",\"id\":\"cZTVDhZieyUg8XEt\"},{\"children\":[{\"children\":[{\"children\":[{\"text\":\"Service is unavailable now.\"}],\"type\":\"p\",\"id\":\"tHeH_W8Dlspkdi_f\"}],\"type\":\"p\",\"id\":\"YZG2w62KGd0OgFhk\"}],\"type\":\"cell\",\"id\":\"aBOuRIhhExhNPXVY\"}],\"type\":\"row\",\"id\":\"A3kAx-yOZCLe9wdR\"},{\"children\":[{\"children\":[{\"children\":[{\"children\":[{\"text\":\"UnauthorizedOperation\"}],\"type\":\"p\",\"id\":\"0UPaGF0oJWvVepQZ\"}],\"type\":\"p\",\"id\":\"CbIZ4N57mmjPGgH9\"}],\"type\":\"cell\",\"id\":\"zgYqtTuPbL-whaHI\"},{\"children\":[{\"children\":[{\"children\":[{\"text\":\"Unauthorized operation.\"}],\"type\":\"p\",\"id\":\"nADe8WiJqG1GuRFw\"}],\"type\":\"p\",\"id\":\"I7biba1REtiw_gv-\"}],\"type\":\"cell\",\"id\":\"rWafAnEHJAYpy5R8\"}],\"type\":\"row\",\"id\":\"Km435Pm-RVTHH8np\"},{\"children\":[{\"children\":[{\"children\":[{\"children\":[{\"text\":\"UnknownParameter\"}],\"type\":\"p\",\"id\":\"GuOPKgjNa0OsIFRo\"}],\"type\":\"p\",\"id\":\"OPVdoMjUmagE6T4S\"}],\"type\":\"cell\",\"id\":\"rvEtfv44ajW8jpFD\"},{\"children\":[{\"children\":[{\"children\":[{\"text\":\"Unknown parameter.\"}],\"type\":\"p\",\"id\":\"iK_9jEqoeaPvaKEd\"}],\"type\":\"p\",\"id\":\"sx0xZJKicbXnC_oJ\"}],\"type\":\"cell\",\"id\":\"Mries9ZLXIOoEZbc\"}],\"type\":\"row\",\"id\":\"Kvgf0k7HQwpaBBCG\"},{\"children\":[{\"children\":[{\"children\":[{\"children\":[{\"text\":\"UnsupportedOperation\"}],\"type\":\"p\",\"id\":\"K1GxMOhJZxR-2xBu\"}],\"type\":\"p\",\"id\":\"F6SjVks9v32kNMNJ\"}],\"type\":\"cell\",\"id\":\"_xJXIoSQCrkkZvvh\"},{\"children\":[{\"children\":[{\"children\":[{\"text\":\"Unsupported operation.\"}],\"type\":\"p\",\"id\":\"-rTGIAJOriMZc6Lc\"}],\"type\":\"p\",\"id\":\"qaPOM31CATtAeHO0\"}],\"type\":\"cell\",\"id\":\"RvSrUdSZ2WGMco7z\"}],\"type\":\"row\",\"id\":\"Tcccn4MLLoinf8Ps\"},{\"children\":[{\"children\":[{\"children\":[{\"children\":[{\"text\":\"UnsupportedProtocol\"}],\"type\":\"p\",\"id\":\"0G6qYqiMmB0J3JSc\"}],\"type\":\"p\",\"id\":\"rjnmUfidlKf-aOrh\"}],\"type\":\"cell\",\"id\":\"uzx6l0h75phn3Wc1\"},{\"children\":[{\"children\":[{\"children\":[{\"text\":\"HTTP(S) request protocol error; only GET and POST requests are supported.\"}],\"type\":\"p\",\"id\":\"vpG7MVt1EiPKtxC1\"}],\"type\":\"p\",\"id\":\"5-khdFxICmJzQPZH\"}],\"type\":\"cell\",\"id\":\"tik4ghaO73BEaPee\"}],\"type\":\"row\",\"id\":\"XG8MKvVdzifU0xRo\"},{\"children\":[{\"children\":[{\"children\":[{\"children\":[{\"text\":\"UnsupportedRegion\"}],\"type\":\"p\",\"id\":\"TAXbL5oOKPco2wM3\"}],\"type\":\"p\",\"id\":\"k4jAZfAd8i7TGj9v\"}],\"type\":\"cell\",\"id\":\"EhwfE3NVoE8UOYZk\"},{\"children\":[{\"children\":[{\"children\":[{\"text\":\"API does not support the requested region.\"}],\"type\":\"p\",\"id\":\"1CQIfA3hXEKv0nuB\"}],\"type\":\"p\",\"id\":\"T0oOwAjo7BDRKZKl\"}],\"type\":\"cell\",\"id\":\"F1S-LY8BmndtRLgY\"}],\"type\":\"row\",\"id\":\"geivgQhVO0f7rUqR\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"id\":\"fAdMVIaYoaDggXcf\"},{\"children\":[{\"text\":\"Service Error Codes\"}],\"nodeId\":\"service-error-codes\",\"type\":\"h3\",\"id\":\"n5gP9RTZmh9PUSIG\"},{\"children\":[{\"children\":[{\"children\":[{\"children\":[{\"text\":\"Error Code\"}],\"type\":\"p\",\"id\":\"Z0VYG6kQWcSoFAS4\"}],\"type\":\"cell\",\"id\":\"tSZ7lURmQzpPk0lT\"},{\"children\":[{\"children\":[{\"text\":\"Description\"}],\"type\":\"p\",\"id\":\"dSFK5vW7th09kMqZ\"}],\"type\":\"cell\",\"id\":\"NcxcbfG8eVNLoDOx\"}],\"type\":\"row\",\"id\":\"9uH7oCpZ4WDe7KH1\"},{\"children\":[{\"children\":[{\"children\":[{\"children\":[{\"text\":\"FailedOperation.UserFeeNegative\"}],\"type\":\"p\",\"id\":\"jdX3CGQHSVh0B7wx\"}],\"type\":\"p\",\"id\":\"g4ZodjsL1XqmXAzM\"}],\"type\":\"cell\",\"id\":\"KW3Rp1poHj9Rv8P2\"},{\"children\":[{\"children\":[{\"children\":[{\"text\":\"Operation not allowed as your account is in arrears.\"}],\"type\":\"p\",\"id\":\"mt8SttWJZY1Xe6sL\"}],\"type\":\"p\",\"id\":\"DQL5NKQOMh7IxrWl\"}],\"type\":\"cell\",\"id\":\"TjVlMNFjwIv63FUI\"}],\"type\":\"row\",\"id\":\"BMlcBUo6g-z6vhqm\"},{\"children\":[{\"children\":[{\"children\":[{\"children\":[{\"text\":\"InvalidParameter.DateInvalid\"}],\"type\":\"p\",\"id\":\"Ri2J5zbiDtu9N_FY\"}],\"type\":\"p\",\"id\":\"0CG3asPm9yjE2rZk\"}],\"type\":\"cell\",\"id\":\"aJDjqu6mDIij3Awe\"},{\"children\":[{\"children\":[{\"children\":[{\"text\":\"Invalid date.\"}],\"type\":\"p\",\"id\":\"s8nsxQgr4stmSFw-\"}],\"type\":\"p\",\"id\":\"BcaXDUDud57nnXZb\"}],\"type\":\"cell\",\"id\":\"y1tOOg7cMmkIdgZ_\"}],\"type\":\"row\",\"id\":\"FnbMf7OGZrzAVqO-\"},{\"children\":[{\"children\":[{\"children\":[{\"children\":[{\"text\":\"InvalidParameter.DateOutOfSixtyDays\"}],\"type\":\"p\",\"id\":\"c7BzSd8nRE9eQeXA\"}],\"type\":\"p\",\"id\":\"cDgFtQqLt9Y_5gIJ\"}],\"type\":\"cell\",\"id\":\"jkFknkxmbHzh4NS6\"},{\"children\":[{\"children\":[{\"children\":[{\"text\":\"The entered query date range is longer than 60 days.\"}],\"type\":\"p\",\"id\":\"zt-DUiPExQYkEqMs\"}],\"type\":\"p\",\"id\":\"96BAA1klXTMQnjo0\"}],\"type\":\"cell\",\"id\":\"88908OpmoXeeDoIZ\"}],\"type\":\"row\",\"id\":\"sJVvjU1pCoI6XNfZ\"},{\"children\":[{\"children\":[{\"children\":[{\"children\":[{\"text\":\"InvalidParameter.TagKey\"}],\"type\":\"p\",\"id\":\"GnD6d3txyndKmUep\"}],\"type\":\"p\",\"id\":\"8sWaJWO65FMnRbY8\"}],\"type\":\"cell\",\"id\":\"d9tCqJgSHUtYV36M\"},{\"children\":[{\"children\":[{\"children\":[{\"text\":\"Incorrect tag.\"}],\"type\":\"p\",\"id\":\"esOtL9u2pxzzvJIV\"}],\"type\":\"p\",\"id\":\"1Pe8DQa5bx7y57O2\"}],\"type\":\"cell\",\"id\":\"_5bDMB9yR6BpvOKG\"}],\"type\":\"row\",\"id\":\"k9S8hTEwCUJT8yEc\"},{\"children\":[{\"children\":[{\"children\":[{\"children\":[{\"text\":\"InvalidParameter.TimeRangeError\"}],\"type\":\"p\",\"id\":\"cpWdZlBeTPXskEZX\"}],\"type\":\"p\",\"id\":\"eA8U1Ji_jLLBUBkp\"}],\"type\":\"cell\",\"id\":\"j_H5BFbpPiohNm0C\"},{\"children\":[{\"children\":[{\"children\":[{\"text\":\"Incorrect query time range.\"}],\"type\":\"p\",\"id\":\"ZI_aQDCd1dUdRHBH\"}],\"type\":\"p\",\"id\":\"QI3j9xoZM14oaP9t\"}],\"type\":\"cell\",\"id\":\"DFEC1kP371HI8q3w\"}],\"type\":\"row\",\"id\":\"BogjHf0V8nY3WrrQ\"},{\"children\":[{\"children\":[{\"children\":[{\"children\":[{\"text\":\"InvalidParameterValue.InvalidBizId\"}],\"type\":\"p\",\"id\":\"PuA7pAckiu5A1pMN\"}],\"type\":\"p\",\"id\":\"om3SIOCTeSRf4kDJ\"}],\"type\":\"cell\",\"id\":\"GduMmU55DmilSOLr\"},{\"children\":[{\"children\":[{\"children\":[{\"text\":\"Invalid BizId.(SDKAppid)\"}],\"type\":\"p\",\"id\":\"7bs5DvfwO1kN06HS\"}],\"type\":\"p\",\"id\":\"a5tuBdEgozRlVXez\"}],\"type\":\"cell\",\"id\":\"GzUY901aesTTis1u\"}],\"type\":\"row\",\"id\":\"4LJzXYPybJLAmp2w\"},{\"children\":[{\"children\":[{\"children\":[{\"children\":[{\"text\":\"InvalidParameterValue.InvalidRecordMode\"}],\"type\":\"p\",\"id\":\"_xruU_aTtXjlHvqQ\"}],\"type\":\"p\",\"id\":\"Xxey-7u94ayf3a3_\"}],\"type\":\"cell\",\"id\":\"0tS1dsAZ2OG_WOmX\"},{\"children\":[{\"children\":[{\"children\":[{\"text\":\"Invalid RecordMode.\"}],\"type\":\"p\",\"id\":\"rAWp8IRJF_JqX9nw\"}],\"type\":\"p\",\"id\":\"qHY9JfBDglzApuit\"}],\"type\":\"cell\",\"id\":\"gyn3nCaXrLrywLjU\"}],\"type\":\"row\",\"id\":\"ONyww3zu9SRhmH5d\"},{\"children\":[{\"children\":[{\"children\":[{\"children\":[{\"text\":\"InvalidParameterValue.InvalidRoomId\"}],\"type\":\"p\",\"id\":\"j8pNI92bYhYCgSvh\"}],\"type\":\"p\",\"id\":\"qPyuwYTJihrZNXyx\"}],\"type\":\"cell\",\"id\":\"fkUZEYpYo4plbS-1\"},{\"children\":[{\"children\":[{\"children\":[{\"text\":\"Invalid RoomId.\"}],\"type\":\"p\",\"id\":\"_NWoyJZuTkPH3Abb\"}],\"type\":\"p\",\"id\":\"lJ6EzybcmA6WndWu\"}],\"type\":\"cell\",\"id\":\"QaNxj7fNbvk0xgcG\"}],\"type\":\"row\",\"id\":\"vMOHg7KBilYKVFfW\"},{\"children\":[{\"children\":[{\"children\":[{\"children\":[{\"text\":\"InvalidParameterValue.InvalidSubscribeRecordUserIds\"}],\"type\":\"p\",\"id\":\"9ySvJOUjWSQnJ_-u\"}],\"type\":\"p\",\"id\":\"V5OOEDSBI0j-vxbI\"}],\"type\":\"cell\",\"id\":\"t4pEF9soXLxXuLJS\"},{\"children\":[{\"children\":[{\"children\":[{\"text\":\"Incorrect blocklist/allowlist format.\"}],\"type\":\"p\",\"id\":\"tIQ2VCeCkVZKNTv6\"}],\"type\":\"p\",\"id\":\"otlCzsmolZfeGemh\"}],\"type\":\"cell\",\"id\":\"CvvZOeVAFqUljNJX\"}],\"type\":\"row\",\"id\":\"4j23kJ28saNg7fD4\"},{\"children\":[{\"children\":[{\"children\":[{\"children\":[{\"text\":\"InvalidParameterValue.InvalidSubscribeUserIds\"}],\"type\":\"p\",\"id\":\"__5SFV0u8WyDHqP_\"}],\"type\":\"p\",\"id\":\"9e0t9bhlGP9x8id7\"}],\"type\":\"cell\",\"id\":\"BQG3U8O756jTV869\"},{\"children\":[{\"children\":[{\"children\":[{\"text\":\"The number of entries on the allowlist exceeds 20.\"}],\"type\":\"p\",\"id\":\"MhOCNBPIze1gWTNr\"}],\"type\":\"p\",\"id\":\"7UFfUFmSdlsk8-XX\"}],\"type\":\"cell\",\"id\":\"g8tqUStC4q2HSfgE\"}],\"type\":\"row\",\"id\":\"4UVJ3B8bCO-SNIWa\"},{\"children\":[{\"children\":[{\"children\":[{\"children\":[{\"text\":\"InvalidParameterValue.InvalidTaskId\"}],\"type\":\"p\",\"id\":\"0TgkYJ9sdUxNxwUi\"}],\"type\":\"p\",\"id\":\"BtprwZHS9bjBnKuB\"}],\"type\":\"cell\",\"id\":\"4xOPqtzfuFiQStiC\"},{\"children\":[{\"children\":[{\"children\":[{\"text\":\"Invalid taskid.\"}],\"type\":\"p\",\"id\":\"fjrbHUj2kekv7S08\"}],\"type\":\"p\",\"id\":\"mPp_SGqdZrb3Jo9i\"}],\"type\":\"cell\",\"id\":\"m6EHkelHSE-x_oyD\"}],\"type\":\"row\",\"id\":\"0WvHH-iQ0RgSJAYv\"},{\"children\":[{\"children\":[{\"children\":[{\"children\":[{\"text\":\"InvalidParameterValue.InvalidUNSubscribeUserIds\"}],\"type\":\"p\",\"id\":\"rG_5fywZFXTTf4yc\"}],\"type\":\"p\",\"id\":\"pMLXiqLCoc9qQXfJ\"}],\"type\":\"cell\",\"id\":\"TXB4hpZgujm_w7lC\"},{\"children\":[{\"children\":[{\"children\":[{\"text\":\"The number of entries on the blocklist exceeds 20.\"}],\"type\":\"p\",\"id\":\"acRAeYj5vtd_IrGB\"}],\"type\":\"p\",\"id\":\"lUVQQCTDW519pGWR\"}],\"type\":\"cell\",\"id\":\"h3w01Fw-y732PZPK\"}],\"type\":\"row\",\"id\":\"2EWFCD4C5veUzS6X\"},{\"children\":[{\"children\":[{\"children\":[{\"children\":[{\"text\":\"LimitExceeded.Application\"}],\"type\":\"p\",\"id\":\"_hz5j9RV7Jlj-GG0\"}],\"type\":\"p\",\"id\":\"Zy731oRu3MpQepea\"}],\"type\":\"cell\",\"id\":\"xiCWeKFu8deGOI7I\"},{\"children\":[{\"children\":[{\"children\":[{\"text\":\"The number of created applications has reached the upper limit.\"}],\"type\":\"p\",\"id\":\"p7P_e24RLOKtJ27Y\"}],\"type\":\"p\",\"id\":\"bOeNXKG1TlETGX00\"}],\"type\":\"cell\",\"id\":\"p3LPQErxGc96dbMA\"}],\"type\":\"row\",\"id\":\"GHzV3HkT0pktikWh\"},{\"children\":[{\"children\":[{\"children\":[{\"children\":[{\"text\":\"OperationDenied\"}],\"type\":\"p\",\"id\":\"8zC3-WZkePL8I9HX\"}],\"type\":\"p\",\"id\":\"xxxxXhIV6C8dQJwf\"}],\"type\":\"cell\",\"id\":\"fpjQsRoS1qem7cd2\"},{\"children\":[{\"children\":[{\"children\":[{\"text\":\"Operation denied.\"}],\"type\":\"p\",\"id\":\"0843sZL4ujMsRx9i\"}],\"type\":\"p\",\"id\":\"01vE33QjbftVApcW\"}],\"type\":\"cell\",\"id\":\"gqiUIcCn-q9SNA_r\"}],\"type\":\"row\",\"id\":\"5P6gmRpxBCY7-mN-\"},{\"children\":[{\"children\":[{\"children\":[{\"children\":[{\"text\":\"ResourceInUse.TaskInUse\"}],\"type\":\"p\",\"id\":\"NqsSZlhaUNPM3LSi\"}],\"type\":\"p\",\"id\":\"ltVq_gjKkBuA5eVx\"}],\"type\":\"cell\",\"id\":\"cLG3p5uJV45bUcDy\"},{\"children\":[{\"children\":[{\"children\":[{\"text\":\"The task already exists.\"}],\"type\":\"p\",\"id\":\"OE5YQaI9aX83hOec\"}],\"type\":\"p\",\"id\":\"O8wnUxrIPRm2sEby\"}],\"type\":\"cell\",\"id\":\"njnKG1elTt_9jZpr\"}],\"type\":\"row\",\"id\":\"GvkqzRqheqlCXFiW\"},{\"children\":[{\"children\":[{\"children\":[{\"children\":[{\"text\":\"ResourceNotFound.BizidIsNotFound\"}],\"type\":\"p\",\"id\":\"wuRt613ZhfO-avaf\"}],\"type\":\"p\",\"id\":\"ggmfFru_KUIu0ECI\"}],\"type\":\"cell\",\"id\":\"f8KxtSK60gp9CWvT\"},{\"children\":[{\"children\":[{\"children\":[{\"text\":\"Incorrect application ID.\"}],\"type\":\"p\",\"id\":\"zEFgco9jMVpzPVbf\"}],\"type\":\"p\",\"id\":\"8QFdLYPh8VOxTyzA\"}],\"type\":\"cell\",\"id\":\"82m2H3rIHlh9mECr\"}],\"type\":\"row\",\"id\":\"U3nHTyhj4iXzChbw\"},{\"children\":[{\"children\":[{\"children\":[{\"children\":[{\"text\":\"ResourceNotFound.RoomNotFound\"}],\"type\":\"p\",\"id\":\"p9Smznr9kjyiOOwD\"}],\"type\":\"p\",\"id\":\"41ZgGNRPEbUi4wLK\"}],\"type\":\"cell\",\"id\":\"OCC6KiF120IL0oGD\"},{\"children\":[{\"children\":[{\"children\":[{\"text\":\"The room does not exist.\"}],\"type\":\"p\",\"id\":\"X_RD4dBDeRbujzIH\"}],\"type\":\"p\",\"id\":\"sSGe7MYsmbcbaAw8\"}],\"type\":\"cell\",\"id\":\"AWfNUGVmcHWneqCs\"}],\"type\":\"row\",\"id\":\"9MCH-QI9hkk_x6Wn\"},{\"children\":[{\"children\":[{\"children\":[{\"children\":[{\"text\":\"ResourceNotFound.TaskNotFound\"}],\"type\":\"p\",\"id\":\"QvRC5g9yOKXxbiI_\"}],\"type\":\"p\",\"id\":\"U4N5ib8bUTduC_oC\"}],\"type\":\"cell\",\"id\":\"rN53KSIOwuwJM0ic\"},{\"children\":[{\"children\":[{\"children\":[{\"text\":\"The task ID does not exist.\"}],\"type\":\"p\",\"id\":\"ljCUGvK2L9J-mbwE\"}],\"type\":\"p\",\"id\":\"n3P0e9jJVY6qnlaJ\"}],\"type\":\"cell\",\"id\":\"jR43qmwvsr4mka-i\"}],\"type\":\"row\",\"id\":\"vdIq_toVsQGVIgLH\"},{\"children\":[{\"children\":[{\"children\":[{\"children\":[{\"text\":\"UnauthorizedOperation.CreateAppDenied\"}],\"type\":\"p\",\"id\":\"kD3_JzJLV0lyA_Pe\"}],\"type\":\"p\",\"id\":\"8ER-1vKLGUxAwvJB\"}],\"type\":\"cell\",\"id\":\"XNp1VZfcogmJydFO\"},{\"children\":[{\"children\":[{\"children\":[{\"text\":\"Application creation is not authorized.\"}],\"type\":\"p\",\"id\":\"FuJ7dCHUhcRD5SAC\"}],\"type\":\"p\",\"id\":\"X0f82_qK5vKvxo7G\"}],\"type\":\"cell\",\"id\":\"YMuKxWSIYnJ7nsYh\"}],\"type\":\"row\",\"id\":\"CRNWH7RBr51KtKDP\"},{\"children\":[{\"children\":[{\"children\":[{\"children\":[{\"text\":\"UnauthorizedOperation.UnRealNameAuth\"}],\"type\":\"p\",\"id\":\"OYWAfq-LHUnUBp7n\"}],\"type\":\"p\",\"id\":\"UmIuF4Vp9n8MNHd9\"}],\"type\":\"cell\",\"id\":\"SYK3PL3A_FkWs-_X\"},{\"children\":[{\"children\":[{\"children\":[{\"text\":\"Unverified user.\"}],\"type\":\"p\",\"id\":\"8f29V7hMxzV-x0y0\"}],\"type\":\"p\",\"id\":\"XG9ed4tolmNGyt3G\"}],\"type\":\"cell\",\"id\":\"3f-IcKh9FluFzbZI\"}],\"type\":\"row\",\"id\":\"j8ZrvgX2L3-leCSZ\"},{\"children\":[{\"children\":[{\"children\":[{\"children\":[{\"text\":\"UnsupportedOperation.ServiceNotOpened\"}],\"type\":\"p\",\"id\":\"f2j1kd8CkWF0a5cq\"}],\"type\":\"p\",\"id\":\"Kut_N9CUs1B-h25h\"}],\"type\":\"cell\",\"id\":\"ToBp7SrLHegjZ2zq\"},{\"children\":[{\"children\":[{\"children\":[{\"text\":\"The recording service is not activated.\"}],\"type\":\"p\",\"id\":\"h-BFimDbh-BHS9Xg\"}],\"type\":\"p\",\"id\":\"rWZ1VYTFurAGc_Xg\"}],\"type\":\"cell\",\"id\":\"SYRtx3sGNj2uJNXi\"}],\"type\":\"row\",\"id\":\"kuo1G_R6JOCDMnh4\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"id\":\"nX1w7ZKYpGpCawWf\"}]"}},"40859":{"categoryId":607,"weight":200,"type":"page","extension":"","pid":15176,"id":40859,"lang":"en","title":"Integrating SDK","pdfUrl":"","docType":"default","children":[],"firstReleaseTime":"2021-06-22 23:05:07","recentReleaseTime":"2021-06-22 23:05:07","content":{"title":"Integrating SDK","body":"
This document describes how to integrate GME SDK into an Android project so that the Android developers can easily debug and integrate the APIs for Game Multimedia Engine (GME).

Preparing SDK

1. Download the applicable demo and SDK. For more information, see SDK Download Guide.
2. Decompress the obtained SDK resources.
3. The SDK development resources are in the libs folder.
Note:
You can run the SDK on Android 5.0 or later.

Configuration Guide

Method 1

1. Copy the gmesdk.jar file in the libs directory to the libs directory of the Android project.
2. Copy the library files of the corresponding architecture based on the project requirements. For example, if the project requires the armeabi-v7a architecture, you need to copy the library files in the armeabi-v7a directory to the armeabi-v7a directory in the project. If there is no armeabi-v7a directory in the project, create one.

Method 2

Place .so and .jar files in any folder in the project and specify the folder in surceSets.

Configuring the project

Add the code that imports the library to build.gradle under the App directory of the project.
sourceSets {
main {
jniLibs.srcDirs = ['libs']
}
}

","recentReleaseTime":"2024-01-18 15:13:51","slate":"[{\"id\":\"3vtwz8iC7KqQEdunSy59M\",\"children\":[{\"text\":\"This document describes how to integrate GME SDK into an Android project so that the Android developers can easily debug and integrate the APIs for Game Multimedia Engine (GME).\"}],\"type\":\"p\"},{\"id\":\"eOt80Cc4FtGJZdWc_o21A\",\"children\":[{\"text\":\"Preparing SDK\"}],\"nodeId\":\"sdk-.E6.96.87.E4.BB.B6.E5.87.86.E5.A4.87\",\"type\":\"h2\"},{\"id\":\"zoY8WLZW2zvie5r0Rcnvb\",\"children\":[{\"text\":\"Download the applicable demo and SDK. For more information, see \"},{\"id\":\"2PmkQbSQsubIqrTZD6-xp\",\"children\":[{\"text\":\"SDK Download Guide\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://www.tencentcloud.com/document/product/607/18521\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/18521\"},\"type\":\"ref\"},{\"text\":\".\"}],\"start\":true,\"type\":\"oli\"},{\"id\":\"TDByrCq3Hex_k5ACM4hQf\",\"children\":[{\"text\":\"Decompress the obtained SDK resources.\"}],\"start\":false,\"type\":\"oli\"},{\"id\":\"HieihkbywLXzCf40eblTb\",\"children\":[{\"text\":\"The SDK development resources are in the \"},{\"code\":1,\"text\":\"libs\"},{\"text\":\" folder.\"}],\"start\":false,\"type\":\"oli\"},{\"id\":\"tMq5jdi_JM40RIRqQXX_P\",\"children\":[{\"id\":\"l0JepV6ZeyjuOJdPy-Sbe\",\"children\":[{\"b\":1,\"text\":\"Note:\"}],\"type\":\"p\"},{\"id\":\"WB5OJarndDJZTlVn1v758\",\"children\":[{\"text\":\"You can run the SDK on Android 5.0 or later.\"}],\"type\":\"p\"}],\"hintType\":\"info\",\"type\":\"hint\"},{\"id\":\"oOtIXpOKAxKs3Td9naJNL\",\"children\":[{\"text\":\"Configuration Guide\"}],\"nodeId\":\".E9.85.8D.E7.BD.AE.E6.8C.87.E5.BC.95\",\"type\":\"h2\"},{\"id\":\"25gHSBK2imMeW2u2wI_sx\",\"children\":[{\"text\":\"Method 1\"}],\"nodeId\":\".E5.AF.BC.E5.85.A5-sdk-.E6.96.87.E4.BB.B6\",\"type\":\"h4\"},{\"id\":\"lNpAO2haDgfoytpZxguLs\",\"children\":[{\"text\":\"Copy the \"},{\"code\":1,\"text\":\"gmesdk.jar\"},{\"text\":\" file in the \"},{\"code\":1,\"text\":\"libs\"},{\"text\":\" directory to the \"},{\"code\":1,\"text\":\"libs\"},{\"text\":\" directory of the Android project.\"}],\"start\":true,\"type\":\"oli\"},{\"id\":\"oct8kv2MhRXcfM3px8otE\",\"children\":[{\"b\":1,\"text\":\"Copy the library files of the corresponding architecture based on the project requirements\"},{\"text\":\". For example, if the project requires the armeabi-v7a architecture, you need to copy the library files in the \"},{\"code\":1,\"text\":\"armeabi-v7a\"},{\"text\":\" directory to the \"},{\"code\":1,\"text\":\"armeabi-v7a\"},{\"text\":\" directory in the project. If there is no \"},{\"code\":1,\"text\":\"armeabi-v7a\"},{\"text\":\" directory in the project, create one.\"}],\"start\":false,\"type\":\"oli\"},{\"id\":\"11z5EtCU3zXdmPDh4BPVr\",\"children\":[{\"text\":\"Method 2\"}],\"nodeId\":\"4abaeea5-3b68-46f7-a7c3-65ce6d2dc9fd\",\"type\":\"h4\"},{\"id\":\"mhD6pZxpvXbcYeEFnRRdf\",\"children\":[{\"text\":\"Place .so and .jar files in any folder in the project and specify the folder in \"},{\"code\":1,\"text\":\"surceSets\"},{\"text\":\".\"}],\"type\":\"p\"},{\"id\":\"eSwBYwRu3mrlNlSWvlTB7\",\"children\":[{\"text\":\"Configuring the project\"}],\"nodeId\":\".E5.B7.A5.E7.A8.8B.E9.85.8D.E7.BD.AE\",\"type\":\"h4\"},{\"id\":\"3PK1N5ukOwN-HD73wkQNt\",\"children\":[{\"text\":\"Add the code that imports the library to build.gradle under the App directory of the project.\"}],\"type\":\"p\"},{\"id\":\"xtQiLgfe7UsdEqnfngUUy\",\"autoWrap\":false,\"children\":[{\"id\":\"jBM_koxRqaANCLpzE_6_j\",\"children\":[{\"text\":\"sourceSets {\"}],\"type\":\"code-line\"},{\"id\":\"cE7sEOIURth9qruku3y5m\",\"children\":[{\"text\":\" main {\"}],\"type\":\"code-line\"},{\"id\":\"2qIqNv7EM7X5UJn5OVmel\",\"children\":[{\"text\":\" jniLibs.srcDirs = ['libs']\"}],\"type\":\"code-line\"},{\"id\":\"R1oNM6Vef7VSEvb4-LVAA\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"jOEhJOLcLYwFYTuZjRreL\",\"children\":[{\"text\":\"}\"}],\"type\":\"code-line\"}],\"language\":\"java\",\"type\":\"code-block\"},{\"id\":\"z-gDnSdwhJc80Z5GzdD1Q\",\"children\":[{\"text\":\"\"}],\"type\":\"p\"}]"}},"40860":{"categoryId":607,"weight":180,"type":"page","extension":"","pid":15176,"id":40860,"lang":"en","title":"Voice Chat","pdfUrl":"","docType":"default","children":[],"firstReleaseTime":"2021-06-22 23:05:07","recentReleaseTime":"2021-06-22 23:05:07","content":{"title":"Voice Chat","body":"
This document describes how to integrate with and debug GME client APIs for the voice chat feature for Android.

Key Considerations for Using GME

GME provides the real-time voice chat service, voice messaging and speech-to-text services, which all depend on core APIs such as Init and Poll.

Notes

You have created a GME application and obtained the AppID and Key of the SDK as instructed in Activating Services.
You have activated the voice chat, voice messaging, and speech-to-text services of GME. For more information, see Activating Services.
Configure your project before using GME; otherwise, the SDK will not take effect.
After a GME API is called successfully, QAVError.OK will be returned with the value being 0.
GME APIs should be called in the same thread.
The Poll API should be called periodically for GME to trigger event callbacks.
For detailed error codes, see Error Codes.

Integrating the SDK

Directions

Key processes involved in SDK integration are as follows:

\"\"


1. Initializing GME
2. Calling Poll periodically to trigger callbacks
3. Entering a voice chat room
4. Turning on the mic
5. Turning on the speaker
6. Exiting the voice chat room
7. Uninitializing GME

Voice chat for Android class

Class
Description
ITMGContext
Core APIs
ITMGRoom
Room APIs
ITMGRoomManager
Room management APIs
ITMGAudioCtrl
Audio APIs
ITMGAudioEffectCtrl
Sound effect and accompaniment APIs

Core APIs

API
Description
Init
Initializes GME.
Poll
Triggers an event callback.
Pause
Pauses the system.
Resume
Resumes the system.
Uninit
Uninitializes GME.
Note:
If you need to switch the account, please call UnInit to uninitialize the SDK. No fee is incurred for calling Init API.

Getting singleton

To use the voice feature, get the ITMGContext object first.

Sample code

import com.tencent.TMG.ITMGContext;
ITMGContext.getInstance(this);

Registering callback

The API class uses the Delegate method to send callback notifications to the application. Register the callback function to the SDK for receiving callback messages.

API prototype

static public abstract class ITMGDelegate {
public void OnEvent(ITMG_MAIN_EVENT_TYPE type, Intent data){}
}
Override this callback function in the constructor to process the parameters of the callback.
Parameter
Type
Description
type
ITMGContext.ITMG_MAIN_EVENT_TYPE
Event type in the callback response
data
Intent message type
Callback message, i.e., event data

Sample code

private ITMGContext.ITMGDelegate itmgDelegate = null;
itmgDelegate = new ITMGContext.ITMGDelegate() {
@Override
public void OnEvent(ITMGContext.ITMG_MAIN_EVENT_TYPE type, Intent data) {
if (ITMGContext.ITMG_MAIN_EVENT_TYPE.ITMG_MAIN_EVENT_TYPE_ENTER_ROOM == type)
{
// Analyze the returned data
int nErrCode = data.getIntExtra("result" , -1);
String strErrMsg = data.getStringExtra("error_info");
}
}
}
Register the callback function to the SDK before room entry.

API prototype

public abstract int SetTMGDelegate(ITMGDelegate delegate);
Parameter
Type
Description
delegate
ITMGDelegate
SDK callback function

Sample code

ITMGContext.GetInstance(this).SetTMGDelegate(itmgDelegate);

Initializing the SDK

You need to initialize the SDK through the Init API before you can use the real-time voice chat, voice message, and speech-to-text services. The Init API must be called in the same thread as other APIs. We recommend you call all APIs in the main thread.

API prototype

public abstract int Init(String sdkAppId, String openId);
Parameter
Type
Description
sdkAppId
String
AppID provided in the GME console, which can be obtained as instructed in Activating Services.
openId
String
openID can only be in Int64 type, which is passed in after being converted to a const char*. You can customize its rules, and it must be unique in the application. To pass in openID as a string, submit a ticket for application.

Returned values

Returned Value
Description
QAVError.OK= 0
SDK was initialized successfully.
AV_ERR_SDK_NOT_FULL_UPDATE=7015
Check whether the SDK file is complete. We recommend that you delete it and then import the SDK again.
Notes on 7015 error code
The error code 7015 is identified based on the MD5 value. If this error is reported during integration, check the integrity and version of the SDK file as prompted.
The returned value AV_ERR_SDK_NOT_FULL_UPDATE is only a reminder but will not cause an initialization failure.
Due to the third-party enhancement, the Unity packaging mechanism, and other factors, the library file MD5 will be affected, resulting in misjudgment. Therefore, ignore this error in the logic for official releases, and avoid displaying it on the UI.

Sample code

String sdkAppID = "14000xxxxx";
String openID = "100";
int ret = 0;
// After the user agrees to the application's privacy policy, initialize the SDK at an appropriate time based on the application features
//ret = 0: The user agrees to the application's privacy policy
//ret = 1: The user does not agree to the application's privacy policy
// If the user does not agree to the privacy policy, change `ret` to a value other than 0
if(ret != 0){
Log.e(TAG,"The user does not agree to the application's privacy policy");
}else{
ITMGContext.GetInstance(this).Init(sdkAppId, openId);
}

Triggering event callback

Event callbacks can be triggered by periodically calling the Poll API in update. Poll is the message pump of GME, and the Poll API should be called periodically for GME to trigger event callbacks; otherwise, the entire SDK service will run exceptionally.\nRefer to the EnginePollHelper.java file in SDK Download Guide.
Call the Poll API periodically
The Poll API must be called periodically and in the main thread to avoid abnormal API callbacks.

API prototype

public abstract int Poll();

Sample code

private Handler mhandler = new Handler();private Runnable mRunnable = new Runnable() { @Override public void run() { if (s_pollEnabled) { if (ITMGContext.GetInstance(null) != null) ITMGContext.GetInstance(null).Poll(); } mhandler.postDelayed(mRunnable, 33); }};

Pausing the system

When a Pause event occurs in the system, the engine should also be notified for pause. If you do not need the audio played back in the background in the room, call Pause API to pause the GME service.

API prototype

public abstract int Pause();

Resuming the system

When a Resume event occurs in the system, the engine should also be notified for resumption. The Resume API only supports resuming voice chat.

API prototype

public abstract int Resume();

Uninitializing SDK

This API is used to uninitialize the SDK. If the game account is bound to openid, switching game account requires uninitializing GME and then using the new openid to initialize again.
Note:
If the end user revokes the permission granted to the SDK to process the personal information, you can call the Uninit API to stop using the SDK features and stop collecting and close the user data used by the features.

API prototype

public abstract int Uninit();

Voice Chat Room APIs

You should initialize and call the SDK to enter a room before voice chat can start.\nIf you have any questions when using the service, see Sound and Audio.

\"\"


API
Description
GenAuthBuffer
Calculates the local authentication key.
EnterRoom
Enters a room.
ExitRoom
Exits a room.
IsRoomEntered
Determines whether room entry is successful.
SwitchRoom
Switches the room quickly.
StartRoomSharing
Cross-room Co-anchoring

Local authentication key calculation

Generate AuthBuffer for encryption and authentication of relevant features. For release in the production environment, use the backend deployment key as detailed in Authentication Key.

API prototype

AuthBuffer public native byte[] genAuthBuffer(int sdkAppId, String roomId, String openId, String key)
Parameter
Type
Description
appId
int
AppId from the Tencent Cloud console
roomId
String
Room ID, which can contain up to 127 characters.
openId
String
User ID, which is the same as OpenId during initialization.
key
String
Permission key from the Tencent Cloud console.

Sample code

import com.tencent.av.sig.AuthBuffer;// Header file
byte[] authBuffer = AuthBuffer.getInstance().genAuthBuffer(Integer.parseInt(sdkAppId), strRoomID,openId, key);

Entering a room

This API is used to enter a room with the generated authentication information. The mic and speaker are not enabled by default after room entry.
Note:
If the room entry callback result is 0, the room entry is successful. If 0 is returned from the EnterRoom API, it doesn't necessarily mean that the room entry is successful.
The audio type of the room is determined by the first user to enter the room. After that, if a member in the room changes the room type, it will take effect for all members there. For example, if the first user entering the room uses the smooth sound quality, and the second user entering the room uses the HD sound quality, the room audio type of the second user will become smooth sound quality. Only when a member in the room calls the ChangeRoomType API, the audio type of the room will be changed.

API prototype

public abstract int EnterRoom(String roomID, int roomType, byte[] authBuffer);
Parameter
Type
Description
roomId
String
Room ID, which can contain up to 127 characters.
roomType
int
Room type. We recommend that you enter ITMG_ROOM_TYPE_FLUENCY. For more information on room audio types, see Sound Quality.
authBuffer
byte[]
Authentication key

Sample code

ITMGContext.GetInstance(this).EnterRoom(roomId,roomType, authBuffer);

Callback for room entry

After the user enters the room, the message ITMG_MAIN_EVENT_TYPE_ENTER_ROOM will be sent and identified in the OnEvent function for callback and processing. A successful callback means that the room entry is successful, and the billing starts.
Billing references:

Function prototype

private ITMGContext.ITMGDelegate itmgDelegate = null;
itmgDelegate= new ITMGContext.ITMGDelegate() {
@Override
public void OnEvent(ITMGContext.ITMG_MAIN_EVENT_TYPE type, Intent data) {
}
};

Sample code

Sample code for processing the callback, including room entry and network disconnection events.
public void OnEvent(ITMGContext.ITMG_MAIN_EVENT_TYPE type, Intent data) {
if (ITMGContext.ITMG_MAIN_EVENT_TYPE.ITMG_MAIN_EVENT_TYPE_ENTER_ROOM == type)
{
// Analyze the returned data
int nErrCode = data.getIntExtra("result" , -1);
String strErrMsg = data.getStringExtra("error_info");

if (nErrCode == AVError.AV_OK)
{
//Entered room successfully, and you can proceed with your operation
ScrollView_ShowLog("EnterRoom success");
Log.i(TAG,"EnterRoom success!");
}
else
{
//If you fail to enter the room, you need to analyze the returned error message
ScrollView_ShowLog("EnterRoom fail :" + strErrMsg);
Log.i(TAG,"EnterRoom fail!");
}
}
if (ITMGContext.ITMG_MAIN_EVENT_TYPE.ITMG_MAIN_EVENT_TYPE_ROOM_DISCONNECT == type)
{
//waiting timeout, please check your network
}
}

Data details

Message
Data
Example
ITMG_MAIN_EVENT_TYPE_ENTER_ROOM
result; error_info
{"error_info":"","result":0}
ITMG_MAIN_EVENT_TYPE_ROOM_DISCONNECT
result; error_info
{"error_info":"waiting timeout, please check your network","result":0}
If the network is disconnected, there will be a disconnected callback prompt ITMG_MAIN_EVENT_TYPE.ITMG_MAIN_EVENT_TYPE_ROOM_DISCONNECT. At this time, the SDK will automatically reconnect, and the callback is ITMG_MAIN_EVENT_TYPE_RECONNECT_START. When the reconnection is successful, there will be a callback ITMG_MAIN_EVENT_TYPE_RECONNECT_SUCCESS.

Error codes

Error Code
Cause and Suggested Solution
7006
Authentication failed. Causes:
AppID doesn't exist or is incorrect.
An error occurred while authenticating authbuff.
Authentication expired.
OpenId is invalid.
7007
The user was already in another room.
1001
The user was already in the process of entering a room but repeated this operation. We recommend that you not call the room entry API until the room entry callback is returned.
1003
The user was already in the room and called the room entry API again.
1101
Make sure that the SDK is initialized, OpenId complies with the rules, the APIs are called in the same thread, and the Poll API is called normally.

Exiting a room

This API is used to exit the current room. It is an async API. The returned value AV_OK indicates a successful async delivery. If there is a scenario in the application where room entry is performed immediately after room exit, you don't need to wait for the RoomExitComplete callback notification from the ExitRoom API; instead, you can directly call the EnterRoom API.

API prototype

public abstract int ExitRoom();

Sample code

ITMGContext.GetInstance(this).ExitRoom();

Callback for room exit

After the user exits a room, a callback will be returned with the message being ITMG_MAIN_EVENT_TYPE_EXIT_ROOM.

Sample code

public void OnEvent(ITMGContext.ITMG_MAIN_EVENT_TYPE type, Intent data) {
if (ITMGContext.ITMG_MAIN_EVENT_TYPE.ITMG_MAIN_EVENT_TYPE_EXIT_ROOM == type)
{
// Receive the event of successful room exit
}
}

Data details

Message
Data
Example
ITMG_MAIN_EVENT_TYPE_EXIT_ROOM
result; error_info
{"error_info":"","result":0}

Determining whether user has entered room

This API is used to determine whether the user has entered a room. A value in bool type will be returned. Do not call this API during room entry.

API prototype

public abstract boolean IsRoomEntered();

Sample code

ITMGContext.GetInstance(this).IsRoomEntered();

Switching room

User can call this API to quickly switch the voice chat room after entering the room. After the room is switched, the device is not reset, that is, if the microphone is already enabled in this room, the microphone will keep enabled after the room is switched.\nThe callback for quickly switching rooms is ITMG_MAIN_EVENT_TYPE.ITMG_MAIN_EVENT_TYPE_SWITCH_ROOM, and the fields are error_info and result.

API prototype

public abstract int SwitchRoom(String targetRoomID, byte[] authBuffer);

Type descriptions

Parameter
Type
Description
targetRoomID
String
ID of the room to enter
authBuffer
byte[]
Generates a new authentication key with the ID of the room to enter

Callback sample code

if(ITMGContext.ITMG_MAIN_EVENT_TYPE.ITMG_MAIN_EVENT_TYPE_SWITCH_ROOM == type) {
int result = data.getIntExtra("result", 1);
String errorInfo = data.getStringExtra("error_info");
if (result == 0) {
Toast.makeText(getActivity(), "switch room success.", Toast.LENGTH_SHORT).show();
}
else {
Toast.makeText(getActivity(), "switch room failed.. error info=" + errorInfo, Toast.LENGTH_SHORT).show();
}
}

Cross-room mic connection

Call this API to connect the microphones across rooms after the room entry. After the call, the local user can communicate with the target OpenID user in the target room. The target room should be of the same type as the local room.

Example

User a is in room A, user b is in room B, and user a can talk with b through the cross-room API. When user c in room A speaks, users b and d in room B cannot hear. User c in room A can hear only the voice in room A and the voice of user b in room B but not other users in room B.

API prototype

/// <summary> Enable the room sharing, and connect the mic of the OpenID in another room.</summary>
public abstract int StartRoomSharing(String targetRoomID, String targetOpenID, byte[] authBuffer);
/// <summary> Stop the enabled room sharing.</summary>
public abstract int StopRoomSharing();

Type descriptions

Parameter
Type
Description
targetRoomID
String
ID of the room to connect mic
targetOpenID
String
Target OpenID to connect mic
authBuffer
byte[]
Reserved flag. You just need to enter NULL.

Sample code

if (mSwtichRoomShareStart.isChecked())
{
String strRoomID = mEditRoomShareRoomID.getText().toString();
String strOpenID = mEditRoomShareOpenID.getText().toString();
int nRet = ITMGContext.GetInstance(getActivity()).GetRoom().StartRoomSharing(strRoomID, strOpenID, null);
if (nRet != 0)
{
Toast.makeText(getActivity(), String.format("StartRoomSharing failed nRet=" + nRet), Toast.LENGTH_SHORT).show();
}else
{
int nRet = ITMGContext.GetInstance(getActivity()).GetRoom().StopRoomSharing();
if (nRet != 0)
{
Toast.makeText(getActivity(), String.format("StopRoomSharing failed nRet=" + nRet), Toast.LENGTH_SHORT).show();
}
}
}

Room Status Maintenance

APIs in this section are used to display speaking members and members entering or exiting the room and mute a member in the room at the business layer.
\"\"

API/Notification
Description
ITMG_MAIN_EVNET_TYPE_USER_UPDATE
The member status changed.
AddAudioBlackList
Mutes a member in the room.
RemoveAudioBlackList
Unmutes a member.

Notifications of member room entry and speaking status

This API is used to obtain the user speaking in the room and display it in the UI, and to send a notification when someone entering or exiting the room.\nNotification for this event will be sent only when the status changes. To get member status in real time, cache the notification when it is received at a higher layer. The event message is ITMG_MAIN_EVNET_TYPE_USER_UPDATE, where the data contains event_id and user_list. The event message will be identified in the OnEvent function.\nNotifications for audio events are subject to a threshold, and a notification will be sent only when this threshold is exceeded. The notification "A member has stopped sending audio packets" will be sent if no audio packets are received in more than two seconds.
event_id
Description
Maintenance
ITMG_EVENT_ID_USER_ENTER
Return the openid of the member entering the room.
Member list
ITMG_EVENT_ID_USER_EXIT
Return the openid of the member exiting the room.
Member list
ITMG_EVENT_ID_USER_HAS_AUDIO
Return the openid of the member sending audio packets in the room. This event can be used to determine whether a user is speaking and display the voiceprint effect.
Chat member list
ITMG_EVENT_ID_USER_NO_AUDIO
Return the openid of the member stopping sending audio packets in the room.
Chat member list

Sample code

public void OnEvent(ITMGContext.ITMG_MAIN_EVENT_TYPE type, Intent data) {
if (ITMGContext.ITMG_MAIN_EVENT_TYPE.ITMG_MAIN_EVNET_TYPE_USER_UPDATE == type)
{
// Update member status
int nEventID = data.getIntExtra("event_id", 0);
String[] openIdList =data.getStringArrayExtra("user_list");
switch (nEventID)
{
case ITMG_EVENT_ID_USER_ENTER:
// A member enters the room
break;
case ITMG_EVENT_ID_USER_EXIT:
// A member exits the room
break;
case ITMG_EVENT_ID_USER_HAS_AUDIO:
// A member sends audio packets
break;
case ITMG_EVENT_ID_USER_NO_AUDIO:
// A member stops sending audio packets
break;
default:
break;
}
}
}

Data details

Message
Data
Example
ITMG_MAIN_EVNET_TYPE_USER_UPDATE
event_id; user_list
{"event_id":0,"user_list":""}

Muting a member in the room

This API is used to add an ID to the audio data blocklist. This operation blocks audio from someone and only applies to the local device without affecting other devices. The returned value 0 indicates that the call is successful. Assume that users A, B, and C are all speaking using their mic in a room:
If A blocks C, A can only hear B.
If B blocks neither A nor C, B can hear both of them.
If C blocks neither A nor B, C can hear both of them.
This API is suitable for scenarios where a user is muted in a room.

API prototype

public abstract int AddAudioBlackList(String openId);
Parameter
Type
Description
openId
String
openid of the user to be blocked

Sample code

ITMGContext.GetInstance(this).GetAudioCtrl().AddAudioBlackList(openId);

Unmuting

This API is used to remove an ID from the audio data blacklist. A returned value of 0 indicates the call is successful.

API prototype

public abstract int RemoveAudioBlackList(String openId);
Parameter
Type
Description
openId
String
User openid to be unblocked

Sample code

ITMGContext.GetInstance(this).GetAudioCtrl().RemoveAudioBlackList(openId);

Voice Chat Capturing APIs

The voice chat APIs can only be called after SDK initialization and room entry.
When the user clicks the button of enabling/disabling the mic or speaker on the UI, we recommend that you call the EnableMic or EnableSpeaker API.
When the user enters a voice chat room, enabling/disabling a capturing device will restart both capturing and playback devices. If the application is playing back background music, it will also be interrupted. Playback won't be interrupted if the mic is enabled/disabled through control of upstreaming/downstreaming. Calling method: Call EnableAudioCaptureDevice(true) and EnableAudioPlayDevice(true) once after room entry, and call EnableAudioSend/Recv to send/receive audio streams when Enable/Disable Mic is clicked.
API
Description
EnableMic
Enables/Disables the mic.
GetMicState
Gets the mic status.
EnableAudioCaptureDevice
Enables/Disables the capturing device.
IsAudioCaptureDeviceEnabled
Gets the capturing device status.
EnableAudioSend
Enables/Disables audio upstreaming.
IsAudioSendEnabled
Gets the audio upstreaming status.
GetMicLevel
Gets the real-time mic volume level.
GetSendStreamLevel
Gets the real-time audio upstreaming volume level.
SetMicVolume
Sets the mic volume level.
GetMicVolume
Gets the mic volume level.

Enabling or disabling mic

This API is used to enable/disable the mic. The mic and speaker are not enabled by default after room entry. EnableMic is equivalent to using EnableAudioCaptureDevice and EnableAudioSend together. If accompaniment is used, call this API as instructed in Accompaniment in Voice Chat.

API prototype

public abstract int EnableMic(boolean isEnabled);
Parameter
Type
Description
isEnabled
boolean
To enable the mic, set this parameter to true; otherwise, set it to false.

Sample code

// Turn on mic
ITMGContext.GetInstance(this).GetAudioCtrl().EnableMic(true);

Getting the mic status

This API is used to get the mic status. The returned value 0 indicates that the mic is off, while 1 is on.

API prototype

public abstract int GetMicState();

Sample code

int micState = ITMGContext.GetInstance(this).GetAudioCtrl().GetMicState();

Enabling or disabling capturing device

This API is used to enable/disable a capturing device. The device is not enabled by default after room entry.
This API can only be called after room entry. The device will be disabled automatically after room exit.
Operations such as permission application and volume type adjustment will generally be performed when a capturing device is enabled on a mobile device.

API prototype

public abstract int EnableAudioCaptureDevice(boolean isEnabled);
Parameter
Type
Description
isEnabled
boolean
To enable the capturing device, set this parameter to true, otherwise, set it to false.

Sample code

// Enable capturing device
ITMGContext.GetInstance(this).GetAudioCtrl().EnableAudioCaptureDevice(true);

Getting the capturing device status

This API is used to get the status of a capturing device.

API prototype

public abstract boolean IsAudioCaptureDeviceEnabled();

Sample code

bool IsAudioCaptureDevice = ITMGContext.GetInstance(this).GetAudioCtrl().IsAudioCaptureDeviceEnabled();

Enabling or disabling audio upstreaming

This API is used to enable/disable audio upstreaming. If a capturing device is already enabled, it will send captured audio data; otherwise, it will remain mute. For more information on how to enable/disable the capturing device, see the EnableAudioCaptureDevice API.

API prototype

public abstract int EnableAudioSend(boolean isEnabled);
Parameter
Type
Description
isEnabled
boolean
To enable audio upstreaming, set this parameter to true; otherwise, set it to false.

Sample code

ITMGContext.GetInstance(this).GetAudioCtrl().EnableAudioSend(true);

Getting audio upstreaming status

This API is used to get the status of audio upstreaming.

API prototype

public abstract boolean IsAudioSendEnabled();

Sample code

bool IsAudioSend = ITMGContext.GetInstance(this).GetAudioCtrl().IsAudioSendEnabled();

Getting the real-time mic volume

This API is used to get the real-time mic volume. An int-type value in the range of 0-100 will be returned. It is recommended to call this API once every 20 ms.

API prototype

public abstract int GetMicLevel();

Sample code

int micLevel = ITMGContext.GetInstance(this).GetAudioCtrl().GetMicLevel();

Getting the real-time audio upstreaming volume

This API is used to get the local real-time audio upstreaming volume. An int-type value in the range of 0-100 will be returned.

API prototype

ITMGContext TMGAudioCtrl int GetSendStreamLevel()

Sample code

int Level = ITMGContext.GetInstance(this).GetAudioCtrl().GetSendStreamLevel();

Setting the mic software volume

This API is used to set the mic volume level. The corresponding parameter is volume, which is equivalent to attenuating or gaining the captured sound.

API prototype

public abstract int SetMicVolume(int volume);
Parameter
Type
Description
volume
int
Value range: 0-200. Default value: 100. 0 indicates that the audio is muted, while 100 indicates that the volume level remains unchanged.

Sample code

ITMGContext.GetInstance(this).GetAudioCtrl().SetMicVolume(volume);

Getting the mic software volume

This API is used to obtain the microphone volume. An "int" value is returned. Value 101 represents API SetMicVolume has not been called.

API prototype

public abstract int GetMicVolume();

Sample code

ITMGContext.GetInstance(this).GetAudioCtrl().GetMicVolume();

Voice Chat Playback APIs

API
Description
EnableSpeaker
Enables/Disables the speaker.
GetSpeakerState
Gets the speaker status.
EnableAudioPlayDevice
Enables/Disables the playback device.
IsAudioPlayDeviceEnabled
Gets the playback device status.
EnableAudioRecv
Enables/Disables audio downstreaming.
IsAudioRecvEnabled
Gets the audio downstreaming status.
GetSpeakerLevel
Gets the real-time speaker volume level.
GetRecvStreamLevel
Gets the real-time downstreaming audio levels of other members in the room.
SetSpeakerVolume
Sets the speaker volume level.
GetSpeakerVolume
Gets the speaker volume level.

Enabling or disabling speaker

This API is used to enable/disable the speaker. EnableSpeaker is equivalent to using EnableAudioPlayDevice and EnableAudioRecv together. If accompaniment is used, call this API as instructed in Accompaniment in Voice Chat.

API prototype

public abstract int EnableSpeaker(boolean isEnabled);
Parameter
Type
Description
isEnabled
boolean
To disable the speaker, set this parameter to false; otherwise, set it to true.

Sample code

// Turn on the speaker
ITMGContext.GetInstance(this).GetAudioCtrl().EnableSpeaker(true);

Getting the speaker status

This API is used to get the speaker status. 0 indicates that the speaker is off, and 1 is on.

API prototype

public abstract int GetSpeakerState();

Sample code

int micState = ITMGContext.GetInstance(this).GetAudioCtrl().GetSpeakerState();

Enabling or disabling playback device

This API is used to enable/disable a playback device.

API prototype

public abstract int EnableAudioPlayDevice(boolean isEnabled);
Parameter
Type
Description
isEnabled
boolean
To disable the playback device, set this parameter to false; otherwise, set it to true.

Sample code

// Enable the playback device
ITMGContext.GetInstance(this).GetAudioCtrl().EnableAudioPlayDevice(true);

Getting the playback device status

This API is used to get the status of a playback device.

API prototype

public abstract boolean IsAudioPlayDeviceEnabled();

Sample code

bool IsAudioPlayDevice = ITMGContext.GetInstance(this).GetAudioCtrl().IsAudioPlayDeviceEnabled();

Enabling or disabling audio downstreaming

This API is used to enable/disable audio downstreaming. If a playback device is already enabled, it will play back audio data from other members in the room; otherwise, it will remain muted. For more information on how to enable/disable the playback device, see the EnableAudioPlayDevice API.

API prototype

public abstract int EnableAudioRecv(boolean isEnabled);
Parameter
Type
Description
isEnabled
boolean
To enable audio downstreaming, set this parameter to true; otherwise, set it to false.

Sample code

ITMGContext.GetInstance(this).GetAudioCtrl().EnableAudioRecv(true);

Getting audio downstreaming status

This API is used to get the status of audio downstreaming.

API prototype

public abstract boolean IsAudioRecvEnabled();

Sample code

bool IsAudioRecv = ITMGContext.GetInstance(this).GetAudioCtrl().IsAudioRecvEnabled();

Getting the real-time speaker volume

This API is used to get the real-time speaker volume. An int-type value will be returned to indicate the volume. It is recommended to call this API once every 20 ms.

API prototype

public abstract int GetSpeakerLevel();

Sample code

int SpeakLevel = ITMGContext.GetInstance(this).GetAudioCtrl().GetSpeakerLevel();

Getting the real-time downstreaming audio levels of other members in room

This API is used to get the real-time audio downstreaming volume of other members in the room. An int-type value will be returned. Value range: 0-200.

API prototype

public abstract int GetRecvStreamLevel(String openId);
Parameter
Type
Description
openId
String
openId of another member in the room

Sample code

int Level = ITMGContext.GetInstance(this).GetAudioCtrl().GetRecvStreamLevel(openId);

Dynamically setting the volume of a member of the room

This API is used to set the volume of a member in the room. It takes effect only on the local.

API prototype

public abstract int SetSpeakerVolumeByOpenID(String openId, int volume);
Parameter
Type
Description
openId
String
OpenID of the target user
volume
int
Percentage. Recommended value range: 0-200. Default value: 100.

Sample code

Executed statements
// Lower the volume of 123333 to 80%
String strOpenID = "1233333";
int nOpenVolume = Integer.valueOf(80);
int nRet = ITMGContext.GetInstance(getActivity()).GetAudioCtrl().SetSpeakerVolumeByOpenID(strOpenID, nOpenVolume);
if (nRet != 0)
{
// Toast error occured
}
else
{
// Toast set successfully
}

Getting volume percentage

Call this API to get the volume set by SetSpeakerVolumeByOpenID

API prototype

public abstract int GetSpeakerVolumeByOpenID(String openId);
Parameter
Type
Description
openId
String
OpenID of the target user

Returned values

API returns volume percentage set by OpenID, where 100 is by default.

Setting the speaker volume

This API is used to set the speaker volume.

API prototype

public abstract int SetSpeakerVolume(int volume);
Parameter
Type
Description
volume
int
Volume level. Value range: 0-200. Default value: 100. 0 indicates that the audio is muted, while 100 indicates that the volume level remains unchanged.

Sample code

int speVol = (int)(value * 100);ITMGContext.GetInstance(this).GetAudioCtrl().SetSpeakerVolume(volume);

Getting the speaker volume

This API is used to get the speaker volume. An int-type value will be returned to indicate the volume. 101 indicates that the SetSpeakerVolume API has not been called.\n"Level" indicates the real-time volume, and "Volume" the speaker volume. The final volume = Level * Volume%. For example, if the "Level" is 100 and "Volume" is 60, the final volume is "60".

API prototype

public abstract int GetSpeakerVolume();

Sample code

ITMGContext.GetInstance(this).GetAudioCtrl().GetSpeakerVolume();

Advanced APIs

Enabling in-ear monitoring

This API is used to enable in-ear monitoring. You need to call EnableLoopBack+EnableSpeaker before you can hear your own voice.

API prototype

public abstract int EnableLoopBack(boolean enable);
Parameter
Type
Description
enable
boolean
Specifies whether to enable in-ear monitoring.

Sample code

ITMGContext.GetInstance(this).GetAudioCtrl().EnableLoopBack(true);

Getting user's room audio type

This API is used to get a user's room audio type. The returned value is the room audio type. Value 0 indicates that an error occurred while getting the user's room audio type. For room audio types, see the EnterRoom API.

API prototype

public abstract int GetRoomType();

Sample code

ITMGContext.GetInstance(this).GetRoom().GetRoomType();

Getting the room ID

This API is used to get the voice chat room ID and can be called only after a successful room entry. A string will be returned.

API prototype

public abstract String GetRoomID();

Modifying user's room audio type

This API is used to modify a user's room audio type. For the result, please see the callback event. The event type is ITMG_MAIN_EVENT_TYPE_CHANGE_ROOM_TYPE. The audio type of the room is determined by the first user to enter the room. After that, if a member in the room changes the room type, it will take effect for all members there.

API prototype

public abstract int ChangeRoomType(int nRoomType);
Parameter
Type
Description
nRoomType
int
Room type to be switched to. For room audio types, see the EnterRoom API.

Sample code

ITMGContext.GetInstance(this).GetRoom().ChangeRoomType(nRoomType);

Callback for modifying the room type

After the room type is set, the event message ITMG_MAIN_EVENT_TYPE_CHANGE_ROOM_TYPE will be returned in the callback. The returned parameters include result, error_info, and new_room_type. The new_room_type represents the following information. The event message will be identified in the OnEvent function.
Event Subtype
Parameter
Description
ITMG_ROOM_CHANGE_EVENT_ENTERROOM
1
The existing audio type is inconsistent with and changed to that of the entered room.
ITMG_ROOM_CHANGE_EVENT_START
2
A user is already in the room and the audio type starts changing (e.g., calling the ChangeRoomType API to change the audio type).
ITMG_ROOM_CHANGE_EVENT_COMPLETE
3
A user is already in the room, and the audio type has been changed.
ITMG_ROOM_CHANGE_EVENT_REQUEST
4
A room member calls the ChangeRoomType API to request a change of the room audio type.

Sample code

public void OnEvent(ITMGContext.ITMG_MAIN_EVENT_TYPE type, Intent data) {\tif (ITMGContext.ITMG_MAIN_EVENT_TYPE.ITMG_MAIN_EVENT_TYPE_CHANGE_ROOM_TYPE == type) {\t\t// Process the room type events\t }}

Data details

Message
Data
Example
ITMG_MAIN_EVENT_TYPE_CHANGE_ROOM_TYPE
result;error_info;new_room_type;subEventType
{"error_info":"","new_room_type":0,"subEventType":0,"result":0}

The monitoring event of room call quality

This is the quality monitoring event, which is triggered once every two seconds after room entry, and its message is ITMG_MAIN_EVENT_TYPE_CHANGE_ROOM_QUALITY. The returned parameters include weight, loss, and delay, which are as detailed below:
Parameter
Type
Description
weight
int
Value range: 1–50. 50 indicates excellent sound quality, 1 indicates very poor (barely usable) sound quality, and 0 represents an initial meaningless value. Generally, if the value is below 30, you can remind users that the network is poor and recommend them to switch the network.
Loss
double
Upstream packet loss rate
Delay
int
Voice chat delay in ms

Getting version number

This API is used to get the SDK version number for analysis.

API prototype

public abstract String GetSDKVersion();

Sample code

ITMGContext.GetInstance(this).GetSDKVersion();

Checking mic permission

This API is used to return the mic permission status.

Function prototype

public abstract ITMG_RECORD_PERMISSION CheckMicPermission();

Parameter description

Parameter
Value
Description
ITMG_PERMISSION_GRANTED
0
The mic permission is granted.
ITMG_PERMISSION_Denied
1
Microphone disabled.
ITMG_PERMISSION_NotDetermined
2
No authorization box has been popped up to request the permission.
ITMG_PERMISSION_ERROR
3
An error occurred while calling the API.

Sample code

ITMGContext.GetInstance(this).CheckMicPermission();

Checking mic status

Function prototype

public abstract ITMG_CHECK_MIC_STATUS CheckMic();

Returned value handling

Returned Value
Description
Handling
ITMG_CHECK_MIC_STATUS_AVAILABLE = 0
Normally available
No handling required
ITMG_CHECK_MIC_STATUS_NO_GRANTED = 2
Access not obtained/denied
The access permission needs to be obtained before the mic is enabled.
ITMG_CHECK_MIC_STATUS_INVALID_MIC = 3
No device available
Generally, this error will be reported on PCs when no mics are available. Prompt the user to insert a headset or mic.
ITMG_CHECK_MIC_STATUS_NOT_INIT = 5
Not initialized
Call EnableMic after Init.

Setting log printing level

This API is used to set the level of logs to be printed, and needs to be called before the initialization. It is recommended to keep the default level.

API prototype

public abstract int SetLogLevel(int levelWrite, int levelPrint);

Parameter description

Parameter
Type
Description
levelWrite
ITMG_LOG_LEVEL
Sets the level of logs to be written. TMG_LOG_LEVEL_NONE indicates not to log. Default value: TMG_LOG_LEVEL_INFO.
levelPrint
ITMG_LOG_LEVEL
Sets the level of logs to be printed. TMG_LOG_LEVEL_NONE indicates not to print. Default value: TMG_LOG_LEVEL_ERROR.
ITMG_LOG_LEVEL description:
ITMG_LOG_LEVEL
Description
TMG_LOG_LEVEL_NONE
Does not print logs
TMG_LOG_LEVEL_ERROR
Prints error logs (default)
TMG_LOG_LEVEL_INFO
Prints info logs
TMG_LOG_LEVEL_DEBUG
Prints debug logs
TMG_LOG_LEVEL_VERBOSE
Prints verbose logs

Sample code

ITMGContext.GetInstance(this).SetLogLevel(TMG_LOG_LEVEL_INFO,TMG_LOG_LEVEL_INFO);

Setting the log printing path

This API is used to set the log printing path, and needs to be called before initialization. The default path is /sdcard/Android/data/xxx.xxx.xxx/files.

API prototype

public abstract int SetLogPath(String logDir);
Parameter
Type
Description
logDir
String
Path

Sample code

ITMGContext.GetInstance(this).SetLogPath(path);

Getting the diagnostic messages

This API is used to get information on the quality of real-time audio/video calls, which is mainly used to view real-time call quality and troubleshoot and can be ignored on the business side.

API prototype

public abstract String GetQualityTips();

Sample code

ITMGContext.GetInstance(this).GetRoom().GetQualityTips();

Callback Messages

Message
Description
Data
Example
ITMG_MAIN_EVENT_TYPE_ENTER_ROOM
A member entered the audio room.
result; error_info
{"error_info":"","result":0}
ITMG_MAIN_EVENT_TYPE_EXIT_ROOM
A member exited the audio room.
result; error_info
{"error_info":"","result":0}
ITMG_MAIN_EVENT_TYPE_ROOM_DISCONNECT
The room was disconnected due to a network or another issue.
result; error_info
{"error_info":"waiting timeout, please check your network","result":0}
ITMG_MAIN_EVNET_TYPE_USER_UPDATE
Room members were updated.
user_list; event_id
{"event_id":1,"user_list":["0"]}
ITMG_MAIN_EVENT_TYPE_RECONNECT_START
The reconnection to the room started.
result; error_info
{"error_info":"","result":0}
ITMG_MAIN_EVENT_TYPE_RECONNECT_SUCCESS
The reconnection to the room succeeded.
result; error_info
{"error_info":"","result":0}
ITMG_MAIN_EVENT_TYPE_SWITCH_ROOM
The room was quickly switched.
result; error_info
{"error_info":"","result":0}
ITMG_MAIN_EVENT_TYPE_CHANGE_ROOM_TYPE
The room status was changed.
result; error_info; sub_event_type; new_room_type
{"error_info":"","new_room_type":0,"result":0}
ITMG_MAIN_EVENT_TYPE_ROOM_SHARING_START
Cross-room mic connect started.
result;
{"result":0}
ITMG_MAIN_EVENT_TYPE_ROOM_SHARING_STOP
Cross-room mic connect stopped.
result;
{"result":0}
ITMG_MAIN_EVENT_TYPE_SPEAKER_DEFAULT_DEVICE_CHANGED
The default speaker was changed.
result; error_info
{"deviceID":"{0.0.0.00000000}.{a4f1e8be-49fa-43e2-b8cf-dd00542b47ae}","deviceName":"Speaker (Realtek High Definition Audio)","error_info":"","isNewDevice":true,"isUsedDevice":false,"result":0}
ITMG_MAIN_EVENT_TYPE_SPEAKER_NEW_DEVICE
A new speaker was added.
result; error_info
{"deviceID":"{0.0.0.00000000}.{a4f1e8be-49fa-43e2-b8cf-dd00542b47ae}","deviceName":"Speaker (Realtek High Definition Audio)","error_info":"","isNewDevice":true,"isUsedDevice":false,"result":0}
ITMG_MAIN_EVENT_TYPE_SPEAKER_LOST_DEVICE
A speaker was lost.
result; error_info
{"deviceID":"{0.0.0.00000000}.{a4f1e8be-49fa-43e2-b8cf-dd00542b47ae}","deviceName":"Speaker (Realtek High Definition Audio)","error_info":"","isNewDevice":false,"isUsedDevice":false,"result":0}
ITMG_MAIN_EVENT_TYPE_MIC_NEW_DEVICE
A new mic was added.
result; error_info
{"deviceID":"{0.0.1.00000000}.{5fdf1a5b-f42d-4ab2-890a-7e454093f229}","deviceName":"Mic (Realtek High Definition Audio)","error_info":"","isNewDevice":true,"isUsedDevice":true,"result":0}
ITMG_MAIN_EVENT_TYPE_MIC_LOST_DEVICE
A mic was lost.
result; error_info
{"deviceID":"{0.0.1.00000000}.{5fdf1a5b-f42d-4ab2-890a-7e454093f229}","deviceName":"Mic (Realtek High Definition Audio)","error_info":"","isNewDevice":false,"isUsedDevice":true,"result":0}
ITMG_MAIN_EVENT_TYPE_MIC_DEFAULT_DEVICE_CHANGED
The default mic was changed.
result; error_info
{"deviceID":"{0.0.1.00000000}.{5fdf1a5b-f42d-4ab2-890a-7e454093f229}","deviceName":"Mic (Realtek High Definition Audio)","error_info":"","isNewDevice":false,"isUsedDevice":true,"result":0}
ITMG_MAIN_EVENT_TYPE_CHANGE_ROOM_QUALITY
The room quality changed.
weight; loss; delay
{"weight":5,"loss":0.1,"delay":1}
ITMG_MAIN_EVNET_TYPE_PTT_RECORD_COMPLETE
Voice message recording was completed.
result; file_path
{"file_path":"","result":0}
ITMG_MAIN_EVNET_TYPE_PTT_UPLOAD_COMPLETE
Voice message upload was completed.
result; file_path;file_id
{"file_id":"","file_path":"","result":0}
ITMG_MAIN_EVNET_TYPE_PTT_DOWNLOAD_COMPLETE
Voice message download was completed.
result; file_path;file_id
{"file_id":"","file_path":"","result":0}
ITMG_MAIN_EVNET_TYPE_PTT_PLAY_COMPLETE
Voice message playback was completed.
result; file_path
{"file_path":"","result":0}
ITMG_MAIN_EVNET_TYPE_PTT_SPEECH2TEXT_COMPLETE
Fast speech-to-text conversion was completed.
result; text;file_id
{"file_id":"","text":"","result":0}
ITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRECOGNITION_COMPLETE
Streaming speech-to-text conversion was completed.
result; file_path; text;file_id
{"file_id":"","file_path":","text":"","result":0}
ITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRECOGNITION_IS_RUNNING
Streaming speech-to-text conversion is in progress.
result; file_path; text;file_id
{"file_id":"","file_path":","text":"","result":0}
ITMG_MAIN_EVNET_TYPE_PTT_TEXT2SPEECH_COMPLETE
Text-to-speech conversion was completed.
result; text;file_id
{"file_id":"","text":"","result":0}
ITMG_MAIN_EVNET_TYPE_PTT_TRANSLATE_TEXT_COMPLETE
Text translation was completed.
result; text;file_id
{"file_id":"","text":"","result":0}

","recentReleaseTime":"2024-01-18 15:13:51","slate":"[{\"id\":\"N7uUSo93UOPsVZzxpRObB\",\"children\":[{\"text\":\"This document describes how to integrate with and debug GME client APIs for the voice chat feature for Android.\"}],\"type\":\"p\"},{\"id\":\"ZSUWg7Vah-dfjM2E7BLbY\",\"children\":[{\"text\":\"Key Considerations for Using GME\"}],\"nodeId\":\".E4.BD.BF.E7.94.A8-gme-.E9.87.8D.E8.A6.81.E4.BA.8B.E9.A1.B9\",\"type\":\"h2\"},{\"id\":\"MrLBaLYwYcITdYie98wt3\",\"children\":[{\"text\":\"GME provides the real-time voice chat service, voice messaging and speech-to-text services, which all depend on core APIs such as \"},{\"code\":1,\"text\":\"Init\"},{\"text\":\" and \"},{\"code\":1,\"text\":\"Poll\"},{\"text\":\".\"}],\"type\":\"p\"},{\"id\":\"WMA-i14HS_M8A-5ZbOU0_\",\"children\":[{\"text\":\"Notes\"}],\"nodeId\":\".E9.87.8D.E7.82.B9.E6.8F.90.E7.A4.BA\",\"type\":\"h4\"},{\"id\":\"zxeLeigk1nxgTs_oNihaj\",\"children\":[{\"text\":\"You have created a GME application and obtained the \"},{\"code\":1,\"text\":\"AppID\"},{\"text\":\" and \"},{\"code\":1,\"text\":\"Key\"},{\"text\":\" of the SDK as instructed in \"},{\"id\":\"v3sHjUlT6xYX0NFoQAD9D\",\"children\":[{\"text\":\"Activating Services\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://www.tencentcloud.com/document/product/607/10782\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/10782\"},\"type\":\"ref\"},{\"text\":\".\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"E7JYswxejW_LLETKrqkm0\",\"children\":[{\"text\":\"You have \"},{\"b\":1,\"text\":\"activated the voice chat, voice messaging, and speech-to-text services of GME\"},{\"text\":\". For more information, see \"},{\"id\":\"kdYx6Q-iX67QcZRgeZY-4\",\"children\":[{\"text\":\"Activating Services\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://www.tencentcloud.com/document/product/607/10782\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/10782\"},\"type\":\"ref\"},{\"text\":\".\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"RERRE312be1CyiI_hgSJ4\",\"children\":[{\"text\":\"Configure your project before using GME; otherwise, the SDK will not take effect.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"SVBS9JaGThzDi8q8uOlI2\",\"children\":[{\"text\":\"After a GME API is called successfully, \"},{\"code\":1,\"text\":\"QAVError.OK\"},{\"text\":\" will be returned with the value being \"},{\"code\":1,\"text\":\"0\"},{\"text\":\".\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"UMljSeHMktsD311FGmHMI\",\"children\":[{\"text\":\"GME APIs should be called in the same thread.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"9kH3YuOjlgrCaYcN5uUIe\",\"children\":[{\"text\":\"The \"},{\"code\":1,\"text\":\"Poll\"},{\"text\":\" API should be called periodically for GME to trigger event callbacks.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"WIbpgQljMve-NUnQU8M5e\",\"children\":[{\"text\":\"For detailed error codes, see \"},{\"id\":\"FUlgf4XuV91H3WGGVdXxg\",\"children\":[{\"text\":\"Error Codes\"}],\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/33223\"},\"type\":\"ref\"},{\"text\":\".\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"oGRtotmY_k0Hw6PsF9rvs\",\"children\":[{\"text\":\"Integrating the SDK\"}],\"nodeId\":\".E6.8E.A5.E5.85.A5-sdk\",\"type\":\"h2\"},{\"id\":\"khhfwMA4c0czKLxDB7rr-\",\"children\":[{\"text\":\"Directions\"}],\"nodeId\":\".E9.87.8D.E8.A6.81.E6.AD.A5.E9.AA.A4\",\"type\":\"h3\"},{\"id\":\"WNu4yphi0eIdsmcYU-_X0\",\"children\":[{\"text\":\"Key processes involved in SDK integration are as follows:\"}],\"type\":\"p\"},{\"type\":\"p\",\"children\":[{\"text\":\"\"},{\"id\":\"htMUj3Ux5JcL_KslVf7ae\",\"alt\":\"\",\"children\":[{\"text\":\"\"}],\"inline\":true,\"naturalSize\":[1560,1030],\"size\":[799,527],\"type\":\"image\",\"url\":\"https://cloudcache.intl.tencent-cloud.com/cms/backend-cms/a98b45c2b96711ed9e14525400088f3a.png\"},{\"text\":\"\"}],\"id\":\"IjKuPTHpGz1Cd_aziGMYX\"},{\"id\":\"7L45LnMywV719yN738eVw\",\"children\":[{\"text\":\"\"},{\"type\":\"ref\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/zh/document/product/607/40860#.3Ca-id.3D.22init.22.3E.E5.88.9D.E5.A7.8B.E5.8C.96-sdk.3C.2Fa.3E\"},\"children\":[{\"text\":\"Initializing GME\"}],\"id\":\"CItsqGf7bD642hSNs_mVQ\"},{\"text\":\"\"}],\"type\":\"oli\"},{\"id\":\"5Gy2shpsnirjA7KeS47Ve\",\"children\":[{\"text\":\"\"},{\"type\":\"ref\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/zh/document/product/607/40860#.3Ca-id.3D.22poll.22.3E.E8.A7.A6.E5.8F.91.E4.BA.8B.E4.BB.B6.E5.9B.9E.E8.B0.83.3C.2Fa.3E\"},\"children\":[{\"text\":\"Calling Poll periodically to trigger callbacks\"}],\"id\":\"ffQwmNFohC5uhFj2bd_D2\"},{\"text\":\"\"}],\"type\":\"oli\"},{\"id\":\"RiOi8WeEncIy6Z89yMOgx\",\"children\":[{\"text\":\"\"},{\"type\":\"ref\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/zh/document/product/607/40860#.E5.8A.A0.E5.85.A5.E6.88.BF.E9.97.B4\"},\"children\":[{\"text\":\"Entering a voice chat room\"}],\"id\":\"0Onzuvajb6g0m1BhEALnP\"},{\"text\":\"\"}],\"type\":\"oli\"},{\"id\":\"jOxHAFKCApAzOAM2bjoWe\",\"children\":[{\"text\":\"\"},{\"type\":\"ref\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/zh/document/product/607/40860#.E9.BA.A6.E5.85.8B.E9.A3.8E.E7.8A.B6.E6.80.81.E8.8E.B7.E5.8F.96\"},\"children\":[{\"text\":\"Turning on the mic\"}],\"id\":\"gldnjm4QEoBTxztkTzC3W\"},{\"text\":\"\"}],\"type\":\"oli\"},{\"id\":\"jHwXNbMW7VGUsmgZJLl7N\",\"children\":[{\"text\":\"\"},{\"type\":\"ref\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/zh/document/product/607/40860#.E6.89.AC.E5.A3.B0.E5.99.A8.E7.8A.B6.E6.80.81.E8.8E.B7.E5.8F.96\"},\"children\":[{\"text\":\"Turning on the speaker\"}],\"id\":\"WoHSzFmNKzbNmX-HZqv2n\"},{\"text\":\"\"}],\"type\":\"oli\"},{\"id\":\"Q_XnqAK8yIAQsDisGAY0o\",\"children\":[{\"text\":\"\"},{\"type\":\"ref\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/zh/document/product/607/40860#.E9.80.80.E5.87.BA.E6.88.BF.E9.97.B4\"},\"children\":[{\"text\":\"Exiting the voice chat room\"}],\"id\":\"xSWuE2h_yS7R0uvGrUARM\"},{\"text\":\"\"}],\"type\":\"oli\"},{\"id\":\"5YisBwBJpa5wCWw7W0k70\",\"children\":[{\"text\":\"\"},{\"type\":\"ref\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/zh/document/product/607/40860#.3Ca-id.3D.22uninit.22.3E.E5.8F.8D.E5.88.9D.E5.A7.8B.E5.8C.96-sdk.3C.2Fa.3E\"},\"children\":[{\"text\":\"Uninitializing GME\"}],\"id\":\"tgeJwXtsLmCymQ-oC9HMH\"},{\"text\":\"\"}],\"type\":\"oli\"},{\"id\":\"wi2LeTHKz3d2hLMn4d0Pi\",\"children\":[{\"text\":\"Voice chat for Android class\"}],\"nodeId\":\".E5.AE.9E.E6.97.B6.E8.AF.AD.E9.9F.B3.E5.8A.9F.E8.83.BD-android-.E7.B1.BB\",\"type\":\"h3\"},{\"id\":\"Be6BDPNdu6VKQBdOA2I9r\",\"children\":[{\"id\":\"qcMGkBdvX9ZioeaLxfpB_\",\"children\":[{\"id\":\"YtUovRUiA4rVatyHplyP5\",\"children\":[{\"id\":\"gGC0JzmRuM7Nkum_Qb2n0\",\"children\":[{\"text\":\"Class\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"d6ig92bmy_MOiN_EftPa_\",\"children\":[{\"id\":\"e3W8xdhzg5SmgKbdnwZ3W\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"hCxZozR7Ivyq44oUGihMr\",\"children\":[{\"id\":\"IXByljIU5m9N7jQ2Ndc5c\",\"children\":[{\"id\":\"nBL_pZR8D2bRuGoFEZ5I6\",\"children\":[{\"id\":\"XEMBuo9WCaUXnlIaHtaEj\",\"children\":[{\"text\":\"ITMGContext\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"aDHzhqee6qozTUcbHIps-\",\"children\":[{\"id\":\"pxCU5j1feSlQJnoU1qM0p\",\"children\":[{\"id\":\"zbLEMUgwGYfTiROGf2Q2B\",\"children\":[{\"text\":\"Core APIs\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"eh64YxF-FUTt7eNmElAu2\",\"children\":[{\"id\":\"hgHQh-ZVgWjVIxJGC9S_Q\",\"children\":[{\"id\":\"9ykFoW9uIuD-wlNpNteyQ\",\"children\":[{\"id\":\"p_E0ZySJ9HzB49X8P-V5_\",\"children\":[{\"text\":\"ITMGRoom\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"IhCPVrBRkW0bnFeNC642k\",\"children\":[{\"id\":\"uBdWnS82WP2vW0dm80b74\",\"children\":[{\"id\":\"reT2OYRPJtVt_WcOc7Y5M\",\"children\":[{\"text\":\"Room APIs\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"S3YKMBfPyKPw5DZhSt3ku\",\"children\":[{\"id\":\"xeJlU5JJu0KxRUP4bFN2f\",\"children\":[{\"id\":\"i-cfFx2hoitLU6T70kTYa\",\"children\":[{\"id\":\"btqn5Z99_F-6nwRcK9F5d\",\"children\":[{\"text\":\"ITMGRoomManager\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"3KIULj3Tx7Rcpo55oAKIK\",\"children\":[{\"id\":\"gL4ChD-ZOumOj4w0TADV6\",\"children\":[{\"id\":\"YL3sshROYu8WGJNgkwtIB\",\"children\":[{\"text\":\"Room management APIs\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"JY-RCvikHMiAr5NU7YEdZ\",\"children\":[{\"id\":\"o1EzxT1hGdlR3XKN80aYf\",\"children\":[{\"id\":\"CLJnz8-O7yXHcREWeecg8\",\"children\":[{\"id\":\"F6rj8_KHpch5l1sS3YP0_\",\"children\":[{\"text\":\"ITMGAudioCtrl\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Y8wz_ZeoPFLHDKmEt_UDo\",\"children\":[{\"id\":\"eRmck4vUNXhwFHCtmiqU5\",\"children\":[{\"id\":\"ajjTOIMEym4KtHcgt8kMK\",\"children\":[{\"text\":\"Audio APIs\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"x7gyJizDM-7iy0PMXJRJY\",\"children\":[{\"id\":\"R0GLb-tL-0Rvfdk4ofea3\",\"children\":[{\"id\":\"9md-we21x_wSzHuVwd130\",\"children\":[{\"id\":\"PEeuqRBmUhD4WcjyOe23i\",\"children\":[{\"text\":\"ITMGAudioEffectCtrl\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"3L5gYP7GXR3qhkXS_Jg16\",\"children\":[{\"id\":\"oCu7qQqUZuapt2xhcUc8p\",\"children\":[{\"id\":\"meT5hfyquq5klCI3pU0D2\",\"children\":[{\"text\":\"Sound effect and accompaniment APIs\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[37,63],\"widthMode\":\"percentage\"},{\"id\":\"aH4ooI_85jmkDf9LE10Fc\",\"children\":[{\"text\":\"Core APIs\"}],\"nodeId\":\".E6.A0.B8.E5.BF.83.E6.8E.A5.E5.8F.A3\",\"type\":\"h2\"},{\"id\":\"9ilSKZ3fnMCIrIC-1W-0N\",\"children\":[{\"id\":\"9fCS0BST4J8em8gujAF1E\",\"children\":[{\"id\":\"CkAY9ahL4Pd8IkNN9VeQq\",\"children\":[{\"id\":\"Vk8mLWYLtDJqBjfx_xAJN\",\"children\":[{\"text\":\"API\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Dq07PnBmSAUvAbSln977U\",\"children\":[{\"id\":\"GnUXwL15AYl3ES1QsDYEx\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"IwztsPtVMIgzQy2bC4nKC\",\"children\":[{\"id\":\"VLIBL6PuiMQ2IdWRW74Hm\",\"children\":[{\"id\":\"B9estyRmwzOwso6YyT22K\",\"children\":[{\"id\":\"xzbRACNMhNrG5E_f12OoW\",\"children\":[{\"text\":\"Init\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"HleV2qg1nYpSGCOShXQrM\",\"children\":[{\"id\":\"QBr-GRodnC_W5GOdbTcXj\",\"children\":[{\"id\":\"Ag7Zu6JLiSAnoHlPjChr4\",\"children\":[{\"text\":\"Initializes GME.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"3E4psmKTF3XY0d2VSA5x6\",\"children\":[{\"id\":\"XfqePtmC3SeTMG-Tyl_FN\",\"children\":[{\"id\":\"FPBkcsMpnfCGoQvaVVYmN\",\"children\":[{\"id\":\"OX69rVGlHqBhyOR_Of_1v\",\"children\":[{\"text\":\"Poll\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"3FjHYMRB6ajZawh1YNlnJ\",\"children\":[{\"id\":\"8FV6nHmpN5BjeXr4SiZkM\",\"children\":[{\"id\":\"7mlPY47vW5vDsY3UU4ply\",\"children\":[{\"text\":\"Triggers an event callback.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"ygswRJTZrdLd9ZYAFYsQM\",\"children\":[{\"id\":\"FTZUFJfov2FOjr3t2turw\",\"children\":[{\"id\":\"24-tMdhR7kIsIwK2Dytag\",\"children\":[{\"id\":\"Pz490-M9m1HDGSsv4DHhF\",\"children\":[{\"text\":\"Pause\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"NsNjkrYFaumsxXYp2AO_N\",\"children\":[{\"id\":\"OPHPYYa2tyv0e34QEqB-X\",\"children\":[{\"id\":\"D9Fjwrd5SzSJF8VHZZTUb\",\"children\":[{\"text\":\"Pauses the system.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"r7Cn_4J2biQRE3h-Jeshn\",\"children\":[{\"id\":\"1u9PEstVxHd24aZo7YOUO\",\"children\":[{\"id\":\"p32WiaxLhTdvbNroBvCXo\",\"children\":[{\"id\":\"seIZ7dOvCxt4c9axf7MgW\",\"children\":[{\"text\":\"Resume\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"l0z-ZWxYIiNEBdJH77DA5\",\"children\":[{\"id\":\"ZqyfEcyGuQjTsfGdgBfNc\",\"children\":[{\"id\":\"mm15jH8GB8ffcMBfIsjY7\",\"children\":[{\"text\":\"Resumes the system.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"UaiDvLuaIaIDiSF4HDcjE\",\"children\":[{\"id\":\"wDijZ0HCXbl5JVhIHIJEq\",\"children\":[{\"id\":\"GonY-L84jK3iWk-P1dkC7\",\"children\":[{\"id\":\"yKIholM_8-KxAE06JFGem\",\"children\":[{\"text\":\"Uninit\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"DaANJrBPOXIhGGBpTZm-k\",\"children\":[{\"id\":\"KH3PSJDKQ_oY9qssXVsQ-\",\"children\":[{\"id\":\"TjrC2ogNNSk3_h9DQzmqH\",\"children\":[{\"text\":\"Uninitializes GME.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[37,63],\"widthMode\":\"percentage\"},{\"id\":\"U7SERY0HShOPCfDrSz9es\",\"children\":[{\"id\":\"y5HE7QaPk4bAKIdRk1Qr0\",\"children\":[{\"b\":1,\"text\":\"Note:\"}],\"type\":\"p\"},{\"id\":\"C12BMjd-K3QGFgCqv-iIp\",\"children\":[{\"text\":\"If you need to switch the account, please call \"},{\"code\":1,\"text\":\"UnInit\"},{\"text\":\" to uninitialize the SDK. No fee is incurred for calling Init API.\"}],\"type\":\"p\"}],\"hintType\":\"alert\",\"type\":\"hint\"},{\"id\":\"npx_6Aaqy7P4udq0-mh1N\",\"children\":[{\"text\":\"Getting singleton\"}],\"nodeId\":\".E8.8E.B7.E5.8F.96.E5.8D.95.E4.BE.8B\",\"type\":\"h3\"},{\"id\":\"shLPkoW9G_1KeRfoPTijg\",\"children\":[{\"text\":\"To use the voice feature, get the \"},{\"code\":1,\"text\":\"ITMGContext\"},{\"text\":\" object first.\"}],\"type\":\"p\"},{\"id\":\"LRLuIRtZfDTm5z8pJ5Onw\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.81\",\"type\":\"h4\"},{\"id\":\"Rg5piGZeoFRz5wBTWwEPX\",\"autoWrap\":false,\"children\":[{\"id\":\"zIuAeyadxNzRpx4CTIPTM\",\"children\":[{\"text\":\"import com.tencent.TMG.ITMGContext; \"}],\"type\":\"code-line\"},{\"id\":\"iabDycZoBMOkqXADZcOUQ\",\"children\":[{\"text\":\"ITMGContext.getInstance(this);\"}],\"type\":\"code-line\"}],\"language\":\"java\",\"type\":\"code-block\"},{\"id\":\"MjEDpQLfYuwzKQqcYA-Dd\",\"children\":[{\"text\":\"Registering callback\"}],\"nodeId\":\".E6.B3.A8.E5.86.8C.E5.9B.9E.E8.B0.83\",\"type\":\"h3\"},{\"id\":\"FGtueqetF566DHvUzu8BP\",\"children\":[{\"text\":\"The API class uses the \"},{\"code\":1,\"text\":\"Delegate\"},{\"text\":\" method to send callback notifications to the application. Register the callback function to the SDK for receiving callback messages.\"}],\"type\":\"p\"},{\"id\":\"kO7HRJ_X4Up0RL0jLn3zV\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\".E6.8E.A5.E5.8F.A3.E5.8E.9F.E5.9E.8B\",\"type\":\"h4\"},{\"id\":\"e_b7xSFshIl_iS8tDLhUC\",\"autoWrap\":false,\"children\":[{\"id\":\"NjdjIPIYEXnj7_zS7-GXR\",\"children\":[{\"text\":\"static public abstract class ITMGDelegate {\"}],\"type\":\"code-line\"},{\"id\":\"_tN_B_Yf8wVKDmD8tLOkM\",\"children\":[{\"text\":\" public void OnEvent(ITMG_MAIN_EVENT_TYPE type, Intent data){}\"}],\"type\":\"code-line\"},{\"id\":\"y4tc80Tfe-zQHGkwsuHQ2\",\"children\":[{\"text\":\"}\"}],\"type\":\"code-line\"}],\"language\":\"java\",\"type\":\"code-block\"},{\"id\":\"SnwildSvGFhWkyQu88swe\",\"children\":[{\"text\":\"Override this callback function in the constructor to process the parameters of the callback.\"}],\"type\":\"p\"},{\"id\":\"SsxBbmSs2D3yl_gI_Wasg\",\"children\":[{\"id\":\"N6D9LCbm-_4htNsowWtH7\",\"children\":[{\"id\":\"r-LWK6RfF47-sTz_7A8CZ\",\"children\":[{\"id\":\"J88AZDwwKdB3PnIjsO-7s\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"8xkgDtOy4QHGZyazkbLRl\",\"children\":[{\"id\":\"5pY7S3SVzrLAMJ0asxj--\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"mNu4tb-Tly5w0EoPpYzD0\",\"children\":[{\"id\":\"ZFiIlWd7Jdy_mIIztcb_o\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"uUvhKQ8gpa91cIq7tv383\",\"children\":[{\"id\":\"DnOjdJQHdq_UDaIUb2MVE\",\"children\":[{\"id\":\"8JgV917xh4SMTwlsW9uWF\",\"children\":[{\"id\":\"1rqKyKkNWJuOJ_LmOKfym\",\"children\":[{\"text\":\"type\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"se-Hx5Vr9BQHgQZZsvtW1\",\"children\":[{\"id\":\"ujUPzd_qRCTqkf3Kwe1gD\",\"children\":[{\"id\":\"zsJPLvzfKE0JzJGyMfnGO\",\"children\":[{\"text\":\"ITMGContext.ITMG_MAIN_EVENT_TYPE\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ps8ZWumJSsXaIt4E-vNK9\",\"children\":[{\"id\":\"SGk7AkL1J48mBg8IF2b6k\",\"children\":[{\"id\":\"eV13Y1JsIDCK8sjNmMdO3\",\"children\":[{\"text\":\"Event type in the callback response\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"R4kE6hM0h5m6e4DieabcC\",\"children\":[{\"id\":\"W8SQOxDByH4Ec_qkn2YyX\",\"children\":[{\"id\":\"bGcmirGsLgG0K7YGTdMn6\",\"children\":[{\"id\":\"UgaK6edf60qEtfy6oH6vj\",\"children\":[{\"text\":\"data\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"_sgU2bmeYifL5IS1rzWop\",\"children\":[{\"id\":\"jZ32S9XK4Wg7gs4i1Gtj4\",\"children\":[{\"id\":\"WRbRRUOc0Y4ulWUD-h5i7\",\"children\":[{\"text\":\"Intent message type\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"HzoKu22Vv_bePaoM4A1Ad\",\"children\":[{\"id\":\"_cO_0-m-rhoYiIbdXT1Cm\",\"children\":[{\"id\":\"JJYEYN6rZqqyAaBpGaw1J\",\"children\":[{\"text\":\"Callback message, i.e., event data\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[15,45,40],\"widthMode\":\"percentage\"},{\"id\":\"ol-gfpEI6CSRLlBVE_f_q\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.812\",\"type\":\"h4\"},{\"id\":\"_a1YYXccfTXek8xQZ3SXD\",\"autoWrap\":false,\"children\":[{\"id\":\"QKxZ5GDIqdYtxh3riLAkp\",\"children\":[{\"text\":\"private ITMGContext.ITMGDelegate itmgDelegate = null;\"}],\"type\":\"code-line\"},{\"id\":\"Xl9QHNUvYPT6VSX6KYbeb\",\"children\":[{\"text\":\"itmgDelegate = new ITMGContext.ITMGDelegate() {\"}],\"type\":\"code-line\"},{\"id\":\"MNzf_fFAqS9U5hhzYiuM4\",\"children\":[{\"text\":\" @Override\"}],\"type\":\"code-line\"},{\"id\":\"3prsKO4rGR9XwmK0lbVI2\",\"children\":[{\"text\":\" public void OnEvent(ITMGContext.ITMG_MAIN_EVENT_TYPE type, Intent data) {\"}],\"type\":\"code-line\"},{\"id\":\"5SrQrSalgQSkkRM56xeJV\",\"children\":[{\"text\":\" if (ITMGContext.ITMG_MAIN_EVENT_TYPE.ITMG_MAIN_EVENT_TYPE_ENTER_ROOM == type)\"}],\"type\":\"code-line\"},{\"id\":\"QAv-B0iiAgJFdBVufeKKv\",\"children\":[{\"text\":\" {\"}],\"type\":\"code-line\"},{\"id\":\"13RPaYRYDCOGjxnumafoC\",\"children\":[{\"text\":\" // Analyze the returned data\"}],\"type\":\"code-line\"},{\"id\":\"PEOc9e5mfdncKE1TSJCp9\",\"children\":[{\"text\":\" int nErrCode = data.getIntExtra(\\\"result\\\" , -1);\"}],\"type\":\"code-line\"},{\"id\":\"iDQewKKXkTxC98nIzQWdd\",\"children\":[{\"text\":\" String strErrMsg = data.getStringExtra(\\\"error_info\\\");\"}],\"type\":\"code-line\"},{\"id\":\"22Kyyo-F1OQYUU9UIDaE5\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"3ld0UE0wTKj00NWzsZXRY\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"I2r4P87aPdQ4v2fgktf_C\",\"children\":[{\"text\":\"}\"}],\"type\":\"code-line\"}],\"language\":\"java\",\"type\":\"code-block\"},{\"id\":\"Jvx7qO9xbdNGJ30yG5uhk\",\"children\":[{\"text\":\"Register the callback function to the SDK before room entry.\"}],\"type\":\"p\"},{\"id\":\"-pLjDvXU5zZNrqeFPs3y6\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\".E6.8E.A5.E5.8F.A3.E5.8E.9F.E5.9E.8B2\",\"type\":\"h4\"},{\"id\":\"Hu7Fb5jkyDXMHl04Jwx2W\",\"autoWrap\":false,\"children\":[{\"id\":\"7HeefCXka5wEYm0sR2xxl\",\"children\":[{\"text\":\"public abstract int SetTMGDelegate(ITMGDelegate delegate);\"}],\"type\":\"code-line\"}],\"language\":\"java\",\"type\":\"code-block\"},{\"id\":\"LtQEs2bjvxyHd8AZpqO9E\",\"children\":[{\"id\":\"-q1ovbMhpFjBYvDfo2snR\",\"children\":[{\"id\":\"agoloiZe6i_QjXhRk-rtg\",\"children\":[{\"id\":\"e9Ds2j2MA5S5QyJCntHB9\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"RtF9j2FrhuAtXmDZa2IGq\",\"children\":[{\"id\":\"J2SW_sKWL5SxlpUkfmqAu\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"hcEM0zrWQ4X-wmLZsxcWC\",\"children\":[{\"id\":\"YhwFlPq3E9jlXZgwI7SeO\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"0ItjJ3jYnzf9bphowlSY8\",\"children\":[{\"id\":\"T_fY4-84APSnr5xGrYqSG\",\"children\":[{\"id\":\"ZxYqMHQrOsmpBMo6WAoKK\",\"children\":[{\"id\":\"SqDAbt5O9glPIcT44dOWg\",\"children\":[{\"text\":\"delegate\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"DMzLPk_4DCUvhpXju34qG\",\"children\":[{\"id\":\"sB2v1jc8C93iQeCSG3qDp\",\"children\":[{\"id\":\"rLALFrI15v7_2x0XK7Nz9\",\"children\":[{\"text\":\"ITMGDelegate\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"jB0LTjM8nr6mlPOY7V-u-\",\"children\":[{\"id\":\"mLx0j9CEmhwykOaoHOnzZ\",\"children\":[{\"id\":\"CHZEUTWNgsj3Wl0-nkzKf\",\"children\":[{\"text\":\"SDK callback function\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[25,31,44],\"widthMode\":\"percentage\"},{\"id\":\"8i1nNELVDMzh0cfUPKzMP\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.813\",\"type\":\"h4\"},{\"id\":\"GZkL0rKDisuIpZuhFuNn9\",\"autoWrap\":false,\"children\":[{\"id\":\"_U6URj1ikJXfuyGCy3lxF\",\"children\":[{\"text\":\"ITMGContext.GetInstance(this).SetTMGDelegate(itmgDelegate);\"}],\"type\":\"code-line\"}],\"language\":\"java\",\"type\":\"code-block\"},{\"id\":\"GjBxYd2mE3TTlK_Mby7QR\",\"children\":[{\"id\":\"aZ-Kghug11SNmwTLFSNGd\",\"children\":[{\"text\":\"Initializing the SDK\"}],\"nodeId\":\"Init\",\"type\":\"p\"}],\"nodeId\":\".3Ca-id.3D.22init.22.3E.E5.88.9D.E5.A7.8B.E5.8C.96-sdk.3C.2Fa.3E\",\"type\":\"h3\"},{\"id\":\"wrIa5xeNNTSQ5-hakO4PW\",\"children\":[{\"b\":1,\"text\":\"You need to initialize the SDK through the \"},{\"code\":1,\"text\":\"Init\"},{\"text\":\" API\"},{\"text\":\" before you can use the real-time voice chat, voice message, and speech-to-text services. The \"},{\"code\":1,\"text\":\"Init\"},{\"text\":\" API must be called in the same thread as other APIs. We recommend you call all APIs in the main thread.\"}],\"type\":\"p\"},{\"id\":\"qJyEWv1NC7yHXFo5PdVk4\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\".E6.8E.A5.E5.8F.A3.E5.8E.9F.E5.9E.8B3\",\"type\":\"h4\"},{\"id\":\"h3QuW35iMTdVUkzu5wIVU\",\"autoWrap\":false,\"children\":[{\"id\":\"8OjOjt-TY7BJpuIhQNczL\",\"children\":[{\"text\":\"public abstract int Init(String sdkAppId, String openId);\"}],\"type\":\"code-line\"}],\"language\":\"java\",\"type\":\"code-block\"},{\"id\":\"rSqM4FyoraeFZs1gCy2vs\",\"children\":[{\"id\":\"cSSfzJYVjdpTIv3FYwkw-\",\"children\":[{\"id\":\"STtR0Fan5XAPcV7bMOQFi\",\"children\":[{\"id\":\"M1B-LsA68TFrejHsZjx2B\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"rbKhhY4rNq-vZS5VGdaK8\",\"children\":[{\"id\":\"5p_G2GTSG0ogoASfXX_CQ\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"SrKr4u6lSnrQxFmsTyUXq\",\"children\":[{\"id\":\"_LVgh57siWibdzvOAqGbv\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"g6JnhC4qifllaASFEVdur\",\"children\":[{\"id\":\"L8_aNoifSkDZNAmrjphC5\",\"children\":[{\"id\":\"MqsKoftmt8M_aJ1-Cvmh4\",\"children\":[{\"id\":\"T34i3P1qMN0Aq-34NK816\",\"children\":[{\"text\":\"sdkAppId\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"_2OmufWPMOvL6vYItFiu5\",\"children\":[{\"id\":\"KK5EpsgazSPp9EeT50fWK\",\"children\":[{\"id\":\"20CxM6j-bn4TTrBLIO4mS\",\"children\":[{\"text\":\"String\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"cQ4I0Kq2Zkm_cddHsQmx6\",\"children\":[{\"id\":\"t9S_M0KScXGUy4Xub21C5\",\"children\":[{\"code\":1,\"text\":\"AppID\"},{\"text\":\" provided in the \"},{\"type\":\"ref\",\"props\":{\"type\":\"link\",\"url\":\"https://console.tencentcloud.com/gamegme\"},\"children\":[{\"text\":\"GME console\"}],\"id\":\"3Ki2dljzvKyULiW_EO77I\"},{\"text\":\", which can be obtained as instructed in \"},{\"id\":\"y7Tl0ntC2PJlhFWUrwwJu\",\"children\":[{\"text\":\"Activating Services\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://www.tencentcloud.com/document/product/607/10782#.E9.87.8D.E7.82.B9.E5.8F.82.E6.95.B0\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/10782#.E9.87.8D.E7.82.B9.E5.8F.82.E6.95.B0\"},\"type\":\"ref\"},{\"text\":\".\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"BG1Ya5CsmvfNrRO3NktHM\",\"children\":[{\"id\":\"JbcGJI3BJb0o8kzFzeo-K\",\"children\":[{\"id\":\"eoGlnr4Y098MuvNdnzsVX\",\"children\":[{\"text\":\"openId\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"nKBi9c1HjpU2QPpL5mBBz\",\"children\":[{\"id\":\"TvixZz0RD0f7s3bg5wrzk\",\"children\":[{\"id\":\"ejUTjghaMgZ6heuJ57inf\",\"children\":[{\"text\":\"String\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"tZayCVzi8Nki71ncMKLuy\",\"children\":[{\"id\":\"Mq3B-_mzAr-QJJG_MqNHz\",\"children\":[{\"code\":1,\"text\":\"openID\"},{\"text\":\" can only be in Int64 type, which is passed in after being converted to a \"},{\"code\":1,\"text\":\"const char*\"},{\"text\":\". You can customize its rules, and it must be unique in the application. To pass in \"},{\"code\":1,\"text\":\"openID\"},{\"text\":\" as a string, \"},{\"type\":\"ref\",\"props\":{\"type\":\"link\",\"url\":\"https://console.tencentcloud.com/workorder/category\"},\"children\":[{\"text\":\"submit a ticket\"}],\"id\":\"411FEQqTc1SFvAtQBWJgg\"},{\"text\":\" for application.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[16,13,71],\"widthMode\":\"percentage\"},{\"id\":\"v-XzIgDaTlwbJBqwXvc_0\",\"children\":[{\"text\":\"Returned values\"}],\"nodeId\":\".E8.BF.94.E5.9B.9E.E5.80.BC\",\"type\":\"h4\"},{\"id\":\"mc2SjS1x-QZQF_VOZlxY0\",\"children\":[{\"id\":\"SjCgNpkcarZXFWxWaLfdt\",\"children\":[{\"id\":\"2gMUFeg8xlaRENAJOYc51\",\"children\":[{\"id\":\"qGVfGJU9uynyM25LM4duu\",\"children\":[{\"text\":\"Returned Value\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"BPT8SEgOc14E3IFoLkzK6\",\"children\":[{\"id\":\"tcXYqmdSDlVCezZCO3HFE\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"GKJ-L7-1cjJk6UvdoKTHK\",\"children\":[{\"id\":\"zt7TTcsxUBxuDMzhwQkPJ\",\"children\":[{\"id\":\"cGgyxAYaHgy6c26lfj1iY\",\"children\":[{\"id\":\"A6pvtOLdapETdwOG8fQUx\",\"children\":[{\"text\":\"QAVError.OK= 0\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"5ocauSnntxSFUALLRaZRq\",\"children\":[{\"id\":\"__kTZ76sERfseCBVdrF5f\",\"children\":[{\"id\":\"V64DxqTQKKD553MX4EuxV\",\"children\":[{\"text\":\"SDK was initialized successfully.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"oVRM9zS4I-0Tu92TecJF_\",\"children\":[{\"id\":\"H_iXjYFMiQXHCkmfwsCwH\",\"children\":[{\"id\":\"Iy0tJsQRuLSveBPgW5B3p\",\"children\":[{\"id\":\"H6WawGR-_fSsYTR5lIp2N\",\"children\":[{\"text\":\"AV_ERR_SDK_NOT_FULL_UPDATE=7015\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"2hHAWYJFgb25bIbdKbB9w\",\"children\":[{\"id\":\"3UJZsg52V_yv2ci11FAgr\",\"children\":[{\"id\":\"WFJOa9RnBPuhJdbAMxhch\",\"children\":[{\"text\":\"Check whether the SDK file is complete. We recommend that you delete it and then import the SDK again.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[34,66],\"widthMode\":\"percentage\"},{\"id\":\"_FCpYLNbBOmnPQp-Z5kdG\",\"children\":[{\"id\":\"P0ekiPKxiSCtRWTfQPDHa\",\"children\":[{\"b\":1,\"text\":\"Notes on 7015 error code\"}],\"type\":\"p\"},{\"id\":\"x-67Ri47SK9BWjr9W1DNL\",\"children\":[{\"text\":\"The error code 7015 is identified based on the MD5 value. If this error is reported during integration, check the integrity and version of the SDK file as prompted.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"JI2giWBAqO6NOXWiBmNUo\",\"children\":[{\"text\":\"The returned value \"},{\"code\":1,\"text\":\"AV_ERR_SDK_NOT_FULL_UPDATE\"},{\"text\":\" is \"},{\"b\":1,\"text\":\"only a reminder\"},{\"text\":\" but will not cause an initialization failure.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"EWrRFRwX4aBiN6O0Fh3NN\",\"children\":[{\"text\":\"Due to the third-party enhancement, the Unity packaging mechanism, and other factors, the library file MD5 will be affected, resulting in misjudgment. Therefore, \"},{\"b\":1,\"text\":\"ignore this error in the logic for official releases\"},{\"text\":\", and avoid displaying it on the UI.\"}],\"start\":false,\"type\":\"uli\"}],\"hintType\":\"alert\",\"type\":\"hint\"},{\"id\":\"_AyFB44QkKhj4wPd5rxkx\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.814\",\"type\":\"h4\"},{\"id\":\"T_E5ZYFS7M3yJgRHUAsQE\",\"autoWrap\":false,\"children\":[{\"id\":\"OVjOG6Rd2lNHmyWdPTYjr\",\"children\":[{\"text\":\"String sdkAppID = \\\"14000xxxxx\\\";\"}],\"type\":\"code-line\"},{\"id\":\"B8eYn2oN5S_zi8EGpzrNs\",\"children\":[{\"text\":\"String openID = \\\"100\\\";\"}],\"type\":\"code-line\"},{\"id\":\"AA72436dQSjySFq7FziIo\",\"children\":[{\"text\":\"int ret = 0;\"}],\"type\":\"code-line\"},{\"id\":\"WnpGMY6v1f2qrE-QjVw-z\",\"children\":[{\"text\":\"// After the user agrees to the application's privacy policy, initialize the SDK at an appropriate time based on the application features\"}],\"type\":\"code-line\"},{\"id\":\"PFp9Ifael4IAK1Jp5PLz6\",\"children\":[{\"text\":\"//ret = 0: The user agrees to the application's privacy policy\"}],\"type\":\"code-line\"},{\"id\":\"Y8ZWM8tyPcZWDAG70ld1d\",\"children\":[{\"text\":\"//ret = 1: The user does not agree to the application's privacy policy\"}],\"type\":\"code-line\"},{\"id\":\"68ReeNLmrnL6PdchXtJmQ\",\"children\":[{\"text\":\"// If the user does not agree to the privacy policy, change `ret` to a value other than 0 \"}],\"type\":\"code-line\"},{\"id\":\"yltUfRhKFaYxLGCXdPyzp\",\"children\":[{\"text\":\"if(ret != 0){\"}],\"type\":\"code-line\"},{\"id\":\"0oNyY0X4YYH7SZzRPVpSi\",\"children\":[{\"text\":\" Log.e(TAG,\\\"The user does not agree to the application's privacy policy\\\");\"}],\"type\":\"code-line\"},{\"id\":\"uSYXnwWk47G-c1dl24A1f\",\"children\":[{\"text\":\"}else{\"}],\"type\":\"code-line\"},{\"id\":\"XvYBc-4mQuOoGu0h7dpAp\",\"children\":[{\"text\":\" ITMGContext.GetInstance(this).Init(sdkAppId, openId);\"}],\"type\":\"code-line\"},{\"id\":\"Tu6hV__NMI0bCZ0fTZpaJ\",\"children\":[{\"text\":\"}\"}],\"type\":\"code-line\"}],\"language\":\"java\",\"type\":\"code-block\"},{\"id\":\"zb56blX6fHMEYcDtQx4sF\",\"children\":[{\"id\":\"Lhsy8HHStUjYzgAvq71CC\",\"children\":[{\"text\":\"Triggering event callback\"}],\"nodeId\":\"Poll\",\"type\":\"p\"}],\"nodeId\":\".3Ca-id.3D.22poll.22.3E.E8.A7.A6.E5.8F.91.E4.BA.8B.E4.BB.B6.E5.9B.9E.E8.B0.83.3C.2Fa.3E\",\"type\":\"h3\"},{\"id\":\"LZba1-H9eI_kYSUS_GVj7\",\"children\":[{\"text\":\"Event callbacks can be triggered by periodically calling the \"},{\"code\":1,\"text\":\"Poll\"},{\"text\":\" API in \"},{\"code\":1,\"text\":\"update\"},{\"text\":\". \"},{\"code\":1,\"text\":\"Poll\"},{\"text\":\" is the message pump of GME, and the \"},{\"code\":1,\"text\":\"Poll\"},{\"text\":\" API should be called periodically for GME to trigger event callbacks; otherwise, the entire SDK service will run exceptionally.\\nRefer to the \"},{\"code\":1,\"text\":\"EnginePollHelper.java\"},{\"text\":\" file in \"},{\"id\":\"KIMHBLi9QE0w9UbtltiAx\",\"children\":[{\"text\":\"SDK Download Guide\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://www.tencentcloud.com/document/product/607/18521\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/18521\"},\"type\":\"ref\"},{\"text\":\".\"}],\"type\":\"p\"},{\"id\":\"hegPe7xi0AM0KAEOlEWZu\",\"children\":[{\"id\":\"qfJsfzJIeKJnELKmtIhbJ\",\"children\":[{\"b\":1,\"text\":\"Call the \"},{\"code\":1,\"text\":\"Poll\"},{\"text\":\" API periodically\"}],\"type\":\"p\"},{\"id\":\"_O6v5Xhjk6gfmyBdRu3uV\",\"children\":[{\"text\":\"The \"},{\"code\":1,\"text\":\"Poll\"},{\"text\":\" API must be called periodically and in the main thread to avoid abnormal API callbacks.\"}],\"type\":\"p\"}],\"hintType\":\"warn\",\"type\":\"hint\"},{\"id\":\"4z00fWrpqr3E8XvMQFlmC\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\".E6.8E.A5.E5.8F.A3.E5.8E.9F.E5.9E.8B4\",\"type\":\"h4\"},{\"id\":\"Nz-CfLe5s1gJRtzeKJDt6\",\"autoWrap\":false,\"children\":[{\"id\":\"lPdOGwxWQ_QPQvA5tz-5H\",\"children\":[{\"text\":\"public abstract int Poll();\"}],\"type\":\"code-line\"}],\"language\":\"java\",\"type\":\"code-block\"},{\"id\":\"dGARE5ouN5YKjxA2j566N\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.815\",\"type\":\"h4\"},{\"id\":\"SlnrayDoEr2-JI0ymQ8wH\",\"autoWrap\":false,\"children\":[{\"id\":\"UhRaES9kCvhOf4lmD7M0z\",\"children\":[{\"text\":\"private Handler mhandler = new Handler();private Runnable mRunnable = new Runnable() { @Override public void run() { if (s_pollEnabled) { if (ITMGContext.GetInstance(null) != null) ITMGContext.GetInstance(null).Poll(); } mhandler.postDelayed(mRunnable, 33); }};\"}],\"type\":\"code-line\"}],\"language\":\"java\",\"type\":\"code-block\"},{\"id\":\"_ftrirwRlxNth9ZZUrenj\",\"children\":[{\"text\":\"Pausing the system\"}],\"nodeId\":\".E7.B3.BB.E7.BB.9F.E6.9A.82.E5.81.9C\",\"type\":\"h3\"},{\"id\":\"rdnzsgW4cZCxM8WCyLErW\",\"children\":[{\"text\":\"When a \"},{\"code\":1,\"text\":\"Pause\"},{\"text\":\" event occurs in the system, the engine should also be notified for pause. If you do not need the audio played back in the background in the room, call \"},{\"code\":1,\"text\":\"Pause\"},{\"text\":\" API to pause the GME service.\"}],\"type\":\"p\"},{\"id\":\"2fr9mwoZQ2nkD0i-4wGee\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\".E6.8E.A5.E5.8F.A3.E5.8E.9F.E5.9E.8B5\",\"type\":\"h4\"},{\"id\":\"rtxX-riX-uQM-yGFDm9IV\",\"autoWrap\":false,\"children\":[{\"id\":\"GQyyBKOQxLcrDobnh50st\",\"children\":[{\"text\":\"public abstract int Pause();\"}],\"type\":\"code-line\"}],\"language\":\"java\",\"type\":\"code-block\"},{\"id\":\"SYAyP7iGWbywt9DOmBcd8\",\"children\":[{\"text\":\"Resuming the system\"}],\"nodeId\":\".E7.B3.BB.E7.BB.9F.E6.81.A2.E5.A4.8D\",\"type\":\"h3\"},{\"id\":\"lcU1QdjPSnSm9RloU3mgC\",\"children\":[{\"text\":\"When a \"},{\"code\":1,\"text\":\"Resume\"},{\"text\":\" event occurs in the system, the engine should also be notified for resumption. The \"},{\"code\":1,\"text\":\"Resume\"},{\"text\":\" API only supports resuming voice chat.\"}],\"type\":\"p\"},{\"id\":\"5PP2zWV3PVsJF7bRl1uRx\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\".E6.8E.A5.E5.8F.A3.E5.8E.9F.E5.9E.8B6\",\"type\":\"h4\"},{\"id\":\"RzyQa_0HaGZ0sihJbjSra\",\"autoWrap\":false,\"children\":[{\"id\":\"Y3Yfi7DnsoYjjbHVqhfMH\",\"children\":[{\"text\":\"public abstract int Resume();\"}],\"type\":\"code-line\"}],\"language\":\"java\",\"type\":\"code-block\"},{\"id\":\"1tGGdqfwiCFSPeGFtLPzY\",\"children\":[{\"id\":\"HLLDN12otyFmh_ugq5a6X\",\"children\":[{\"text\":\"Uninitializing SDK\"}],\"nodeId\":\"UnInit\",\"type\":\"p\"}],\"nodeId\":\".3Ca-id.3D.22uninit.22.3E.E5.8F.8D.E5.88.9D.E5.A7.8B.E5.8C.96-sdk.3C.2Fa.3E\",\"type\":\"h3\"},{\"id\":\"A3UrksQEVVmy8QvJU9BP_\",\"children\":[{\"text\":\"This API is used to uninitialize the SDK. \"},{\"b\":1,\"text\":\"If the game account is bound to \"},{\"code\":1,\"text\":\"openid\"},{\"text\":\", switching game account requires uninitializing GME and then using the new \"},{\"code\":1,\"text\":\"openid\"},{\"text\":\" to initialize again.\"}],\"type\":\"p\"},{\"id\":\"H18q_jN9_Jj-3EEKRL_9-\",\"children\":[{\"id\":\"qHd8zi77oWg7QkUaR8Dmv\",\"children\":[{\"b\":1,\"text\":\"Note:\"}],\"type\":\"p\"},{\"id\":\"hIFWDDv6ZC0f_wPbVMWl_\",\"children\":[{\"text\":\"If the end user revokes the permission granted to the SDK to process the personal information, you can call the \"},{\"code\":1,\"text\":\"Uninit\"},{\"text\":\" API to stop using the SDK features and stop collecting and close the user data used by the features.\"}],\"type\":\"p\"}],\"hintType\":\"alert\",\"type\":\"hint\"},{\"id\":\"IvYdVS9mrYLpM6DwPIv83\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\".E6.8E.A5.E5.8F.A3.E5.8E.9F.E5.9E.8B7\",\"type\":\"h4\"},{\"id\":\"HHgIPgaMEcAZPsZd4jlze\",\"autoWrap\":false,\"children\":[{\"id\":\"qLPIFTPnDIVjdoASQg5KO\",\"children\":[{\"text\":\"public abstract int Uninit();\"}],\"type\":\"code-line\"}],\"language\":\"java\",\"type\":\"code-block\"},{\"id\":\"3ZCESlqkcwl2iFyMhy8SP\",\"children\":[{\"text\":\"Voice Chat Room APIs\"}],\"nodeId\":\".E5.AE.9E.E6.97.B6.E8.AF.AD.E9.9F.B3.E6.88.BF.E9.97.B4.E7.9B.B8.E5.85.B3.E6.8E.A5.E5.8F.A3\",\"type\":\"h2\"},{\"id\":\"1rDlOfYLRA0W3Hn1TdDPp\",\"children\":[{\"text\":\"You should initialize and call the SDK to enter a room before voice chat can start.\\nIf you have any questions when using the service, see \"},{\"id\":\"IwOX4iE-tgBbLIIdpukN5\",\"children\":[{\"text\":\"Sound and Audio\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://www.tencentcloud.com/document/product/607/39524\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/39524\"},\"type\":\"ref\"},{\"text\":\".\"}],\"type\":\"p\"},{\"type\":\"p\",\"children\":[{\"text\":\"\"},{\"id\":\"AvrVlWgPF3fhIi-1-DCbC\",\"alt\":\"\",\"children\":[{\"text\":\"\"}],\"inline\":true,\"naturalSize\":[1556,1264],\"size\":[801,650],\"type\":\"image\",\"url\":\"https://cloudcache.intl.tencent-cloud.com/cms/backend-cms/b9c9a7f1b96711ed9e14525400088f3a.png\"},{\"text\":\"\"}],\"id\":\"KaIvmGzz7cWzNA2LW9a7K\"},{\"id\":\"UoWO5e_crbVlY184RXfTG\",\"children\":[{\"id\":\"wlggjjG257saVR1Bl-qck\",\"children\":[{\"id\":\"r3_noNNMAr1KrNTYuFP5t\",\"children\":[{\"id\":\"HhExKsyLV1uvjTIZxcNcr\",\"children\":[{\"text\":\"API\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"pUYcdUF_DXHM_gv5cFEaR\",\"children\":[{\"id\":\"1SimnkF8hUiSqiPdQbxL8\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"ysDIrYehE7BItv3aRXcLT\",\"children\":[{\"id\":\"PKnSFbMMtioAau5TCf6ej\",\"children\":[{\"id\":\"tHWqy23b1uLlxBrwBPugQ\",\"children\":[{\"id\":\"NtIj8yPZy6KIXqNNTfjYS\",\"children\":[{\"text\":\"GenAuthBuffer\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"a8KZ446yXjmPNHRUCiluX\",\"children\":[{\"id\":\"nswbVPGRYrehjFp_AX8Qt\",\"children\":[{\"id\":\"1ipmzectttBlnsNNt8V43\",\"children\":[{\"text\":\"Calculates the local authentication key.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"VlwSEK_mR2ZNXCct7GZ8c\",\"children\":[{\"id\":\"GEJgkcTBEbRau4CLZnfbV\",\"children\":[{\"id\":\"pbzs1uRhAiEoXSiHsRLsb\",\"children\":[{\"id\":\"2JrhZb82KXj2gnK0Zu6jf\",\"children\":[{\"text\":\"EnterRoom\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"P4aYNxHx-TbnbWG1f2vuC\",\"children\":[{\"id\":\"9W7OPs2NYBQL971Ze4eUq\",\"children\":[{\"id\":\"eBMC5aFC70i-rmhrpfVNO\",\"children\":[{\"text\":\"Enters a room.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"8DRI5aDO9zsJFfBlIR69s\",\"children\":[{\"id\":\"Mp-mlCcJTII5P6ckcvG02\",\"children\":[{\"id\":\"-T3unRHfxbS-p_5XzqWCw\",\"children\":[{\"id\":\"47s-zgcz7bLRuZfHtPCrl\",\"children\":[{\"text\":\"ExitRoom\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"t5t1G6XZeI0ba_23y_gvQ\",\"children\":[{\"id\":\"6pErWQMQKNSWPgEAafEaM\",\"children\":[{\"id\":\"9fZtlxGcxtOBgKr2dvED7\",\"children\":[{\"text\":\"Exits a room.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"0sDQebSNMb4HlOrSfc8pX\",\"children\":[{\"id\":\"yFC1kwvc0SIV-lBZK0LqX\",\"children\":[{\"id\":\"RYew2q0giFAT_QUkLYNHD\",\"children\":[{\"id\":\"_F-Hp0A_KjwiJjLHxqJb2\",\"children\":[{\"text\":\"IsRoomEntered\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"yBv9U42XG8GCGgPEVBBMV\",\"children\":[{\"id\":\"mkvlJnvi-06rdFS1gc3Hp\",\"children\":[{\"id\":\"0DURgCuFKlZKPFZdMlHz4\",\"children\":[{\"text\":\"Determines whether room entry is successful.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"ARZW0HH0JsRCoqophJIr8\",\"children\":[{\"id\":\"fKmDX6Q9drM6w9w0hYFdj\",\"children\":[{\"id\":\"KJy5v9KO28iaKx7TStfUK\",\"children\":[{\"id\":\"GKr6vHRuh-mRRealTLMia\",\"children\":[{\"text\":\"SwitchRoom\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"gRHYAtKQL5drWT-qqcai0\",\"children\":[{\"id\":\"_IGtMm984Z1lVYa5d96tk\",\"children\":[{\"id\":\"dg4OObGkFr9e46kirBziL\",\"children\":[{\"text\":\"Switches the room quickly.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"TV6orrltDq3_hIgMmv3db\",\"children\":[{\"id\":\"uZD8vydYGt2_OFwKLt4pa\",\"children\":[{\"id\":\"Xg0q6cGDOEVHFL4pEDWpL\",\"children\":[{\"id\":\"1zMPVoIX2A0s-sVN6O30h\",\"children\":[{\"text\":\"StartRoomSharing\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"8LMfT9RiL1lChmSPKhpCR\",\"children\":[{\"id\":\"baX2SJ8DACFcjHdAoA5ns\",\"children\":[{\"id\":\"txQQXo0IwaJgcmyK9VHHU\",\"children\":[{\"text\":\"Cross-room Co-anchoring\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[31,69],\"widthMode\":\"percentage\"},{\"id\":\"L9G2w872MOZFtxhQBNDLU\",\"children\":[{\"text\":\"Local authentication key calculation\"}],\"nodeId\":\".E6.9C.AC.E5.9C.B0.E9.89.B4.E6.9D.83.E8.AE.A1.E7.AE.97\",\"type\":\"h3\"},{\"id\":\"0rNXnJm1_0Nuo6YTWPuJM\",\"children\":[{\"text\":\"Generate \"},{\"code\":1,\"text\":\"AuthBuffer\"},{\"text\":\" for encryption and authentication of relevant features. For release in the production environment, use the backend deployment key as detailed in \"},{\"id\":\"3e8i5mmcUGNFybqf3VSo1\",\"children\":[{\"text\":\"Authentication Key\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://www.tencentcloud.com/document/product/607/12218\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/12218\"},\"type\":\"ref\"},{\"text\":\".\"}],\"type\":\"p\"},{\"id\":\"RZAOLRzv0_JBCN4rI5RQh\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\".E6.8E.A5.E5.8F.A3.E5.8E.9F.E5.9E.8B8\",\"type\":\"h4\"},{\"id\":\"jGnJsnbBTJ1JLc7Yc_1q8\",\"autoWrap\":false,\"children\":[{\"id\":\"zMb3jxNoFRPgqjpIEt9kl\",\"children\":[{\"text\":\"AuthBuffer public native byte[] genAuthBuffer(int sdkAppId, String roomId, String openId, String key)\"}],\"type\":\"code-line\"}],\"language\":\"java\",\"type\":\"code-block\"},{\"id\":\"wFV9snVf9RJEwZXy3Ht7c\",\"children\":[{\"id\":\"oxTrVAAkFehWHxTYYSktj\",\"children\":[{\"id\":\"GaLAnXf4rB6ynkxD50HsT\",\"children\":[{\"id\":\"tuCCnmZKcsosYLYppjqY-\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"GFLorATPFMtQTdYRrmqAs\",\"children\":[{\"id\":\"pLbyqipqIJ1gN_x6TfNPE\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"WpA4RhWBytns0fh52Syx2\",\"children\":[{\"id\":\"_yLodOpfIJMrx-MtUTFeL\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"mL-6ZxYwLlsLyd_byTPE4\",\"children\":[{\"id\":\"JGogjHzrEy6r5mQMsBceW\",\"children\":[{\"id\":\"tvw7kKE79ayOZAQGlhn1O\",\"children\":[{\"id\":\"3EPGUurN72m7GpDByUBRH\",\"children\":[{\"text\":\"appId\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"6xnBRH6BnXI459KgIp2w-\",\"children\":[{\"id\":\"CxcYW8B5etC4zBCug2GNz\",\"children\":[{\"id\":\"coiFRocYs_PVYGrKXyvbi\",\"children\":[{\"text\":\"int\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"QdSDMmk2wEqHsXd87aZqP\",\"children\":[{\"id\":\"9-QL0BClBE9nYAoZ_76Dm\",\"children\":[{\"id\":\"1aQYIlsHOapQOAvA_IroS\",\"children\":[{\"code\":1,\"text\":\"AppId\"},{\"text\":\" from the Tencent Cloud console\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"jPebuXaiiv3OxHXNNxXbR\",\"children\":[{\"id\":\"5IUi2lYhsXRHx35Oq41Oz\",\"children\":[{\"id\":\"91pg7agmj3P3PsogqGW1d\",\"children\":[{\"id\":\"Nb7WAyUy4ydfWcLbzT5O4\",\"children\":[{\"text\":\"roomId\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"WWmn422JSsdWrhku3gaqA\",\"children\":[{\"id\":\"i-Y1P8BKt0l_td7kx0cC7\",\"children\":[{\"text\":\"String\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"CB3ffMjIlEsRi4l2Vp-fz\",\"children\":[{\"id\":\"sACtZ0Rpl7jWuOG3LSNtn\",\"children\":[{\"id\":\"bOE8eZLkYpl0U-yE0PWsg\",\"children\":[{\"text\":\"Room ID, which can contain up to 127 characters.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"C0m2JLzc0Hbj4BZKrE_rY\",\"children\":[{\"id\":\"e9aXnocgmL3-edS7ALfbo\",\"children\":[{\"id\":\"F-HXViZB1IUBaMPx-GcK_\",\"children\":[{\"id\":\"I35HVK5T5j0bqZXEKcSuE\",\"children\":[{\"text\":\"openId\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"9yCAx1ypVJiIriB-PqDTr\",\"children\":[{\"id\":\"Vs31_MHgzcJD1KsTO6ykZ\",\"children\":[{\"text\":\"String\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"gtk0YyBX10Ry0RPbCQ46r\",\"children\":[{\"id\":\"uG4Yd76SAWDpfcluG3PaB\",\"children\":[{\"id\":\"KJcsgapWQE8pqu1lEvgcn\",\"children\":[{\"text\":\"User ID, which is the same as \"},{\"code\":1,\"text\":\"OpenId\"},{\"text\":\" during initialization.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"gwKs4D4bdXdZ_9VaKKNto\",\"children\":[{\"id\":\"kinYPmwjdjxoQPryHrgY1\",\"children\":[{\"id\":\"RYiHinAEkGvqUIFmaOBHv\",\"children\":[{\"id\":\"pytmvgXsGPB5zDjNqjB9k\",\"children\":[{\"text\":\"key\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"YE0l6xMcHaz7Maill0TLn\",\"children\":[{\"id\":\"3ZPcWxR9vpwZqVHGJUl4K\",\"children\":[{\"text\":\"String\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"O2cXiyleI9vSJjdGDd7XZ\",\"children\":[{\"id\":\"PWbjf8cJC9TF9XVRW6QbE\",\"children\":[{\"text\":\"Permission key from the Tencent Cloud \"},{\"type\":\"ref\",\"props\":{\"type\":\"link\",\"url\":\"https://console.tencentcloud.com/gamegme\"},\"children\":[{\"text\":\"console\"}],\"id\":\"exONdFmnuC0OP3z9kGae9\"},{\"text\":\".\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[17,12,71],\"widthMode\":\"percentage\"},{\"id\":\"6KngP2LW1OotElHVhyLSE\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.816\",\"type\":\"h4\"},{\"id\":\"Uk7iwlCHmV_u6O8xZ2Ci1\",\"autoWrap\":false,\"children\":[{\"id\":\"uwwAA0l7aNG9Kb7_fffDC\",\"children\":[{\"text\":\"import com.tencent.av.sig.AuthBuffer;// Header file\"}],\"type\":\"code-line\"},{\"id\":\"GHbeok7I8Avii7TecBNdW\",\"children\":[{\"text\":\"byte[] authBuffer = AuthBuffer.getInstance().genAuthBuffer(Integer.parseInt(sdkAppId), strRoomID,openId, key);\"}],\"type\":\"code-line\"}],\"language\":\"java\",\"type\":\"code-block\"},{\"id\":\"xVIpX6V2ONOGn0ZCKz23N\",\"children\":[{\"text\":\"Entering a room\"}],\"nodeId\":\".E5.8A.A0.E5.85.A5.E6.88.BF.E9.97.B4\",\"type\":\"h3\"},{\"id\":\"TWa_Hk1fCDCgb1G2fi2Pb\",\"children\":[{\"text\":\"This API is used to enter a room with the generated authentication information. The mic and speaker are not enabled by default after room entry.\"}],\"nodeId\":\"EnterRoom\",\"type\":\"p\"},{\"id\":\"0l60mAgvW8Hw0BDzTJVZc\",\"children\":[{\"id\":\"HAv-3vlSk_gSw9GizPcGF\",\"children\":[{\"b\":1,\"text\":\"Note:\"}],\"type\":\"p\"},{\"id\":\"k2XJc2onrjMPtIVJRU5xU\",\"children\":[{\"text\":\"If the room entry callback result is \"},{\"code\":1,\"text\":\"0\"},{\"text\":\", the room entry is successful. If \"},{\"code\":1,\"text\":\"0\"},{\"text\":\" is returned from the \"},{\"code\":1,\"text\":\"EnterRoom\"},{\"text\":\" API, it doesn't necessarily mean that the room entry is successful.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"F5AVOvci5mc4Z1eFVECIe\",\"children\":[{\"text\":\"The audio type of the room is determined by the first user to enter the room. After that, if a member in the room changes the room type, it will take effect for all members there. For example, if the first user entering the room uses the smooth sound quality, and the second user entering the room uses the HD sound quality, the room audio type of the second user will become smooth sound quality. Only when a member in the room calls the \"},{\"code\":1,\"text\":\"ChangeRoomType\"},{\"text\":\" API, the audio type of the room will be changed.\"}],\"start\":false,\"type\":\"uli\"}],\"hintType\":\"alert\",\"type\":\"hint\"},{\"id\":\"VjbSohBfF7bBvD3XH6qSq\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\".E6.8E.A5.E5.8F.A3.E5.8E.9F.E5.9E.8B9\",\"type\":\"h4\"},{\"id\":\"KWhmkWsJ4a0JqJlH6_NpW\",\"autoWrap\":false,\"children\":[{\"id\":\"V2-tOuFycqRR0RvID2fwT\",\"children\":[{\"text\":\"public abstract int EnterRoom(String roomID, int roomType, byte[] authBuffer);\"}],\"type\":\"code-line\"}],\"language\":\"java\",\"type\":\"code-block\"},{\"id\":\"A_4O4H73aQB7pu1IiDMsl\",\"children\":[{\"id\":\"_3t8zVGI8_uFkxbwhbenr\",\"children\":[{\"id\":\"9jZpT8Gv36W1j2M5SFUX5\",\"children\":[{\"id\":\"U2kZTRmvSzf1EdjqC7IfZ\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"_tLyRxuCKAfcd0MbsDACP\",\"children\":[{\"id\":\"tgsyBmRC1l2H2dA45LqYD\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"OGomI_mIHVK4yOItuVrFr\",\"children\":[{\"id\":\"fd7JbDxVH2bMYfb74lXkB\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"zawlb5tJ8I8DecgKSAJ07\",\"children\":[{\"id\":\"uAepbWHCa9FfOZ1NYnXSp\",\"children\":[{\"id\":\"rj-PkKT0UaQnhBogqT2oD\",\"children\":[{\"id\":\"e5Xn72yjZNw9nt0WJhNLF\",\"children\":[{\"text\":\"roomId\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"vm2i2h5Duk2FprRWWZP9_\",\"children\":[{\"id\":\"yp0rEeLrPzNUxb6xXuo4K\",\"children\":[{\"id\":\"q3KGCiYkMhgoRZ1BowWxF\",\"children\":[{\"text\":\"String\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"CPVhxbA_TCDY7gyafYgzf\",\"children\":[{\"id\":\"Ur9zZ2w-NK3aUMnv7QCXD\",\"children\":[{\"id\":\"Ihsh-Iyh9Ma7-y_txgGlc\",\"children\":[{\"text\":\"Room ID, which can contain up to 127 characters.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"CssMm0UNwVC2NWMLtjANS\",\"children\":[{\"id\":\"hSLy9r1POHYxh49Na0FNN\",\"children\":[{\"id\":\"JdHsYxl_BAh3NK3ytZd7R\",\"children\":[{\"id\":\"MwdmbmTct4twRrdstHkPY\",\"children\":[{\"text\":\"roomType\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"XmDTi5-vqtIn39gu9zlyQ\",\"children\":[{\"id\":\"QCWZo6WXUoo0301rKholp\",\"children\":[{\"id\":\"J0kxVyAIqcBWO8Q8nZppF\",\"children\":[{\"text\":\"int\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"lGeoDeIw-VkyhvjHO8c3C\",\"children\":[{\"id\":\"IzHw-w33boRk4CH2rVp7J\",\"children\":[{\"id\":\"-NGmSBIMFGj2Nr2RjYN01\",\"children\":[{\"text\":\"Room type. We recommend that you enter \"},{\"code\":1,\"text\":\"ITMG_ROOM_TYPE_FLUENCY\"},{\"text\":\". For more information on room audio types, see \"},{\"id\":\"Fnu7lkIglXJksc_bCRxB2\",\"children\":[{\"text\":\"Sound Quality\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://www.tencentcloud.com/document/product/607/18522\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/18522\"},\"type\":\"ref\"},{\"text\":\".\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"VznyRdEGNHA-eb3p_H9UM\",\"children\":[{\"id\":\"MSGgiCvrUa8ClPXdqQ7UB\",\"children\":[{\"id\":\"EmkmNZjl58vJ6GVPceQrb\",\"children\":[{\"id\":\"xOKAhERPyeyPz2w343K-d\",\"children\":[{\"text\":\"authBuffer\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Tn4axIYDTZNkhoYaLBxqs\",\"children\":[{\"id\":\"QXM4H77J8F0sT3mckDcEE\",\"children\":[{\"id\":\"vizCtql2xuDb-lfIffTcP\",\"children\":[{\"text\":\"byte[\"},{\"text\":\"]\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"4Fff-hR8X9La_Ja4u1vYF\",\"children\":[{\"id\":\"bfYxLqOtw3lehn6s84dOD\",\"children\":[{\"id\":\"dp5sc0Bkq1NVlFYhxhPyC\",\"children\":[{\"text\":\"Authentication key\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[18,13,69],\"widthMode\":\"percentage\"},{\"id\":\"h4VffVw4GOUYYSH6B9rvv\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.817\",\"type\":\"h4\"},{\"id\":\"XUR8T0GqMogoAvcbwrNKV\",\"autoWrap\":false,\"children\":[{\"id\":\"WuV4LyXFoEgEkWt_ZcWRn\",\"children\":[{\"text\":\"ITMGContext.GetInstance(this).EnterRoom(roomId,roomType, authBuffer); \"}],\"type\":\"code-line\"}],\"language\":\"java\",\"type\":\"code-block\"},{\"id\":\"9BIDsxetZtmQ0ygL9B-La\",\"children\":[{\"text\":\"Callback for room entry\"}],\"nodeId\":\".E5.8A.A0.E5.85.A5.E6.88.BF.E9.97.B4.E7.9A.84.E4.BA.8B.E4.BB.B6.E5.9B.9E.E8.B0.83\",\"type\":\"h4\"},{\"id\":\"H8ZeUx9C9evK1hqb-nJ10\",\"children\":[{\"text\":\"After the user enters the room, the message \"},{\"code\":1,\"text\":\"ITMG_MAIN_EVENT_TYPE_ENTER_ROOM\"},{\"text\":\" will be sent and identified in the \"},{\"code\":1,\"text\":\"OnEvent\"},{\"text\":\" function for callback and processing. A successful callback means that the room entry is successful, and the billing starts.\"}],\"type\":\"p\"},{\"id\":\"iCGEIaXGO88FICqUzGGuh\",\"children\":[{\"id\":\"bVQZt9piNfUjH_ynHVP73\",\"children\":[{\"b\":1,\"text\":\"Billing references:\"}],\"type\":\"p\"},{\"id\":\"1FioKRtK_A08I_1BA7BRr\",\"children\":[{\"id\":\"pajS08ihHmkffyu2V0tT8\",\"children\":[{\"text\":\"Purchase Guide\"}],\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/50009\"},\"type\":\"ref\"}],\"type\":\"uli\"},{\"id\":\"WSaiJV3V8HVwrBspwI_ZD\",\"children\":[{\"id\":\"kjuJg3swaZqwQJOKfw5dE\",\"children\":[{\"text\":\"Billing\"}],\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/30255\"},\"type\":\"ref\"}],\"type\":\"uli\"},{\"id\":\"EV9fa1jTu-nsVNkiNQBUL\",\"children\":[{\"id\":\"fkOkhsmMuqXDaihM3p9K5\",\"children\":[{\"text\":\"Will the billing continue if the client is disconnected from the server when using the voice chat?\"}],\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/30255#.E4.BD.BF.E7.94.A8.E5.AE.9E.E6.97.B6.E8.AF.AD.E9.9F.B3.E5.90.8E.EF.BC.8C.E5.A6.82.E6.9E.9C.E5.AE.A2.E6.88.B7.E7.AB.AF.E6.8E.89.E7.BA.BF.E4.BA.86.EF.BC.8C.E6.98.AF.E5.90.A6.E8.BF.98.E4.BC.9A.E7.BB.A7.E7.BB.AD.E8.AE.A1.E8.B4.B9.EF.BC.9F\"},\"type\":\"ref\"}],\"type\":\"uli\"}],\"hintType\":\"info\",\"type\":\"hint\"},{\"id\":\"pTUoDMf4PRj5l_GzqucvQ\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\".E5.87.BD.E6.95.B0.E5.8E.9F.E5.9E.8B\",\"type\":\"h4\"},{\"id\":\"e7LjnDYxJllEI1DuV25ay\",\"autoWrap\":false,\"children\":[{\"id\":\"L0PyJIe3VdxgQrgQY7jMx\",\"children\":[{\"text\":\"private ITMGContext.ITMGDelegate itmgDelegate = null;\"}],\"type\":\"code-line\"},{\"id\":\"kt5atE5ARzWPZlHw4vi6t\",\"children\":[{\"text\":\"itmgDelegate= new ITMGContext.ITMGDelegate() {\"}],\"type\":\"code-line\"},{\"id\":\"yB3RF5KY9ZpjRyhxU8LyT\",\"children\":[{\"text\":\" @Override\"}],\"type\":\"code-line\"},{\"id\":\"zulf9SAsvyi9jTLzdrRby\",\"children\":[{\"text\":\" public void OnEvent(ITMGContext.ITMG_MAIN_EVENT_TYPE type, Intent data) {\"}],\"type\":\"code-line\"},{\"id\":\"gpfF3oL9B31euvdz_DREW\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"7zV1mTslE9pdNuRnlB5hL\",\"children\":[{\"text\":\"};\"}],\"type\":\"code-line\"}],\"language\":\"java\",\"type\":\"code-block\"},{\"id\":\"t02jwYePaRdLzeg-uYO-Z\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.818\",\"type\":\"h4\"},{\"id\":\"E8kkd9EoTo90nKtf4mvpU\",\"children\":[{\"text\":\"Sample code for processing the callback, including room entry and network disconnection events.\"}],\"type\":\"p\"},{\"id\":\"VrFixrP_x9Mfor-sV4wx9\",\"autoWrap\":false,\"children\":[{\"id\":\"LWynN6i7MD1SPx1kYaWoy\",\"children\":[{\"text\":\"public void OnEvent(ITMGContext.ITMG_MAIN_EVENT_TYPE type, Intent data) {\"}],\"type\":\"code-line\"},{\"id\":\"9N3mArTPVrzAoSajBt0Il\",\"children\":[{\"text\":\" if (ITMGContext.ITMG_MAIN_EVENT_TYPE.ITMG_MAIN_EVENT_TYPE_ENTER_ROOM == type)\"}],\"type\":\"code-line\"},{\"id\":\"vijIQc6L-B6cOIu5ovSFy\",\"children\":[{\"text\":\" {\"}],\"type\":\"code-line\"},{\"id\":\"cXW5QSKDLSlSkmro5_mxD\",\"children\":[{\"text\":\" // Analyze the returned data\"}],\"type\":\"code-line\"},{\"id\":\"aJb9QqNzMcMu3P0csJ1kA\",\"children\":[{\"text\":\" int nErrCode = data.getIntExtra(\\\"result\\\" , -1);\"}],\"type\":\"code-line\"},{\"id\":\"gNi_E0Kp37S6svnZ72XjL\",\"children\":[{\"text\":\" String strErrMsg = data.getStringExtra(\\\"error_info\\\");\"}],\"type\":\"code-line\"},{\"id\":\"u4OJrYunz4rl-7-hxZ5MK\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"},{\"id\":\"ECfJBe9fvyW3t9DoRWbDV\",\"children\":[{\"text\":\" if (nErrCode == AVError.AV_OK)\"}],\"type\":\"code-line\"},{\"id\":\"po2FvbVtyRZFr8X2WyiS7\",\"children\":[{\"text\":\" {\"}],\"type\":\"code-line\"},{\"id\":\"NDzVny3QePvetrGD0qnX1\",\"children\":[{\"text\":\" //Entered room successfully, and you can proceed with your operation\"}],\"type\":\"code-line\"},{\"id\":\"gQ2Yr0CBP_PcOI0zx7ZLo\",\"children\":[{\"text\":\" ScrollView_ShowLog(\\\"EnterRoom success\\\");\"}],\"type\":\"code-line\"},{\"id\":\"gEZNuDD4HJRHKD-aEWBC8\",\"children\":[{\"text\":\" Log.i(TAG,\\\"EnterRoom success!\\\");\"}],\"type\":\"code-line\"},{\"id\":\"ezrg5PhbORW2cZCB3vUGW\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"6LYt8C3IE8IW16bHTXQjU\",\"children\":[{\"text\":\" else\"}],\"type\":\"code-line\"},{\"id\":\"EUjZQcmmNcC4_LTRvT8qM\",\"children\":[{\"text\":\" {\"}],\"type\":\"code-line\"},{\"id\":\"4RArqgFLAAGOKbS4WL-lK\",\"children\":[{\"text\":\" //If you fail to enter the room, you need to analyze the returned error message\"}],\"type\":\"code-line\"},{\"id\":\"kGNVvasnT_jsNHwlgW5RE\",\"children\":[{\"text\":\" ScrollView_ShowLog(\\\"EnterRoom fail :\\\" + strErrMsg);\"}],\"type\":\"code-line\"},{\"id\":\"e_2Xe-lAMf6p32vvIIf2P\",\"children\":[{\"text\":\" Log.i(TAG,\\\"EnterRoom fail!\\\");\"}],\"type\":\"code-line\"},{\"id\":\"j3_y2Yh37Ry7aawZa1wIM\",\"children\":[{\"text\":\" } \"}],\"type\":\"code-line\"},{\"id\":\"Rb_mUpUT1-YGoo1g527a2\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"dkij1rYclnLiPO_l7lC8d\",\"children\":[{\"text\":\" if (ITMGContext.ITMG_MAIN_EVENT_TYPE.ITMG_MAIN_EVENT_TYPE_ROOM_DISCONNECT == type)\"}],\"type\":\"code-line\"},{\"id\":\"uC13h1tEKGlSh7ahDxJHy\",\"children\":[{\"text\":\" {\"}],\"type\":\"code-line\"},{\"id\":\"DWGjtMjf0H_rnX3rvxbwS\",\"children\":[{\"text\":\" //waiting timeout, please check your network\"}],\"type\":\"code-line\"},{\"id\":\"P9QW4b9BiWTulaQNqVNk8\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"5On8UcLSmE9bSYX9qCOV4\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"}],\"language\":\"java\",\"type\":\"code-block\"},{\"id\":\"sG-ni_Xi9OooUwluSunPr\",\"children\":[{\"text\":\"Data details\"}],\"nodeId\":\"data-.E8.AF.A6.E6.83.85\",\"type\":\"h4\"},{\"id\":\"fqYaxj4gCVienwtxV1XwQ\",\"children\":[{\"id\":\"w1r-9QCY7DIZqOsh8jNv7\",\"children\":[{\"id\":\"3SyO2crlDi8OvUThKYsPq\",\"children\":[{\"id\":\"GLXJAQ2VA2LJK2Zkh41qj\",\"children\":[{\"text\":\"Message\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"G7PGI7xn3r8g0Q5AlfYXo\",\"children\":[{\"id\":\"IwMDIZ0icpHskfvSBSLPu\",\"children\":[{\"text\":\"Data\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"2319NzI2vc24YYeVL_ULi\",\"children\":[{\"id\":\"czW2RLe0EJwy5pS8YQjW6\",\"children\":[{\"text\":\"Example\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"tEN5rsuzHMiYMrR1vIbZU\",\"children\":[{\"id\":\"SzEFB4d6RQlirt0Ra4HPk\",\"children\":[{\"id\":\"yijKhjtmAFXgirdYwtSsY\",\"children\":[{\"id\":\"bVJrT8zB8IaYAP-O66jq4\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_ENTER_ROOM\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Bmy1Zh7q8VhItBbjdko6b\",\"children\":[{\"id\":\"nIlDdJpCClY2R80fT_uZ_\",\"children\":[{\"id\":\"sJaVA_A-mCCJRbuX_8CfR\",\"children\":[{\"text\":\"result; error_info\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"NFC8BY-6aDwFzzlrnG5Y9\",\"children\":[{\"id\":\"3hJoR6SjGUF-TuY25NDdi\",\"children\":[{\"id\":\"xNl3GW08Uo3H9p3FrehQV\",\"children\":[{\"text\":\"{\\\"error_info\\\":\\\"\\\",\\\"result\\\":0}\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"iZYlkaYWT2x5SGIl9OxId\",\"children\":[{\"id\":\"Z0zcYiC18jXIUGHcIYzdW\",\"children\":[{\"id\":\"i4Z1AyXMT0el5X72NU_qj\",\"children\":[{\"id\":\"gy0OHlUttHWUOn72vyZF5\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_ROOM_DISCONNECT\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"FlPQe5symfN3UxsM4tCK1\",\"children\":[{\"id\":\"eDMW1N0WMHOW9EBVFU_ku\",\"children\":[{\"id\":\"U-JDm3Di1BeJtsUGgDmME\",\"children\":[{\"text\":\"result; error_info\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Ad37FkaGLvYMTtnXskjgD\",\"children\":[{\"id\":\"xFBXVEvWEZbmhgWTtif4X\",\"children\":[{\"id\":\"57FK5vqKU6mQMENoOMcTg\",\"children\":[{\"text\":\"{\\\"error_info\\\":\\\"waiting timeout, please check your network\\\",\\\"result\\\":0}\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[38,14,48],\"widthMode\":\"percentage\"},{\"id\":\"YPLhxrHSN6NTtBjrEIgMk\",\"children\":[{\"text\":\"If the network is disconnected, there will be a disconnected callback prompt \"},{\"code\":1,\"text\":\"ITMG_MAIN_EVENT_TYPE.ITMG_MAIN_EVENT_TYPE_ROOM_DISCONNECT\"},{\"text\":\". At this time, the SDK will automatically reconnect, and the callback is \"},{\"code\":1,\"text\":\"ITMG_MAIN_EVENT_TYPE_RECONNECT_START\"},{\"text\":\". When the reconnection is successful, there will be a callback \"},{\"code\":1,\"text\":\"ITMG_MAIN_EVENT_TYPE_RECONNECT_SUCCESS\"},{\"text\":\".\"}],\"type\":\"p\"},{\"id\":\"2N7nxW6FPUCNQzn0AF-Gd\",\"children\":[{\"text\":\"Error codes\"}],\"nodeId\":\".E9.94.99.E8.AF.AF.E7.A0.81\",\"type\":\"h4\"},{\"id\":\"7HA4TDLFpkd8MECBGixEo\",\"children\":[{\"id\":\"8afPRTnaR7nANujeDC3if\",\"children\":[{\"id\":\"Ya2FcfIHZvHihFNX7cgwD\",\"children\":[{\"id\":\"RamL4re1bi62ONQ1Cxn84\",\"children\":[{\"text\":\"Error Code\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"SPTbZDLz_2Gj2Cp5cDT5d\",\"children\":[{\"id\":\"JIl6J4Nvzypr44O3FVv33\",\"children\":[{\"text\":\"Cause and Suggested Solution\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"2dGohVQSqcgg6XmJKoofu\",\"children\":[{\"id\":\"ea5FJI5Yg1b7QPO-yt4BE\",\"children\":[{\"id\":\"Az_O6uznssxHGG_MaqSxe\",\"children\":[{\"id\":\"bAb4_k7EdC-1BYEVkTjiu\",\"children\":[{\"text\":\"7006\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"LZ6k33-J7xzg8Hv5VUKo8\",\"children\":[{\"id\":\"ynoa3b1kQtxC0a-cIuNKc\",\"children\":[{\"text\":\"Authentication failed. Causes:\"}],\"type\":\"p\"},{\"id\":\"ACVHvKq0CBFpJ_gpI7CHI\",\"children\":[{\"code\":1,\"text\":\"AppID\"},{\"text\":\" doesn't exist or is incorrect.\"}],\"type\":\"uli\"},{\"id\":\"_3PR__uwvMeLcnCC00hSb\",\"children\":[{\"text\":\"An error occurred while authenticating \"},{\"code\":1,\"text\":\"authbuff\"},{\"text\":\".\"}],\"type\":\"uli\"},{\"id\":\"zNduvrd48V851q3kJzumK\",\"children\":[{\"text\":\"Authentication expired.\"}],\"type\":\"uli\"},{\"id\":\"uPkocMW6psfGomcSZoKRT\",\"children\":[{\"code\":1,\"text\":\"OpenId\"},{\"text\":\" is invalid.\"}],\"type\":\"uli\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"sQfgKEqcqSJTCf2RwGi6J\",\"children\":[{\"id\":\"dlsYzAPTL1yn1amWpK2Up\",\"children\":[{\"id\":\"oq_ahrkiC3yq7Tc7sUBc6\",\"children\":[{\"id\":\"2dgrR_Cq5Gp6B_UN8qPLv\",\"children\":[{\"text\":\"7007\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Ccf7RGM-OV06mZ2WqZ-Ia\",\"children\":[{\"id\":\"JrXJrBNrJDkq08KtxQNbl\",\"children\":[{\"id\":\"6sJ-v3ERKhPIe1szBIzdd\",\"children\":[{\"text\":\"The user was already in another room.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"NyntfxLoRIQSRSzeXQlGP\",\"children\":[{\"id\":\"8HiZMcZsCSEbF8IOTFUay\",\"children\":[{\"id\":\"du-v9bgsn-AOMaKZS1fXZ\",\"children\":[{\"id\":\"XwFdTnT8bpMDG7FEWTxa_\",\"children\":[{\"text\":\"1001\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"nDZVfcir-V5tfKQglimIX\",\"children\":[{\"id\":\"uRAEqeqXtEV81KvylxHmG\",\"children\":[{\"id\":\"cTSycQqC3_GH07R1TDl5u\",\"children\":[{\"text\":\"The user was already in the process of entering a room but repeated this operation. We recommend that you not call the room entry API until the room entry callback is returned.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"5JzWY6Ia97SqyqmENfOpM\",\"children\":[{\"id\":\"cn4T_E4v5KsyA9-I9e8Pe\",\"children\":[{\"id\":\"kCfydIxQ2WzznhBlPGotu\",\"children\":[{\"id\":\"L4r0A4_W_WYFKWj6a8U7n\",\"children\":[{\"text\":\"1003\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"MrGWMToUtykZrsfwO4fPv\",\"children\":[{\"id\":\"q82_M6Fz9VBsrqYfjUMIk\",\"children\":[{\"id\":\"yZ81r7tnUC8VuWyKu4oif\",\"children\":[{\"text\":\"The user was already in the room and called the room entry API again.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"8yCFzN-7u1HVD4p5kj_Ey\",\"children\":[{\"id\":\"7yxFyMxlHcYKOxa3PxY_P\",\"children\":[{\"id\":\"RjJDZovI3o2LwjCf9YEeS\",\"children\":[{\"id\":\"glVteaurvMXI2ArlBdHLs\",\"children\":[{\"text\":\"1101\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"75VMb8aBHwPprew1Y_wO0\",\"children\":[{\"id\":\"In5h-I11Co8BVt2s-DNjM\",\"children\":[{\"text\":\"Make sure that the SDK is initialized, \"},{\"code\":1,\"text\":\"OpenId\"},{\"text\":\" complies with the rules, the APIs are called in the same thread, and the \"},{\"code\":1,\"text\":\"Poll\"},{\"text\":\" API is called normally.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[15,85],\"widthMode\":\"percentage\"},{\"id\":\"9fMvYzHwH-CKCsq5k9Sdk\",\"children\":[{\"text\":\"Exiting a room\"}],\"nodeId\":\".E9.80.80.E5.87.BA.E6.88.BF.E9.97.B4\",\"type\":\"h3\"},{\"id\":\"7yCoeyL1sGlaY-T5Rc8mO\",\"children\":[{\"text\":\"This API is used to exit the current room. It is an async API. The returned value \"},{\"code\":1,\"text\":\"AV_OK\"},{\"text\":\" indicates a successful async delivery. If there is a scenario in the application where room entry is performed immediately after room exit, you don't need to wait for the \"},{\"code\":1,\"text\":\"RoomExitComplete\"},{\"text\":\" callback notification from the \"},{\"code\":1,\"text\":\"ExitRoom\"},{\"text\":\" API; instead, you can directly call the \"},{\"code\":1,\"text\":\"EnterRoom\"},{\"text\":\" API.\"}],\"nodeId\":\"ExitRoom\",\"type\":\"p\"},{\"id\":\"Uom6wF79Qwc1fPSRnjG4q\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\".E6.8E.A5.E5.8F.A3.E5.8E.9F.E5.9E.8B10\",\"type\":\"h4\"},{\"id\":\"6akTXRa7fu4XTaO4JCEFl\",\"autoWrap\":false,\"children\":[{\"id\":\"SflUmayQYyHLQNJr49dlE\",\"children\":[{\"text\":\"public abstract int ExitRoom();\"}],\"type\":\"code-line\"}],\"language\":\"java\",\"type\":\"code-block\"},{\"id\":\"2Jxs1pHv44cID48n7FZfn\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.819\",\"type\":\"h4\"},{\"id\":\"ZcICId7WwSjhbQSs9z2iw\",\"autoWrap\":false,\"children\":[{\"id\":\"jfH4DGx1pPou7VOkVK_dx\",\"children\":[{\"text\":\"ITMGContext.GetInstance(this).ExitRoom();\"}],\"type\":\"code-line\"}],\"language\":\"java\",\"type\":\"code-block\"},{\"id\":\"Hmr5MXl-v7y6eR0tQRNTY\",\"children\":[{\"text\":\"Callback for room exit\"}],\"nodeId\":\".E9.80.80.E5.87.BA.E6.88.BF.E9.97.B4.E4.BA.8B.E4.BB.B6.E5.9B.9E.E8.B0.83\",\"type\":\"h4\"},{\"id\":\"T-azaEKGGU-iHwELhExb7\",\"children\":[{\"text\":\"After the user exits a room, a callback will be returned with the message being \"},{\"code\":1,\"text\":\"ITMG_MAIN_EVENT_TYPE_EXIT_ROOM\"},{\"text\":\".\"}],\"type\":\"p\"},{\"id\":\"bli4VIzaTaUMfWeklIIfj\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.8110\",\"type\":\"h4\"},{\"id\":\"VwhUDRFaMpT5ewpT93UuY\",\"autoWrap\":false,\"children\":[{\"id\":\"yhKu23aizPQITVtI8bUpI\",\"children\":[{\"text\":\"public void OnEvent(ITMGContext.ITMG_MAIN_EVENT_TYPE type, Intent data) {\"}],\"type\":\"code-line\"},{\"id\":\"_eZanq0CKhQDOww3IsjJ7\",\"children\":[{\"text\":\" if (ITMGContext.ITMG_MAIN_EVENT_TYPE.ITMG_MAIN_EVENT_TYPE_EXIT_ROOM == type)\"}],\"type\":\"code-line\"},{\"id\":\"X98BEo__znyIOIQ7yQ3uS\",\"children\":[{\"text\":\" {\"}],\"type\":\"code-line\"},{\"id\":\"l9uDaVj5oATnVEJOe8nPA\",\"children\":[{\"text\":\" // Receive the event of successful room exit\"}],\"type\":\"code-line\"},{\"id\":\"QPMDG_u2nsCPrBupiVcNb\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"7uClPMoD4nnPNfURvNviY\",\"children\":[{\"text\":\"}\"}],\"type\":\"code-line\"}],\"language\":\"java\",\"type\":\"code-block\"},{\"id\":\"ISUxwl01FG-6DIkmcWbEd\",\"children\":[{\"text\":\"Data details\"}],\"nodeId\":\"data.E8.AF.A6.E6.83.85\",\"type\":\"h4\"},{\"id\":\"VHBKp018aX98TskV9Jh9S\",\"children\":[{\"id\":\"bP6-7t2DbjWgm5aNNLzFm\",\"children\":[{\"id\":\"yjpKQQpX3kYXeaxEj_Pc0\",\"children\":[{\"id\":\"Pq_oECSBei8CEJEeDJE4c\",\"children\":[{\"text\":\"Message\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"0AzU0_pUT6TNQqwvq_aNC\",\"children\":[{\"id\":\"IveBzjFB2FwOHA6YKXPo8\",\"children\":[{\"text\":\"Data\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Cj8QI3XBReZnMZ8IK2l6m\",\"children\":[{\"id\":\"QC2wQK7q54yMZgpfsVPjq\",\"children\":[{\"text\":\"Example\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"qKh9KqeHE1x2jBvvvhDVK\",\"children\":[{\"id\":\"rx_9epDKI5TXSGUZWdUDM\",\"children\":[{\"id\":\"X7eAPHkaK9ixFWKDB-lJp\",\"children\":[{\"id\":\"CAJl9FbNiKt-Lgq4380qC\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_EXIT_ROOM\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"gTMcMk5nYnvTfScFEU5CB\",\"children\":[{\"id\":\"8QbxPpcpvPS1t_UKJEviE\",\"children\":[{\"id\":\"RIwxPC1R_IZCZ-hVDaSlh\",\"children\":[{\"text\":\"result; error_info\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"rbGWJp9VGvaDO91U_ag5N\",\"children\":[{\"id\":\"melTtdqvOsmH1NKZQi8yi\",\"children\":[{\"id\":\"sjsuLRRmP2Mc5IztqFVlZ\",\"children\":[{\"text\":\"{\\\"error_info\\\":\\\"\\\",\\\"result\\\":0}\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[48,21,31],\"widthMode\":\"percentage\"},{\"id\":\"Na83v96m_O272gM3KJNVu\",\"children\":[{\"text\":\"Determining whether user has entered room\"}],\"nodeId\":\".E5.88.A4.E6.96.AD.E6.98.AF.E5.90.A6.E5.B7.B2.E7.BB.8F.E8.BF.9B.E5.85.A5.E6.88.BF.E9.97.B4\",\"type\":\"h3\"},{\"id\":\"OANeHCT5PkP6_GyQ3IDCP\",\"children\":[{\"text\":\"This API is used to determine whether the user has entered a room. A value in bool type will be returned. Do not call this API during room entry.\"}],\"type\":\"p\"},{\"id\":\"xB2RVqwLeiukcVibxzj3B\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\".E6.8E.A5.E5.8F.A3.E5.8E.9F.E5.9E.8B11\",\"type\":\"h4\"},{\"id\":\"lziXg5ypLUYTTCFFmuGfn\",\"autoWrap\":false,\"children\":[{\"id\":\"-IXFAM9m7ggzBSfVWMTyk\",\"children\":[{\"text\":\"public abstract boolean IsRoomEntered();\"}],\"type\":\"code-line\"}],\"language\":\"java\",\"type\":\"code-block\"},{\"id\":\"c6c8evdQ6qseLA2652gFk\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.8111\",\"type\":\"h4\"},{\"id\":\"ewDId8Xh5kR4Juj1CEaae\",\"autoWrap\":false,\"children\":[{\"id\":\"4k7ZTztNllJbmwkCofP9X\",\"children\":[{\"text\":\"ITMGContext.GetInstance(this).IsRoomEntered();\"}],\"type\":\"code-line\"}],\"language\":\"java\",\"type\":\"code-block\"},{\"id\":\"iuJGVMKv3yPwT0M0UuOT4\",\"children\":[{\"text\":\"Switching room\"}],\"nodeId\":\".E5.BF.AB.E9.80.9F.E5.88.87.E6.8D.A2.E6.88.BF.E9.97.B4\",\"type\":\"h3\"},{\"id\":\"Pun4Bwuw3pHwrjzL9HvRe\",\"children\":[{\"text\":\"User can call this API to quickly switch the voice chat room after entering the room. After the room is switched, the device is not reset, that is, if the microphone is already enabled in this room, the microphone will keep enabled after the room is switched.\\nThe callback for quickly switching rooms is \"},{\"code\":1,\"text\":\"ITMG_MAIN_EVENT_TYPE.ITMG_MAIN_EVENT_TYPE_SWITCH_ROOM\"},{\"text\":\", and the fields are \"},{\"code\":1,\"text\":\"error_info\"},{\"text\":\" and \"},{\"code\":1,\"text\":\"result\"},{\"text\":\".\"}],\"type\":\"p\"},{\"id\":\"AybRJVfNlcT6JoHIMne5R\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\".E6.8E.A5.E5.8F.A3.E5.8E.9F.E5.9E.8B12\",\"type\":\"h4\"},{\"id\":\"hej7M_COaxMi3ee7XBGAV\",\"autoWrap\":false,\"children\":[{\"id\":\"2EiJoAIjI0rHFakuLiGel\",\"children\":[{\"text\":\"public abstract int SwitchRoom(String targetRoomID, byte[] authBuffer);\"}],\"type\":\"code-line\"}],\"language\":\"java\",\"type\":\"code-block\"},{\"id\":\"koT-8lMdNT3pQn4b3wqub\",\"children\":[{\"text\":\"Type descriptions\"}],\"nodeId\":\".E7.B1.BB.E5.9E.8B.E8.AF.B4.E6.98.8E\",\"type\":\"h4\"},{\"id\":\"2t6v3cxqKcrmf4VGsEerg\",\"children\":[{\"id\":\"Uh5s06I408UADsjTNH8hf\",\"children\":[{\"id\":\"IvgJ9znQY_QbmPU2dCSAR\",\"children\":[{\"id\":\"aJhnJo6M0vE078wSdRXpa\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ah2Z0a3afFn_iAX0EXeTC\",\"children\":[{\"id\":\"xzr_oDF7k2DEZhhEI44pO\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ZbMr9pallGah-LmnIfjyC\",\"children\":[{\"id\":\"8MNaSvn8Ga0hVtWLg4-c0\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"0eEjBYu62fJ7FkyykDh2s\",\"children\":[{\"id\":\"dMuKFbrJbM-E3dU1ivjur\",\"children\":[{\"id\":\"plSw8fQIi0Is_V2U2kcur\",\"children\":[{\"id\":\"FCv_SCK-xI6KO6sqYOgR_\",\"children\":[{\"text\":\"targetRoomID\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"PMXVUaI7HgWaE4sIkF4xP\",\"children\":[{\"id\":\"A3M-u7HFqg-9qtVv4DVc8\",\"children\":[{\"id\":\"hukJZ_gaAPQygKXVi14gl\",\"children\":[{\"text\":\"String\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"C7VhmKiZMNs_5TN6fQqZk\",\"children\":[{\"id\":\"4XK0OGmwDL8wJQmVJwCfJ\",\"children\":[{\"id\":\"CqPDRWq0NTknBG7jWJjOr\",\"children\":[{\"text\":\"ID of the room to enter\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"VEeA8UDQ0WfmztaEYaZaq\",\"children\":[{\"id\":\"DAcKZrD7KP5kvmeoJRZT6\",\"children\":[{\"id\":\"wTs8gc4nF4catyaEwJYdm\",\"children\":[{\"id\":\"w58rFdTq285G7DrLIP3S_\",\"children\":[{\"text\":\"authBuffer\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"lvUgx67puKaOQNoBAJWv9\",\"children\":[{\"id\":\"FxK8Un0OQNeH4XgCYtn3M\",\"children\":[{\"id\":\"zMbTNsb1-T32NXo3djYun\",\"children\":[{\"text\":\"byte[\"},{\"text\":\"]\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"HyvDSz3d9WfyK45KD_Va1\",\"children\":[{\"id\":\"OPXu0dOk8gZRMLDtxrzzi\",\"children\":[{\"id\":\"hizD_0EYNFDdyaMK5g_-z\",\"children\":[{\"text\":\"Generates a new authentication key with the ID of the room to enter\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[18,10,72],\"widthMode\":\"percentage\"},{\"id\":\"XtTw6XtDAK7quJRTm9htV\",\"children\":[{\"text\":\"Callback sample code\"}],\"nodeId\":\".E5.9B.9E.E8.B0.83.E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.81\",\"type\":\"h4\"},{\"id\":\"Ozg0Pz32n-0_HRaRweynw\",\"autoWrap\":false,\"children\":[{\"id\":\"BErUODYXxCJDdvXmr7FU3\",\"children\":[{\"text\":\"if(ITMGContext.ITMG_MAIN_EVENT_TYPE.ITMG_MAIN_EVENT_TYPE_SWITCH_ROOM == type) { \"}],\"type\":\"code-line\"},{\"id\":\"K16bYunVLE1EfJZreE3mB\",\"children\":[{\"text\":\"int result = data.getIntExtra(\\\"result\\\", 1); \"}],\"type\":\"code-line\"},{\"id\":\"E5BA0Nog_Ifje0FsEKLTo\",\"children\":[{\"text\":\"String errorInfo = data.getStringExtra(\\\"error_info\\\"); \"}],\"type\":\"code-line\"},{\"id\":\"L1SOraPkODFzq6zu63zbO\",\"children\":[{\"text\":\"if (result == 0) { \"}],\"type\":\"code-line\"},{\"id\":\"tghQwUWmVwqR86AKFoO9_\",\"children\":[{\"text\":\" Toast.makeText(getActivity(), \\\"switch room success.\\\", Toast.LENGTH_SHORT).show(); \"}],\"type\":\"code-line\"},{\"id\":\"9_7ak0CnKpDMGV5vyzdQ5\",\"children\":[{\"text\":\" } \"}],\"type\":\"code-line\"},{\"id\":\"TX9YWbAgE3PGq7BF35wZa\",\"children\":[{\"text\":\"else { \"}],\"type\":\"code-line\"},{\"id\":\"NUstLa8LeW7x0dIIMimKP\",\"children\":[{\"text\":\" Toast.makeText(getActivity(), \\\"switch room failed.. error info=\\\" + errorInfo, Toast.LENGTH_SHORT).show(); \"}],\"type\":\"code-line\"},{\"id\":\"xI_UTleMH8zhq98XySMYJ\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"QHG_6f16GEd8YdFdOxwt9\",\"children\":[{\"text\":\"}\"}],\"type\":\"code-line\"}],\"language\":\"java\",\"type\":\"code-block\"},{\"id\":\"XRV2jZuvqJ5G9ZnKgLAZH\",\"children\":[{\"text\":\"Cross-room mic connection\"}],\"nodeId\":\".E8.B7.A8.E6.88.BF.E8.BF.9E.E9.BA.A6\",\"type\":\"h3\"},{\"id\":\"LCBVxaYVaLWDAmnxvx1Pg\",\"children\":[{\"text\":\"Call this API to connect the microphones across rooms after the room entry. After the call, the local user can communicate with the target OpenID user in the target room. The target room should be of the same type as the local room.\"}],\"type\":\"p\"},{\"id\":\"QKyrbs_5hagnAFGCdrjyr\",\"children\":[{\"text\":\"Example\"}],\"nodeId\":\".E5.9C.BA.E6.99.AF.E7.A4.BA.E4.BE.8B\",\"type\":\"h4\"},{\"id\":\"7d00BTtFzPyZMPp0lPfRh\",\"children\":[{\"text\":\"User a is in room A, user b is in room B, and user a can talk with b through the cross-room API. When user c in room A speaks, users b and d in room B cannot hear. User c in room A can hear only the voice in room A and the voice of user b in room B but not other users in room B.\"}],\"type\":\"p\"},{\"id\":\"qnn2JgVOcjPpiW8fFPsu7\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\".E6.8E.A5.E5.8F.A3.E5.8E.9F.E5.9E.8B13\",\"type\":\"h4\"},{\"id\":\"lDEnZBU3MSZmCG9Ol8K6W\",\"autoWrap\":false,\"children\":[{\"id\":\"eUXMHD6EOhmgXICIjWXTG\",\"children\":[{\"text\":\"/// Enable the room sharing, and connect the mic of the OpenID in another room.\"}],\"type\":\"code-line\"},{\"id\":\"TrfQvwdltv-aX1spYMOoH\",\"children\":[{\"text\":\"public abstract int StartRoomSharing(String targetRoomID, String targetOpenID, byte[] authBuffer);\"}],\"type\":\"code-line\"},{\"id\":\"jUZlVp97fP-sT61GKrk_4\",\"children\":[{\"text\":\"/// Stop the enabled room sharing.\"}],\"type\":\"code-line\"},{\"id\":\"tm8h8QY5ccbqKdSToFH9m\",\"children\":[{\"text\":\"public abstract int StopRoomSharing();\"}],\"type\":\"code-line\"}],\"language\":\"java\",\"type\":\"code-block\"},{\"id\":\"wDCUn6zcNghZQJPd6AAuT\",\"children\":[{\"text\":\"Type descriptions\"}],\"nodeId\":\".E7.B1.BB.E5.9E.8B.E8.AF.B4.E6.98.8E2\",\"type\":\"h4\"},{\"id\":\"vsFK9XbZ-0IzZ13IXiTcY\",\"children\":[{\"id\":\"D5muO2N0GS4nAB4mNjc8j\",\"children\":[{\"id\":\"J84uPGq_T_-bGQNaaiykX\",\"children\":[{\"id\":\"aK78bhtfYM48hqgf6ExvU\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"sgYQvNROjlVIAtDeJ1xFP\",\"children\":[{\"id\":\"3F49nhE0PYq9gBusctEta\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Rw3vEWozcRjr1DhxuedVE\",\"children\":[{\"id\":\"wzd2f6vfuSgMNEAPN42W7\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"_RAFAfVnCO60ZfYs2Wkwm\",\"children\":[{\"id\":\"3N3U4a4SeNxmvk3WzWnWQ\",\"children\":[{\"id\":\"Fpt4vbAV0We924V3Mfhuk\",\"children\":[{\"id\":\"vzlNutQg78i5_ORZZGGBR\",\"children\":[{\"text\":\"targetRoomID\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"x5drxx9nmnt9tr3B03E1S\",\"children\":[{\"id\":\"tueEmifvdXz_K5xYNu-36\",\"children\":[{\"id\":\"l_lCngpp0El7rz4miFRUI\",\"children\":[{\"text\":\"String\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"5eOy2SaYFvbajqG5t-YU4\",\"children\":[{\"id\":\"cIAcSROHHLJzwNAI23WSx\",\"children\":[{\"id\":\"gBhIaZIy7Th7WXRcN1O9r\",\"children\":[{\"text\":\"ID of the room to connect mic\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"A8clfVfxGWpgUkjkpiUL5\",\"children\":[{\"id\":\"xDKUkn8KDUnkMllCY9CXj\",\"children\":[{\"id\":\"htNZysEqtsX2p5Z-4Gki3\",\"children\":[{\"id\":\"iDq9yest47m8xN04KZi4X\",\"children\":[{\"text\":\"targetOpenID\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"JHGPGG_qw44GK2OhV-4gB\",\"children\":[{\"id\":\"fd6eQe2mm_jY2q9V8b03x\",\"children\":[{\"id\":\"S8sCKMV3poE0YHpWDpSDP\",\"children\":[{\"text\":\"String\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"xy9veu3dN2jPtdds2Z7Oj\",\"children\":[{\"id\":\"OmS9s4gucAN4cHI_XK79S\",\"children\":[{\"id\":\"2s7rclGlxRF0IA9yDIVv4\",\"children\":[{\"text\":\"Target \"},{\"code\":1,\"text\":\"OpenID\"},{\"text\":\" to connect mic\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"5ch71aXX8NmUhs42LbAfm\",\"children\":[{\"id\":\"fHO1yzoQegc_bsNl2pf5j\",\"children\":[{\"id\":\"73n_Jo558jCuVIuLgfHSz\",\"children\":[{\"id\":\"34ZsKtVvCM6NOwzPgDFU0\",\"children\":[{\"text\":\"authBuffer\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"6QkA5BpAYn6njKhYE_vIU\",\"children\":[{\"id\":\"2ffBXjtTnO7PTFNdQEgWC\",\"children\":[{\"id\":\"-n0588_nuzLOgHSaShPHQ\",\"children\":[{\"text\":\"byte[\"},{\"text\":\"]\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"H12xnFlrwh1b9jvam3XEq\",\"children\":[{\"id\":\"YTjmNhe7oYmAmfucfjoME\",\"children\":[{\"id\":\"FR3jMcwNajPyLt0-cxUhS\",\"children\":[{\"text\":\"Reserved flag. You just need to enter NULL.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[24,14,62],\"widthMode\":\"percentage\"},{\"id\":\"1kpamRaAeMMHp79EVQ1Tt\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.8112\",\"type\":\"h4\"},{\"id\":\"AJ-KRsjvgo0nRIQ3nekLg\",\"autoWrap\":false,\"children\":[{\"id\":\"O3W1lIjUijFWHQv1tQFHP\",\"children\":[{\"text\":\"if (mSwtichRoomShareStart.isChecked())\"}],\"type\":\"code-line\"},{\"id\":\"LSvpA19ZJZwZ7Hp8SCtmt\",\"children\":[{\"text\":\" {\"}],\"type\":\"code-line\"},{\"id\":\"clHUhT9J0QS0DKdEMGkU_\",\"children\":[{\"text\":\" String strRoomID = mEditRoomShareRoomID.getText().toString();\"}],\"type\":\"code-line\"},{\"id\":\"muvGIUMxvcqChS8VXjc7P\",\"children\":[{\"text\":\" String strOpenID = mEditRoomShareOpenID.getText().toString();\"}],\"type\":\"code-line\"},{\"id\":\"GPfTNQGWwSM6IGW8tjJwN\",\"children\":[{\"text\":\" int nRet = ITMGContext.GetInstance(getActivity()).GetRoom().StartRoomSharing(strRoomID, strOpenID, null);\"}],\"type\":\"code-line\"},{\"id\":\"vfb3i_awj00Y9Bn8txbIs\",\"children\":[{\"text\":\" if (nRet != 0)\"}],\"type\":\"code-line\"},{\"id\":\"H7Pm5kU-XHhnoQuRN_M7n\",\"children\":[{\"text\":\" {\"}],\"type\":\"code-line\"},{\"id\":\"7-cRWXqifWjhVbJKYjMzT\",\"children\":[{\"text\":\" Toast.makeText(getActivity(), String.format(\\\"StartRoomSharing failed nRet=\\\" + nRet), Toast.LENGTH_SHORT).show();\"}],\"type\":\"code-line\"},{\"id\":\"VQ8GM0nX-MLhSHWr1wkA3\",\"children\":[{\"text\":\" }else\"}],\"type\":\"code-line\"},{\"id\":\"f7lbBy3xrAR8QSKdpgL4T\",\"children\":[{\"text\":\" {\"}],\"type\":\"code-line\"},{\"id\":\"UP5bPeanfAQaRtl1yHrFp\",\"children\":[{\"text\":\" int nRet = ITMGContext.GetInstance(getActivity()).GetRoom().StopRoomSharing();\"}],\"type\":\"code-line\"},{\"id\":\"9CVl1tJCXUAFb7zTixhU-\",\"children\":[{\"text\":\" if (nRet != 0)\"}],\"type\":\"code-line\"},{\"id\":\"Kt8NMIC8nLhs6RG_akNvr\",\"children\":[{\"text\":\" {\"}],\"type\":\"code-line\"},{\"id\":\"pA-wMz-K5RJV8d-oK8zgP\",\"children\":[{\"text\":\" Toast.makeText(getActivity(), String.format(\\\"StopRoomSharing failed nRet=\\\" + nRet), Toast.LENGTH_SHORT).show();\"}],\"type\":\"code-line\"},{\"id\":\"GqQnDDYNoFZlLJLCvuh09\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"kON36yD9zZkZ2tEHIrjaO\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"ozcuac_g-8Ve8voQpPAfR\",\"children\":[{\"text\":\"}\"}],\"type\":\"code-line\"}],\"language\":\"java\",\"type\":\"code-block\"},{\"id\":\"PCyVzvpkIaStEZSOKTKV-\",\"children\":[{\"text\":\"Room Status Maintenance\"}],\"nodeId\":\".E6.88.BF.E9.97.B4.E5.86.85.E7.8A.B6.E6.80.81.E7.BB.B4.E6.8A.A4\",\"type\":\"h2\"},{\"id\":\"N4JQHz1DYX78IHIzsIEOH\",\"children\":[{\"text\":\"APIs in this section are used to display speaking members and members entering or exiting the room and mute a member in the room at the business layer.\"}],\"type\":\"p\"},{\"id\":\"NWPCpfGDcU323TID1TvM4\",\"children\":[{\"id\":\"j-YwAGEEQNdVLZt-lSqpt\",\"alt\":\"\",\"children\":[{\"text\":\"\"}],\"inline\":true,\"naturalSize\":[521,410],\"size\":[521,410],\"type\":\"image\",\"url\":\"https://cloudcache.intl.tencent-cloud.com/cms/backend-cms/ca7c85c8b96711ed9e14525400088f3a.png\"}],\"type\":\"p\"},{\"id\":\"mwnOl2s3jOweSaIVFsrWh\",\"children\":[{\"id\":\"jKBHUllp21lsrqCXf2BIG\",\"children\":[{\"id\":\"Kpe5D05l6Bxe3_jntO0W0\",\"children\":[{\"id\":\"2O12qEjbQCmu8DXVmuFhi\",\"children\":[{\"text\":\"API/Notification\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"8rwt-OAGsK2QUlVy-tK_k\",\"children\":[{\"id\":\"zlQJ-wWY2k8u6xBwDTQnu\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"hc56zAmSOvXz8jlgkgIGN\",\"children\":[{\"id\":\"ps1MHflYlADwq5f_bc8H3\",\"children\":[{\"id\":\"XnJ7sJsUt8md5bZODq4Th\",\"children\":[{\"id\":\"tqGVtqCoMl83OyhHNI_V-\",\"children\":[{\"text\":\"ITMG_MAIN_EVNET_TYPE_USER_UPDATE\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Nz9ejWSd_80RQgsbL7Ye1\",\"children\":[{\"id\":\"DJWwJPXLx9meur0P8FrDQ\",\"children\":[{\"id\":\"XxGDJjNMrxp4ZvMvjTfUn\",\"children\":[{\"text\":\"The member status changed.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"ct-5X-3trafDrf2L6OWdT\",\"children\":[{\"id\":\"gIapyH0ZfYp51q_lFz3_m\",\"children\":[{\"id\":\"VorBzIB5EfprL27JEHOjQ\",\"children\":[{\"id\":\"eqeuzXd2qGyHZufwdgu0m\",\"children\":[{\"text\":\"AddAudioBlackList\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"O3XJPVb3bI7ECuyGxeLyU\",\"children\":[{\"id\":\"X9NcmAZWLJEyiVP2Za8Z3\",\"children\":[{\"id\":\"Nh1Ze2Ikls_EZRHHyFcvc\",\"children\":[{\"text\":\"Mutes a member in the room.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"8XcQqOXVvLzi8eusR4m-Q\",\"children\":[{\"id\":\"tXoe7tRrS1imA46KRzqLs\",\"children\":[{\"id\":\"2y9RQZliT8JneJu2liEK_\",\"children\":[{\"id\":\"HD7_d5l9FuycYGeupyQQg\",\"children\":[{\"text\":\"RemoveAudioBlackList\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"KScxRxFvBmCxTNnTyknNU\",\"children\":[{\"id\":\"PA4lkqrpKfcFHJWkNmJiK\",\"children\":[{\"id\":\"sKDzapQBNZd2wSbJjpegi\",\"children\":[{\"text\":\"Unmutes a member.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[46,54],\"widthMode\":\"percentage\"},{\"id\":\"AzQWT7andyugLVu4Ms9n5\",\"children\":[{\"text\":\"Notifications of member room entry and speaking status\"}],\"nodeId\":\".E6.88.90.E5.91.98.E8.BF.9B.E6.88.BF.E3.80.81.E8.AF.B4.E8.AF.9D.E7.8A.B6.E6.80.81.E9.80.9A.E7.9F.A5\",\"type\":\"h3\"},{\"id\":\"YhoIWqdjHuToBTtZ3W-9A\",\"children\":[{\"text\":\"This API is used to obtain the user speaking in the room and display it in the UI, and to send a notification when someone entering or exiting the room.\\nNotification for this event will be sent only when the status changes. To get member status in real time, cache the notification when it is received at a higher layer. The event message is \"},{\"code\":1,\"text\":\"ITMG_MAIN_EVNET_TYPE_USER_UPDATE\"},{\"text\":\", where the data contains \"},{\"code\":1,\"text\":\"event_id\"},{\"text\":\" and \"},{\"code\":1,\"text\":\"user_list\"},{\"text\":\". The event message will be identified in the \"},{\"code\":1,\"text\":\"OnEvent\"},{\"text\":\" function.\\nNotifications for audio events are subject to a threshold, and a notification will be sent only when this threshold is exceeded. The notification \\\"A member has stopped sending audio packets\\\" will be sent if no audio packets are received in more than two seconds.\"}],\"type\":\"p\"},{\"id\":\"oXwLDNxvOVd5cmd-1TZ8z\",\"children\":[{\"id\":\"DXSQGw4h842w0nVpo1cqN\",\"children\":[{\"id\":\"PE3-O-RkJrMLSI-ptkXmu\",\"children\":[{\"id\":\"DBB3iYAAVwx8VFXf8kpdn\",\"children\":[{\"text\":\"event_id\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"PT7a8gwduM0f8FLqo7Vdo\",\"children\":[{\"id\":\"-5ejBPsBNhwXjmMvd8K0f\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"iQ53nkoQ_q96e44iBvA-P\",\"children\":[{\"id\":\"XDAKCes0eMZLnw2DcY7ks\",\"children\":[{\"text\":\"Maintenance\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"0CywmZJiagAXgwb1ao4zI\",\"children\":[{\"id\":\"S1OS0cIUsfYFCxd8SdI4-\",\"children\":[{\"id\":\"xHGh0_Q38PFKQ9hfx1Q1m\",\"children\":[{\"id\":\"iPRk4vm-H6DeWMLdBw2HO\",\"children\":[{\"text\":\"ITMG_EVENT_ID_USER_ENTER\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"7tKc22zNxNLTl-97DyOry\",\"children\":[{\"id\":\"ev-_O-4fMZHMJzFz9JkZ1\",\"children\":[{\"id\":\"FhqbuyX3NKAaG8L_hh2qv\",\"children\":[{\"text\":\"Return the \"},{\"code\":1,\"text\":\"openid\"},{\"text\":\" of the member entering the room.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"XauD_0CA67kaGY3WvgUxQ\",\"children\":[{\"id\":\"1MNzlMOPvPIqwlaEV53J1\",\"children\":[{\"id\":\"kZQxAjaAF3l56jpUfHB1k\",\"children\":[{\"text\":\"Member list\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"pG3KUSXxaQ7jxL-OubSOw\",\"children\":[{\"id\":\"BB1PCyAxFvwSGNEoTeIHu\",\"children\":[{\"id\":\"WYCQPRwzS8xeY38E6wux2\",\"children\":[{\"id\":\"r_EJ_11T3CvJ_oZpI6LgR\",\"children\":[{\"text\":\"ITMG_EVENT_ID_USER_EXIT\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"vPbZpK5a8PXOTvjzAofHw\",\"children\":[{\"id\":\"9JB4f3utTA3TCETaBrR1p\",\"children\":[{\"id\":\"rBaBhqLSYTnwQ0Wid0Ygo\",\"children\":[{\"text\":\"Return the \"},{\"code\":1,\"text\":\"openid\"},{\"text\":\" of the member exiting the room.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"OX0tcJ-7z-AnsWQdQhhvw\",\"children\":[{\"id\":\"4Tk9T-Aj4KhBtfOj8rfE6\",\"children\":[{\"id\":\"SLQt3RQzWHW21zXzswKAc\",\"children\":[{\"text\":\"Member list\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"4tOWprvCqeirHgJCWuA7I\",\"children\":[{\"id\":\"GWfuepgP7jJoYPpmFY2v2\",\"children\":[{\"id\":\"lkBVf77V7RhOJ0FCtJwWn\",\"children\":[{\"id\":\"2H_cbSd7gcnte4pETzuBE\",\"children\":[{\"text\":\"ITMG_EVENT_ID_USER_HAS_AUDIO\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"fEhz_OgjQnmSFloK-9PId\",\"children\":[{\"id\":\"tQ95arRNcP5g_GmZKOa0x\",\"children\":[{\"id\":\"2KlTiiO94HuON1YlKqCn4\",\"children\":[{\"text\":\"Return the \"},{\"code\":1,\"text\":\"openid\"},{\"text\":\" of the member sending audio packets in the room. This event can be used to determine whether a user is speaking and display the voiceprint effect.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"-s89o57ogy3dIovHOec96\",\"children\":[{\"id\":\"g4uTlCLSwr1cutKrkWCXI\",\"children\":[{\"id\":\"sVu3U5UfL9eJKAXaG47XN\",\"children\":[{\"text\":\"Chat member list\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"ulZzdWGDjDgDoODWzFlZt\",\"children\":[{\"id\":\"6cQe5r-WBPXcAV6m7B-L2\",\"children\":[{\"id\":\"4KDNEQ6YKTlH-svP-MZ8d\",\"children\":[{\"id\":\"YhsOOdYVbZP8qwh0wbzb0\",\"children\":[{\"text\":\"ITMG_EVENT_ID_USER_NO_AUDIO\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"CcRuJP5fRQPGPWZTS20-U\",\"children\":[{\"id\":\"PeoSTZb2el9rGo4cMGiBI\",\"children\":[{\"id\":\"gKGWcI-SSzgQpUBOuSBjw\",\"children\":[{\"text\":\"Return the \"},{\"code\":1,\"text\":\"openid\"},{\"text\":\" of the member stopping sending audio packets in the room.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"uL16I76DvGV1MwPvBCQx0\",\"children\":[{\"id\":\"sKVipMonR2w7jsYuVU0un\",\"children\":[{\"id\":\"A7s6CnAeGrzylJJ6FuE4-\",\"children\":[{\"text\":\"Chat member list\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[29,59,12],\"widthMode\":\"percentage\"},{\"id\":\"EELICFkowiwJAz5dFAEY7\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.8113\",\"type\":\"h4\"},{\"id\":\"02-pshpQ4Z9wTKOL1loYN\",\"autoWrap\":false,\"children\":[{\"id\":\"Q1gBfTupRne15Po2wt9tM\",\"children\":[{\"text\":\"public void OnEvent(ITMGContext.ITMG_MAIN_EVENT_TYPE type, Intent data) {\"}],\"type\":\"code-line\"},{\"id\":\"xwXMd5YmICbUFZoGjuWsQ\",\"children\":[{\"text\":\" if (ITMGContext.ITMG_MAIN_EVENT_TYPE.ITMG_MAIN_EVNET_TYPE_USER_UPDATE == type)\"}],\"type\":\"code-line\"},{\"id\":\"eshuhlKjWLYPJt7nx7oau\",\"children\":[{\"text\":\" {\"}],\"type\":\"code-line\"},{\"id\":\"WGtLSMvYPk2VeT299Ec1t\",\"children\":[{\"text\":\" // Update member status\"}],\"type\":\"code-line\"},{\"id\":\"070aox1fezzm-r6f7nz_x\",\"children\":[{\"text\":\" int nEventID = data.getIntExtra(\\\"event_id\\\", 0);\"}],\"type\":\"code-line\"},{\"id\":\"Pb8PtO7TWSzbBjRH3PNea\",\"children\":[{\"text\":\" String[] openIdList =data.getStringArrayExtra(\\\"user_list\\\");\"}],\"type\":\"code-line\"},{\"id\":\"g__crPjs1VK3NWlFhQOq8\",\"children\":[{\"text\":\" switch (nEventID)\"}],\"type\":\"code-line\"},{\"id\":\"swXl0SpHwrzoNpMvAofpO\",\"children\":[{\"text\":\" {\"}],\"type\":\"code-line\"},{\"id\":\"WAzMdGTh1NjrXaOvZ9au-\",\"children\":[{\"text\":\" case ITMG_EVENT_ID_USER_ENTER:\"}],\"type\":\"code-line\"},{\"id\":\"yRWPMCx9_NXt5N6_huk0b\",\"children\":[{\"text\":\" // A member enters the room\"}],\"type\":\"code-line\"},{\"id\":\"DDHs8XO9IdZjI0Q49U30-\",\"children\":[{\"text\":\" break;\"}],\"type\":\"code-line\"},{\"id\":\"fNf9ujvIOxFPWdYNoSzQk\",\"children\":[{\"text\":\" case ITMG_EVENT_ID_USER_EXIT:\"}],\"type\":\"code-line\"},{\"id\":\"RmYXebAIAB48ECYcZyCkB\",\"children\":[{\"text\":\" // A member exits the room\"}],\"type\":\"code-line\"},{\"id\":\"GscRdh47UYwTc6WIRPwmh\",\"children\":[{\"text\":\" break;\"}],\"type\":\"code-line\"},{\"id\":\"3P-Zw245GNXTodJiUhYME\",\"children\":[{\"text\":\" case ITMG_EVENT_ID_USER_HAS_AUDIO:\"}],\"type\":\"code-line\"},{\"id\":\"me8rq-uddEAX-3OzUNj1s\",\"children\":[{\"text\":\" // A member sends audio packets\"}],\"type\":\"code-line\"},{\"id\":\"SfHeCM9VRj-YJ4J-POYY4\",\"children\":[{\"text\":\" break;\"}],\"type\":\"code-line\"},{\"id\":\"iQ9sOBGqdeX9ExHWJcJ6A\",\"children\":[{\"text\":\" case ITMG_EVENT_ID_USER_NO_AUDIO:\"}],\"type\":\"code-line\"},{\"id\":\"FBjZkYdZ8qM0ns_wVAuWK\",\"children\":[{\"text\":\" // A member stops sending audio packets\"}],\"type\":\"code-line\"},{\"id\":\"vcjlTFHZVmHTFhcqtSJ5y\",\"children\":[{\"text\":\" break;\"}],\"type\":\"code-line\"},{\"id\":\"jqc9w3TgKKwGEsW2lNszl\",\"children\":[{\"text\":\" default:\"}],\"type\":\"code-line\"},{\"id\":\"RC6JHWYiIq8fSEX8MomlW\",\"children\":[{\"text\":\" break;\"}],\"type\":\"code-line\"},{\"id\":\"lbaMBC1qBUwtguixQDeep\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"0bmqB0kjFGqiwQYBtcMpM\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"czxeEV3b-H55T8t5p2beQ\",\"children\":[{\"text\":\"}\"}],\"type\":\"code-line\"}],\"language\":\"java\",\"type\":\"code-block\"},{\"id\":\"dTFMiOziFUd0HPIto4Pef\",\"children\":[{\"text\":\"Data details\"}],\"nodeId\":\"data-.E8.AF.A6.E6.83.852\",\"type\":\"h4\"},{\"id\":\"e3GdsHRdJXO_fybJrdJFO\",\"children\":[{\"id\":\"ehAubTl6E9rMV1fatiFqJ\",\"children\":[{\"id\":\"tIrHB0saI6ksbsX97fyaC\",\"children\":[{\"id\":\"c1bcguycenDvaLnZYnxf4\",\"children\":[{\"text\":\"Message\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"1cAHpjHntfuPuKGB8uc67\",\"children\":[{\"id\":\"qfezwXu7P__ENxECQf0TR\",\"children\":[{\"text\":\"Data\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"WpJilacs34wRSXcs0EP0t\",\"children\":[{\"id\":\"ea3B0cdTl4RYf0zzy1cxH\",\"children\":[{\"text\":\"Example\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"zEPnIo9BVXJ6OQyY5MJUp\",\"children\":[{\"id\":\"lOvjJbOpFsnv-oqXrZ6GO\",\"children\":[{\"id\":\"F1rDaFnubgoqh50yZGc9K\",\"children\":[{\"id\":\"ztg5TM0jkZJBUlQEc6kMj\",\"children\":[{\"text\":\"ITMG_MAIN_EVNET_TYPE_USER_UPDATE\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"E6uJaa0MMCnckYMnPg8xP\",\"children\":[{\"id\":\"MtmsLERfVLsiWviNWAt1P\",\"children\":[{\"id\":\"i5vhFm2GujNe6FuLGG35H\",\"children\":[{\"text\":\"event_id; user_list\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"u2UfYN4SSLZsUfr2eR1wB\",\"children\":[{\"id\":\"dK6Hq8aMaUOwbHuDCR5HG\",\"children\":[{\"id\":\"Ob3_wwh0_5MiD6kzRIkoN\",\"children\":[{\"text\":\"{\\\"event_id\\\":0,\\\"user_list\\\":\\\"\\\"}\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[48,22,30],\"widthMode\":\"percentage\"},{\"id\":\"a1YKehc4OP3xx8NVnKK0N\",\"children\":[{\"text\":\"Muting a member in the room\"}],\"nodeId\":\".E6.88.BF.E9.97.B4.E4.B8.AD.E7.A6.81.E8.A8.80.E6.9F.90.E6.88.90.E5.91.98\",\"type\":\"h3\"},{\"id\":\"MhvcVlHs6JQeUsggJXjjf\",\"children\":[{\"text\":\"This API is used to add an ID to the audio data blocklist. This operation blocks audio from someone and only applies to the local device without affecting other devices. The returned value \"},{\"code\":1,\"text\":\"0\"},{\"text\":\" indicates that the call is successful. Assume that users A, B, and C are all speaking using their mic in a room:\"}],\"type\":\"p\"},{\"id\":\"-DCS6u05BjlOfmYThVfdv\",\"children\":[{\"text\":\"If A blocks C, A can only hear B.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"ebxUiWNj2POfLtrk4eA05\",\"children\":[{\"text\":\"If B blocks neither A nor C, B can hear both of them.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"7ZKx9PN4QJ74ftZohbK__\",\"children\":[{\"text\":\"If C blocks neither A nor B, C can hear both of them.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"XxQ445QNLPOpB5eD_4Lgu\",\"children\":[{\"text\":\"This API is suitable for scenarios where a user is muted in a room.\"}],\"type\":\"p\"},{\"id\":\"jYVcPH_0HxAUfbpqhaH6i\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\".E6.8E.A5.E5.8F.A3.E5.8E.9F.E5.9E.8B14\",\"type\":\"h4\"},{\"id\":\"5ZKYMCW4nIC3xXAKTZrQK\",\"autoWrap\":false,\"children\":[{\"id\":\"0MjLKtfHdPhjKxvp0Kmvn\",\"children\":[{\"text\":\"public abstract int AddAudioBlackList(String openId);\"}],\"type\":\"code-line\"}],\"language\":\"java\",\"type\":\"code-block\"},{\"id\":\"K9CKiOEEvygTWhDDvinfo\",\"children\":[{\"id\":\"X4QfRYcuNbMFviiDda_BE\",\"children\":[{\"id\":\"yQ_cUBqYTtAImHfx_wvz8\",\"children\":[{\"id\":\"N663OYhrqzkLJA0QSbhpb\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"5bfUuWjuPqgDk0L7Uwl6q\",\"children\":[{\"id\":\"WsLd5bnuuyai2hHQdNLiD\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"p_4wlNwQEjy0zYxEDEJlr\",\"children\":[{\"id\":\"vaAC30dR6fkVctekQVm2L\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"YEOYBBf9Nig0UYD4dT6LD\",\"children\":[{\"id\":\"YO7fhat3F_vcX4qYVa4lr\",\"children\":[{\"id\":\"BkcjQyAeTxJewo-G6dctK\",\"children\":[{\"id\":\"sZfYkZYo8yldSAUTqR44t\",\"children\":[{\"text\":\"openId\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"i4f1MIxcF3vbW80pAZuw6\",\"children\":[{\"id\":\"_utvjd8-UC7oKtln34gZ3\",\"children\":[{\"id\":\"kTbVHniq0cxTcIbMyDR87\",\"children\":[{\"text\":\"String\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"G06Dyl-EUOPdWZlkFir7s\",\"children\":[{\"id\":\"tBZRZhn7-10NB4zhHILgY\",\"children\":[{\"id\":\"yvZmm0TtDZ6R8qJr4U-3H\",\"children\":[{\"code\":1,\"text\":\"openid\"},{\"text\":\" of the user to be blocked\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[23,16,61],\"widthMode\":\"percentage\"},{\"id\":\"mg-i52grmC7c4YEIdpm15\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.8114\",\"type\":\"h4\"},{\"id\":\"V9Z2NVq9qwqRTVQUM5ko7\",\"autoWrap\":false,\"children\":[{\"id\":\"SvscX7Zj1WE27fHpools9\",\"children\":[{\"text\":\"ITMGContext.GetInstance(this).GetAudioCtrl().AddAudioBlackList(openId);\"}],\"type\":\"code-line\"}],\"language\":\"java\",\"type\":\"code-block\"},{\"id\":\"UAHaa24PiwQxEDkXy34Jz\",\"children\":[{\"text\":\"Unmuting\"}],\"nodeId\":\".E7.A7.BB.E9.99.A4.E7.A6.81.E8.A8.80\",\"type\":\"h3\"},{\"id\":\"YXImYdq9C1UMQsRnLPlcj\",\"children\":[{\"text\":\"This API is used to remove an ID from the audio data blacklist. A returned value of 0 indicates the call is successful.\"}],\"type\":\"p\"},{\"id\":\"AOyKlooFYASK8SwZ_2C-r\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\".E6.8E.A5.E5.8F.A3.E5.8E.9F.E5.9E.8B15\",\"type\":\"h4\"},{\"id\":\"eTBjVMIKghsMt63SkjzL6\",\"autoWrap\":false,\"children\":[{\"id\":\"vUpF_v6cLlcsnFaewfi2X\",\"children\":[{\"text\":\"public abstract int RemoveAudioBlackList(String openId);\"}],\"type\":\"code-line\"}],\"language\":\"java\",\"type\":\"code-block\"},{\"id\":\"zsUCWCQ917-mje25d6Qb3\",\"children\":[{\"id\":\"txu1Xyrdk4NSvn4qVQrzY\",\"children\":[{\"id\":\"1ssUnjvZEyKqGxolSRyZU\",\"children\":[{\"id\":\"I8hxYV7ysUA5rnsJSK9g8\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"6ta7nRmchRmo60URLKBj_\",\"children\":[{\"id\":\"FQsClEoeemBRpxP31oibk\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"SHBFCfFD1RT4ApA18kJhs\",\"children\":[{\"id\":\"MUYKCvma2Np9IiA5ukXyd\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"XEQDpq-QhSY6NxQ6Od0R3\",\"children\":[{\"id\":\"Z-kCoxxOormzL41Bljl-Y\",\"children\":[{\"id\":\"WF9PTqcNaEXqJ-Rv3WWa2\",\"children\":[{\"id\":\"HLP9a17OAHe0YOzSvxMSw\",\"children\":[{\"text\":\"openId\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"JPmsq4cSemHRiFhaE5h4Q\",\"children\":[{\"id\":\"rnZGM2YovDX66QC-dkgyt\",\"children\":[{\"id\":\"QdGRdIZf4DkZA2ndC9KCL\",\"children\":[{\"text\":\"String\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"he5f1tLgP-pnjH6O22e4X\",\"children\":[{\"id\":\"wGMlacJaIAlR-FKwntfMa\",\"children\":[{\"id\":\"Cxse20ZJRs3jhKrFZYcOn\",\"children\":[{\"text\":\"User \"},{\"code\":1,\"text\":\"openid\"},{\"text\":\" to be unblocked\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[24,17,59],\"widthMode\":\"percentage\"},{\"id\":\"HKsWKIvS0mRT6orsrXXyK\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.8115\",\"type\":\"h4\"},{\"id\":\"az9GJD9GRIv91n0ULRApJ\",\"autoWrap\":false,\"children\":[{\"id\":\"-LDWi6x73lQIQyMUgNZTM\",\"children\":[{\"text\":\"ITMGContext.GetInstance(this).GetAudioCtrl().RemoveAudioBlackList(openId);\"}],\"type\":\"code-line\"}],\"language\":\"java\",\"type\":\"code-block\"},{\"id\":\"mK1qttrIquS_x6fm0-L0b\",\"children\":[{\"text\":\"Voice Chat Capturing APIs\"}],\"nodeId\":\".E5.AE.9E.E6.97.B6.E8.AF.AD.E9.9F.B3.E9.87.87.E9.9B.86.E7.9B.B8.E5.85.B3.E6.8E.A5.E5.8F.A3\",\"type\":\"h2\"},{\"id\":\"4uWDibLd72ewN-vNKf9_y\",\"children\":[{\"text\":\"The voice chat APIs can only be called after SDK initialization and room entry.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"ns6hiTaySgRDJt31clCBH\",\"children\":[{\"text\":\"When the user clicks the button of enabling/disabling the mic or speaker on the UI, we recommend that you call the \"},{\"code\":1,\"text\":\"EnableMic\"},{\"text\":\" or \"},{\"code\":1,\"text\":\"EnableSpeaker\"},{\"text\":\" API.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"V0zmvKRWm2mLIfF9Bsajz\",\"children\":[{\"text\":\"When the user enters a voice chat room, enabling/disabling a capturing device will restart both capturing and playback devices. If the application is playing back background music, it will also be interrupted. Playback won't be interrupted if the mic is enabled/disabled through control of upstreaming/downstreaming. \"},{\"b\":1,\"text\":\"Calling method: Call \"},{\"code\":1,\"text\":\"EnableAudioCaptureDevice(true)\"},{\"text\":\" and \"},{\"code\":1,\"text\":\"EnableAudioPlayDevice(true)\"},{\"text\":\" once after room entry, and call \"},{\"code\":1,\"text\":\"EnableAudioSend/Recv\"},{\"text\":\" to send/receive audio streams when Enable/Disable Mic is clicked.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"j7mZgdAykCXIWxKxfRPxc\",\"children\":[{\"id\":\"m9UJyq8nr3P7Vl4WxUwmQ\",\"children\":[{\"id\":\"yuj1GFKu7UFjrExLTd0_1\",\"children\":[{\"id\":\"K6r90bwK9jn1AGjJejWMf\",\"children\":[{\"text\":\"API\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"lljlu90vH_V4kpJW_M4bJ\",\"children\":[{\"id\":\"Mb7hqxjCFZ-keEoQFywIm\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"NvyugyF4wQkHSwCasT3Ny\",\"children\":[{\"id\":\"NiVYT9pXiZLt8VGBRTLwT\",\"children\":[{\"id\":\"CkHjMtVObGQZjdCo3kRcn\",\"children\":[{\"id\":\"-KgeM5Ogcxk91xvXw5o8i\",\"children\":[{\"text\":\"EnableMic\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"rheJQtaq6el8I9dVg3u9h\",\"children\":[{\"id\":\"SpwyWVMWbmGHyi_r_oRHi\",\"children\":[{\"id\":\"-lYn7lcexVg4oZC37vnN7\",\"children\":[{\"text\":\"Enables/Disables the mic.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"iWQL1AOUDEGSopxeb2gA8\",\"children\":[{\"id\":\"Y7Alajw1i0CcCPJeepr0I\",\"children\":[{\"id\":\"68-XUg4SSRUI1-AEhMIvP\",\"children\":[{\"id\":\"rxqV3Ho7KVS-kzj7idqwM\",\"children\":[{\"text\":\"GetMicState\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Mu14wDgHpziOsnrARpxEC\",\"children\":[{\"id\":\"Z6TwsiFLpu_ITBknC_hPB\",\"children\":[{\"id\":\"ut-JuZpn2y1YdB_WJQDEJ\",\"children\":[{\"text\":\"Gets the mic status.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"Ip8jXz7Niik0a_ZOF6C1L\",\"children\":[{\"id\":\"iVFq-LauwQnhFDBHkrPzi\",\"children\":[{\"id\":\"ab_qAqGIo2U_blzLCij1V\",\"children\":[{\"id\":\"LvN7aqDiMcb2tlpzAl8Ve\",\"children\":[{\"text\":\"EnableAudioCaptureDevice\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"9wth4Ik374agEFRNdikRp\",\"children\":[{\"id\":\"R2VeNC4N3c_MOw6iRah4e\",\"children\":[{\"id\":\"OI65GoWq-igZ7kZIRwBy5\",\"children\":[{\"text\":\"Enables/Disables the capturing device.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"hoC_jk6bTWTgufmhMgKae\",\"children\":[{\"id\":\"zgQyRCrnKkrp0x2Rqiy34\",\"children\":[{\"id\":\"6jniYWQNzUMpkkyevLB6Z\",\"children\":[{\"id\":\"eonPTFO6UFlCmVUVUHxMW\",\"children\":[{\"text\":\"IsAudioCaptureDeviceEnabled\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"bm6eK7sK7FXF-NKs9c2IP\",\"children\":[{\"id\":\"60j4P5IJ1OBs9XeT9vpnt\",\"children\":[{\"id\":\"wydOeec2kehigjcIQtvRc\",\"children\":[{\"text\":\"Gets the capturing device status.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"49nX0ohn6lNm5UQd8U44r\",\"children\":[{\"id\":\"3vKOi26Y9GTteYHfB7fas\",\"children\":[{\"id\":\"pLS0Elus3APpZnl9FR6Sf\",\"children\":[{\"id\":\"9f3Pd1BA5-y2mqphppPia\",\"children\":[{\"text\":\"EnableAudioSend\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Nz_fFWcnnXwlDrD5g8S-S\",\"children\":[{\"id\":\"nTHuivfsGM9wMfsLYGnUl\",\"children\":[{\"id\":\"Wv4pkntcGgLXcIcHcfs-d\",\"children\":[{\"text\":\"Enables/Disables audio upstreaming.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"VpBA5Gr32zbKdKPeEHZMj\",\"children\":[{\"id\":\"M8JKU7dKYhv8qsJ53On49\",\"children\":[{\"id\":\"sIwZfyN1BpKjLNdzthiqJ\",\"children\":[{\"id\":\"E5UXrPFRmciwJxWWnxIFI\",\"children\":[{\"text\":\"IsAudioSendEnabled\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Cha8fzuDoF1yUeGMBPp7O\",\"children\":[{\"id\":\"XcJZuJlaevo3oGhczUAjw\",\"children\":[{\"id\":\"Ym4oEfgCAWfV8zJeHdS9R\",\"children\":[{\"text\":\"Gets the audio upstreaming status.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"lLo_otZr-XqMF-QvBUr6V\",\"children\":[{\"id\":\"cdYGTVTYxxuReasesoohN\",\"children\":[{\"id\":\"VlGEqrgnjYtk3Az48KkMh\",\"children\":[{\"id\":\"KKZXx77UG4fqrg40SjF40\",\"children\":[{\"text\":\"GetMicLevel\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"jW4dpDtwecLCjRMNQGUfJ\",\"children\":[{\"id\":\"GyfP2qHEJ5nDxUpvGyaDs\",\"children\":[{\"id\":\"epIorV5siqcjbyRpuCdNG\",\"children\":[{\"text\":\"Gets the real-time mic volume level.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"HThK9LPdTC0eO-QV_-9by\",\"children\":[{\"id\":\"5Sb89PuEv8Zt8Fsvtfj-x\",\"children\":[{\"id\":\"UFHHXcJrvzDM-EzQm-pC1\",\"children\":[{\"id\":\"LsWpu6UKAwajD2imHkanh\",\"children\":[{\"text\":\"GetSendStreamLevel\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"j1eYjS193ES9FiiCNDsY4\",\"children\":[{\"id\":\"NC3O4P73cisD-xa0J8k8s\",\"children\":[{\"id\":\"rf4L1yoEDyQuapeYmTUXo\",\"children\":[{\"text\":\"Gets the real-time audio upstreaming volume level.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"xYw2Sinha_Ox67unnXW0R\",\"children\":[{\"id\":\"eoz1BM4613HoCHHFmadO7\",\"children\":[{\"id\":\"2_1C6rwnp2RTAi-LvKkyT\",\"children\":[{\"id\":\"ApslFmPHUXPH4mN7XFuSu\",\"children\":[{\"text\":\"SetMicVolume\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"z6YUqkcBzqgUUkb6keWCJ\",\"children\":[{\"id\":\"LXS-L_DbB8MtSuf0yqkpI\",\"children\":[{\"id\":\"Fts4RDXlqA5bMxjQS1yWY\",\"children\":[{\"text\":\"Sets the mic volume level.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"klfzkdu6zdKeCU7zfpy8J\",\"children\":[{\"id\":\"RZpHUfFsdBJi2LB2BiUAH\",\"children\":[{\"id\":\"umzQ41YT49i8JE1bO0Qxd\",\"children\":[{\"id\":\"5YcUc58zilCthlvBLJWc_\",\"children\":[{\"text\":\"GetMicVolume\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"7R8JcktsPsYgYmHREv2SL\",\"children\":[{\"id\":\"13s2KKgjN9vfTD1x6CU27\",\"children\":[{\"text\":\"Gets the mic volume level.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[39,61],\"widthMode\":\"percentage\"},{\"id\":\"oYgFh7kJzfNdG8k4NjXxr\",\"children\":[{\"text\":\"Enabling or disabling mic\"}],\"nodeId\":\".E5.BC.80.E5.90.AF.E6.88.96.E5.85.B3.E9.97.AD.E9.BA.A6.E5.85.8B.E9.A3.8E\",\"type\":\"h3\"},{\"id\":\"SMEuphDXwBQYfd19jYndw\",\"children\":[{\"text\":\"This API is used to enable/disable the mic. The mic and speaker are not enabled by default after room entry. \"},{\"code\":1,\"text\":\"EnableMic\"},{\"text\":\" is equivalent to using \"},{\"code\":1,\"text\":\"EnableAudioCaptureDevice\"},{\"text\":\" and \"},{\"code\":1,\"text\":\"EnableAudioSend\"},{\"text\":\" together.\"},{\"text\":\" \"},{\"b\":1,\"text\":\"If accompaniment is used, call this API as instructed in \"},{\"id\":\"czuzzE9OGaEIkCLeaVJYd\",\"children\":[{\"text\":\"Accompaniment in Voice Chat\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://www.tencentcloud.com/document/product/607/31504\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/31504\"},\"type\":\"ref\"},{\"text\":\".\"}],\"nodeId\":\"EnableMic\",\"type\":\"p\"},{\"id\":\"mRt0k99hqohj2EcJAsBy6\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\".E6.8E.A5.E5.8F.A3.E5.8E.9F.E5.9E.8B16\",\"type\":\"h4\"},{\"id\":\"p2c8cGCoImJsJrvr8Fks5\",\"autoWrap\":false,\"children\":[{\"id\":\"38_DqYAns2YVdhFnrbYIZ\",\"children\":[{\"text\":\"public abstract int EnableMic(boolean isEnabled);\"}],\"type\":\"code-line\"}],\"language\":\"java\",\"type\":\"code-block\"},{\"id\":\"1DSvwYCYEn4szF6sHaikH\",\"children\":[{\"id\":\"DSor33LJHjXPm5ykPhRQ4\",\"children\":[{\"id\":\"rycB41Y36EPE5Pd6EnTim\",\"children\":[{\"id\":\"X_BqepJs6jCVIhIgK1qXs\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"JRlV5GJNUzjcBlnSDv8Bq\",\"children\":[{\"id\":\"4kVDSTUXTR81WPUaIqYKj\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"9xO_h_xVwh0d8ewPnfnmj\",\"children\":[{\"id\":\"vCC4afgMJHXHjP2nfnQ6H\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"a3cBiZO2sxG6PvQaax8nH\",\"children\":[{\"id\":\"RQ44QeZnSmUdjPOv4nMU_\",\"children\":[{\"id\":\"1MyNi8Gr5pxRxG-Y9Cu39\",\"children\":[{\"id\":\"5iuLnjtQgK6uz3K_2cNte\",\"children\":[{\"text\":\"isEnabled\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"5HZ-qmwQqZ_2XKoGfTYW2\",\"children\":[{\"id\":\"tzSob5vRspXp1JQ9yXj-L\",\"children\":[{\"id\":\"UdnKLhNfE-vvyPVtOXkFL\",\"children\":[{\"text\":\"boolean\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"6yGO57-8jKD0Cqbt0pHtR\",\"children\":[{\"id\":\"SgtdIDCK72pip_f9BowJF\",\"children\":[{\"id\":\"yEgihCv6LV8EDXbNyU9V2\",\"children\":[{\"text\":\"To enable the mic, set this parameter to \"},{\"code\":1,\"text\":\"true\"},{\"text\":\"; otherwise, set it to \"},{\"code\":1,\"text\":\"false\"},{\"text\":\".\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[14,12,74],\"widthMode\":\"percentage\"},{\"id\":\"NQByFOVy4ExyIbftqJ9Hs\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.8116\",\"type\":\"h4\"},{\"id\":\"TAXNgu5vwQ9EEv1PCStmb\",\"autoWrap\":false,\"children\":[{\"id\":\"A1VL_w0gVacPVCFClG8xr\",\"children\":[{\"text\":\"// Turn on mic\"}],\"type\":\"code-line\"},{\"id\":\"Syp5MUN7QdSJFywM7C7sc\",\"children\":[{\"text\":\"ITMGContext.GetInstance(this).GetAudioCtrl().EnableMic(true);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"3DA3mh674FT7T2trFYCN3\",\"children\":[{\"text\":\"Getting the mic status\"}],\"nodeId\":\".E9.BA.A6.E5.85.8B.E9.A3.8E.E7.8A.B6.E6.80.81.E8.8E.B7.E5.8F.96\",\"type\":\"h3\"},{\"id\":\"f5JLloFShqu1AQbhUVwDP\",\"children\":[{\"text\":\"This API is used to get the mic status. The returned value 0 indicates that the mic is off, while 1 is on.\"}],\"type\":\"p\"},{\"id\":\"rp4GmfNmK17d5o9dxB6CM\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\".E6.8E.A5.E5.8F.A3.E5.8E.9F.E5.9E.8B17\",\"type\":\"h4\"},{\"id\":\"VI5tOi1phv0bPMG4MJxOM\",\"autoWrap\":false,\"children\":[{\"id\":\"kC6hCtPwk9UunBoqAIzRs\",\"children\":[{\"text\":\"public abstract int GetMicState();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"aEUfkN_OG-VQrS4KvdX4-\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.8117\",\"type\":\"h4\"},{\"id\":\"hfVD42aFYkz1rbB2bXq6v\",\"autoWrap\":false,\"children\":[{\"id\":\"72xyyYmhMRcq7GLinNqtM\",\"children\":[{\"text\":\"int micState = ITMGContext.GetInstance(this).GetAudioCtrl().GetMicState();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"6-yrwnkkCDrBFa_aSj2EJ\",\"children\":[{\"text\":\"Enabling or disabling capturing device\"}],\"nodeId\":\".E5.BC.80.E5.90.AF.E6.88.96.E5.85.B3.E9.97.AD.E9.87.87.E9.9B.86.E8.AE.BE.E5.A4.87\",\"type\":\"h3\"},{\"id\":\"_bWh88F9xGe-fm78OJXCm\",\"children\":[{\"text\":\"This API is used to enable/disable a capturing device. The device is not enabled by default after room entry.\"}],\"type\":\"p\"},{\"id\":\"RLQoGxwbE5mLdsRwL46uB\",\"children\":[{\"text\":\"This API can only be called after room entry. The device will be disabled automatically after room exit.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"qLUd51gHB_OCVnc-LZUcY\",\"children\":[{\"text\":\"Operations such as permission application and volume type adjustment will generally be performed when a capturing device is enabled on a mobile device.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"7ARCkN-QkonK75IqMHMnb\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\".E6.8E.A5.E5.8F.A3.E5.8E.9F.E5.9E.8B18\",\"type\":\"h4\"},{\"id\":\"IQOnl-cNXrUcDgE8wiyn6\",\"autoWrap\":false,\"children\":[{\"id\":\"Uhn_6I6q7A5VdXtDdbaFC\",\"children\":[{\"text\":\"public abstract int EnableAudioCaptureDevice(boolean isEnabled);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"v4HjmvbKN51k-TJazZh5q\",\"children\":[{\"id\":\"qBMk3LLdpGavKUxH3O581\",\"children\":[{\"id\":\"Yh9lx5T5vNcs2P58Db4yN\",\"children\":[{\"id\":\"MhwoPHNJmgghBzyXiEYPN\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"eU2caksvYlx05JtvPy23x\",\"children\":[{\"id\":\"Zufv15xd4b49fAnXYRXIV\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"79KG0UsWyvHFnRA0wToTY\",\"children\":[{\"id\":\"vjHOFIO2Lc-uy46uShc9x\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"bgRynE9mqCDbtVG8mlWFv\",\"children\":[{\"id\":\"tOv0PcN0HfXF_m0s6He8i\",\"children\":[{\"id\":\"2NfM8C2A7j9zO8J7Ok2X1\",\"children\":[{\"id\":\"Wqwfy4DA4TRevEbUvCum1\",\"children\":[{\"text\":\"isEnabled\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"xO5F4T7o8WXHOYXS2rmBp\",\"children\":[{\"id\":\"KN_3__XRVrfWsoDiEWAS4\",\"children\":[{\"id\":\"3ZJjUyyYcAW3nh3TGumqz\",\"children\":[{\"text\":\"boolean\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"_IyNF7eCn8xM-ImYnhDfA\",\"children\":[{\"id\":\"vohTDeg9HqelGkzGmvkFx\",\"children\":[{\"id\":\"40twsW0TM05zPPfDdwslZ\",\"children\":[{\"text\":\"To enable the capturing device, set this parameter to \"},{\"code\":1,\"text\":\"true\"},{\"text\":\", otherwise, set it to \"},{\"code\":1,\"text\":\"false\"},{\"text\":\".\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[12,10,78],\"widthMode\":\"percentage\"},{\"id\":\"Zdf7Gja-Ax6rVBvghphrZ\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.8118\",\"type\":\"h4\"},{\"id\":\"p1_DAkz-1nhX--m13bdbJ\",\"autoWrap\":false,\"children\":[{\"id\":\"cGy9W2WKTTmm5sRbgAaf4\",\"children\":[{\"text\":\"// Enable capturing device\"}],\"type\":\"code-line\"},{\"id\":\"5a3G5YHMpwC74TW_hWm8V\",\"children\":[{\"text\":\"ITMGContext.GetInstance(this).GetAudioCtrl().EnableAudioCaptureDevice(true);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"9uZtH4QudpmiyHqMgDrIE\",\"children\":[{\"text\":\"Getting the capturing device status\"}],\"nodeId\":\".E9.87.87.E9.9B.86.E8.AE.BE.E5.A4.87.E7.8A.B6.E6.80.81.E8.8E.B7.E5.8F.96\",\"type\":\"h3\"},{\"id\":\"9felOkACXn8QWN9tsXVYI\",\"children\":[{\"text\":\"This API is used to get the status of a capturing device.\"}],\"type\":\"p\"},{\"id\":\"T7sLZ3um-3nDMs-oJbve8\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\".E6.8E.A5.E5.8F.A3.E5.8E.9F.E5.9E.8B19\",\"type\":\"h4\"},{\"id\":\"Prgowk0E3aPyEfhCkfxKX\",\"autoWrap\":false,\"children\":[{\"id\":\"Ox8L-Z4XhLoDjJQEvAKuM\",\"children\":[{\"text\":\"public abstract boolean IsAudioCaptureDeviceEnabled();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"rFBucvk8FMuKZN1k52s3r\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.8119\",\"type\":\"h4\"},{\"id\":\"B6cGjO6QxHBZZUJ7S0DqF\",\"autoWrap\":false,\"children\":[{\"id\":\"osbhAc55v9Y4rJoVUvNRU\",\"children\":[{\"text\":\"bool IsAudioCaptureDevice = ITMGContext.GetInstance(this).GetAudioCtrl().IsAudioCaptureDeviceEnabled();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"_VyIEcuASFLdpsb-Bv5Lw\",\"children\":[{\"text\":\"Enabling or disabling audio upstreaming\"}],\"nodeId\":\".E6.89.93.E5.BC.80.E6.88.96.E5.85.B3.E9.97.AD.E9.9F.B3.E9.A2.91.E4.B8.8A.E8.A1.8C\",\"type\":\"h3\"},{\"id\":\"1GEMbeb2-GJjFu80u5JAM\",\"children\":[{\"text\":\"This API is used to enable/disable audio upstreaming. If a capturing device is already enabled, it will send captured audio data; otherwise, it will remain mute. For more information on how to enable/disable the capturing device, see the \"},{\"code\":1,\"text\":\"EnableAudioCaptureDevice\"},{\"text\":\" API.\"}],\"type\":\"p\"},{\"id\":\"g_KBcBUEawbMmJ5jllyKC\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\".E6.8E.A5.E5.8F.A3.E5.8E.9F.E5.9E.8B20\",\"type\":\"h4\"},{\"id\":\"dUj3jZP-BoeShLPkX0D2r\",\"autoWrap\":false,\"children\":[{\"id\":\"4izcXzztYdBaLR9klTk9w\",\"children\":[{\"text\":\"public abstract int EnableAudioSend(boolean isEnabled);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"9BHQCSn097xsfWugw3659\",\"children\":[{\"id\":\"Wtd2rWU500ac3qwyJHuHG\",\"children\":[{\"id\":\"8Az_iJY78BxOf1Y5sxra8\",\"children\":[{\"id\":\"05rdhBV-LSmR3a0h56Z1I\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"YGjGS45jeDPc3ThPcxHCX\",\"children\":[{\"id\":\"VgG_wREGQpf_O1RIs3NaH\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"XA8xJmYpC4HP-tpobr6vl\",\"children\":[{\"id\":\"zWgWuCbT1k9gy-jWz8u1Y\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"bRJP8x68SuVjVN58M-rNj\",\"children\":[{\"id\":\"i4T89xRA0yuqxSdqPt7By\",\"children\":[{\"id\":\"oohZTFfVgMgvIfEBX2MDJ\",\"children\":[{\"id\":\"AO5lDFHJirXMPs7MljXkO\",\"children\":[{\"text\":\"isEnabled\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"5sVtsm5ToHiKv3RnkDCP7\",\"children\":[{\"id\":\"7SPm4L5ErwcXJvvDKyNFf\",\"children\":[{\"id\":\"uxrpvS0oqIeAAQFS4tJ7R\",\"children\":[{\"text\":\"boolean\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Mt2GT32weyJ-sAyAJYJTH\",\"children\":[{\"id\":\"HhNUoGO7d8pwoa4jkKozG\",\"children\":[{\"id\":\"A_5Egp12tJM0eRU3qV5Sd\",\"children\":[{\"text\":\"To enable audio upstreaming, set this parameter to \"},{\"code\":1,\"text\":\"true\"},{\"text\":\"; otherwise, set it to \"},{\"code\":1,\"text\":\"false\"},{\"text\":\".\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[12,10,78],\"widthMode\":\"percentage\"},{\"id\":\"sm9PtimWyylJWN3vaM9Jg\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.8120\",\"type\":\"h4\"},{\"id\":\"YAm8u46D49zitqk5qsmNC\",\"autoWrap\":false,\"children\":[{\"id\":\"BXLV_woIDptV3BxWdEb3m\",\"children\":[{\"text\":\"ITMGContext.GetInstance(this).GetAudioCtrl().EnableAudioSend(true);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"8elqZ2U-KFVSYLysU1s_m\",\"children\":[{\"text\":\"Getting audio upstreaming status\"}],\"nodeId\":\".E9.9F.B3.E9.A2.91.E4.B8.8A.E8.A1.8C.E7.8A.B6.E6.80.81.E8.8E.B7.E5.8F.96\",\"type\":\"h3\"},{\"id\":\"9_GD0LDaKnfjreDJhOZiu\",\"children\":[{\"text\":\"This API is used to get the status of audio upstreaming.\"}],\"type\":\"p\"},{\"id\":\"f1irzDf6PlWF6BbNcxVIK\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\".E6.8E.A5.E5.8F.A3.E5.8E.9F.E5.9E.8B21\",\"type\":\"h4\"},{\"id\":\"pL4eisY2dD0pp9f-r6PVR\",\"autoWrap\":false,\"children\":[{\"id\":\"sDw680CEBBfdT5Nwvuk_G\",\"children\":[{\"text\":\"public abstract boolean IsAudioSendEnabled();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"Z3tsfmCc_GLKUn7hkbM91\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.8121\",\"type\":\"h4\"},{\"id\":\"g991jljWKPNFMEhFeQQb3\",\"autoWrap\":false,\"children\":[{\"id\":\"qLhlkZjlBdfnO9V0U9PDd\",\"children\":[{\"text\":\"bool IsAudioSend = ITMGContext.GetInstance(this).GetAudioCtrl().IsAudioSendEnabled();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"B1aRni5rhtJ7x-92lkHCb\",\"children\":[{\"text\":\"Getting the real-time mic volume\"}],\"nodeId\":\".E8.8E.B7.E5.8F.96.E9.BA.A6.E5.85.8B.E9.A3.8E.E5.AE.9E.E6.97.B6.E9.9F.B3.E9.87.8F\",\"type\":\"h3\"},{\"id\":\"Ofy3IErS72TKuF6RJDPwa\",\"children\":[{\"text\":\"This API is used to get the real-time mic volume. An int-type value in the range of 0-100 will be returned. It is recommended to call this API once every 20 ms.\"}],\"type\":\"p\"},{\"id\":\"FtBD8uar5iREInJe_kIMd\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\".E6.8E.A5.E5.8F.A3.E5.8E.9F.E5.9E.8B22\",\"type\":\"h4\"},{\"id\":\"yTKgqwSxI3Nup7sx1vCHk\",\"autoWrap\":false,\"children\":[{\"id\":\"tyKGi68kX22gbDmJ1sS2-\",\"children\":[{\"text\":\"public abstract int GetMicLevel();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"gkd-UlOVesvz4RTV1nGmO\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.8122\",\"type\":\"h4\"},{\"id\":\"ybjneMt6aoUNbQicAltzn\",\"autoWrap\":false,\"children\":[{\"id\":\"sCUnvY-72XQW88eNPWZjf\",\"children\":[{\"text\":\"int micLevel = ITMGContext.GetInstance(this).GetAudioCtrl().GetMicLevel();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"AVUHkIR7q2a_gyrBZ3kG8\",\"children\":[{\"text\":\"Getting the real-time audio upstreaming volume\"}],\"nodeId\":\".E8.8E.B7.E5.8F.96.E9.9F.B3.E9.A2.91.E4.B8.8A.E8.A1.8C.E5.AE.9E.E6.97.B6.E9.9F.B3.E9.87.8F\",\"type\":\"h3\"},{\"id\":\"bUIctkYb9f509kQ8yXsg_\",\"children\":[{\"text\":\"This API is used to get the local real-time audio upstreaming volume. An int-type value in the range of 0-100 will be returned.\"}],\"type\":\"p\"},{\"id\":\"oTOcsouIyimdsl1I4WE62\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\".E6.8E.A5.E5.8F.A3.E5.8E.9F.E5.9E.8B23\",\"type\":\"h4\"},{\"id\":\"OS3eT4bB0aEjxGz2kj6zz\",\"autoWrap\":false,\"children\":[{\"id\":\"xfwNNMhNqI0RYR5_W1zl0\",\"children\":[{\"text\":\"ITMGContext TMGAudioCtrl int GetSendStreamLevel()\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"fryq9Iob147tN251p-IF7\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.8123\",\"type\":\"h4\"},{\"id\":\"C6oO4vbYKP4d5OPAqp2EN\",\"autoWrap\":false,\"children\":[{\"id\":\"2UvKYQikosakfBoWfcoUt\",\"children\":[{\"text\":\"int Level = ITMGContext.GetInstance(this).GetAudioCtrl().GetSendStreamLevel();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"XsUROPdRL3dL1dExkRzZ9\",\"children\":[{\"text\":\"Setting the mic software volume\"}],\"nodeId\":\".E8.AE.BE.E7.BD.AE.E9.BA.A6.E5.85.8B.E9.A3.8E.E8.BD.AF.E4.BB.B6.E9.9F.B3.E9.87.8F\",\"type\":\"h3\"},{\"id\":\"EtQz23QF7hnLM_mTcpuDG\",\"children\":[{\"text\":\"This API is used to set the mic volume level. The corresponding parameter is \"},{\"code\":1,\"text\":\"volume\"},{\"text\":\", which is equivalent to attenuating or gaining the captured sound.\"}],\"type\":\"p\"},{\"id\":\"8DaiuDbXKRpCyenr_lQdf\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\".E6.8E.A5.E5.8F.A3.E5.8E.9F.E5.9E.8B24\",\"type\":\"h4\"},{\"id\":\"zrmaKyDDSSi1e6DFO5Gco\",\"autoWrap\":false,\"children\":[{\"id\":\"QVvL_Q8jwfTSs37t630h7\",\"children\":[{\"text\":\"public abstract int SetMicVolume(int volume);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"rsSGRCZbABfbcALpk45DM\",\"children\":[{\"id\":\"q3XAXgGv8-SVRXJDNQdt-\",\"children\":[{\"id\":\"DtanuS5dXdePe5cwMC8nm\",\"children\":[{\"id\":\"tfsAX4Kzek8D9kTnqm34o\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"haOQovfXuhsp4F2q8i0kf\",\"children\":[{\"id\":\"AdWHlqt2vdp_FtwFcTCPq\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"7Qnmi3eQGT-xQSYca1IXq\",\"children\":[{\"id\":\"CKvskEVbvPIFlcaoRrzpf\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"sEep8tNsNjMMqae4PcDnz\",\"children\":[{\"id\":\"FOO5lQ4335ri0Z0dpkza6\",\"children\":[{\"id\":\"dyYuPZvTfjQtXdm5blAxQ\",\"children\":[{\"id\":\"l-smrU-EBY_w-qOfjovwi\",\"children\":[{\"text\":\"volume\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"TodlHFirZemj3SL1goFNx\",\"children\":[{\"id\":\"3CLyllT32HfwCnhkjNbsk\",\"children\":[{\"id\":\"v4_X-QPteBmI_rNO3Zooz\",\"children\":[{\"text\":\"int\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"w6xSCpR6dAXsfsjV5uGfo\",\"children\":[{\"id\":\"d8Lg6fotFT4ynaIfz5ngw\",\"children\":[{\"id\":\"F0j3wkBqRSdaTm1bUleYk\",\"children\":[{\"text\":\"Value range: 0-200. Default value: \"},{\"code\":1,\"text\":\"100\"},{\"text\":\". \"},{\"code\":1,\"text\":\"0\"},{\"text\":\" indicates that the audio is muted, while \"},{\"code\":1,\"text\":\"100\"},{\"text\":\" indicates that the volume level remains unchanged.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[13,11,76],\"widthMode\":\"percentage\"},{\"id\":\"9i15fSABHgpN4olaW7o0s\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.8124\",\"type\":\"h4\"},{\"id\":\"p4VNq_KOMRJ3FqAlcYE8U\",\"autoWrap\":false,\"children\":[{\"id\":\"lxx_AdFVhvsWcnJFi3eHJ\",\"children\":[{\"text\":\"ITMGContext.GetInstance(this).GetAudioCtrl().SetMicVolume(volume);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"_J-LZ12YS0q4LqbPAzkPe\",\"children\":[{\"text\":\"Getting the mic software volume\"}],\"nodeId\":\".E8.8E.B7.E5.8F.96.E9.BA.A6.E5.85.8B.E9.A3.8E.E8.BD.AF.E4.BB.B6.E9.9F.B3.E9.87.8F\",\"type\":\"h3\"},{\"id\":\"wL69b_TmkpwsFEwsj06Os\",\"children\":[{\"text\":\"This API is used to obtain the microphone volume. An \\\"int\\\" value is returned. Value 101 represents API SetMicVolume has not been called.\"}],\"type\":\"p\"},{\"id\":\"0HKRG95wa-jabADysrV7f\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\".E6.8E.A5.E5.8F.A3.E5.8E.9F.E5.9E.8B25\",\"type\":\"h4\"},{\"id\":\"hswHwPyOuBt0fBM1TOD3P\",\"autoWrap\":false,\"children\":[{\"id\":\"zzWC15P3eghHmL37NJcbX\",\"children\":[{\"text\":\"public abstract int GetMicVolume();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"JJoulZb4dgn6YMyz7asnw\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.8125\",\"type\":\"h4\"},{\"id\":\"Ln9Gm3tOnotLaCgJGlOpp\",\"autoWrap\":false,\"children\":[{\"id\":\"nvVgBZhdM1kwq_HovvFC1\",\"children\":[{\"text\":\"ITMGContext.GetInstance(this).GetAudioCtrl().GetMicVolume();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"erk17e1gF_N85KkUvQpIF\",\"children\":[{\"text\":\"Voice Chat Playback APIs\"}],\"nodeId\":\".E5.AE.9E.E6.97.B6.E8.AF.AD.E9.9F.B3.E6.92.AD.E6.94.BE.E7.9B.B8.E5.85.B3.E6.8E.A5.E5.8F.A3\",\"type\":\"h2\"},{\"id\":\"NxxgS2Ubq7TYs3ebr7sG_\",\"children\":[{\"id\":\"CyOnLc1-6zHlMDliyECYO\",\"children\":[{\"id\":\"5brlDUNQ0Vsnl6KmzyJnP\",\"children\":[{\"id\":\"cHsHLEADFoxuMoN8FTd8e\",\"children\":[{\"text\":\"API\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"T23HWny10BBaimM-cv606\",\"children\":[{\"id\":\"mP-AQK1A_qDBuQgeciCqc\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"NBvb_dkKwAV44Lb8CZ9O1\",\"children\":[{\"id\":\"uHmJXAubGAXz-8CrpnzCH\",\"children\":[{\"id\":\"FNjiec9nPG5ok9JAQcJHa\",\"children\":[{\"id\":\"_9acBEN8B690K3Wx2MD3k\",\"children\":[{\"text\":\"EnableSpeaker\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"hbwgr3My7uPsMHYh_F-dz\",\"children\":[{\"id\":\"UD66C59s_hvnHz25zrhps\",\"children\":[{\"id\":\"6C_mP73BruoUcVfjV8plV\",\"children\":[{\"text\":\"Enables/Disables the speaker.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"LfetV6rUUgDFaRrLrM9Mb\",\"children\":[{\"id\":\"CLsFe7ztsDZAh_hdS23T5\",\"children\":[{\"id\":\"3xLT2W1K2yXNMjDfKOeUd\",\"children\":[{\"id\":\"4zxZyhxUR8dpYAQPZIB20\",\"children\":[{\"text\":\"GetSpeakerState\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"nQ_M5EK4H_bgOyh78o3zw\",\"children\":[{\"id\":\"u7OByVekxnvZomKkwlLdg\",\"children\":[{\"id\":\"kP4vOC_GJggvUNC_MCdXf\",\"children\":[{\"text\":\"Gets the speaker status.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"H9sx_tM--bgzsljkdxKQc\",\"children\":[{\"id\":\"8cQH8WpHi8Omj3SXozDqD\",\"children\":[{\"id\":\"YkD3xuDcED4uyinE5NBi-\",\"children\":[{\"id\":\"l5uuEFlTjme1eSsiOM_vB\",\"children\":[{\"text\":\"EnableAudioPlayDevice\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"WamCFXXAenS--AuQs3TM9\",\"children\":[{\"id\":\"c1b9xrHIdMyZ4TnSIDL45\",\"children\":[{\"id\":\"NVRclSMo_SBwshOPkdKZ0\",\"children\":[{\"text\":\"Enables/Disables the playback device.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"St2SsC1u5dtjU0pHf1OwU\",\"children\":[{\"id\":\"9BTmr3euOmfPLtRFdBgwp\",\"children\":[{\"id\":\"g6WqSWBBbcHd0WClO5cnh\",\"children\":[{\"id\":\"SfR1nGrZPxD5STdanHdtb\",\"children\":[{\"text\":\"IsAudioPlayDeviceEnabled\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Aijb73QWCoNvhTkYQTyS9\",\"children\":[{\"id\":\"rPOcJuG5sEZSahbSygbvS\",\"children\":[{\"id\":\"cMTy69kq9FkIFZw2UEM3k\",\"children\":[{\"text\":\"Gets the playback device status.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"5iha8QDbFXmpJEf7ZcU7a\",\"children\":[{\"id\":\"0kWAw-1bSX4Kxxnxi4CWJ\",\"children\":[{\"id\":\"HaX3uSjtRDYB6LSn8cfBh\",\"children\":[{\"id\":\"Djb08nplMLRwq6IFCtANG\",\"children\":[{\"text\":\"EnableAudioRecv\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"GKrrllTI6x3vN_Bnsx9gA\",\"children\":[{\"id\":\"1yj-PesvwGWqkfW5IqrfC\",\"children\":[{\"id\":\"tPy-Z0sMaVTQVmRIlqYpf\",\"children\":[{\"text\":\"Enables/Disables audio downstreaming.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"OYBkrlciU-NXf_6Cva89q\",\"children\":[{\"id\":\"W1nFGQ-vdNF-uEk0f5LGk\",\"children\":[{\"id\":\"JmGH4v9uTa4M2KFsxZgr1\",\"children\":[{\"id\":\"6sIXdz0vQpHIPxjXcquVZ\",\"children\":[{\"text\":\"IsAudioRecvEnabled\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"VYnsWISa7XdAhag-b4PUr\",\"children\":[{\"id\":\"yNyhZe9mqxnclg681_VLr\",\"children\":[{\"id\":\"21ONepYOzNlsnfLVg0F7_\",\"children\":[{\"text\":\"Gets the audio downstreaming status.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"pNjiydp9o3rHMQnQ4XhK3\",\"children\":[{\"id\":\"NPoFk6X8MDFnp3ynjpC1z\",\"children\":[{\"id\":\"V4vNjtwOdnph8epJGenP8\",\"children\":[{\"id\":\"8QDTjC2b4q94NVhD2Smfv\",\"children\":[{\"text\":\"GetSpeakerLevel\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"raPRC52Y6jhJK7_1psvCZ\",\"children\":[{\"id\":\"gm7AYQ8MnYAEi7qrkj4pY\",\"children\":[{\"id\":\"Vn29DYjyvxqVDmggatWS_\",\"children\":[{\"text\":\"Gets the real-time speaker volume level.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"GzGI1k5MauZXncxPzPs-_\",\"children\":[{\"id\":\"zzCRpEb1F8EneZQM8FYyX\",\"children\":[{\"id\":\"B0ubtIkZ63JeP9t_pNHRa\",\"children\":[{\"id\":\"HsAboSORK9AeNmk_dcdKU\",\"children\":[{\"text\":\"GetRecvStreamLevel\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"1eaSe_l9lz3aWcW3K2_qd\",\"children\":[{\"id\":\"5mP15lBNRDA3nKXNRFx2F\",\"children\":[{\"id\":\"EXblgrK5Mq76xxsT65wLH\",\"children\":[{\"text\":\"Gets the real-time downstreaming audio levels of other members in the room.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"zOIzpIFJbhySj9BGMD881\",\"children\":[{\"id\":\"lQj89qb_8G0d8ODSvREju\",\"children\":[{\"id\":\"9yRVM_-EFznJr6DmJ8to8\",\"children\":[{\"id\":\"OgfUcWHlD0yPxkEBjNCkn\",\"children\":[{\"text\":\"SetSpeakerVolume\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ER-XzaSfwgpOY66MkIuQy\",\"children\":[{\"id\":\"_1Dz1ozVwmRYHUKRCQs09\",\"children\":[{\"id\":\"ixdhJ_34M5SpFZAZvvFWF\",\"children\":[{\"text\":\"Sets the speaker volume level.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"kvPunjSSUl8olf5YZZbDf\",\"children\":[{\"id\":\"VSd0cWadSsmYkL3zq7Bnc\",\"children\":[{\"id\":\"TrUEoWiYqssqS2eAEGNiu\",\"children\":[{\"id\":\"eXq7ORcKbKDelTDVA9gE4\",\"children\":[{\"text\":\"GetSpeakerVolume\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"_KNW1VIOXN2C71jT5JI3P\",\"children\":[{\"id\":\"ERtU1a6uN4IJbsQuNI6z1\",\"children\":[{\"id\":\"jRJS3f-cbW44GnSHgRBPt\",\"children\":[{\"text\":\"Gets the speaker volume level.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[28,72],\"widthMode\":\"percentage\"},{\"id\":\"rkdX-rYTR5tmM0z8SjLvg\",\"children\":[{\"id\":\"_oI_hDJ5rVP6R28A3ih0y\",\"children\":[{\"text\":\"Enabling or disabling speaker\"}],\"nodeId\":\"EnableSpeaker\",\"type\":\"p\"}],\"nodeId\":\".3Ca-id.3D.22enablespeaker.22.3E.E5.BC.80.E5.90.AF.E6.88.96.E5.85.B3.E9.97.AD.E6.89.AC.E5.A3.B0.E5.99.A8.3C.2Fa.3E\",\"type\":\"h3\"},{\"id\":\"8MZp75-ZcNdGyctCCROjk\",\"children\":[{\"text\":\"This API is used to enable/disable the speaker. \"},{\"code\":1,\"text\":\"EnableSpeaker\"},{\"text\":\" is equivalent to using \"},{\"code\":1,\"text\":\"EnableAudioPlayDevice\"},{\"text\":\" and \"},{\"code\":1,\"text\":\"EnableAudioRecv\"},{\"text\":\" together.\"},{\"text\":\" \"},{\"b\":1,\"text\":\"If accompaniment is used, call this API as instructed in \"},{\"id\":\"jkcgSURxM8zW4n6hykgKY\",\"children\":[{\"text\":\"Accompaniment in Voice Chat\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://www.tencentcloud.com/document/product/607/31504\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/31504\"},\"type\":\"ref\"},{\"text\":\".\"}],\"type\":\"p\"},{\"id\":\"cOunxY_5_YNy-mA91QLje\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\".E6.8E.A5.E5.8F.A3.E5.8E.9F.E5.9E.8B26\",\"type\":\"h4\"},{\"id\":\"f9xPJhZHIEHdc0FwMU72W\",\"autoWrap\":false,\"children\":[{\"id\":\"1822jKXOiJCY3evAEs-A_\",\"children\":[{\"text\":\"public abstract int EnableSpeaker(boolean isEnabled);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"uZ1A5rgBxJXbD5Mn7HMiS\",\"children\":[{\"id\":\"SISyp2UfVPIDyRSri6p4x\",\"children\":[{\"id\":\"NzFPPDScXImY_zxcXBaw7\",\"children\":[{\"id\":\"ljaUGAZKcFqu1x9fA8YUv\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"K0OX-U2OzIl2jC3yb0O2c\",\"children\":[{\"id\":\"cl3dtltYYtqAgH7oones3\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"HdemZzH4NuM1daGw24jRX\",\"children\":[{\"id\":\"PG4yF_jB7_94urF-y0-T5\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"CnxZLgp3rENoVtjBEJpL6\",\"children\":[{\"id\":\"edQWb96sA6Fhff5rPjT49\",\"children\":[{\"id\":\"D2Fu_-N2e5Fz3JPR50RuO\",\"children\":[{\"id\":\"b8O8aWreNULx9t6xpd4dR\",\"children\":[{\"text\":\"isEnabled\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"mwHzhiwq6mzT2eViKGU-I\",\"children\":[{\"id\":\"IObtpUmp6fgDjO2K1UkKU\",\"children\":[{\"id\":\"-Q3Z983xEixjHo4-uhOrv\",\"children\":[{\"text\":\"boolean\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"nQZy-2B9YXE6wnLYXYhEu\",\"children\":[{\"id\":\"xHYlimlt-hbEflhq_xXKa\",\"children\":[{\"id\":\"hwiUY0dUuxCoxGIebcUVU\",\"children\":[{\"text\":\"To disable the speaker, set this parameter to \"},{\"code\":1,\"text\":\"false\"},{\"text\":\"; otherwise, set it to \"},{\"code\":1,\"text\":\"true\"},{\"text\":\".\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[13,11,76],\"widthMode\":\"percentage\"},{\"id\":\"68rMeg6QT_bnTAefDYOWm\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.8126\",\"type\":\"h4\"},{\"id\":\"IcvjhAJBUQr_eAcXn02H2\",\"autoWrap\":false,\"children\":[{\"id\":\"I1aMy3qBbEKfuSogidOXL\",\"children\":[{\"text\":\"// Turn on the speaker\"}],\"type\":\"code-line\"},{\"id\":\"yJi56nNO4sYFHEUORHyU-\",\"children\":[{\"text\":\"ITMGContext.GetInstance(this).GetAudioCtrl().EnableSpeaker(true);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"5sWQ1pv_lUSsP4I04USfW\",\"children\":[{\"text\":\"Getting the speaker status\"}],\"nodeId\":\".E6.89.AC.E5.A3.B0.E5.99.A8.E7.8A.B6.E6.80.81.E8.8E.B7.E5.8F.96\",\"type\":\"h3\"},{\"id\":\"OyXORHA6tu0-XiQ5QtvTj\",\"children\":[{\"text\":\"This API is used to get the speaker status. 0 indicates that the speaker is off, and 1 is on.\"}],\"type\":\"p\"},{\"id\":\"X5s_OCoPwECumHoT4W0ld\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\".E6.8E.A5.E5.8F.A3.E5.8E.9F.E5.9E.8B27\",\"type\":\"h4\"},{\"id\":\"0bMQs2rDJHYsF6P1Qy5DJ\",\"autoWrap\":false,\"children\":[{\"id\":\"ujgvTu1POXDl-DKI-8DtZ\",\"children\":[{\"text\":\"public abstract int GetSpeakerState();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"KRCLWM8m6CxAJgB6W6bxH\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.8127\",\"type\":\"h4\"},{\"id\":\"ti8af3DXx8X0B-Vs_huOX\",\"autoWrap\":false,\"children\":[{\"id\":\"9XAcV_hrRb6DVVa7mRZCY\",\"children\":[{\"text\":\"int micState = ITMGContext.GetInstance(this).GetAudioCtrl().GetSpeakerState();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"sVAmUfUfBvUR_Mpu8VyVq\",\"children\":[{\"text\":\"Enabling or disabling playback device\"}],\"nodeId\":\".E5.BC.80.E5.90.AF.E6.88.96.E5.85.B3.E9.97.AD.E6.92.AD.E6.94.BE.E8.AE.BE.E5.A4.87\",\"type\":\"h3\"},{\"id\":\"olzVUPboo-XoyTqeR_VH2\",\"children\":[{\"text\":\"This API is used to enable/disable a playback device.\"}],\"type\":\"p\"},{\"id\":\"xXdzeXea37dOntRTwWjCe\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\".E6.8E.A5.E5.8F.A3.E5.8E.9F.E5.9E.8B28\",\"type\":\"h4\"},{\"id\":\"RvxySWTScJK_VYwtSLIY8\",\"autoWrap\":false,\"children\":[{\"id\":\"Z7Cuf_Ul4npPPlvt1xHu5\",\"children\":[{\"text\":\"public abstract int EnableAudioPlayDevice(boolean isEnabled);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"1hWUaAyxhYRfXiqTR_3I4\",\"children\":[{\"id\":\"epyBEol2bzGD1ROkG1b_f\",\"children\":[{\"id\":\"ABOoinhDlaxSM8o17h9-t\",\"children\":[{\"id\":\"-msjV9F1twgHYOLpC8rd7\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"FpT4-9VZoo92X_gqVJqre\",\"children\":[{\"id\":\"8lfllQ3StMNA9_-WuWTOH\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"NlhCivCkd3VHo-0R96dE8\",\"children\":[{\"id\":\"5sG4lcVBEb0QuqOufMCTC\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"0inoYEhQxADjOCWt6aOC7\",\"children\":[{\"id\":\"sOrdBJUAodOPfJQZTqQEa\",\"children\":[{\"id\":\"1a2XwAdRS5VvbT_MYXWfp\",\"children\":[{\"id\":\"wVlW48zNB3iIj92z5p22g\",\"children\":[{\"text\":\"isEnabled\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"1bbQkTJDw1NxYjm7Rfka7\",\"children\":[{\"id\":\"lKZQuB9X_A0eLfVP3rPAS\",\"children\":[{\"id\":\"nyI5QHZ6U0Yz37_jmRcH2\",\"children\":[{\"text\":\"boolean\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"zqDnBZHK4xnKf-qMXG-XY\",\"children\":[{\"id\":\"xshs6Uj3K60ZN9h0LZxfG\",\"children\":[{\"id\":\"HOlu9nhUENVkRtxsK46Az\",\"children\":[{\"text\":\"To disable the playback device, set this parameter to \"},{\"code\":1,\"text\":\"false\"},{\"text\":\"; otherwise, set it to \"},{\"code\":1,\"text\":\"true\"},{\"text\":\".\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[15,16,69],\"widthMode\":\"percentage\"},{\"id\":\"Us23vGIZBM3bA4L5CSRqc\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.8128\",\"type\":\"h4\"},{\"id\":\"T5dm_7U3jFdq9LAbxbRXe\",\"autoWrap\":false,\"children\":[{\"id\":\"poyiTj7lcCzYxgrg1jqED\",\"children\":[{\"text\":\"// Enable the playback device\"}],\"type\":\"code-line\"},{\"id\":\"Fadx_qXSXAviE3GAY-B_F\",\"children\":[{\"text\":\"ITMGContext.GetInstance(this).GetAudioCtrl().EnableAudioPlayDevice(true);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"r9nU1pQZQ6bKe1iC_tOox\",\"children\":[{\"text\":\"Getting the playback device status\"}],\"nodeId\":\".E6.92.AD.E6.94.BE.E8.AE.BE.E5.A4.87.E7.8A.B6.E6.80.81.E8.8E.B7.E5.8F.96\",\"type\":\"h3\"},{\"id\":\"oiRMeJpYgsZdLla38X7RT\",\"children\":[{\"text\":\"This API is used to get the status of a playback device.\"}],\"type\":\"p\"},{\"id\":\"Lkr3DivHFW4xx_EPmZ3LZ\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\".E6.8E.A5.E5.8F.A3.E5.8E.9F.E5.9E.8B29\",\"type\":\"h4\"},{\"id\":\"j0HR43glLRV4Du5HgS7Ty\",\"autoWrap\":false,\"children\":[{\"id\":\"2HXndVoFIByHl7GysB-nF\",\"children\":[{\"text\":\"public abstract boolean IsAudioPlayDeviceEnabled();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"bOWfN-3S5q8ix2ILTvWDE\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.8129\",\"type\":\"h4\"},{\"id\":\"VArJ4-6jHbZS-63KY_99j\",\"autoWrap\":false,\"children\":[{\"id\":\"Tmwir_kizB6P9l8DCRr8B\",\"children\":[{\"text\":\"bool IsAudioPlayDevice = ITMGContext.GetInstance(this).GetAudioCtrl().IsAudioPlayDeviceEnabled();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"hVwKpWm7ZGKg1dDjY2kQw\",\"children\":[{\"text\":\"Enabling or disabling audio downstreaming\"}],\"nodeId\":\".E6.89.93.E5.BC.80.E6.88.96.E5.85.B3.E9.97.AD.E9.9F.B3.E9.A2.91.E4.B8.8B.E8.A1.8C\",\"type\":\"h3\"},{\"id\":\"St065Fr9NF0UoHvs9Mx05\",\"children\":[{\"text\":\"This API is used to enable/disable audio downstreaming. If a playback device is already enabled, it will play back audio data from other members in the room; otherwise, it will remain muted. For more information on how to enable/disable the playback device, see the \"},{\"code\":1,\"text\":\"EnableAudioPlayDevice\"},{\"text\":\" API.\"}],\"type\":\"p\"},{\"id\":\"dysIeNU691Tuoauim1Bo_\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\".E6.8E.A5.E5.8F.A3.E5.8E.9F.E5.9E.8B30\",\"type\":\"h4\"},{\"id\":\"lG_RkBhG4OiWZl8UNQKI4\",\"autoWrap\":false,\"children\":[{\"id\":\"uBXs3NYaHb6k1g9pmDtBF\",\"children\":[{\"text\":\"public abstract int EnableAudioRecv(boolean isEnabled);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"xK2yDwj3_-Y0522bBGi2I\",\"children\":[{\"id\":\"gDe_RUZytvAjMZQguQe9h\",\"children\":[{\"id\":\"pntejJXjgDvvo6LScSDXu\",\"children\":[{\"id\":\"SV3NFtyxr51O4vWAHUV0x\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"4-3fRl9O5wJTvWE5FtgkV\",\"children\":[{\"id\":\"aJU3OGjWtllKYObc-vDMG\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"l0pSGQTD9zch6mKhVXYPH\",\"children\":[{\"id\":\"wFXV2aWtVnfU928Vv6OmJ\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"6k3HKJVZoBpsNf6buqJ0t\",\"children\":[{\"id\":\"ewWde14pSfwCgh9MOJVII\",\"children\":[{\"id\":\"_SXWjZcB-URNy1qrbVKxu\",\"children\":[{\"id\":\"m2GOY-HDUcirh_CwfYJdu\",\"children\":[{\"text\":\"isEnabled\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"0SJVzNrBBlKAkjPQl6DUd\",\"children\":[{\"id\":\"qgNhkbr3KJ0LLD7wdttDM\",\"children\":[{\"id\":\"pFOANm9N3Go0EzBUkXJTq\",\"children\":[{\"text\":\"boolean\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"CDU0HIusWSSHQIqdzDIVS\",\"children\":[{\"id\":\"JMCrcek3qWyz973g9y114\",\"children\":[{\"id\":\"Cd2H-ehVl1TdlhwXprBWt\",\"children\":[{\"text\":\"To enable audio downstreaming, set this parameter to \"},{\"code\":1,\"text\":\"true\"},{\"text\":\"; otherwise, set it to \"},{\"code\":1,\"text\":\"false\"},{\"text\":\".\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[16,15,69],\"widthMode\":\"percentage\"},{\"id\":\"TvIdHW92mra0LBBnOImQj\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.8130\",\"type\":\"h4\"},{\"id\":\"u_lOAFpbAVI6SbHgj2zzR\",\"autoWrap\":false,\"children\":[{\"id\":\"k47h7OMGNMbJwB3jQEIPc\",\"children\":[{\"text\":\"ITMGContext.GetInstance(this).GetAudioCtrl().EnableAudioRecv(true);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"zi8gE5Cw3ntz2KuHkIJYO\",\"children\":[{\"text\":\"Getting audio downstreaming status\"}],\"nodeId\":\".E9.9F.B3.E9.A2.91.E4.B8.8B.E8.A1.8C.E7.8A.B6.E6.80.81.E8.8E.B7.E5.8F.96\",\"type\":\"h3\"},{\"id\":\"x27LQM_0uqtLhAVeGYqRd\",\"children\":[{\"text\":\"This API is used to get the status of audio downstreaming.\"}],\"type\":\"p\"},{\"id\":\"H2PCcxujZ8R6EGTJf-5N4\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\".E6.8E.A5.E5.8F.A3.E5.8E.9F.E5.9E.8B31\",\"type\":\"h4\"},{\"id\":\"MUjyfhjtbjzulKM4gHDeu\",\"autoWrap\":false,\"children\":[{\"id\":\"CoW2CfZoubGxORqEkF9DC\",\"children\":[{\"text\":\"public abstract boolean IsAudioRecvEnabled();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"Jh5RGH7ZvBTqC_aSVVJ75\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.8131\",\"type\":\"h4\"},{\"id\":\"Q16uQyY5IVxzp60bsKJox\",\"autoWrap\":false,\"children\":[{\"id\":\"6omDcalV9yqOxWPVlOJlY\",\"children\":[{\"text\":\"bool IsAudioRecv = ITMGContext.GetInstance(this).GetAudioCtrl().IsAudioRecvEnabled();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"SlpAMTW2JxMhceRy_lKQc\",\"children\":[{\"text\":\"Getting the real-time speaker volume\"}],\"nodeId\":\".E8.8E.B7.E5.8F.96.E6.89.AC.E5.A3.B0.E5.99.A8.E5.AE.9E.E6.97.B6.E9.9F.B3.E9.87.8F\",\"type\":\"h3\"},{\"id\":\"mQfwnrQBpufYYu-LwoKOS\",\"children\":[{\"text\":\"This API is used to get the real-time speaker volume. An int-type value will be returned to indicate the volume. It is recommended to call this API once every 20 ms.\"}],\"type\":\"p\"},{\"id\":\"YygNB1ZziZDozeVG_kS4j\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\".E6.8E.A5.E5.8F.A3.E5.8E.9F.E5.9E.8B32\",\"type\":\"h4\"},{\"id\":\"X76CNYEG993h9uiL2aZX3\",\"autoWrap\":false,\"children\":[{\"id\":\"b7Tdg02Vgo1d3i17z69LH\",\"children\":[{\"text\":\"public abstract int GetSpeakerLevel();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"ntrC-EMxysnHTQiULNhIU\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.8132\",\"type\":\"h4\"},{\"id\":\"eRs_3DmIQ_URfEEMuGaqK\",\"autoWrap\":false,\"children\":[{\"id\":\"o_yunA4iW-sySD0fv1msJ\",\"children\":[{\"text\":\"int SpeakLevel = ITMGContext.GetInstance(this).GetAudioCtrl().GetSpeakerLevel();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"xnkxdoM_6cwW3VisA19DV\",\"children\":[{\"text\":\"Getting the real-time downstreaming audio levels of other members in room\"}],\"nodeId\":\".E8.8E.B7.E5.8F.96.E6.88.BF.E9.97.B4.E5.86.85.E5.85.B6.E4.BB.96.E6.88.90.E5.91.98.E4.B8.8B.E8.A1.8C.E5.AE.9E.E6.97.B6.E9.9F.B3.E9.87.8F\",\"type\":\"h3\"},{\"id\":\"VHoR_w1DhaCLvItlXqD5M\",\"children\":[{\"text\":\"This API is used to get the real-time audio downstreaming volume of other members in the room. An int-type value will be returned. Value range: 0-200.\"}],\"type\":\"p\"},{\"id\":\"7mGX6FI-8fheFdkvq3xLm\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\".E6.8E.A5.E5.8F.A3.E5.8E.9F.E5.9E.8B33\",\"type\":\"h4\"},{\"id\":\"wH3jn9uUdf2-uI8efLkJg\",\"autoWrap\":false,\"children\":[{\"id\":\"zD13yniZTRjbR63KmrRxX\",\"children\":[{\"text\":\"public abstract int GetRecvStreamLevel(String openId);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"gL4yUoYBQykrFfrDPMqbe\",\"children\":[{\"id\":\"lzUvX2PCkg-wYbeTQPOIb\",\"children\":[{\"id\":\"J-V6vJWM8jsvUmOHJ107C\",\"children\":[{\"id\":\"lOsVCI0028pdEE4YGL2kj\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"aftEX64Jn8G0nDTw5JO5u\",\"children\":[{\"id\":\"7qRvuhCEljPNTpNaeZ2u0\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"tCb_jsxSfK6EHk4ZNUd8-\",\"children\":[{\"id\":\"vJIR7BNElPBaNSzoAACWD\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"tZl0nFhe29cKrHt1e7Ti2\",\"children\":[{\"id\":\"5XA6FZEaHpJPK51t3AjOb\",\"children\":[{\"id\":\"sC6jd8XVgGTr2vPmuZXDT\",\"children\":[{\"id\":\"Fp1ndnCIv0h7Dc7bO9Gse\",\"children\":[{\"text\":\"openId\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Oz3OEydRfGEPRHqPe1NKA\",\"children\":[{\"id\":\"ZIeAWFb3trs9R16u5gosh\",\"children\":[{\"text\":\"String\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"PFgHJTYA1Dljk40u-jq4A\",\"children\":[{\"id\":\"iJCgF6ggz0nEJCseUNf07\",\"children\":[{\"id\":\"GfRNZUi6ah13z30lv6w1u\",\"children\":[{\"code\":1,\"text\":\"openId\"},{\"text\":\" of another member in the room\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[21,15,64],\"widthMode\":\"percentage\"},{\"id\":\"wsnkDflus3Sf9WGhMwlGe\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.8133\",\"type\":\"h4\"},{\"id\":\"ZoYvivXcBlsc1zjZW3sGz\",\"autoWrap\":false,\"children\":[{\"id\":\"EdlGqZaIA4CLh3Ns4tigM\",\"children\":[{\"text\":\"int Level = ITMGContext.GetInstance(this).GetAudioCtrl().GetRecvStreamLevel(openId);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"y8dIchH-_p4JzSektfW4d\",\"children\":[{\"text\":\"Dynamically setting the volume of a member of the room\"}],\"nodeId\":\".E5.8A.A8.E6.80.81.E8.AE.BE.E7.BD.AE.E6.88.BF.E9.97.B4.E5.86.85.E6.9F.90.E6.88.90.E5.91.98.E9.9F.B3.E9.87.8F\",\"type\":\"h3\"},{\"id\":\"JVlxmYvDUAT9cMZv3TGJH\",\"children\":[{\"text\":\"This API is used to set the volume of a member in the room. It takes effect only on the local.\"}],\"type\":\"p\"},{\"id\":\"TmspbDzmIq8sD2Fu0riwv\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\".E6.8E.A5.E5.8F.A3.E5.8E.9F.E5.9E.8B34\",\"type\":\"h4\"},{\"id\":\"GpAQikDq4xa9wqvfC1agU\",\"autoWrap\":false,\"children\":[{\"id\":\"ADsl2Ymkc49eQ_RDWSLo6\",\"children\":[{\"text\":\"public abstract int SetSpeakerVolumeByOpenID(String openId, int volume);\"}],\"type\":\"code-line\"}],\"language\":\"java\",\"type\":\"code-block\"},{\"id\":\"OnT40ZGSKSXK3FmXPYvW3\",\"children\":[{\"id\":\"fzSxMbqjY7f5_9IfHZnn4\",\"children\":[{\"id\":\"feosNTnv4vBo3X-yim7gk\",\"children\":[{\"id\":\"X6K6ZxoKhozv8A5ITxu1f\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"DJu3Yreawst1I8hor_p0T\",\"children\":[{\"id\":\"9LVHHzv4Z926UNAUs37kd\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"300lIO6eYpc1CoMp4eq4S\",\"children\":[{\"id\":\"xSSKgs12a2bp3i2pyb7eM\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"J2vZ22BXR1UFEDjOLlXhs\",\"children\":[{\"id\":\"u8QGKFQ5ANtX6S1lzuhwE\",\"children\":[{\"id\":\"5zQsR1SuiOCsabWf4wqB-\",\"children\":[{\"id\":\"iFqxDBnQ69WZQqIzHbsEK\",\"children\":[{\"text\":\"openId\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"dhIm1ej5cJ1SCfp65rDKY\",\"children\":[{\"id\":\"I2H0-F6HvCZYOK2d44_YG\",\"children\":[{\"text\":\"String\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"RN0AE82cfg7M97BTwrK3p\",\"children\":[{\"id\":\"3vkUtHp3P9nBu48aMzB_g\",\"children\":[{\"id\":\"v40crtU0PzEW5V-oHdalM\",\"children\":[{\"code\":1,\"text\":\"OpenID\"},{\"text\":\" of the target user\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"NeTfSYRPjCIZJONX1jNsC\",\"children\":[{\"id\":\"m3pUZJfLxxQP2_Ql8ZIeQ\",\"children\":[{\"id\":\"7LXZ8ENOvk3D6xt2Ga_8m\",\"children\":[{\"id\":\"KCvJo1v6Mz1Rwi1_mywRl\",\"children\":[{\"text\":\"volume\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"BNsTplX-OBQzj31jaB1ES\",\"children\":[{\"id\":\"s3-u5VqfhMp_LaET0qWgu\",\"children\":[{\"id\":\"fSYUge91F3IFnLBTCbNAe\",\"children\":[{\"text\":\"int\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"dLNf5Flda74zN9SBW9wVL\",\"children\":[{\"id\":\"e103OCcVKWdB9mWMV04Ls\",\"children\":[{\"id\":\"2DR331B1g3N7n9UlebjWk\",\"children\":[{\"text\":\"Percentage. Recommended value range: 0-200. Default value: \"},{\"code\":1,\"text\":\"100\"},{\"text\":\".\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[15,11,74],\"widthMode\":\"percentage\"},{\"id\":\"Y_H5Z2-hayaIZAREVqCFZ\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.8134\",\"type\":\"h4\"},{\"id\":\"AvxVG00j_KSCOXmA-MEKR\",\"children\":[{\"b\":1,\"text\":\"Executed statements\"}],\"type\":\"p\"},{\"id\":\"ReYDaCZ6oAaOOTM5xxLlL\",\"autoWrap\":false,\"children\":[{\"id\":\"3QbXKACwofLdeECCVc8C_\",\"children\":[{\"text\":\"// Lower the volume of 123333 to 80%\"}],\"type\":\"code-line\"},{\"id\":\"bK8T0wf5AIIq-IiIJ5t4C\",\"children\":[{\"text\":\"String strOpenID = \\\"1233333\\\";\"}],\"type\":\"code-line\"},{\"id\":\"2vuN4eruKDjcb0OJaPJwh\",\"children\":[{\"text\":\"int nOpenVolume = Integer.valueOf(80);\"}],\"type\":\"code-line\"},{\"id\":\"QSAA03ZajjijIewd4-Tyw\",\"children\":[{\"text\":\"int nRet = ITMGContext.GetInstance(getActivity()).GetAudioCtrl().SetSpeakerVolumeByOpenID(strOpenID, nOpenVolume);\"}],\"type\":\"code-line\"},{\"id\":\"M_5ZJlJxK-R4fF6I3t53i\",\"children\":[{\"text\":\"if (nRet != 0)\"}],\"type\":\"code-line\"},{\"id\":\"n0GA4ye32ImqmOVud4SnD\",\"children\":[{\"text\":\"{\"}],\"type\":\"code-line\"},{\"id\":\"50ukrl6a4-EHoj37BiogP\",\"children\":[{\"text\":\" // Toast error occured\"}],\"type\":\"code-line\"},{\"id\":\"Z6XHk5PhEyPTTGh9XVMJB\",\"children\":[{\"text\":\"}\"}],\"type\":\"code-line\"},{\"id\":\"Rjv7puF6WeLbBml6oCGa8\",\"children\":[{\"text\":\"else\"}],\"type\":\"code-line\"},{\"id\":\"W4DESfcI_-KX3C46dSX8M\",\"children\":[{\"text\":\"{\"}],\"type\":\"code-line\"},{\"id\":\"Vlc-cQw6m3NrqPT_NoJHJ\",\"children\":[{\"text\":\" // Toast set successfully\"}],\"type\":\"code-line\"},{\"id\":\"zzSGasrdV1hzsy88AWHr8\",\"children\":[{\"text\":\"}\"}],\"type\":\"code-line\"}],\"language\":\"java\",\"type\":\"code-block\"},{\"id\":\"G3yKFaEkVt2IW5qdq6apG\",\"children\":[{\"text\":\"Getting volume percentage\"}],\"nodeId\":\".E8.8E.B7.E5.8F.96.E8.AE.BE.E7.BD.AE.E7.9A.84.E5.A3.B0.E9.9F.B3.E7.99.BE.E5.88.86.E6.AF.94\",\"type\":\"h3\"},{\"id\":\"ppwCzyfUNX17nXLcIuLd1\",\"children\":[{\"text\":\"Call this API to get the volume set by SetSpeakerVolumeByOpenID\"}],\"type\":\"p\"},{\"id\":\"0bE-WSGfriaObFpNZQRRW\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\".E6.8E.A5.E5.8F.A3.E5.8E.9F.E5.9E.8B35\",\"type\":\"h4\"},{\"id\":\"vyruzqUsY3Nl5EPwqc78y\",\"autoWrap\":false,\"children\":[{\"id\":\"QjjAolf6GnmtSZs0olPyj\",\"children\":[{\"text\":\"public abstract int GetSpeakerVolumeByOpenID(String openId);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"ylc91HvptuJpOTsPeT3d-\",\"children\":[{\"id\":\"5cjzEFpxTXoXVVQ16fziG\",\"children\":[{\"id\":\"AzGe3otH93b8SooqxtLej\",\"children\":[{\"id\":\"8miGM-y1GeDXlDuhvBx2j\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"dZr9qg6g-s8VvKtEnh9f6\",\"children\":[{\"id\":\"7HZ3za1VF0WkUnd7Z6m-Y\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"QZcqdCS85UyOxBGWNY8VN\",\"children\":[{\"id\":\"dfovBnVzfpXUX9MmrgMhj\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"HG2zAeKHzUWajLbMCQT1s\",\"children\":[{\"id\":\"ZGi79MxVkxIMI4FgHm-M1\",\"children\":[{\"id\":\"-vWXwLZwPcYpzO-ME7dni\",\"children\":[{\"id\":\"etNlUaX2CHnkjutiGbSYR\",\"children\":[{\"text\":\"openId\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"F0Qt8Dxqd5_qyCY7sVSX9\",\"children\":[{\"id\":\"MXxloYASullM_aWX9QFWE\",\"children\":[{\"text\":\"String\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"JjozHrRae-_I8LxIUX02p\",\"children\":[{\"id\":\"Tl0VlH8wzexQE9bLECcik\",\"children\":[{\"id\":\"0tuqCg8KUTJ2yQez2-ZPF\",\"children\":[{\"code\":1,\"text\":\"OpenID\"},{\"text\":\" of the target user\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[26,18,56],\"widthMode\":\"percentage\"},{\"id\":\"w0p76Be5PE7OyVtmpeaV3\",\"children\":[{\"text\":\"Returned values\"}],\"nodeId\":\".E8.BF.94.E5.9B.9E.E5.80.BC2\",\"type\":\"h4\"},{\"id\":\"SUMs1R6zf4owcRCAt8pwH\",\"children\":[{\"text\":\"API returns volume percentage set by OpenID, where 100 is by default.\"}],\"type\":\"p\"},{\"id\":\"oHj-jk7lr1nNaAJrtD_7_\",\"children\":[{\"text\":\"Setting the speaker volume\"}],\"nodeId\":\".E8.AE.BE.E7.BD.AE.E6.89.AC.E5.A3.B0.E5.99.A8.E7.9A.84.E9.9F.B3.E9.87.8F\",\"type\":\"h3\"},{\"id\":\"sJh8jvVodTp5UCm9DM3eQ\",\"children\":[{\"text\":\"This API is used to set the speaker volume.\"}],\"type\":\"p\"},{\"id\":\"lJzg11FSYM0Qdkou5gWOX\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\".E6.8E.A5.E5.8F.A3.E5.8E.9F.E5.9E.8B36\",\"type\":\"h4\"},{\"id\":\"CLgXuLGYyCdXVgHuiep6B\",\"autoWrap\":false,\"children\":[{\"id\":\"L2mIewRwUbwHfNPHB_AYD\",\"children\":[{\"text\":\"public abstract int SetSpeakerVolume(int volume);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"_lRa_zy83IPyAlJehA5Hs\",\"children\":[{\"id\":\"jyHY1VE0qGb1x_QWvM6rm\",\"children\":[{\"id\":\"QpmPUFTVNHQUJxkcGlD2I\",\"children\":[{\"id\":\"N4gAB1by0f9mYrCB_bdqy\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"RfuZ5kVRYiTLLKeZRiN5G\",\"children\":[{\"id\":\"hA6uLeMwjSq0dB_E_6YQ3\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"5oaZJ1JDdkcrKjF_EgBnZ\",\"children\":[{\"id\":\"IHgBlHUPnDM7MDsN-3jI7\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"-_vDnVXv6910lSInj_fwE\",\"children\":[{\"id\":\"qYk7sY490QC2zir0J_iZ_\",\"children\":[{\"id\":\"LFuK1BirAI4SGC0sgZB_F\",\"children\":[{\"id\":\"oPTyAXF_HFXQL9Ucv_06Z\",\"children\":[{\"text\":\"volume\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"xERppoZ03E9G0tj2gSHrp\",\"children\":[{\"id\":\"84jf42HJAU3pj-qyaBB0J\",\"children\":[{\"id\":\"HnS2nyijrEWP9nrYgIFAJ\",\"children\":[{\"text\":\"int\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"jp3g8TvpI4rQbc8j_mPUQ\",\"children\":[{\"id\":\"BYx8qrv1mmn8kQAb3mJ2J\",\"children\":[{\"id\":\"CZ_WD8hbP_zdPLbTdD7sS\",\"children\":[{\"text\":\"Volume level. Value range: 0-200. Default value: \"},{\"code\":1,\"text\":\"100\"},{\"text\":\". \"},{\"code\":1,\"text\":\"0\"},{\"text\":\" indicates that the audio is muted, while \"},{\"code\":1,\"text\":\"100\"},{\"text\":\" indicates that the volume level remains unchanged.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[13,12,75],\"widthMode\":\"percentage\"},{\"id\":\"GYTT9YzsFmVKMa604297B\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.8135\",\"type\":\"h4\"},{\"id\":\"rw14BcgsvZYSb97ugbVxz\",\"autoWrap\":false,\"children\":[{\"id\":\"2A6480eFMRuvv0LC-Lpv6\",\"children\":[{\"text\":\"int speVol = (int)(value * 100);ITMGContext.GetInstance(this).GetAudioCtrl().SetSpeakerVolume(volume);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"qUZIy955wZawgfpKn8IxX\",\"children\":[{\"text\":\"Getting the speaker volume\"}],\"nodeId\":\".E8.8E.B7.E5.8F.96.E6.89.AC.E5.A3.B0.E5.99.A8.E7.9A.84.E9.9F.B3.E9.87.8F\",\"type\":\"h3\"},{\"id\":\"jBTFhOa1NBtb2LpsDJcpr\",\"children\":[{\"text\":\"This API is used to get the speaker volume. An int-type value will be returned to indicate the volume. 101 indicates that the \"},{\"code\":1,\"text\":\"SetSpeakerVolume\"},{\"text\":\" API has not been called.\\n\\\"Level\\\" indicates the real-time volume, and \\\"Volume\\\" the speaker volume. The final volume = Level *\"},{\"text\":\" Volume%. For example, if the \\\"Level\\\" is 100 and \\\"Volume\\\" is 60, the final volume is \\\"60\\\".\"}],\"type\":\"p\"},{\"id\":\"LA5_akeP9T3TnIoO4hhKq\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\".E6.8E.A5.E5.8F.A3.E5.8E.9F.E5.9E.8B37\",\"type\":\"h4\"},{\"id\":\"VE7jMoURfDoSQhKjDLB13\",\"autoWrap\":false,\"children\":[{\"id\":\"oMx0ifhBMA4Y71THLfNLD\",\"children\":[{\"text\":\"public abstract int GetSpeakerVolume();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"ZJk6KX6B27DaCFXaI-AKS\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.8136\",\"type\":\"h4\"},{\"id\":\"iMmOXz46QaPsIT_byCvAC\",\"autoWrap\":false,\"children\":[{\"id\":\"8ku_q1bQA_odnUUtUbXHv\",\"children\":[{\"text\":\"ITMGContext.GetInstance(this).GetAudioCtrl().GetSpeakerVolume();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"zeH9ajeGeftJMfK6l9B2-\",\"children\":[{\"text\":\"Advanced APIs\"}],\"nodeId\":\".E9.AB.98.E7.BA.A7-api\",\"type\":\"h2\"},{\"id\":\"uxGaCzcxgwR4iLZO6e5vP\",\"children\":[{\"text\":\"Enabling in-ear monitoring\"}],\"nodeId\":\".E5.90.AF.E5.8A.A8.E8.80.B3.E8.BF.94\",\"type\":\"h3\"},{\"id\":\"He0OPSp7Rys9azgvjUkxu\",\"children\":[{\"text\":\"This API is used to enable in-ear monitoring. You need to call \"},{\"code\":1,\"text\":\"EnableLoopBack+EnableSpeaker\"},{\"text\":\" before you can hear your own voice.\"}],\"type\":\"p\"},{\"id\":\"Efsg-7JrLRdzJ1ZFizIO4\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\".E6.8E.A5.E5.8F.A3.E5.8E.9F.E5.9E.8B38\",\"type\":\"h4\"},{\"id\":\"qwMOtHq-xSudk5BPkJWb4\",\"autoWrap\":false,\"children\":[{\"id\":\"FuyqrhrXv1R5p-8_WgyR-\",\"children\":[{\"text\":\"public abstract int EnableLoopBack(boolean enable);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"Ao13RW-nBAveWdvSlz27y\",\"children\":[{\"id\":\"_pKUh_f9AxXmbMSsqbQE-\",\"children\":[{\"id\":\"GkS6SFEy5Qo-9gzbU1_c9\",\"children\":[{\"id\":\"ONz9MPIDU8Y3Q91LQjbcV\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"YFpRMxwpBjucd-RtQAU3d\",\"children\":[{\"id\":\"ThHBAHf_zOR8GEre_XSFR\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"dgHGLXYTmAJEUqheEX1YC\",\"children\":[{\"id\":\"pViqQbZBY3fNmuYgzD7qZ\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"0VnJtR35ERPM9GpEVHUvn\",\"children\":[{\"id\":\"aBOxNDcZsbhWrwRMckyoh\",\"children\":[{\"id\":\"DY5rCBDb9HR-ZcyL7grBu\",\"children\":[{\"id\":\"e13b6LKa5PKRwIuAYD2EK\",\"children\":[{\"text\":\"enable\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"CzhOWyWo0miusXygGSIud\",\"children\":[{\"id\":\"Bny21P9gJGf5rxvcZZKm-\",\"children\":[{\"id\":\"gHvTWEeseqhrbRSCcnwrw\",\"children\":[{\"text\":\"boolean\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"SZIzUJHkbqTfNMRDaz9hl\",\"children\":[{\"id\":\"FFbI-98G5ighArw6BQzfH\",\"children\":[{\"id\":\"O2OywITmocP2VLwrPlPYV\",\"children\":[{\"text\":\"Specifies whether to enable in-ear monitoring.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[19,16,65],\"widthMode\":\"percentage\"},{\"id\":\"I7nXJzl3j6cxwR1d_C_Ss\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.8137\",\"type\":\"h4\"},{\"id\":\"PuuBB7jLvEPuAMuK_V5Sm\",\"autoWrap\":false,\"children\":[{\"id\":\"kXlr-bLWaj68aq3uQxMf7\",\"children\":[{\"text\":\"ITMGContext.GetInstance(this).GetAudioCtrl().EnableLoopBack(true);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"0Y2VasSJHqjnTOFfeuwXf\",\"children\":[{\"text\":\"Getting user's room audio type\"}],\"nodeId\":\".E8.8E.B7.E5.8F.96.E7.94.A8.E6.88.B7.E6.88.BF.E9.97.B4.E9.9F.B3.E9.A2.91.E7.B1.BB.E5.9E.8B\",\"type\":\"h3\"},{\"id\":\"cIK5JsZpMSdzE7hXjh3KO\",\"children\":[{\"text\":\"This API is used to get a user's room audio type. The returned value is the room audio type. Value 0 indicates that an error occurred while getting the user's room audio type. For room audio types, see the \"},{\"code\":1,\"text\":\"EnterRoom\"},{\"text\":\" API.\"}],\"type\":\"p\"},{\"id\":\"8tXXTpVUYP19NYmgSUzHo\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\".E6.8E.A5.E5.8F.A3.E5.8E.9F.E5.9E.8B39\",\"type\":\"h4\"},{\"id\":\"e6Y_JMB_K1hQGT6VWqgat\",\"autoWrap\":false,\"children\":[{\"id\":\"fsjWvK1Iab-a85i8gKxjs\",\"children\":[{\"text\":\"public abstract int GetRoomType();\"}],\"type\":\"code-line\"}],\"language\":\"java\",\"type\":\"code-block\"},{\"id\":\"tJkOxwn4HhJ35mKx_AeFW\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.8138\",\"type\":\"h4\"},{\"id\":\"sqps4tAzAs5jM-D2j_VkS\",\"autoWrap\":false,\"children\":[{\"id\":\"E3BwPVd-Fa0d5-6PVANMf\",\"children\":[{\"text\":\"ITMGContext.GetInstance(this).GetRoom().GetRoomType();\"}],\"type\":\"code-line\"}],\"language\":\"java\",\"type\":\"code-block\"},{\"id\":\"HJsY1I0IgL47BkQ8qNYvJ\",\"children\":[{\"text\":\"Getting the room ID\"}],\"nodeId\":\".E8.8E.B7.E5.8F.96.E6.88.BF.E9.97.B4.E5.8F.B7\",\"type\":\"h3\"},{\"id\":\"tDLy06ZJNb7WhUYn6W9tf\",\"children\":[{\"text\":\"This API is used to get the voice chat room ID and can be called only after a successful room entry. A string will be returned.\"}],\"type\":\"p\"},{\"id\":\"BxEN3yonk3eX3cFca9Eew\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\".E6.8E.A5.E5.8F.A3.E5.8E.9F.E5.9E.8B40\",\"type\":\"h4\"},{\"id\":\"__VC3HfXNAwVgKBYtdgAs\",\"autoWrap\":false,\"children\":[{\"id\":\"Ews56FtfzbeMZgfvKX0mE\",\"children\":[{\"text\":\"public abstract String GetRoomID();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"DOp22wgnChWvJFl8e-GkC\",\"children\":[{\"text\":\"Modifying user's room audio type\"}],\"nodeId\":\".E4.BF.AE.E6.94.B9.E7.94.A8.E6.88.B7.E6.88.BF.E9.97.B4.E9.9F.B3.E9.A2.91.E7.B1.BB.E5.9E.8B\",\"type\":\"h3\"},{\"id\":\"nf5haJAZcwQkkttv2cyB8\",\"children\":[{\"text\":\"This API is used to modify a user's room audio type. For the result, please see the callback event. The event type is \"},{\"code\":1,\"text\":\"ITMG_MAIN_EVENT_TYPE_CHANGE_ROOM_TYPE\"},{\"text\":\". The audio type of the room is determined by the first user to enter the room. After that, if a member in the room changes the room type, it will take effect for all members there.\"}],\"type\":\"p\"},{\"id\":\"Um1wRA3G19uVIU-62ob2N\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\".E6.8E.A5.E5.8F.A3.E5.8E.9F.E5.9E.8B41\",\"type\":\"h4\"},{\"id\":\"gqQuoiyfm1wgVFyGUz833\",\"autoWrap\":false,\"children\":[{\"id\":\"N-F51kGPpnprI1t9Q3pX8\",\"children\":[{\"text\":\"public abstract int ChangeRoomType(int nRoomType);\"}],\"type\":\"code-line\"}],\"language\":\"java\",\"type\":\"code-block\"},{\"id\":\"Jr59i536CtVnlOVh1aMVN\",\"children\":[{\"id\":\"zg_l9z184NsCc3C_QZ0sg\",\"children\":[{\"id\":\"zXV9nneF82gQDZO10rMNj\",\"children\":[{\"id\":\"NuRCr2VT1KcAUbovOxvLl\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"A9nSwFseCfs2Rt6B2mxAw\",\"children\":[{\"id\":\"5XX4kHmi03K1V3MUECAFU\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"wWXed8RYk0RtpyOsTew9o\",\"children\":[{\"id\":\"FDnwPMiYEzE6bxlWW8YLy\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"cjGDCuxdFcwO8GSGbQtVB\",\"children\":[{\"id\":\"_OK3yADxO58Rilw2sAlpl\",\"children\":[{\"id\":\"3wwurNTVtA7efjRAL1koc\",\"children\":[{\"id\":\"WwhCsxhx5zXts8BVEjpda\",\"children\":[{\"text\":\"nRoomType\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"EgUMbasNOCtDr0Q9xhOwQ\",\"children\":[{\"id\":\"Q5Vf-UYyC0bn3tEJV99kS\",\"children\":[{\"id\":\"oqUvQn5ebB2q0qH3FW0WS\",\"children\":[{\"text\":\"int\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"cuKkr0oE_fSx7-azaxqFW\",\"children\":[{\"id\":\"63B6Uon35X5GCLAPTul2A\",\"children\":[{\"id\":\"7Aom8ylQdvLH508L1jLMj\",\"children\":[{\"text\":\"Room type to be switched to. For room audio types, see the \"},{\"code\":1,\"text\":\"EnterRoom\"},{\"text\":\" API.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[20,10,70],\"widthMode\":\"percentage\"},{\"id\":\"7-qq1xXJHK8Op7AQUZ0Of\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.8139\",\"type\":\"h4\"},{\"id\":\"JIUbiKACbWoWrVLoQfFq_\",\"autoWrap\":false,\"children\":[{\"id\":\"cdCJjYH9190-8ivSr06Qa\",\"children\":[{\"text\":\"ITMGContext.GetInstance(this).GetRoom().ChangeRoomType(nRoomType);\"}],\"type\":\"code-line\"}],\"language\":\"java\",\"type\":\"code-block\"},{\"id\":\"Jn8Ibt0Fp-I4qg8vO14sP\",\"children\":[{\"text\":\"Callback for modifying the room type\"}],\"nodeId\":\".E6.88.BF.E9.97.B4.E7.B1.BB.E5.9E.8B.E4.BF.AE.E6.94.B9.E5.9B.9E.E8.B0.83\",\"type\":\"h3\"},{\"id\":\"Eh_dSjecYO0Eh--4LTxfr\",\"children\":[{\"text\":\"After the room type is set, the event message \"},{\"code\":1,\"text\":\"ITMG_MAIN_EVENT_TYPE_CHANGE_ROOM_TYPE\"},{\"text\":\" will be returned in the callback. The returned parameters include \"},{\"code\":1,\"text\":\"result\"},{\"text\":\", \"},{\"code\":1,\"text\":\"error_info\"},{\"text\":\", and \"},{\"code\":1,\"text\":\"new_room_type\"},{\"text\":\". The \"},{\"code\":1,\"text\":\"new_room_type\"},{\"text\":\" represents the following information. The event message will be identified in the \"},{\"code\":1,\"text\":\"OnEvent\"},{\"text\":\" function.\"}],\"type\":\"p\"},{\"id\":\"WYXM1MVrowKL78vMIeRqM\",\"children\":[{\"id\":\"8XGZClz5cD2OA5JigJOcP\",\"children\":[{\"id\":\"Vq4E8cX9I_nGA0hLh84S3\",\"children\":[{\"id\":\"2cbPO59CiKgmfHjuQXhqP\",\"children\":[{\"text\":\"Event Subtype\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"qY39L6cDVHMCV-LecYECs\",\"children\":[{\"id\":\"x0cD0NoL9pjiuaGR0Asql\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Cuam_kWSCqeEInyySR7lb\",\"children\":[{\"id\":\"57YJhCykZ2VV92yGs18RX\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"Y1O8Jjs37WdCuhF1OCcYu\",\"children\":[{\"id\":\"G0-tA5SZPXXaYeeexTvjq\",\"children\":[{\"id\":\"DWamHPuX4fVWKbYY8k8e3\",\"children\":[{\"id\":\"UEYh41okmAftEQmMdHZW7\",\"children\":[{\"text\":\"ITMG_ROOM_CHANGE_EVENT_ENTERROOM\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"3f3BvWJmxnw2CEF9UAnq-\",\"children\":[{\"id\":\"ijg6pBHa8fv-EfYf2V4Nz\",\"children\":[{\"id\":\"etUWp9mgrx2x_R68_qK8g\",\"children\":[{\"text\":\"1\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"eb8jiXtA475R1s5Ohcth-\",\"children\":[{\"id\":\"fi05IQ-jpNnjQyvbndOqU\",\"children\":[{\"id\":\"I1bSP3MbNGJUSCn4oPTcx\",\"children\":[{\"text\":\"The existing audio type is inconsistent with and changed to that of the entered room.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"BJncKXlXGQtUesHzCKO8m\",\"children\":[{\"id\":\"NhW_pRpLXm1-MTaTTKan3\",\"children\":[{\"id\":\"gXfP5msuWQpKc8quzhMtc\",\"children\":[{\"id\":\"6GL8lKBI-bEpxbB03Rhx2\",\"children\":[{\"text\":\"ITMG_ROOM_CHANGE_EVENT_START\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"jR_jw_NVLeXdTY1hz9Vvd\",\"children\":[{\"id\":\"lTMAEC185zOATeN-zsttc\",\"children\":[{\"id\":\"CvTMK2pgBPy0DPs2cCi8F\",\"children\":[{\"text\":\"2\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"mADyEjNpdxMq6J2gMHQdO\",\"children\":[{\"id\":\"zV1sfulSs0TYIw02ncWXh\",\"children\":[{\"id\":\"8cdYMEYWrqNyK4i099LAw\",\"children\":[{\"text\":\"A user is already in the room and the audio type starts changing (e.g., calling the \"},{\"code\":1,\"text\":\"ChangeRoomType\"},{\"text\":\" API to change the audio type).\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"QdTw3cPHaSiJm2wh0yO3E\",\"children\":[{\"id\":\"f1vrTlmbAaicYNMffYd0U\",\"children\":[{\"id\":\"GEYgjD1FeXxx5JP2JUJ7H\",\"children\":[{\"id\":\"sxCVKzYti-GYPFehhJVY_\",\"children\":[{\"text\":\"ITMG_ROOM_CHANGE_EVENT_COMPLETE\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"FZUzquFpCCTB4rqZyAkpN\",\"children\":[{\"id\":\"gebvqxEJZLo2bJlb-TOIi\",\"children\":[{\"id\":\"Bd_Hii3vTlrULMrpDJ7Pp\",\"children\":[{\"text\":\"3\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"fr7igFpM493piQPMh5yN2\",\"children\":[{\"id\":\"tzAd7CaDQb3hvlqdk7fJL\",\"children\":[{\"id\":\"oU_jSOIXjN7n-20zEOtUG\",\"children\":[{\"text\":\"A user is already in the room, and the audio type has been changed.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"VzBgyyr-4CFochqMYUd_5\",\"children\":[{\"id\":\"k-2lJKwL-SoGBDyETucl1\",\"children\":[{\"id\":\"1vjM2HZGFkanZWmtwOvYg\",\"children\":[{\"id\":\"efE2eylCoNihv-HdazpYs\",\"children\":[{\"text\":\"ITMG_ROOM_CHANGE_EVENT_REQUEST\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"vqMIQAIRq1BwxLaP38Y-N\",\"children\":[{\"id\":\"b7xz_siu727ARdyzByNaQ\",\"children\":[{\"id\":\"5z-YgcWNGOQJptyAP-Bej\",\"children\":[{\"text\":\"4\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"zddfAWS9rZB3uHm3P-Ove\",\"children\":[{\"id\":\"bXpi6QIkGRYQsbkxjkyRB\",\"children\":[{\"id\":\"i7YhBGPJGLEtit-fmRUhl\",\"children\":[{\"text\":\"A room member calls the \"},{\"code\":1,\"text\":\"ChangeRoomType\"},{\"text\":\" API to request a change of the room audio type.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[35,11,54],\"widthMode\":\"percentage\"},{\"id\":\"kTPm2sAEKCmUDTecEWu_1\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.8140\",\"type\":\"h4\"},{\"id\":\"DziQc8doj9MmC0Q9UosZ5\",\"autoWrap\":false,\"children\":[{\"id\":\"p_P7Zu43lg9a21xlbX1vO\",\"children\":[{\"text\":\"public void OnEvent(ITMGContext.ITMG_MAIN_EVENT_TYPE type, Intent data) {\\tif (ITMGContext.ITMG_MAIN_EVENT_TYPE.ITMG_MAIN_EVENT_TYPE_CHANGE_ROOM_TYPE == type) {\\t\\t// Process the room type events\\t }}\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"pW9Cav6bRFSpUcajZ20Dh\",\"children\":[{\"text\":\"Data details\"}],\"nodeId\":\"data-.E8.AF.A6.E6.83.853\",\"type\":\"h4\"},{\"id\":\"XautF6xguw4d_UdGnMuKc\",\"children\":[{\"id\":\"OTJHA87pAH_EmLpuBjuXs\",\"children\":[{\"id\":\"8dtPpTi7xMqdLiVZtT7gP\",\"children\":[{\"id\":\"mgRHXAEt3ZdZNA2LNYb2l\",\"children\":[{\"text\":\"Message\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"jNCmnkN0LqsenaPVokGDi\",\"children\":[{\"id\":\"FZbVDaqUYwW8sClZbwoSJ\",\"children\":[{\"text\":\"Data\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"KKRz7bDXfkorPI9wBVb5C\",\"children\":[{\"id\":\"FxHnlelk8FHkwFfpmX8aJ\",\"children\":[{\"text\":\"Example\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"4XN99s8SA60ffifVXuQuy\",\"children\":[{\"id\":\"ZYTkrWMenkI8VgQOhxzYf\",\"children\":[{\"id\":\"Gr51jn11iI255MO5QWCyp\",\"children\":[{\"id\":\"_YZuID2s09fcIn8twtvXT\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_CHANGE_ROOM_TYPE\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"gKf4Jpv4oFFlb_ApfpIyU\",\"children\":[{\"id\":\"eKNSmYUX1vqbqvMFiBWl8\",\"children\":[{\"id\":\"GQY1S5M1ERjmRm6MVCuzB\",\"children\":[{\"text\":\"result;error_info;new_room_type;subEventType\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"vmSeIDfpb0JAQSxYluC1R\",\"children\":[{\"id\":\"lwn0yfVPk7s4wOAR4Gn1D\",\"children\":[{\"id\":\"Y5pY5Hp15EHYy2UUxQ-0N\",\"children\":[{\"text\":\"{\\\"error_info\\\":\\\"\\\",\\\"new_room_type\\\":0,\\\"subEventType\\\":0,\\\"result\\\":0}\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[33,29,38],\"widthMode\":\"percentage\"},{\"id\":\"ONF0RvVJfXZVO1teBpE9k\",\"children\":[{\"text\":\"The monitoring event of room call quality\"}],\"nodeId\":\".E6.88.BF.E9.97.B4.E9.80.9A.E8.AF.9D.E8.B4.A8.E9.87.8F.E7.9B.91.E6.8E.A7.E4.BA.8B.E4.BB.B6\",\"type\":\"h3\"},{\"id\":\"RGsr7Wcbb8Aiuam8kc_sN\",\"children\":[{\"text\":\"This is the quality monitoring event, which is triggered once every two seconds after room entry, and its message is \"},{\"code\":1,\"text\":\"ITMG_MAIN_EVENT_TYPE_CHANGE_ROOM_QUALITY\"},{\"text\":\". The returned parameters include \"},{\"code\":1,\"text\":\"weight\"},{\"text\":\", \"},{\"code\":1,\"text\":\"loss\"},{\"text\":\", and \"},{\"code\":1,\"text\":\"delay\"},{\"text\":\", which are as detailed below:\"}],\"type\":\"p\"},{\"id\":\"U6jPDho0_4aMZjqbT2d-W\",\"children\":[{\"id\":\"8sm-eethCvYpDwI0S-Zp5\",\"children\":[{\"id\":\"ttdCPM8a_xvcVlVk2FRdJ\",\"children\":[{\"id\":\"oBiF-9EYys3Y1zu20fQ3J\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"GRfLSg6z5YYK9LZoW6_v6\",\"children\":[{\"id\":\"GB48D7u26-wWLQ6DqDpEA\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"EWNKPyIghSTvCOdMj3k-g\",\"children\":[{\"id\":\"pOG6dcWpnYLch2OvBX6np\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"VSihItruSWubOv3vmzvzE\",\"children\":[{\"id\":\"sVnu-xmnE3-2cI8AlQeLY\",\"children\":[{\"id\":\"kfdLCb5ANzwJtqGVh2tq8\",\"children\":[{\"id\":\"2ai4Gj3EF_EMJjPukl0go\",\"children\":[{\"text\":\"weight\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"CJe6BpIYqmt7onRboMp1s\",\"children\":[{\"id\":\"jKQfzDoliUanubsZzlDQa\",\"children\":[{\"id\":\"Ap-pLjGcPM0LJqS5TrjJh\",\"children\":[{\"text\":\"int\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"J1maz9pct9T7Bvl_zI7gE\",\"children\":[{\"id\":\"68salU1I9Unrr6qvHFN-o\",\"children\":[{\"id\":\"9hTRKJONQax0V0Gmmomua\",\"children\":[{\"text\":\"Value range: 1–50. \"},{\"code\":1,\"text\":\"50\"},{\"text\":\" indicates excellent sound quality, \"},{\"code\":1,\"text\":\"1\"},{\"text\":\" indicates very poor (barely usable) sound quality, and \"},{\"code\":1,\"text\":\"0\"},{\"text\":\" represents an initial meaningless value. Generally, if the value is below 30, you can remind users that the network is poor and recommend them to switch the network.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"1B5PAt57_27IuA8qDtl_B\",\"children\":[{\"id\":\"tjIgaCXVY8XHME-Ph51eJ\",\"children\":[{\"id\":\"j5Bo3V5zxy6_s_Ge3KkbY\",\"children\":[{\"id\":\"WmarnfikM57vvHsQYd0ap\",\"children\":[{\"text\":\"Loss\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"GrK61KC1sEb0vaYSO0dkX\",\"children\":[{\"id\":\"bvhqkf6_wnjuSzDk-oyoQ\",\"children\":[{\"id\":\"H7F_9DD21vbUJ6HJRDgzo\",\"children\":[{\"text\":\"double\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"TFKMRgHNvl1RssECy_tUQ\",\"children\":[{\"id\":\"Dxvv44BRlRAYiRKI651IM\",\"children\":[{\"id\":\"m1hYw_gbHFyZX7wDgl0cV\",\"children\":[{\"text\":\"Upstream packet loss rate\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"wEyu3G-XovoStDRxX3d7D\",\"children\":[{\"id\":\"r0d1mIK5AG-SEo3uZylA-\",\"children\":[{\"id\":\"XNwLfcHfGg3CEpIYo8kDu\",\"children\":[{\"id\":\"YhhrH3zt7cTFsKq89q4Et\",\"children\":[{\"text\":\"Delay\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"SLXKMI6WfecNZycNW7_xJ\",\"children\":[{\"id\":\"zB4wbbMe_vlEHLFXI9zAY\",\"children\":[{\"id\":\"lEa564kh-vs9WCFaOdUNk\",\"children\":[{\"text\":\"int\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"gvkyiCF0Lah1qof0NMP08\",\"children\":[{\"id\":\"qMdV0zolpBkxtYrhy3he5\",\"children\":[{\"id\":\"ju5pAyJ30Rf_iMAyiLTH8\",\"children\":[{\"text\":\"Voice chat delay in ms\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[12,13,75],\"widthMode\":\"percentage\"},{\"id\":\"jith-QrIIKDF6WnwGofes\",\"children\":[{\"text\":\"Getting version number\"}],\"nodeId\":\".E8.8E.B7.E5.8F.96.E7.89.88.E6.9C.AC.E5.8F.B7\",\"type\":\"h3\"},{\"id\":\"V-0UtNztC--wF_OzkA8Ws\",\"children\":[{\"text\":\"This API is used to get the SDK version number for analysis.\"}],\"type\":\"p\"},{\"id\":\"3CSLxzdm4t4tCRGffyeRI\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\".E6.8E.A5.E5.8F.A3.E5.8E.9F.E5.9E.8B42\",\"type\":\"h4\"},{\"id\":\"T_B2fesnJBDtOK00PgBvz\",\"autoWrap\":false,\"children\":[{\"id\":\"UcJrkjSKtBeqvPdBqz5aP\",\"children\":[{\"text\":\"public abstract String GetSDKVersion();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"TchjftLcf0Is_JaECTJLd\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.8141\",\"type\":\"h4\"},{\"id\":\"_KHlbzxsVwWasTuqWE4f3\",\"autoWrap\":false,\"children\":[{\"id\":\"ts1s6Vpj_-cwm8eGnKEm_\",\"children\":[{\"text\":\"ITMGContext.GetInstance(this).GetSDKVersion();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"ydIdDYD58_ui67TDQjJwt\",\"children\":[{\"text\":\"Checking mic permission\"}],\"nodeId\":\".E6.A3.80.E6.9F.A5.E9.BA.A6.E5.85.8B.E9.A3.8E.E6.9D.83.E9.99.90\",\"type\":\"h3\"},{\"id\":\"ubMXBxOb0cDzjv0k96v2E\",\"children\":[{\"text\":\"This API is used to return the mic permission status.\"}],\"type\":\"p\"},{\"id\":\"MXtX0fVSeEqptrqR9cjkG\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\".E5.87.BD.E6.95.B0.E5.8E.9F.E5.9E.8B2\",\"type\":\"h4\"},{\"id\":\"rw07a6z9ULJM2xGibe8tB\",\"autoWrap\":false,\"children\":[{\"id\":\"V1_AME_onowZeM_8Da5hC\",\"children\":[{\"text\":\"public abstract ITMG_RECORD_PERMISSION CheckMicPermission();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"uoUKIUkzS-Nw0XqALZ49F\",\"children\":[{\"text\":\"Parameter description\"}],\"nodeId\":\".E5.8F.82.E6.95.B0.E5.90.AB.E4.B9.89\",\"type\":\"h4\"},{\"id\":\"v6y6bKkp_al2ElMNW-4ly\",\"children\":[{\"id\":\"pME_eG02EjXSeGE98QhPy\",\"children\":[{\"id\":\"qQib_vTUlo8DRd0mQ75zG\",\"children\":[{\"id\":\"AV4I5dlEO71EB8LpgVPaH\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"mNGIf-12flY2t9vTk6eTn\",\"children\":[{\"id\":\"Hi4rPI2Tg3ZSqfAFbcILo\",\"children\":[{\"text\":\"Value\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"-FdF-CrAPHj2-ZVgwNv6m\",\"children\":[{\"id\":\"Pun0c2ECcQern32EG55-z\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"r_AO2uAmPDae9hDKpKfWn\",\"children\":[{\"id\":\"416WwnaDFji-LQ6wO1kNs\",\"children\":[{\"id\":\"eqR_i_G5ijMTycJJitxkG\",\"children\":[{\"id\":\"Vez9O4pYuEwxONvx8gYYM\",\"children\":[{\"text\":\"ITMG_PERMISSION_GRANTED\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"wO5vW1LDmg5cmRZOC-tbe\",\"children\":[{\"id\":\"_Ob5ynJv0UsPpPnG6HFq2\",\"children\":[{\"id\":\"y0fFIWKI-o7Zr7m18X4lB\",\"children\":[{\"text\":\"0\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"QV7CqUsT4bjwjqmdn-0-n\",\"children\":[{\"id\":\"vXBU-cGqCY5BabUxYaPjL\",\"children\":[{\"id\":\"32htKnz92rCCz2_HjhSWq\",\"children\":[{\"text\":\"The mic permission is granted.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"ra0HzkWmK8Wg0oLBemc8f\",\"children\":[{\"id\":\"F0fbn6l2Sum0WUSD7vgzR\",\"children\":[{\"id\":\"rn_gxgxviEbxrNLsvL71O\",\"children\":[{\"id\":\"wfn61lLgb3X0upXnu02Lg\",\"children\":[{\"text\":\"ITMG_PERMISSION_Denied\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"TDskKq3t-Olf8FVyCsahV\",\"children\":[{\"id\":\"k4D-fs4SIvYIIsNq2G3xY\",\"children\":[{\"id\":\"IldngbCZyTIkYuVawR3gT\",\"children\":[{\"text\":\"1\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Em4UpTg_P2aqNX3cK15eu\",\"children\":[{\"id\":\"dVGUb8h_35IOgZgKuaATk\",\"children\":[{\"id\":\"yNw_xTmgyOjP2Cg_k9Cqf\",\"children\":[{\"text\":\"Microphone disabled.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"8uLN-JYxRAYOFmOMvlcSn\",\"children\":[{\"id\":\"0-BeF4IV6nz1tai8OmvFN\",\"children\":[{\"id\":\"u_x9TbEZWq0NiTtBT54_s\",\"children\":[{\"id\":\"8JA1lGFgXJ4Lqm7Ijn2PL\",\"children\":[{\"text\":\"ITMG_PERMISSION_NotDetermined\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"-5YfZdwTlWwaIWzVTcEMk\",\"children\":[{\"id\":\"vPuwf-tzH9VI4mxKnG3Nh\",\"children\":[{\"id\":\"FfM8VylGDQm1BD77h0mtv\",\"children\":[{\"text\":\"2\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"bKs9rk73--PR7hYiqjkuY\",\"children\":[{\"id\":\"kS3Xrb9jP_UZZCS7zfe32\",\"children\":[{\"id\":\"IJe1Cos2I7eP5ZV7giYC8\",\"children\":[{\"text\":\"No authorization box has been popped up to request the permission.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"45MH2e_w1r1iKDMV2OAx6\",\"children\":[{\"id\":\"FWnmakjf7Jt9G7JXbn1_j\",\"children\":[{\"id\":\"kAy_LTjWZpTGweCRsweFG\",\"children\":[{\"id\":\"8UYxd0Nf4DUoW2xG77shs\",\"children\":[{\"text\":\"ITMG_PERMISSION_ERROR\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"hw_Uwu9xi2_Eoe0bdzOI9\",\"children\":[{\"id\":\"6FjVmu4p2cgd245i6wv7p\",\"children\":[{\"id\":\"oNOL7qUNlhxKNaUc0PC7g\",\"children\":[{\"text\":\"3\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"rqdxS2MMaxGmnemHvB0wn\",\"children\":[{\"id\":\"EZeO14FM-gMVwKpeZKDQ1\",\"children\":[{\"id\":\"_zmA67gZm5w9qpvDIMiGo\",\"children\":[{\"text\":\"An error occurred while calling the API.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[33,8,59],\"widthMode\":\"percentage\"},{\"id\":\"s-2Fymq7h_G31ei4kM3cT\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.8142\",\"type\":\"h4\"},{\"id\":\"EQ-Tl0iIWnqLZ048aGe1Y\",\"autoWrap\":false,\"children\":[{\"id\":\"9bmykNV82cu_DefRbcMuw\",\"children\":[{\"text\":\"ITMGContext.GetInstance(this).CheckMicPermission();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"eID4bD2Tkthhcf9NB1OwI\",\"children\":[{\"text\":\"Checking mic status\"}],\"nodeId\":\".E6.A3.80.E6.9F.A5.E9.BA.A6.E5.85.8B.E9.A3.8E.E8.AE.BE.E5.A4.87.E7.8A.B6.E6.80.81\",\"type\":\"h3\"},{\"id\":\"rcvKXstIfmN-rpMmG7s4B\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\".E5.87.BD.E6.95.B0.E5.8E.9F.E5.9E.8B3\",\"type\":\"h4\"},{\"id\":\"81ss3Ajr9vJsS5EY0g22O\",\"autoWrap\":false,\"children\":[{\"id\":\"6bs3tPmz-YRu4OLw3bcWl\",\"children\":[{\"text\":\"public abstract ITMG_CHECK_MIC_STATUS CheckMic();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"crS-Ej2xPK1XIHmr-cSz1\",\"children\":[{\"text\":\"Returned value handling\"}],\"nodeId\":\".E8.BF.94.E5.9B.9E.E5.80.BC.E5.A4.84.E7.90.86\",\"type\":\"h4\"},{\"id\":\"MHndMjc_lC0nriRGDnyEB\",\"children\":[{\"id\":\"XZXkhlTgbDt3YOr21bnjU\",\"children\":[{\"id\":\"PwnYBf37dlWdc9YyChnfn\",\"children\":[{\"id\":\"meccEexPbZ2i4Byo1oEwd\",\"children\":[{\"text\":\"Returned Value\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"eWxZIM5m3MqdA_EPSTRkw\",\"children\":[{\"id\":\"Qv8rGpe7Jdbg_Fdhntne0\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ZzgFaL-kf5bwaomVS28zH\",\"children\":[{\"id\":\"8cxR7db_JkRvafCcOuJmS\",\"children\":[{\"text\":\"Handling\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"SMim_BBXKF_DHVK9UDm3U\",\"children\":[{\"id\":\"xUrmsDPQhFlaUYxGmTwnv\",\"children\":[{\"id\":\"kgZUyh5Mkxcm_ugT7U0O5\",\"children\":[{\"id\":\"XkswmNabUM-ptq3jr53Fe\",\"children\":[{\"text\":\"ITMG_CHECK_MIC_STATUS_AVAILABLE = 0\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"GFy2b7oeiwz1l7Nj8Dvhv\",\"children\":[{\"id\":\"6k0OhMYGbFpliPEVJES-b\",\"children\":[{\"id\":\"WZWWIy1Y29MaWvDYAxCGf\",\"children\":[{\"text\":\"Normally available\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"KgP8JVMLhKE1SoSKY4op8\",\"children\":[{\"id\":\"HF6JG4onVoe1sTgNeSfer\",\"children\":[{\"id\":\"jBFwwgthveLNxs9FM5FJw\",\"children\":[{\"text\":\"No handling required\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"VwxbDL-PU1WDMCoSo2bbg\",\"children\":[{\"id\":\"OGbLBN-BHxG5fKfZvZxAy\",\"children\":[{\"id\":\"bB38iZmdOn6tnoBhBtb_A\",\"children\":[{\"id\":\"BU08-BCggJBeRJfn-Onwz\",\"children\":[{\"text\":\"ITMG_CHECK_MIC_STATUS_NO_GRANTED = 2\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"z3jWJGjfds67rRzUMQKUq\",\"children\":[{\"id\":\"VBWzQu-4hAmJJqncjDNzG\",\"children\":[{\"id\":\"qNMrCtIDU0hkR3WNAeQ8w\",\"children\":[{\"text\":\"Access not obtained/denied\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"uR3FBhMGaZheyVElbq3Tm\",\"children\":[{\"id\":\"ZAulRMHauCmRqXmYnLzAj\",\"children\":[{\"id\":\"9qU-6Tol7H5iJK9PAcajW\",\"children\":[{\"text\":\"The access permission needs to be obtained before the mic is enabled.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"Ugulg-Wcdx6uC83qU7Ww9\",\"children\":[{\"id\":\"2kmWqf3exgn4L6WF3jp93\",\"children\":[{\"id\":\"1S_1WBYlBxgY8Tb4jfJlb\",\"children\":[{\"id\":\"2KMWXsdKifR4fcniFwW2W\",\"children\":[{\"text\":\"ITMG_CHECK_MIC_STATUS_INVALID_MIC = 3\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"v1EEF0Gs2oZ5P0Emof1Tx\",\"children\":[{\"id\":\"IB1AHQxnlyjVkFEZgU3T3\",\"children\":[{\"id\":\"JrZ66dBebbSdbmTj2d_ZZ\",\"children\":[{\"text\":\"No device available\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"O9yim1E3rn42I9S6Jox4N\",\"children\":[{\"id\":\"KYx-9mL5Co5P3Iju5kJ8Y\",\"children\":[{\"id\":\"P2Z9s6CpbMcdcHcqV1htA\",\"children\":[{\"text\":\"Generally, this error will be reported on PCs when no mics are available. Prompt the user to insert a headset or mic.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"6xIezhAHvO4kiyGKgrGz0\",\"children\":[{\"id\":\"qrm5JUhOg0eb4BiIqQhPj\",\"children\":[{\"id\":\"gry39Qdvp2IjuK7o5jzAR\",\"children\":[{\"id\":\"wsZP69xgLhYPN3LTMSKri\",\"children\":[{\"text\":\"ITMG_CHECK_MIC_STATUS_NOT_INIT = 5\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"pcWB8PVpmTJ4xYwzgy4Xk\",\"children\":[{\"id\":\"doKNE8owpUKEJMHgla7_2\",\"children\":[{\"id\":\"ysIWUY9aqCZUrvhaU5Uuq\",\"children\":[{\"text\":\"Not initialized\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"1ThX0-TWWROYJq6xiaWfa\",\"children\":[{\"id\":\"yZoNGsggFCTChwjYx6W0d\",\"children\":[{\"id\":\"94Py4btfa_YUxRfx3icak\",\"children\":[{\"text\":\"Call \"},{\"code\":1,\"text\":\"EnableMic\"},{\"text\":\" after \"},{\"code\":1,\"text\":\"Init\"},{\"text\":\".\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[26,16,58],\"widthMode\":\"percentage\"},{\"id\":\"w2wDewQ49CrWGkUK9qzJQ\",\"children\":[{\"text\":\"Setting log printing level\"}],\"nodeId\":\".E8.AE.BE.E7.BD.AE.E6.89.93.E5.8D.B0.E6.97.A5.E5.BF.97.E7.AD.89.E7.BA.A7\",\"type\":\"h3\"},{\"id\":\"6ai5_jzczj_6PEVf7wOZZ\",\"children\":[{\"text\":\"This API is used to set the level of logs to be printed, and needs to be called before the initialization. It is recommended to keep the default level.\"}],\"type\":\"p\"},{\"id\":\"GJFFTIB1FCv53WYZKd3cR\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\".E6.8E.A5.E5.8F.A3.E5.8E.9F.E5.9E.8B43\",\"type\":\"h4\"},{\"id\":\"3S0dSlARya06-mjZipXZL\",\"autoWrap\":false,\"children\":[{\"id\":\"g2JK2hLZGl2LPewDFNvYP\",\"children\":[{\"text\":\"public abstract int SetLogLevel(int levelWrite, int levelPrint);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"0WYkS0KI7iKbEHdNWayap\",\"children\":[{\"text\":\"Parameter description\"}],\"nodeId\":\".E5.8F.82.E6.95.B0.E5.90.AB.E4.B9.892\",\"type\":\"h4\"},{\"id\":\"x6FyhX2a046cwFW7UoWVy\",\"children\":[{\"id\":\"GdRZjeW-uJc7pZOlMR3DS\",\"children\":[{\"id\":\"QHNxzb_g1SG_oUVybXHvx\",\"children\":[{\"id\":\"guU-MmO6VJge8lsAY2lvr\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"HH5GDfq6ayY5sFS-iavqe\",\"children\":[{\"id\":\"w9mfKIZlzF4QpFehRkiRJ\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"nFgRqUDT-jCXc7Htk4WQH\",\"children\":[{\"id\":\"S9IceVe73uo5QKqJ7n0q0\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"3XGT7ZfoBBzKBllTl5e13\",\"children\":[{\"id\":\"Me-SOjoM9GSF3zSCp05tb\",\"children\":[{\"id\":\"PBmOGfzdlnct1qV_c81Zh\",\"children\":[{\"id\":\"RX7Ga3lQwppFIu76qxWsT\",\"children\":[{\"text\":\"levelWrite\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"O93aNlTtxacmdHpfx-w5z\",\"children\":[{\"id\":\"IPLXuJH6Hv0gjlGOQ_tOs\",\"children\":[{\"id\":\"s1j7vxnuRq87fLWPpXNg-\",\"children\":[{\"text\":\"ITMG_LOG_LEVEL\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"t0oi54TVuL4hQe6kwLmKB\",\"children\":[{\"id\":\"DbA2vqM8Zw50pDr7-DF6Q\",\"children\":[{\"id\":\"wrpdj739cVX_1gip8WN8h\",\"children\":[{\"text\":\"Sets the level of logs to be written. \"},{\"code\":1,\"text\":\"TMG_LOG_LEVEL_NONE\"},{\"text\":\" indicates not to log. Default value: \"},{\"code\":1,\"text\":\"TMG_LOG_LEVEL_INFO\"},{\"text\":\".\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"_A-7Y0N8ySJTzpu_vAfNb\",\"children\":[{\"id\":\"YE5B_DnGUl-NkcJdmLmHZ\",\"children\":[{\"id\":\"HGlTy7ibiXIQwdLFFI_x1\",\"children\":[{\"id\":\"aalpn10nn9Xvn-v_Nl-P-\",\"children\":[{\"text\":\"levelPrint\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"7ohBP6LOJtrOM-056M3vs\",\"children\":[{\"id\":\"EnerQQaZtPOde3-Y_cTUf\",\"children\":[{\"id\":\"6AklJFxal8sCPgB3jm5gY\",\"children\":[{\"text\":\"ITMG_LOG_LEVEL\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"plRk69MElBayrjZE6oPIo\",\"children\":[{\"id\":\"yv48NYNSstrZuNxpG7sq5\",\"children\":[{\"id\":\"cRSC6Rgx9h_I8naDHU8i-\",\"children\":[{\"text\":\"Sets the level of logs to be printed. \"},{\"code\":1,\"text\":\"TMG_LOG_LEVEL_NONE\"},{\"text\":\" indicates not to print. Default value: \"},{\"code\":1,\"text\":\"TMG_LOG_LEVEL_ERROR\"},{\"text\":\".\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[14,18,68],\"widthMode\":\"percentage\"},{\"id\":\"67SNU2XUQhlfzg6_LPCdO\",\"children\":[{\"code\":1,\"text\":\"ITMG_LOG_LEVEL\"},{\"text\":\" description:\"}],\"type\":\"p\"},{\"id\":\"ENLxvYPBq-_2B-VH_43f1\",\"children\":[{\"id\":\"CiFfbSrnjxd4xiCuOl3QA\",\"children\":[{\"id\":\"or6DpnvGDsNrP3moW6xki\",\"children\":[{\"id\":\"pT0r6beWMfJOq7Yg7hT2r\",\"children\":[{\"text\":\"ITMG_LOG_LEVEL\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ZWs1Pg8FksKxqCh_uEfqj\",\"children\":[{\"id\":\"V7v-Wd537bQCOpX_LgNEm\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"SXHNafQulNTMoKtbkP6qw\",\"children\":[{\"id\":\"4CSGapZxkYd-cfaqelRM9\",\"children\":[{\"id\":\"b_AvUaSsPyQYXsBNobpn4\",\"children\":[{\"id\":\"JzRd4WYciDDvQQPSqJHSS\",\"children\":[{\"text\":\"TMG_LOG_LEVEL_NONE\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"DFXyHZy0dbC_SgKn-v7R8\",\"children\":[{\"id\":\"ZSi-_GdbbUXAUJSALhVyE\",\"children\":[{\"id\":\"n0u5S1sXpjaxUwbOBUMgu\",\"children\":[{\"text\":\"Does not print logs\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"6kLZWqS4tRryjRHy3ror3\",\"children\":[{\"id\":\"0JBq6N39ZPN-Vl9W-wXdA\",\"children\":[{\"id\":\"CEgbo1iWpTMVNz7oANiDx\",\"children\":[{\"id\":\"3rHZdA_nb-zR5DtQ-rRQL\",\"children\":[{\"text\":\"TMG_LOG_LEVEL_ERROR\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"NtgLg83NjrysMIFJ68oIW\",\"children\":[{\"id\":\"vclcFBDT5iPDLshcpqUFX\",\"children\":[{\"id\":\"juxR_7XLQ_lYrBt-zH-GA\",\"children\":[{\"text\":\"Prints error logs (default)\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"ouTe5qHSgJbDmQh9w52Dk\",\"children\":[{\"id\":\"GvlFt8jBSA6JYXOje8pxo\",\"children\":[{\"id\":\"8tkjDxMmAaAdbW9amMSIk\",\"children\":[{\"id\":\"6eeSXBFKq_ptlaet0u1Td\",\"children\":[{\"text\":\"TMG_LOG_LEVEL_INFO\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"IMatJpFz4s5QdhBxudwwr\",\"children\":[{\"id\":\"hikfNDRsTZB-SVwK5G-ca\",\"children\":[{\"id\":\"mDNaL4zs2W1SZnD7_8Bu8\",\"children\":[{\"text\":\"Prints info logs\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"N4LwAIPkp-daZ_YAd4pNC\",\"children\":[{\"id\":\"FRrJUt6P8vZO7Bm68RhZR\",\"children\":[{\"id\":\"OZxqmsQOA8XGPVepCtCAy\",\"children\":[{\"id\":\"j9NhcIbjYbw4pV6OcQUio\",\"children\":[{\"text\":\"TMG_LOG_LEVEL_DEBUG\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"cC1mnUMhBInrJKDBkzDt3\",\"children\":[{\"id\":\"JJa5yy_VGsippm9NQgXTw\",\"children\":[{\"id\":\"JH9CeoajuFERePPJPvB0d\",\"children\":[{\"text\":\"Prints debug logs\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"MV_eDsy11OoJJv15xIS-e\",\"children\":[{\"id\":\"nO2PubtDdQwnok6BjnadJ\",\"children\":[{\"id\":\"fOCWF7WOa64i2mF84Axn5\",\"children\":[{\"id\":\"8yb_H41tdAqgEoGEqydPp\",\"children\":[{\"text\":\"TMG_LOG_LEVEL_VERBOSE\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"6PK5TQ8u-60sP8SDx81UV\",\"children\":[{\"id\":\"4WpnRPKrQaaQ5yiaCCRJq\",\"children\":[{\"id\":\"CoFn8O-VrBn46_-dHJwHb\",\"children\":[{\"text\":\"Prints verbose logs\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[43,57],\"widthMode\":\"percentage\"},{\"id\":\"Fvv1GLPMg43S-erQNKES7\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.8143\",\"type\":\"h4\"},{\"id\":\"wuFhML8nWdiwRhTJDB7Hy\",\"autoWrap\":false,\"children\":[{\"id\":\"pUcIJ2olODzd5CeL_Wzin\",\"children\":[{\"text\":\"ITMGContext.GetInstance(this).SetLogLevel(TMG_LOG_LEVEL_INFO,TMG_LOG_LEVEL_INFO);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"VxS9lbQsPTuuWHh2tiL1l\",\"children\":[{\"text\":\"Setting the log printing path\"}],\"nodeId\":\".E8.AE.BE.E7.BD.AE.E6.89.93.E5.8D.B0.E6.97.A5.E5.BF.97.E8.B7.AF.E5.BE.84\",\"type\":\"h3\"},{\"id\":\"XknaQfAq73K5VSDOk5p6C\",\"children\":[{\"text\":\"This API is used to set the log printing path, and needs to be called before initialization. The default path is /sdcard/Android/data/xxx.xxx.xxx/files.\"}],\"type\":\"p\"},{\"id\":\"P1xNMGhgbmkkh_5fON93w\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\".E6.8E.A5.E5.8F.A3.E5.8E.9F.E5.9E.8B44\",\"type\":\"h4\"},{\"id\":\"1knVwlt_krlT7icbViO7R\",\"autoWrap\":false,\"children\":[{\"id\":\"_LO7w1y2gxhSD7Y7E152R\",\"children\":[{\"text\":\"public abstract int SetLogPath(String logDir);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"VzNDHsyEfbMcaFRN7xxKK\",\"children\":[{\"id\":\"SuD1kHFw_tL5ortM1PvHf\",\"children\":[{\"id\":\"Ubrq7p3mvFWk24RGlplds\",\"children\":[{\"id\":\"nHUlXHcYBbFe8GjlMu0rm\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"dL8pujvACWJy-Q9W-Zz1y\",\"children\":[{\"id\":\"FQquCUyVtoH2d3pOtjuDN\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"zXO1enhZqCuoOGhr-GQd6\",\"children\":[{\"id\":\"V5t5KBwnQ3VpyR2jot_o_\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"ZTm3AB1TUiRW26dvUc5IR\",\"children\":[{\"id\":\"l7cO4GHKkNWN4cpaCyFaA\",\"children\":[{\"id\":\"XfTij--mcX5CbtNOVy5Pp\",\"children\":[{\"id\":\"1XsRbm-oOQrIySaPk_Sv_\",\"children\":[{\"text\":\"logDir\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"s4ZMzrz3Y7ntFKcGHl67F\",\"children\":[{\"id\":\"DQ2OfbYzJT27kED2Rs_Lp\",\"children\":[{\"id\":\"Mzor5zJTUbOzN2jHMQjMt\",\"children\":[{\"text\":\"String\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"zTDxjia-yHsNzaDlH-A4N\",\"children\":[{\"id\":\"147pd6cC6kEHd9LwegX4H\",\"children\":[{\"id\":\"_M0x5G8BuzXk2lv51zzjE\",\"children\":[{\"text\":\"Path\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[36,25,39],\"widthMode\":\"percentage\"},{\"id\":\"QSHjt0TSydcb_eZ_ulBFm\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.8144\",\"type\":\"h4\"},{\"id\":\"zc-ZfhTu5_amuoo5jRlSe\",\"autoWrap\":false,\"children\":[{\"id\":\"tri1u2f13WxjRHD4FEqMr\",\"children\":[{\"text\":\"ITMGContext.GetInstance(this).SetLogPath(path);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"lt42ayZln1e65fnd0qzHm\",\"children\":[{\"text\":\"Getting the diagnostic messages\"}],\"nodeId\":\".E8.8E.B7.E5.8F.96.E8.AF.8A.E6.96.AD.E4.BF.A1.E6.81.AF\",\"type\":\"h3\"},{\"id\":\"1zzG5asMIP8GWx20Dfj35\",\"children\":[{\"text\":\"This API is used to get information on the quality of real-time audio/video calls, which is mainly used to view real-time call quality and troubleshoot and can be ignored on the business side.\"}],\"type\":\"p\"},{\"id\":\"XdCw1J6QUh3Yy0vFpjJTc\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\".E6.8E.A5.E5.8F.A3.E5.8E.9F.E5.9E.8B45\",\"type\":\"h4\"},{\"id\":\"lLnV3Kg5r0yu-KnduS3HD\",\"autoWrap\":false,\"children\":[{\"id\":\"bmEU9SaMNdAOzmU11RyJQ\",\"children\":[{\"text\":\"public abstract String GetQualityTips();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"GHIwB85h9WJrUJmyzHUeQ\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.8145\",\"type\":\"h4\"},{\"id\":\"al3VIcol0whC7vrT7A65e\",\"autoWrap\":false,\"children\":[{\"id\":\"WktXux12T8SiM3p-EA0_T\",\"children\":[{\"text\":\"ITMGContext.GetInstance(this).GetRoom().GetQualityTips();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"PCADHdpLbnpZ0SkuquZ_k\",\"children\":[{\"text\":\"Callback Messages\"}],\"nodeId\":\".E5.9B.9E.E8.B0.83.E6.B6.88.E6.81.AF\",\"type\":\"h2\"},{\"id\":\"7Ml05SSg2yErw1Od-qKRv\",\"children\":[{\"id\":\"KkQbPXcBuejRnV6NspW7X\",\"children\":[{\"id\":\"wegCdfUqPuVQ5EG8b3nmP\",\"children\":[{\"id\":\"r4_iha5bW9Lc9MoiJBfpR\",\"children\":[{\"text\":\"Message\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"230Xs3A_b8_39-TmsP7Gw\",\"children\":[{\"id\":\"R_FqR49BAPxRppP0BH7Z9\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"wgaWkU8ePo3jhkIRDRZrc\",\"children\":[{\"id\":\"B89f4VlNEP6SA_vIds2wP\",\"children\":[{\"text\":\"Data\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"p3nUEAWviRBmXNFb6RSOD\",\"children\":[{\"id\":\"WIowFJJpBDTA7tf7s24w-\",\"children\":[{\"text\":\"Example\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"X6DY4-7Iz7BF1J6XrFCZ9\",\"children\":[{\"id\":\"7FdtCzECpFDeL3G3y549Q\",\"children\":[{\"id\":\"Tow_tM4eXgxcmqi4rwRLH\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_ENTER_ROOM\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"moPMf0UA0nTxzu-roVR8o\",\"children\":[{\"id\":\"gO_n5Od7bzZ0-2On4cyIu\",\"children\":[{\"text\":\"A member entered the audio room.\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"kJqmUP2N8QpplRfCW6GDi\",\"children\":[{\"id\":\"ub0SRzH4RHDvb705wwtQc\",\"children\":[{\"text\":\"result; error_info\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Imglgzhq64OFecPHN9KIw\",\"children\":[{\"id\":\"dXjCXqVJ3DoHv2fF6B8ej\",\"children\":[{\"text\":\"{\\\"error_info\\\":\\\"\\\",\\\"result\\\":0}\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"SEPqQJkMrO87bB9PVEVHp\",\"children\":[{\"id\":\"ad7GN1Qxl09FfmOU_CMq3\",\"children\":[{\"id\":\"Ng-xf_22019s0hfewWjv0\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_EXIT_ROOM\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"If-od4KRoLy6vTs7Gmw9L\",\"children\":[{\"id\":\"OqxhN68zjMYk58BgGz-5k\",\"children\":[{\"text\":\"A member exited the audio room.\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"HsVXTeagR7RgQeSNr4wAH\",\"children\":[{\"id\":\"4T-Y6GKBwT4hqOTCS8OT_\",\"children\":[{\"text\":\"result; error_info\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"DInmsSnrTUlRcL571Dg8g\",\"children\":[{\"id\":\"qGMbpsaP59pbFeyNy7O9u\",\"children\":[{\"text\":\"{\\\"error_info\\\":\\\"\\\",\\\"result\\\":0}\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"k6Jo4Wbpog_85v9EMPNU8\",\"children\":[{\"id\":\"Sb7lE0Hw_l5_lRGLq7MBx\",\"children\":[{\"id\":\"jIl_ifLyVA3sD4ISmlUfq\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_ROOM_DISCONNECT\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"kJNqrd2cAh1KjUApLKrtQ\",\"children\":[{\"id\":\"0A5GgB9hNlIMkUikY5_n1\",\"children\":[{\"text\":\"The room was disconnected due to a network or another issue.\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"NAeUVQs_5Fm9cxnkuKq9a\",\"children\":[{\"id\":\"VF7TyF2rimOADq8jpjPBl\",\"children\":[{\"text\":\"result; error_info\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"se5k9ZQkhGaSs63846_QT\",\"children\":[{\"id\":\"bdNOGJtfTpEtF3dX98RpP\",\"children\":[{\"text\":\"{\\\"error_info\\\":\\\"waiting timeout, please check your network\\\",\\\"result\\\":0}\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"M3HxHGqn1FgwHekGYHUkS\",\"children\":[{\"id\":\"KP81NA1UVJ3tKY1ZDACzr\",\"children\":[{\"id\":\"lA78QWy1Ke8Jy8mGAt3aw\",\"children\":[{\"text\":\"ITMG_MAIN_EVNET_TYPE_USER_UPDATE\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ekAHiXrcuERoyrvKOaP07\",\"children\":[{\"id\":\"AYXPnLq7n9w_ENKPSvVji\",\"children\":[{\"text\":\"Room members were updated.\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"BiwjgQeGMep3I4JMydGhN\",\"children\":[{\"id\":\"sP4mw0kmPPLuQYqxY9ZLc\",\"children\":[{\"text\":\"user_list; event_id\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"bV4l-8N22OJyQcAkiAvai\",\"children\":[{\"id\":\"4bTxVvn-0FK0nWygyzqmR\",\"children\":[{\"text\":\"{\\\"event_id\\\":1,\\\"user_list\\\":[\"},{\"text\":\"\\\"0\\\"\"},{\"text\":\"]}\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"6VLnDTp4h5qrLpBF3Fwk8\",\"children\":[{\"id\":\"JxYql53QXd7Nfw7iwpxYS\",\"children\":[{\"id\":\"S0hl7YY83IAqY3Nsc0ITe\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_RECONNECT_START\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"3GfSZDlElqvB5yhqZvVxC\",\"children\":[{\"id\":\"UChbd064nANMjaz_DpmBT\",\"children\":[{\"text\":\"The reconnection to the room started.\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"NELwh6juOuFluVmBv6RqS\",\"children\":[{\"id\":\"ndZ1UKQzDzNkHk-Snp_3V\",\"children\":[{\"text\":\"result; error_info\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"vdbSCEzM3ZiTlPXOiSTdr\",\"children\":[{\"id\":\"STkW9hmW-evQ0hpuBR8W1\",\"children\":[{\"text\":\"{\\\"error_info\\\":\\\"\\\",\\\"result\\\":0}\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"pwRusHlGLtc3hHtAS9g8y\",\"children\":[{\"id\":\"Rlo_Be2dsOtUc6DLn0SYu\",\"children\":[{\"id\":\"NW00nk3Vsd7JBsmlbvrz8\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_RECONNECT_SUCCESS\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"pDO23ut876Wo3hFhdYIs_\",\"children\":[{\"id\":\"Du_VM8a74FVrkw4t2KasK\",\"children\":[{\"text\":\"The reconnection to the room succeeded.\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"OQ2TOlrDG6PAtrbUWM2Ms\",\"children\":[{\"id\":\"zkpK-H6gFkDu2KcPQqBQK\",\"children\":[{\"text\":\"result; error_info\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"rNydeJ0rJazx3-YsIgr1D\",\"children\":[{\"id\":\"8ZlrALhhu2XBE9NnxmBi8\",\"children\":[{\"text\":\"{\\\"error_info\\\":\\\"\\\",\\\"result\\\":0}\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"uWzdXzNWC-rwPFbeZfNPu\",\"children\":[{\"id\":\"MVqihbTNpTgSmYrfILop0\",\"children\":[{\"id\":\"3xBr5ZyLC-mnoNBqrniCw\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_SWITCH_ROOM\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"aOmuMYWUCjgeDaUtlKhyT\",\"children\":[{\"id\":\"LwH3H-53obtRLeOou7uSS\",\"children\":[{\"text\":\"The room was quickly switched.\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"KK92Nw-Tefwljef60re86\",\"children\":[{\"id\":\"wSfP9LnhdOmtxgkKuG61q\",\"children\":[{\"text\":\"result; error_info\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"nYVO4vvanV1DNqEvBlwaf\",\"children\":[{\"id\":\"KQzW16qklW6jcdcqm47qc\",\"children\":[{\"text\":\"{\\\"error_info\\\":\\\"\\\",\\\"result\\\":0}\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"q7gsDoxZ2LsQbfk3-6jv5\",\"children\":[{\"id\":\"zQdoVoiET_l4mUhuCMrpz\",\"children\":[{\"id\":\"bM9lQgkClcIhfenxfBrgN\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_CHANGE_ROOM_TYPE\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"IYILBfYSL5LPkf6REj0CY\",\"children\":[{\"id\":\"CQtmnt5OEsRXxFeMpiZXg\",\"children\":[{\"text\":\"The room status was changed.\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"p0JTCjztMRibBC1rtxK-e\",\"children\":[{\"id\":\"2YakHFbRbv_gR5x8P-eWM\",\"children\":[{\"text\":\"result; error_info; sub_event_type; new_room_type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"xXJNqu9vMDMooVH1RibL3\",\"children\":[{\"id\":\"Wok9sZHFuK0J3rQuYEi-F\",\"children\":[{\"text\":\"{\\\"error_info\\\":\\\"\\\",\\\"new_room_type\\\":0,\\\"result\\\":0}\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"PcJBVCwjOFA1sal1FLPS_\",\"children\":[{\"id\":\"FKYQFyCQGYJa9ukmdYEY1\",\"children\":[{\"id\":\"9ltxHnZfBoBwXLAmA9fnh\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_ROOM_SHARING_START\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"IxsZtFx8FkhZb3nJRb9ug\",\"children\":[{\"id\":\"l-DNPd-scV4iS1uio_TXK\",\"children\":[{\"text\":\"Cross-room mic connect started.\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"0_nluLZd_05kpN-F0Duwz\",\"children\":[{\"id\":\"nJTG1x-ka7BT2gnCVv2TS\",\"children\":[{\"text\":\"result;\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"20y6wmcQhzB0G-d_USI9H\",\"children\":[{\"id\":\"yuAsTqaevNVZFZ6jTqCqh\",\"children\":[{\"text\":\"{\\\"result\\\":0}\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"gcyN2YSmDu39dlcDZ23cn\",\"children\":[{\"id\":\"hMiJHNT0kcX1d2Kyu4LQR\",\"children\":[{\"id\":\"HSkQU4ogBSq74JvdZDFyu\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_ROOM_SHARING_STOP\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Ro_SnAlW7cHHw5Su3BjxF\",\"children\":[{\"id\":\"gdbzmgBHjcb9p9o2tNjBF\",\"children\":[{\"text\":\"Cross-room mic connect stopped.\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"a3Iv0m7exmtHJNkZG-1Jx\",\"children\":[{\"id\":\"o9PbMDqWnCnIB0YJsj045\",\"children\":[{\"text\":\"result;\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"P77fCZ7FFYO4aBviknjEG\",\"children\":[{\"id\":\"D9Pd7l3kvRpVrsGIyFht_\",\"children\":[{\"text\":\"{\\\"result\\\":0}\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"w55-2jalOeiaIgupEEP7u\",\"children\":[{\"id\":\"JUnWjrmi_Aok8LkVYosvv\",\"children\":[{\"id\":\"rYNlnCASxpjxQJEVnyCT_\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_SPEAKER_DEFAULT_DEVICE_CHANGED\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"l7jyn6WD8eU6UP1RbDS9U\",\"children\":[{\"id\":\"Ph95fpxYjL3ak97Mmgdq8\",\"children\":[{\"text\":\"The default speaker was changed.\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"_jzRh-fdqFShV749geuOu\",\"children\":[{\"id\":\"Umzwwrp7cySFJ9PY9tj5l\",\"children\":[{\"text\":\"result; error_info\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"MLyAZNwH3RlVL9LDk3vTP\",\"children\":[{\"id\":\"1QLTA6IdG8gTAAouHSKI5\",\"children\":[{\"text\":\"{\\\"deviceID\\\":\\\"{0.0.0.00000000}.{a4f1e8be-49fa-43e2-b8cf-dd00542b47ae}\\\",\\\"deviceName\\\":\\\"Speaker (Realtek High Definition Audio)\\\",\\\"error_info\\\":\\\"\\\",\\\"isNewDevice\\\":true,\\\"isUsedDevice\\\":false,\\\"result\\\":0}\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"CuaoYRR8fw72z2vf0-48t\",\"children\":[{\"id\":\"HRicrbtK7I7URfOsVv9bt\",\"children\":[{\"id\":\"Yff-eaRYr76PLyHZC8WeF\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_SPEAKER_NEW_DEVICE\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"qoKF7B40rGwN7e3dWssOA\",\"children\":[{\"id\":\"jarZFr0P48SxblU3NrETj\",\"children\":[{\"text\":\"A new speaker was added.\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"-1blNJcCVwbqsFxcroktE\",\"children\":[{\"id\":\"rdUqCpfhXX64I9T54Gi32\",\"children\":[{\"text\":\"result; error_info\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"L3QHx5Y_xm5A9nD4jR-0C\",\"children\":[{\"id\":\"wGhOfCIHzOwGjl4ghvolQ\",\"children\":[{\"text\":\"{\\\"deviceID\\\":\\\"{0.0.0.00000000}.{a4f1e8be-49fa-43e2-b8cf-dd00542b47ae}\\\",\\\"deviceName\\\":\\\"Speaker (Realtek High Definition Audio)\\\",\\\"error_info\\\":\\\"\\\",\\\"isNewDevice\\\":true,\\\"isUsedDevice\\\":false,\\\"result\\\":0}\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"vdqw8KSxr7hsWu_AYBOFo\",\"children\":[{\"id\":\"V7Qbq9kbdz6h7eOUgXcVd\",\"children\":[{\"id\":\"-8W77c1nGn4MAbmXvXdSr\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_SPEAKER_LOST_DEVICE\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"qRVyG0ELXyGCIAOCd04mY\",\"children\":[{\"id\":\"R4bRpDaRTkCqn1F148Mz3\",\"children\":[{\"text\":\"A speaker was lost.\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"DV9cA1kup2rLYVQdi-uBk\",\"children\":[{\"id\":\"dlClcFCgYej6_aCp_4aJl\",\"children\":[{\"text\":\"result; error_info\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"9KRB5a5l2YMDKWqRXhYWw\",\"children\":[{\"id\":\"uLybzF9rs_3CjAKIJFv8E\",\"children\":[{\"text\":\"{\\\"deviceID\\\":\\\"{0.0.0.00000000}.{a4f1e8be-49fa-43e2-b8cf-dd00542b47ae}\\\",\\\"deviceName\\\":\\\"Speaker (Realtek High Definition Audio)\\\",\\\"error_info\\\":\\\"\\\",\\\"isNewDevice\\\":false,\\\"isUsedDevice\\\":false,\\\"result\\\":0}\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"Nn703g42sH91FTRpbpA6w\",\"children\":[{\"id\":\"dhJObBxVzXbNxmYMuKqM4\",\"children\":[{\"id\":\"-sxg3Y3LwHs0OEol8slWf\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_MIC_NEW_DEVICE\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"xfKvxgJ9EhVgaekQTjqZE\",\"children\":[{\"id\":\"ql5zxAeHHqCa3b83UK59Y\",\"children\":[{\"text\":\"A new mic was added.\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"KdUItK4HgXn9-Hjfj3ACM\",\"children\":[{\"id\":\"riuQGc7xGjCU1TOtdl2pj\",\"children\":[{\"text\":\"result; error_info\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"7Jjae4L_qXmZvymx9tZeV\",\"children\":[{\"id\":\"LBigjo4XNVku2aVmy4s90\",\"children\":[{\"text\":\"{\\\"deviceID\\\":\\\"{0.0.1.00000000}.{5fdf1a5b-f42d-4ab2-890a-7e454093f229}\\\",\\\"deviceName\\\":\\\"Mic (Realtek High Definition Audio)\\\",\\\"error_info\\\":\\\"\\\",\\\"isNewDevice\\\":true,\\\"isUsedDevice\\\":true,\\\"result\\\":0}\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"Ytcb5pLdzEsL6gdZzTyOj\",\"children\":[{\"id\":\"IoIg9DkeAUuGO8S2HQCFI\",\"children\":[{\"id\":\"SJSlAq9prdA-ofXvV1THU\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_MIC_LOST_DEVICE\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"4vXScgWNyRQbgkvR9KD-7\",\"children\":[{\"id\":\"PMSUNdvN0-2Ox_rAd1QW3\",\"children\":[{\"text\":\"A mic was lost.\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"zaoatM_N07oMIHnD2WrF8\",\"children\":[{\"id\":\"RbtSQshnAzREZzD500y0c\",\"children\":[{\"text\":\"result; error_info\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"F1VoVgu-VpaEcf4-jWrd2\",\"children\":[{\"id\":\"VHEJa1CfSFSka6VyzG9Kj\",\"children\":[{\"text\":\"{\\\"deviceID\\\":\\\"{0.0.1.00000000}.{5fdf1a5b-f42d-4ab2-890a-7e454093f229}\\\",\\\"deviceName\\\":\\\"Mic (Realtek High Definition Audio)\\\",\\\"error_info\\\":\\\"\\\",\\\"isNewDevice\\\":false,\\\"isUsedDevice\\\":true,\\\"result\\\":0}\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"iiSKIltYxusrsrEbgUO4F\",\"children\":[{\"id\":\"oPcBtnZklNJPhEeHgYzmP\",\"children\":[{\"id\":\"2a9AH5PbKTK-ZHJsbRRps\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_MIC_DEFAULT_DEVICE_CHANGED\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"YzIvJq-a50PISmv4Gouiw\",\"children\":[{\"id\":\"lmOT1fF9kIJ1GSMzwzbSC\",\"children\":[{\"text\":\"The default mic was changed.\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"9-hJpfGfloNcy3kcJ_ZsG\",\"children\":[{\"id\":\"ddKNjlBMy8cLeAZr9hDWK\",\"children\":[{\"text\":\"result; error_info\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"uPDLHZvVuT6G3susOX1Kg\",\"children\":[{\"id\":\"_oJObVIbDzlyHqBM1LWvR\",\"children\":[{\"text\":\"{\\\"deviceID\\\":\\\"{0.0.1.00000000}.{5fdf1a5b-f42d-4ab2-890a-7e454093f229}\\\",\\\"deviceName\\\":\\\"Mic (Realtek High Definition Audio)\\\",\\\"error_info\\\":\\\"\\\",\\\"isNewDevice\\\":false,\\\"isUsedDevice\\\":true,\\\"result\\\":0}\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"KPD8-bxztHgwEEIO7d-A1\",\"children\":[{\"id\":\"yh3RMalIQB8wLlqkZgRRT\",\"children\":[{\"id\":\"cWVegFaYDziS9W1mk4H-X\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_CHANGE_ROOM_QUALITY\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"LBeDEn0gqZj6hQlPvcLM6\",\"children\":[{\"id\":\"sTU4SllZPHVPNTaneY4gp\",\"children\":[{\"text\":\"The room quality changed.\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"1eGZlEGRjLIs1wwTKji4j\",\"children\":[{\"id\":\"VOksuP3O9TzH0l93zMuuY\",\"children\":[{\"text\":\"weight; loss; delay\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ArwetP4lpNdhz5BSGET40\",\"children\":[{\"id\":\"cfKGThXNJY1Vl_UTa7Ohq\",\"children\":[{\"text\":\"{\\\"weight\\\":5,\\\"loss\\\":0.1,\\\"delay\\\":1}\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"EYe0408Nth6wZkS5Gu3AD\",\"children\":[{\"id\":\"XqoFHZp_N7_WB03NuYHW2\",\"children\":[{\"id\":\"zrsaGpb0fdIgM5gGRskcX\",\"children\":[{\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_RECORD_COMPLETE\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"lr1ZqSlL6lHyvVwFNtERF\",\"children\":[{\"id\":\"NkvPck5dyJ7yPuh8rLGys\",\"children\":[{\"text\":\"Voice message recording was completed.\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"YSrIZXXcXpK6A4DzTqlxP\",\"children\":[{\"id\":\"_DiHEb02T9cMdPuwGVV7-\",\"children\":[{\"text\":\"result; file_path\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"3VnikUfWqPODMvqkMo8eI\",\"children\":[{\"id\":\"q-sKE6QU5SunzvsyCeDDZ\",\"children\":[{\"text\":\"{\\\"file_path\\\":\\\"\\\",\\\"result\\\":0}\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"YP-gi45_WPzK6v8Cgzf7O\",\"children\":[{\"id\":\"xfnGEVpd1F7FiLxyx2WPj\",\"children\":[{\"id\":\"PEvA8Kr3tk5nThtNC5xL4\",\"children\":[{\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_UPLOAD_COMPLETE\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"_lPFapMGun0cIQkOdIATD\",\"children\":[{\"id\":\"e9lnEwsyf0Q73ztmku9Ns\",\"children\":[{\"text\":\"Voice message upload was completed.\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"t_UF2oe7QSCUDYDF1Aq8V\",\"children\":[{\"id\":\"JLodoFt7L6w-5XXri5AyF\",\"children\":[{\"text\":\"result; file_path;file_id\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"EUdmsbrGuGStjgQBA8hWt\",\"children\":[{\"id\":\"GMwZaX52qLXqrhRG0ITJN\",\"children\":[{\"text\":\"{\\\"file_id\\\":\\\"\\\",\\\"file_path\\\":\\\"\\\",\\\"result\\\":0}\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"L1zLlo0y7R_4Zzt1QNrff\",\"children\":[{\"id\":\"l5chd8umAtwVtM18jt9bN\",\"children\":[{\"id\":\"PKKqezTOb7xiha4Oyz7FY\",\"children\":[{\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_DOWNLOAD_COMPLETE\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"PCrr4lG09wh_2wz-JqOmC\",\"children\":[{\"id\":\"bDQsFr2JMxeThr_NMvJbb\",\"children\":[{\"text\":\"Voice message download was completed.\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"t0G5tusWkZ30H2GeSjTZu\",\"children\":[{\"id\":\"kJOV-bWrA6ScFoPEdPawI\",\"children\":[{\"text\":\"result; file_path;file_id\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"9nrcZCJ9gNmv6M-OcgkSZ\",\"children\":[{\"id\":\"muuPuNdv_hHFYbZNyLs2p\",\"children\":[{\"text\":\"{\\\"file_id\\\":\\\"\\\",\\\"file_path\\\":\\\"\\\",\\\"result\\\":0}\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"3FN427PDjFhFzvNUubf4D\",\"children\":[{\"id\":\"BjIQve6PS-Rqjs55cJGWO\",\"children\":[{\"id\":\"SmGXdF2zsEHL4HeX6AeDa\",\"children\":[{\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_PLAY_COMPLETE\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"TCGP3SI-Ck_uGeA26wXU5\",\"children\":[{\"id\":\"CBse4fSc4ypWCyS6BPlfS\",\"children\":[{\"text\":\"Voice message playback was completed.\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"gCdR3rOhCB4INqPcXzqiD\",\"children\":[{\"id\":\"fyjqQB4rFfB5U0t4tsM8B\",\"children\":[{\"text\":\"result; file_path\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"dW3vakQTt_W2l18Lp95a1\",\"children\":[{\"id\":\"cRhTt6lR5jkN09zIu7gqU\",\"children\":[{\"text\":\"{\\\"file_path\\\":\\\"\\\",\\\"result\\\":0}\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"V-rad9a8VoDIhLtuTzpbd\",\"children\":[{\"id\":\"4mvnH8mbvsD7W1zuRUbiA\",\"children\":[{\"id\":\"JfXX5OUecnNxCd-YaEVKA\",\"children\":[{\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_SPEECH2TEXT_COMPLETE\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"mYZl7AYxELI8jPHHz-88Q\",\"children\":[{\"id\":\"6z8kXxlWMBUt4hbaXBFiW\",\"children\":[{\"text\":\"Fast speech-to-text conversion was completed.\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"1qDKn2b_BGJmwHAMGg4m6\",\"children\":[{\"id\":\"I71ZcNh9eICKGl5E0QBoA\",\"children\":[{\"text\":\"result; text;file_id\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"yiGbgmzY6MH6OmLa2jS1d\",\"children\":[{\"id\":\"gC_ASdG9dfyHnasU8bqio\",\"children\":[{\"text\":\"{\\\"file_id\\\":\\\"\\\",\\\"text\\\":\\\"\\\",\\\"result\\\":0}\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"ojO1UKlwIYYt4NQ19FgOZ\",\"children\":[{\"id\":\"Tf1T82TaM9zLthB1-1YTa\",\"children\":[{\"id\":\"6agU1wQBOljG0q9aqONEC\",\"children\":[{\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRECOGNITION_COMPLETE\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"cmlX-J6DcuzPQXxsSsLKg\",\"children\":[{\"id\":\"kiIK2uvhUlAn1woYcFpD3\",\"children\":[{\"text\":\"Streaming speech-to-text conversion was completed.\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"YWiX79SWNh47FaaDLsYZ3\",\"children\":[{\"id\":\"L6jLDT8fynreDMxzd4P-Q\",\"children\":[{\"text\":\"result; file_path; text;file_id\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"KpJ9XyEZF9v-58mvoDtly\",\"children\":[{\"id\":\"VD3FUma6F8mrUse_aB87u\",\"children\":[{\"text\":\"{\\\"file_id\\\":\\\"\\\",\\\"file_path\\\":\\\",\\\"text\\\":\\\"\\\",\\\"result\\\":0}\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"rBZFkPRBGkT9SmFwlNjS7\",\"children\":[{\"id\":\"--qIKqAyniq0ffGvPDRC6\",\"children\":[{\"id\":\"maU3vgQohpbo7ereAfK93\",\"children\":[{\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRECOGNITION_IS_RUNNING\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"tMjaSLjSKTn2ugvy71SO0\",\"children\":[{\"id\":\"IB_J7I2oxKwWNeWru6_Oq\",\"children\":[{\"text\":\"Streaming speech-to-text conversion is in progress.\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"QjaSeE3Y8YHZLoPrcq7NA\",\"children\":[{\"id\":\"0GZmVS1lnsI_iyho1BptG\",\"children\":[{\"text\":\"result; file_path; text;file_id\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"fXcRXbAMz0As1YOC2Jolp\",\"children\":[{\"id\":\"ohAfAyiYmqPsYSVCuarYX\",\"children\":[{\"text\":\"{\\\"file_id\\\":\\\"\\\",\\\"file_path\\\":\\\",\\\"text\\\":\\\"\\\",\\\"result\\\":0}\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"6yr5AHDZs-PPRwHDGboiK\",\"children\":[{\"id\":\"pShI4Wtg5zQOhh46ElQtC\",\"children\":[{\"id\":\"OZrxRETAdAc8Yzf-ESoC-\",\"children\":[{\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_TEXT2SPEECH_COMPLETE\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"jV0cwGYKC3LT0hH3XZ1cf\",\"children\":[{\"id\":\"PSV06Hiklmubb3tOLdQ-I\",\"children\":[{\"text\":\"Text-to-speech conversion was completed.\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"DHJ8G8Ao--Yap58ze7Mzt\",\"children\":[{\"id\":\"n-9AVaaWVLynqDz9hh8xs\",\"children\":[{\"text\":\"result; text;file_id\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Gq5MXiNbNX1z6WXPeJIL9\",\"children\":[{\"id\":\"nPUXW6jiisngUtE-8rPgN\",\"children\":[{\"text\":\"{\\\"file_id\\\":\\\"\\\",\\\"text\\\":\\\"\\\",\\\"result\\\":0}\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"HtJfOiSz0ucZyCZrSuQOj\",\"children\":[{\"id\":\"v3aZWrGYVZlpkFY8GuPqW\",\"children\":[{\"id\":\"fIlQCe0oGOhN15cPVPekb\",\"children\":[{\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_TRANSLATE_TEXT_COMPLETE\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"f0OQWaU7h4Wp2fqL2Ic2S\",\"children\":[{\"id\":\"H0L0AKj4F4WlJFht6iY6R\",\"children\":[{\"text\":\"Text translation was completed.\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"dkNIJ8d1W8nTeQlNsTZpu\",\"children\":[{\"id\":\"yErvC082L-FcVA4HUVbPM\",\"children\":[{\"text\":\"result; text;file_id\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"fwNEcxBqf5W4YC_xt3F1f\",\"children\":[{\"id\":\"dViQ-DiRRKELSuLY9GUAv\",\"children\":[{\"text\":\"{\\\"file_id\\\":\\\"\\\",\\\"text\\\":\\\"\\\",\\\"result\\\":0}\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[21,17,15,47],\"widthMode\":\"percentage\"},{\"id\":\"3QmQinQmfH1p_6qmvKQFY\",\"children\":[{\"text\":\"\"}],\"type\":\"p\"}]"}},"40861":{"categoryId":607,"weight":160,"type":"page","extension":"","pid":15176,"id":40861,"lang":"en","title":"Speech-to-Text Service","pdfUrl":"","docType":"default","children":[],"firstReleaseTime":"2021-06-22 23:05:08","recentReleaseTime":"2021-06-22 23:05:08","content":{"title":"Speech-to-Text Service","body":"
This document describes how to integrate with and debug the GME APIs to implement speech-to-text service for Android.
Note:
This document applies to GME SDK version 2.9.

Key Considerations for Using GME

GME provides voice chat service, voice messaging and speech-to-text services and they rely on core APIs such as Init and Poll.
Note:
There is a default call rate limit for speech-to-text APIs. For more information on how calls are billed within the limit, see Purchase Guide. If you want to increase the limit or learn more about how excessive calls are billed, submit a ticket.
Non-streaming speech-to-text API SpeechToText(): There can be up to 10 concurrent requests per account.
Streaming speech-to-text API StartRecordingWithStreamingRecognition(): There can be up to 50 concurrent requests per account.
Voice chat streaming speech-to-text API StartRealTimeASR(): There can be up to 50 concurrent requests per account.
\"image\"

Notes on the Init API
If you need to use voice chat and voice messaging services at the same time, you only need to call Init API once.\nThe billing will not start after initialization. Receiving or sending a voice message in speech-to-text service is counted as a voice message DAU.

Directions

1. Initializing GME
2. Calling Poll periodically to trigger callbacks
3. Initializing authentication
4. Starting streaming speech-to-text conversion
5. Stopping recording
6. Uninitializing GME

Important notes

Configure your project before using GME; otherwise, the SDK will not take effect.
After a GME API is called successfully, QAVError.OK will be returned with the value being 0.
GME APIs should be called in the same thread.
The Poll API should be called periodically for GME to trigger event callbacks.
For detailed error codes, see Error Codes.

Voice message for Android class

Class
Description
ITMGContext
Core APIs
ITMGPTT
Voice messaging and speech-to-text APIs

Core APIs

Before the initialization, the SDK is in the uninitialized status, and you need to initialize it through the Init API before you can use the voice chat and speech-to-text services.
Call the Init API before calling any APIs of GME.
If you have any questions when using the service, see General.
API
Description
Init
Initializes GME.
Poll
Triggers an event callback.
Pause
Pauses the system.
Resume
Resumes the system.
Uninit
Uninitializes GME.
Note:
If you need to switch the account, please call UnInit to uninitialize the SDK. No fee is incurred for calling Init API.

Getting singleton

To use the voice feature, get the ITMGContext object first.

Sample code

import com.tencent.TMG.ITMGContext;
ITMGContext.getInstance(this);

Registering callback

The API class uses the Delegate method to send callback notifications to the application. Register the callback function to the SDK for receiving callback messages.

Function prototype

Override this callback function in the constructor to process the parameters of the callback.
static public abstract class ITMGDelegate {
public void OnEvent(ITMG_MAIN_EVENT_TYPE type, Intent data){}
}
Parameter
Type
Description
type
ITMGContext.ITMG_MAIN_EVENT_TYPE
Event type in the callback response
data
Intent message type
Callback message, i.e., event data

Sample code

Register the callback function to the SDK before room entry.
private ITMGContext.ITMGDelegate itmgDelegate = null;
itmgDelegate = new ITMGContext.ITMGDelegate() {
@Override
public void OnEvent(ITMGContext.ITMG_MAIN_EVENT_TYPE type, Intent data) {
if (ITMGContext.ITMG_MAIN_EVENT_TYPE.ITMG_MAIN_EVENT_TYPE_ENTER_ROOM == type)
{
// Analyze the returned data
int nErrCode = data.getIntExtra("result" , -1);
String strErrMsg = data.getStringExtra("error_info");
}
}
}

Function prototype

public abstract int SetTMGDelegate(ITMGDelegate delegate);
Parameter
Type
Description
delegate
ITMGDelegate
SDK callback function

Sample code

ITMGContext.GetInstance(this).SetTMGDelegate(itmgDelegate);

Initializing the SDK

This API is used to initialize the GME service. We recommend that you call it when initializing the application. No fees are incurred for calling this API.
For more information on how to get the sdkAppID parameter, see Activating Services.
openID uniquely identifies a user with the rules stipulated by you. It must be unique in the application and can only be in Int64 type.
Note:
The Init API must be called in the same thread with other APIs. It is recommended to call all APIs in the main thread.

Function prototype

public abstract int Init(String sdkAppId, String openId);
Parameter
Type
Description
sdkAppId
String
AppId from the GME console
openId
String
OpenId can only be in Int64 type, which is passed in after being converted to a string.
Returned Value
Description
QAVError.OK= 0
The SDK was initialized successfully.
AV_ERR_SDK_NOT_FULL_UPDATE=7015
Checks whether the SDK file is complete. We recommend that you delete it and then import it again.
The returned value AV_ERR_SDK_NOT_FULL_UPDATE is only a reminder but will not cause an initialization failure.
If this error is reported during integration, check the integrity and version of the SDK file as prompted.
If this error is returned after executable file export, ignore it and avoid displaying it on the UI.

Sample code

String sdkAppID = "14000*****";
String openID = "100";
int ret = ITMGContext.GetInstance(this).Init(sdkAppId, openId);
if(ret != 0){
Log.e(TAG,"SDK initialization failed");
}

Triggering event callback

Event callbacks can be triggered by periodically calling the Poll API in update. The Poll API should be called periodically for GME to trigger event callbacks; otherwise, the entire SDK service will run exceptionally.\nYou can refer to the EnginePollHelper.java file in the demo.
Note:
The Poll API must be called periodically and in the main thread to avoid abnormal API callbacks.

Function prototype

public abstract int Poll();

Sample code

private Handler mhandler = new Handler();
private Runnable mRunnable = new Runnable() {
@Override
public void run() {
if (s_pollEnabled) {
if (ITMGContext.GetInstance(null) != null)
ITMGContext.GetInstance(null).Poll();
}
mhandler.postDelayed(mRunnable, 33);
}
};

Pausing the system

When a Pause event occurs in the system, the engine should also be notified for pause.\nIf you need to pause the audio when switching to the background, you can call the Pause API in the listening code used to switch to the background, and call the Resume API in the listening event used to resume the foreground.

Function prototype

public abstract int Pause();

Resuming the system

When a Resume event occurs in the system, the engine should also be notified for resumption. The Resume API only supports resuming voice chat.

Function prototype

public abstract int Resume();

Uninitializing SDK

This API is used to uninitialize the SDK to make it uninitialized. Switching accounts requires uninitialization.

Function prototype

public abstract int Uninit();

Voice Messaging and Speech-to-Text

Voice messaging refers to recording and sending a voice message. At the same time, the voice message can be converted to text and translated, as shown below:

\"\"


Note:
We recommend that you use the streaming speech-to-text service.
You do not need to enter a voice chat room when using the voice messaging service.

Voice messaging and speech-to-text conversion flowchart


\"\"



Integrating Voice Messaging and Speech-to-Text Service

Voice messaging and speech-to-text APIs

API
Description
ApplyPTTAuthbuffer
Initializes authentication.
SetMaxMessageLength
Specifies the maximum duration of a voice message.
StartRecording
Starts recording.
StartRecordingWithStreamingRecognition
Starts streaming recording.
PauseRecording
Pauses recording.
ResumeRecording
Resumes recording.
StopRecording
This API is used to stop audio recording.
CancelRecording
Cancels recording.
GetMicLevel
Gets the real-time mic volume level.
SetMicVolume
Sets the recording volume level.
GetMicVolume
Gets the recording volume level.
GetSpeakerLevel
Gets the real-time speaker volume level.
SetSpeakerVolume
Sets the playback volume level.
GetSpeakerVolume
Gets the playback volume level.
UploadRecordedFile
Uploads an audio file.
DownloadRecordedFile
Downloads an audio file.
PlayRecordedFile
Plays back an audio file.
StopPlayFile
Stops playing back an audio file.
GetFileSize
Gets the audio file size.
GetVoiceFileDuration
Gets the audio file duration.
SpeechToText
Converts speech to text.
Maximum recording duration
The maximum recording duration of a voice message is 58 seconds by default, and the minimum recording duration cannot be less than 1 second. If you want to customize the recording duration, for example, to modify the maximum recording duration to 10 seconds, please call the SetMaxMessageLength API to set it after initialization.

Initializing the SDK

Before the initialization, the SDK is in the uninitialized status, and you need to initialize it through the Init API before you can use the voice chat and voice message services.
If you have any questions when using the service, see Speech-to-text Conversion.

Authentication information

Generate AuthBuffer for encryption and authentication of relevant features. For release in the production environment, use the backend deployment key as detailed in Authentication Key. To get the authentication key for voice messaging and speech-to-text services, the room ID parameter must be set to null.

Function prototype

AuthBuffer public native byte[] genAuthBuffer(int sdkAppId, String roomId, String openId, String key)
Parameter
Type
Description
appId
int
AppId from the Tencent Cloud console
roomId
string
Room ID, which must be set to null.
openId
string
User ID, which is the same as openId during initialization.
key
string
Permission key from the Tencent Cloud console.

Sample code

import com.tencent.av.sig.AuthBuffer;// Header file
byte[] authBuffer = AuthBuffer.getInstance().genAuthBuffer(Integer.parseInt(sdkAppId), "0",openId, key);

Authentication initialization

Call authentication initialization after initializing the SDK. For more information on how to get the authBuffer, see genAuthBuffer (the voice chat authentication information API).

Function prototype

public abstract int ApplyPTTAuthbuffer(byte[] authBuffer);
Parameter
Type
Description
authBuffer
String
Authentication

Sample code

byte[] authBuffer = AuthBuffer.getInstance().genAuthBuffer(Integer.parseInt(sdkAppId), "0", openId, key);
ITMGContext.GetInstance(this).GetPTT().ApplyPTTAuthbuffer(authBuffer);

Streaming Speech Recognition

Starting streaming speech recognition

This API is used to start streaming speech recognition. Text obtained from speech-to-text conversion will be returned in real time in its callback. It can specify a language for recognition or translate the information recognized in speech into a specified language and return the translation. To stop recording, call StopRecording. The callback will be returned after the recording is stopped.

Function prototype

public abstract int StartRecordingWithStreamingRecognition (String filePath);
public abstract int StartRecordingWithStreamingRecognition (String filePath,String language,String translatelanguage);
public abstract int StopRecording();
Parameter
Type
Description
filePath
String
Path of the stored audio file
speechLanguage
String
The language in which the audio file is to be converted into text. For parameters, see Language Parameter Reference List.
translateLanguage
String
The language into which the audio file is to be translated into text. For parameters, see Language Parameter Reference List. (This parameter is currently unavailable. Enter the same value as that of speechLanguage.)

Sample code

String temple = getActivity().getExternalFilesDir(null).getAbsolutePath() + "/test_"+(index++)+".ptt";
ITMGContext.GetInstance(getActivity()).GetPTT().StartRecordingWithStreamingRecognition(temple,"cmn-Hans-CN","cmn-Hans-CN");

Callback for streaming speech recognition

After streaming speech recognition is started, you need to listen for callback messages in the callback function onEvent. Event messages are divided into:
ITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRECOGNITION_COMPLETE returns text after the recording is stopped and the recognition is completed, which is equivalent to returning the recognized text after a paragraph of speech.
ITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRECOGNITION_IS_RUNNING returns the recognized text in real time during the recording, which is equivalent to returning the recognized text while speaking.
The event message will be identified in the OnEvent function based on the actual needs. The delivered event message contains the following four parameters.
Parameter
Description
result
Return code indicating whether streaming speech-to-text conversion is successful
text
Text converted from speech
file_path
Local path of the stored recording file
file_id
Backend URL address of the recording file, which will be retained for 90 days. This field is fixed at http://gme-v2-.
Note:
The file_id is empty when the 'ITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRecognition_IS_RUNNING' message is listened.

Error codes

Error Code
Description
Solution
32775
Streaming speech-to-text conversion failed, but recording succeeded.
Call the UploadRecordedFile API to upload the recording file and then call the SpeechToText API to perform speech-to-text conversion.
32777
Streaming speech-to-text conversion failed, but recording and upload succeeded.
The message returned contains a backend URL after successful upload. Call the SpeechToText API to perform speech-to-text conversion.
32786
Streaming speech-to-text conversion failed.
During streaming recording, wait for the execution result of the streaming recording API to return.

Sample code

public void OnEvent(ITMGContext.ITMG_MAIN_EVENT_TYPE type, Intent data) {
if (ITMGContext.ITMG_MAIN_EVENT_TYPE.ITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRECOGNITION_COMPLETE == type)
{
/Callback for streaming voice message and speech-to-text
Handler mainHander = new Handler(Looper.getMainLooper());
mainHander.post(new Runnable() {
@Override
public void run() {
if (nErrCode ==0) {

String textString = templeData.getStringExtra("text");
EditText _editText = (EditText) root.findViewById(R.id.edit_audio_to_text);
_editText.setText(textString);

recordfilePath = templeData.getStringExtra("file_path");
mEditTextfiletoupload.setText(recordfilePath);

donwLoadUrlPath = templeData.getStringExtra("file_id");
mEditTextDownloadurl.setText(donwLoadUrlPath);

Log.e(TARGET, "STREAMINGRECOGNITION" + "nErrCode=" + nErrCode + ", content=" + textString+"recordfilePath"+recordfilePath+"donwLoadUrlPath"+donwLoadUrlPath);
}
else
{

Toast.makeText(getActivity(), String.format("Streaming speech-to-text conversion failed. Error code: %d",nErrCode), Toast.LENGTH_SHORT).show();
Log.e(TARGET, "Streaming speech-to-text conversion failed. Error code"+nErrCode);
}
}
});
}
}

Voice Message Recording

The recording process is as follows: start recording > stop recording > return recording callback > start the next recording.

Specifying the maximum duration of voice message

This API is used to specify the maximum duration of a voice message, which can be up to 58 seconds.

Function prototype

public abstract int SetMaxMessageLength(int msTime);
Parameter
Type
Description
msTime
int
Audio duration in ms. Value range: 1000 < msTime < 58000.

Sample code

ITMGContext.GetInstance(this).GetPTT().SetMaxMessageLength(msTime);

Starting recording

This API is used to start recording. The recording file must be uploaded first before you can perform operations such as speech-to-text conversion. To stop recording, call StopRecording.

Function prototype

public abstract int StartRecording(String filePath);
Parameter
Type
Description
filePath
String
Path of the stored audio file

Sample code

ITMGContext.GetInstance(this).GetPTT().StartRecording(filePath);

Stopping recording

This API is used to stop recording. It is async, and a callback for recording completion will be returned after recording stops. A recording file will be available only after recording succeeds.

Function prototype

public abstract int StopRecording();

Sample code

ITMGContext.GetInstance(this).GetPTT().StopRecording();

Callback for recording start

A callback will be executed through a delegate function to pass a message when recording is completed.
To stop recording, call StopRecording. The callback for recording start will be returned after the recording is stopped.
The callback function OnEvent will be called after recording is started. The event message ITMG_MAIN_EVNET_TYPE_PTT_RECORD_COMPLETE will be returned, which will be identified in the OnEvent function.\nThe passed parameter includes result and file_path.

Error codes

Error Code
Reasons
Suggested Solution
4097
Empty parameters.
Check whether the API parameters in the code are correct.
4098
An initialization error occurred.
Check whether the device is being used, whether the permissions are normal, and whether the initialization is normal.
4099
Recording is in progress.
Make sure that the SDK recording feature is used at the right time.
4100
No audio data is captured.
Check whether the mic is working properly.
4101
An error occurred while accessing the file during recording.
Ensure the existence of the file and the validity of the file path.
4102
The mic is not authorized.
The mic permission is required for using the SDK. To add the permission, see the SDK project configuration document for the corresponding engine or platform.
4103
The recording duration is too short.
The recording duration should be in ms and longer than 1,000 ms.
4104
No recording operation is started.
Check whether the recording starting API has been called.

Sample code

public void OnEvent(ITMGContext.ITMG_MAIN_EVENT_TYPE type, Intent data) {
if (ITMGContext.ITMG_MAIN_EVENT_TYPE.ITMG_MAIN_EVNET_TYPE_PTT_RECORD_COMPLETE == type)
{
// Callback for recording start
if (nErrCode ==0)
{
recordfilePath = templeData.getStringExtra("file_path");
mEditTextfiletoupload.setText(recordfilePath);
}
}
}

Pausing recording

This API is used to pause recording. If you want to resume recording, call the ResumeRecording API.

Function prototype

public abstract int PauseRecording();

Sample code

ITMGContext.GetInstance(this).GetPTT().PauseRecording();

Resuming recording

This API is used to resume recording.

Function prototype

public abstract int ResumeRecording();

Sample code

ITMGContext.GetInstance(this).GetPTT().ResumeRecording();

Canceling recording

This API is used to cancel recording. There is no callback after cancellation.

Function prototype

public abstract int CancelRecording();

Sample code

ITMGContext.GetInstance(this).GetPTT().CancelRecording();

Getting the real-time mic volume of voice message

This API is used to get the real-time mic volume. An int-type value will be returned. Value range: 0-200.
This API is different from the voice chat API and is in ITMGPTT.java.

Function prototype

public abstract int GetMicLevel();

Sample code

ITMGContext.GetInstance(this).GetPTT().GetMicLevel();

Setting the recording volume of voice message

This API is used to set the recording volume of voice message. Value range: 0-200.
This API is different from the voice chat API and is in ITMGPTT.java.

Function prototype

public abstract int SetMicVolume(int volume);

Sample code

ITMGContext.GetInstance(this).GetPTT().SetMicVolume(100);

Getting the recording volume of voice message

This API is used to get the recording volume of voice message. An int-type value will be returned. Value range: 0-200.
This API is different from the voice chat API and is in ITMGPTT.java.

Function prototype

public abstract int GetMicVolume();

Sample code

ITMGContext.GetInstance(this).GetPTT().GetMicVolume();

Getting the real-time speaker volume of voice message

This API is used to get the real-time speaker volume. An int-type value will be returned. Value range: 0-200.
This API is different from the voice chat API and is in ITMGPTT.java.

Function prototype

public abstract int GetSpeakerLevel();

Sample code

ITMGContext.GetInstance(this).GetPTT().GetSpeakerLevel();

Setting the playback volume of voice message

This API is used to set the playback volume of voice message. Value range: 0-200.
This API is different from the voice chat API and is in ITMGPTT.java.

Function prototype

public abstract int SetSpeakerVolume(int volume);

Sample code

ITMGContext.GetInstance(this).GetPTT().SetSpeakerVolume(100);

Getting the playback volume of voice message

This API is used to get the playback volume of voice message. An int-type value will be returned. Value range: 0-200.
This API is different from the voice chat API and is in ITMGPTT.java.

Function prototype

public abstract int GetSpeakerVolume();

Sample code

ITMGContext.GetInstance(this).GetPTT().GetSpeakerVolume();

Voice Message Playback

Playing back audio

This API is used to play back audio.

Function prototype

public abstract int PlayRecordedFile(String filePath);public abstract int PlayRecordedFile(String filePath,int voicetype);
Parameter
Type
Description
downloadFilePath
String
Local audio file path
voicetype
int
Voice changing type. For more information, see Voice Changing.

Error codes

Error Code
Reasons
Suggested Solution
20485
Playback is not started.
Ensure the existence of the file and the validity of the file path.

Sample code

ITMGContext.GetInstance(this).GetPTT().PlayRecordedFile(downloadFilePath);

Callback for audio playback

After the audio is played back, the event message ITMG_MAIN_EVNET_TYPE_PTT_PLAY_COMPLETE will be returned, which will be identified in the OnEvent function.\nThe passed parameter includes result and file_path.

Error codes

Error Code
Reasons
Suggested Solution
20481
An initialization error occurred.
Check whether the device is being used, whether the permissions are normal, and whether the initialization is normal.
20482
During playback, the client tried to interrupt and play back the next one but failed (which should succeed normally).
Check whether the code logic is correct.
20483
Empty parameters.
Check whether the API parameters in the code are correct.
20484
An internal error occurred.
An error occurred while initializing the player. This error code is generally caused by failure in decoding, and the error should be located with the aid of logs.

Sample code

public void OnEvent(ITMGContext.ITMG_MAIN_EVENT_TYPE type, Intent data) {
if(ITMGContext.ITMG_MAIN_EVNET_TYPE_PTT_PLAY_COMPLETE== type)
\t{
// Callback for audio playback
}
}

Stopping audio playback

This API is used to stop audio playback. There will be a callback for playback completion when the playback stops.

Function prototype

public abstract int StopPlayFile();

Sample code

ITMGContext.GetInstance(this).GetPTT().StopPlayFile();

Getting audio file size

This API is used to get the size of an audio file.

Function prototype

public abstract int GetFileSize(String filePath);
Parameter
Type
Description
filePath
String
Path of the audio file, which is a local path.

Sample code

ITMGContext.GetInstance(this).GetPTT().GetFileSize(path);

Getting audio file duration

This API is used to get the duration of an audio file in milliseconds.

Function prototype

public abstract int GetVoiceFileDuration(String filePath);
Parameter
Type
Description
filePath
String
Path of the audio file, which is a local path.

Sample code

ITMGContext.GetInstance(this).GetPTT().GetVoiceFileDuration(path);

Voice Message Upload and Download

Uploading an audio file

This API is used to upload an audio file.

Function prototype

public abstract int UploadRecordedFile(String filePath);
Parameter
Type
Description
filePath
String
Path of the uploaded audio file, which is a local path.

Sample code

ITMGContext.GetInstance(this).GetPTT().UploadRecordedFile(filePath);

Callback for audio file upload completion

After the audio file is uploaded, the event message ITMG_MAIN_EVNET_TYPE_PTT_UPLOAD_COMPLETE will be returned, which will be identified in the OnEvent function.\nThe passed parameters include result, file_path, and file_id.

Error codes

Error Code
Reasons
Suggested Solution
8193
An error occurred while accessing the file during upload.
Ensure the existence of the file and the validity of the file path.
8194
Signature verification failed.
Check whether the authentication key is correct and whether the voice messaging and speech-to-text feature is initialized.
8195
Network error
Check whether the device can access the internet.
8196
The network failed while getting the upload parameters.
Check whether the authentication is correct and whether the device network can normally access the internet.
8197
The packet returned during the process of getting the upload parameters is empty.
Check whether the authentication is correct and whether the device network can normally access the internet.
8198
Failed to decode the packet returned during the process of getting the upload parameters.
Check whether the authentication is correct and whether the device network can normally access the internet.
8200
appinfo is not set.
Check whether the apply API is called or whether the input parameter is not specified or null.

Sample code

public void OnEvent(ITMGContext.ITMG_MAIN_EVENT_TYPE type, Intent data) {
if(ITMGContext.ITMG_MAIN_EVENT_TYPE.ITMG_MAIN_EVNET_TYPE_PTT_UPLOAD_COMPLETE== type)
{
// Callback for audio file upload completion
}
}

Downloading the audio file

This API is used to download an audio file.

Function prototype

public abstract int DownloadRecordedFile(String fileID, String filePath);
Parameter
Type
Description
fileID
String
File URL
downloadFilePath
String
Local path of the saved file

Sample code

ITMGContext.GetInstance(this).GetPTT().DownloadRecordedFile(url,path);

Callback for audio file download completion

After the audio file is downloaded, the event message ITMG_MAIN_EVNET_TYPE_PTT_DOWNLOAD_COMPLETE will be returned, which will be identified in the OnEvent function. The passed parameters include resultfile_path and file_id.

Error codes

Error Code
Reasons
Suggested Solution
12289
An error occurred while accessing the file during download.
Check whether the file path is valid.
12290
Signature verification failed.
Check whether the authentication key is correct and whether the voice messaging and speech-to-text feature is initialized.
12291
A network storage system exception occurred.
The server failed to get the audio file. Check whether the API parameter fileid is correct, whether the network is normal, and whether the file exists in COS.
12292
A server file system error occurred.
Check whether the device can access the internet and whether the file exists on the server.
12293
The HTTP network failed while getting the download parameters.
Check whether the device can access the internet.
12294
The packet returned during the process of getting the download parameters is empty.
Check whether the device can access the internet.
12295
Failed to decode the packet returned during the process of getting the download parameters.
Check whether the device can access the internet.
12297
appinfo is not set.
Check whether the authentication key is correct and whether the voice messaging and speech-to-text feature is initialized.

Sample code

public void OnEvent(ITMGContext.ITMG_MAIN_EVENT_TYPE type, Intent data) {
if(ITMGContext.ITMG_MAIN_EVNET_TYPE_PTT_DOWNLOAD_COMPLETE== type)
{
//Download succeeded
}
}

Speech-to-Text Service

Converting audio file to text

This API is used to convert a specified audio file to text.

Function prototype

public abstract int SpeechToText(String fileID);
Parameter
Type
Description
fileID
String
Audio file URL

Sample code

ITMGContext.GetInstance(this).GetPTT().SpeechToText(fileID);

Translating audio file into text in specified language

This API can specify a language for recognition or translate the information recognized in speech into a specified language and return the translation.

Function prototype

public abstract int SpeechToText(String fileID, String speechLanguage,String translatelanguage);
Parameter
Type
Description
fileID
String
URL of the audio file, which will be retained on the server for 90 days.
speechLanguage
String
The language in which the audio file is to be converted into text. For parameters, see Language Parameter Reference List.
translatelanguage
String
The language into which the audio file is to be translated into text. For parameters, see Language Parameter Reference List. (This parameter is currently unavailable. Enter the same value as that of speechLanguage.)

Sample code

ITMGContext.GetInstance(this).GetPTT().SpeechToText(fileID,"cmn-Hans-CN","cmn-Hans-CN");

Callback for recognition

After the specified audio file is converted to text, the event message ITMG_MAIN_EVNET_TYPE_PTT_SPEECH2TEXT_COMPLETE will be returned, which will be identified in the OnEvent function.\nThe passed parameters include result, file_path and text (recognized text).

Error codes

Error Code
Reasons
Suggested Solution
32769
An internal error occurred.
Analyze logs, get the actual error code returned from the backend to the client, and ask backend personnel for assistance.
32770
Network connection failed.
Check whether the device can access the internet.
32772
Failed to decode the returned packet.
Analyze logs, get the actual error code returned from the backend to the client, and ask backend personnel for assistance.
32774
appinfo is not set.
Check whether the authentication key is correct and whether the voice messaging and speech-to-text feature is initialized.
32776
authbuffer check failed.
Check whether authbuffer is correct.
32784
The speech-to-text conversion parameter is incorrect.
Check whether the API parameter fileid in the code is empty.
32785
A speech-to-text translation error occurred.
An error occurred in the voice messaging and speech-to-text feature on the backend. Analyze logs, get the actual error code returned from the backend to the client, and ask backend personnel for assistance.

Sample code

public void OnEvent(ITMGContext.ITMG_MAIN_EVENT_TYPE type, Intent data) {
if(ITMGContext.ITMG_MAIN_EVNET_TYPE_PTT_SPEECH2TEXT_COMPLETE == type)
{
//Recognized audio file successfully
}
}

Advanced APIs

Getting version number

This API is used to get the SDK version number for analysis.

Function prototype

public abstract String GetSDKVersion();

Sample code

ITMGContext.GetInstance(this).GetSDKVersion();

Checking mic permission

This API is used to return the mic permission status.

Function prototype

public abstract ITMG_RECORD_PERMISSION CheckMicPermission();

Parameter description

Parameter
Value
Description
ITMG_PERMISSION_GRANTED
0
The mic permission is granted.
ITMG_PERMISSION_Denied
1
Mic disabled.
ITMG_PERMISSION_NotDetermined
2
No authorization box has been popped up to request the permission.
ITMG_PERMISSION_ERROR
3
An error occurred while calling the API.

Sample code

ITMGContext.GetInstance(this).CheckMicPermission();

Setting log printing level

This API is used to set the level of logs to be printed, and needs to be called before the initialization. It is recommended to keep the default level.

Function prototype

public abstract int SetLogLevel(int levelWrite, int levelPrint);

Parameter description

Parameter
Type
Description
levelWrite
ITMG_LOG_LEVEL
Sets the level of logs to be written. TMG_LOG_LEVEL_NONE indicates not to log. Default value: TMG_LOG_LEVEL_INFO.
levelPrint
ITMG_LOG_LEVEL
Sets the level of logs to be printed. TMG_LOG_LEVEL_NONE indicates not to print. Default value: TMG_LOG_LEVEL_ERROR.

ITMG_LOG_LEVEL

ITMG_LOG_LEVEL
Description
TMG_LOG_LEVEL_NONE
Does not print logs
TMG_LOG_LEVEL_ERROR
Prints error logs (default)
TMG_LOG_LEVEL_INFO
Prints info logs
TMG_LOG_LEVEL_DEBUG
Prints debug logs
TMG_LOG_LEVEL_VERBOSE
Prints verbose logs

Sample code

ITMGContext.GetInstance(this).SetLogLevel(TMG_LOG_LEVEL_INFO,TMG_LOG_LEVEL_INFO);

Setting the log printing path

This API is used to set the log printing path, which is /sdcard/Android/data/xxx.xxx.xxx/files by default.

Function prototype

public abstract int SetLogPath(String logDir);
Parameter
Type
Description
logDir
String
Path

Sample code

ITMGContext.GetInstance(this).SetLogPath(path);

Callback Messages

Message list

Message
Description
ITMG_MAIN_EVNET_TYPE_PTT_RECORD_COMPLETE
PTT recording is completed.
ITMG_MAIN_EVNET_TYPE_PTT_UPLOAD_COMPLETE
PTT upload is completed.
ITMG_MAIN_EVNET_TYPE_PTT_DOWNLOAD_COMPLETE
PTT download is completed.
ITMG_MAIN_EVNET_TYPE_PTT_PLAY_COMPLETE
PTT playback is completed.
ITMG_MAIN_EVNET_TYPE_PTT_SPEECH2TEXT_COMPLETE
Speech-to-text conversion is completed.

Data list

Message
Data
Example
ITMG_MAIN_EVNET_TYPE_PTT_RECORD_COMPLETE
result; file_path
{"file_path":"","result":0}
ITMG_MAIN_EVNET_TYPE_PTT_UPLOAD_COMPLETE
result; file_path;file_id
{"file_id":"","file_path":"","result":0}
ITMG_MAIN_EVNET_TYPE_PTT_DOWNLOAD_COMPLETE
result; file_path;file_id
{"file_id":"","file_path":"","result":0}
ITMG_MAIN_EVNET_TYPE_PTT_PLAY_COMPLETE
result; file_path
{"file_path":"","result":0}
ITMG_MAIN_EVNET_TYPE_PTT_SPEECH2TEXT_COMPLETE
result; text;file_id
{"file_id":"","text":"","result":0}
ITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRECOGNITION_COMPLETE
result; file_path; text;file_id
{"file_id":"","file_path":","text":"","result":0}

","recentReleaseTime":"2024-01-18 15:13:51","slate":"[{\"id\":\"bETGPTYw25IlJx4PZRuae\",\"children\":[{\"text\":\"This document describes how to integrate with and debug the GME APIs to implement speech-to-text service for Android.\"}],\"type\":\"p\"},{\"id\":\"COaFi5XzDrDN81WArQio6\",\"children\":[{\"id\":\"cbu7KUat_PAB0bEfCj6Wt\",\"children\":[{\"b\":1,\"text\":\"Note:\"}],\"type\":\"p\"},{\"id\":\"iSjXMhGi6N-y8s2uFChlP\",\"children\":[{\"text\":\"This document applies to GME SDK version 2.9.\"}],\"type\":\"p\"}],\"hintType\":\"info\",\"type\":\"hint\"},{\"id\":\"euWJYK4_Ua03Nf5BJQszU\",\"children\":[{\"text\":\"Key Considerations for Using GME\"}],\"nodeId\":\".E4.BD.BF.E7.94.A8-gme-.E9.87.8D.E8.A6.81.E4.BA.8B.E9.A1.B9\",\"type\":\"h2\"},{\"id\":\"BWVCMNaqia7F6W8ZC8yFl\",\"children\":[{\"text\":\"GME provides voice chat service, voice messaging and speech-to-text services and they rely on core APIs such as Init and Poll.\"}],\"type\":\"p\"},{\"id\":\"CXxQ5dXkZqROq_1RNzMhu\",\"children\":[{\"id\":\"5QGkCGAkmzoVi9adu4gOa\",\"children\":[{\"b\":1,\"text\":\"Note:\"}],\"type\":\"p\"},{\"id\":\"iqkkdDjG2aicXe7RZJy-L\",\"children\":[{\"text\":\"There is a default call rate limit for speech-to-text APIs. For more information on how calls are billed within the limit, see \"},{\"id\":\"ae8EmmH-QpWLRfv2krcPH\",\"children\":[{\"text\":\"Purchase Guide\"}],\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/50009\"},\"type\":\"ref\"},{\"text\":\". If you want to increase the limit or learn more about how excessive calls are billed, \"},{\"id\":\"zvU9ayfo7Odt6ceMHsz2t\",\"children\":[{\"text\":\"submit a ticket\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://console.tencentcloud.com/workorder/category?level1_id=438&level2_id=445&source=0&data_title=%E6%B8%B8%E6%88%8F%E5%A4%9A%E5%AA%92%E4%BD%93%E5%BC%95%E6%93%8EGME&step=1\",\"props\":{\"type\":\"link\",\"url\":\"https://console.tencentcloud.com/workorder/category?level1_id=438&level2_id=445&source=0&data_title=%E6%B8%B8%E6%88%8F%E5%A4%9A%E5%AA%92%E4%BD%93%E5%BC%95%E6%93%8EGME&step=1\"},\"type\":\"ref\"},{\"text\":\".\"}],\"type\":\"p\"},{\"id\":\"Bib9oAKMKSQTL9B0RkNdH\",\"children\":[{\"text\":\"Non-streaming speech-to-text API \"},{\"text\":\"SpeechToText()\",\"b\":1},{\"text\":\": There can be up to 10 concurrent requests per account.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"wtS3h53pQbb80lK6Y6rlV\",\"children\":[{\"text\":\"Streaming speech-to-text API \"},{\"text\":\"StartRecordingWithStreamingRecognition()\",\"b\":1},{\"text\":\": There can be up to 50 concurrent requests per account.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"Cfop14xknLc7JlCtOAMIu\",\"children\":[{\"text\":\"Voice chat streaming speech-to-text API \"},{\"text\":\"StartRealTimeASR()\",\"b\":1},{\"text\":\": There can be up to 50 concurrent requests per account.\"}],\"start\":false,\"type\":\"uli\"}],\"hintType\":\"alert\",\"type\":\"hint\"},{\"id\":\"xrCpr_lpK3vWxbwQHbfFb\",\"children\":[{\"id\":\"O9GBxMqdr0gmYzboOuOg4\",\"alt\":\"image\",\"children\":[{\"text\":\"\"}],\"inline\":true,\"naturalSize\":[674,427],\"size\":[674,427],\"type\":\"image\",\"url\":\"https://cloudcache.intl.tencent-cloud.com/cms/backend-cms/e5a9a7f3b96711eda534525400c56988.png\"}],\"type\":\"p\"},{\"id\":\"LKXnYwY4GheB210YnLtzm\",\"children\":[{\"id\":\"oGUxI3Q2bdBf9ImYCrA63\",\"children\":[{\"b\":1,\"text\":\"Notes on the \"},{\"code\":1,\"text\":\"Init\"},{\"text\":\" API\"}],\"type\":\"p\"},{\"id\":\"zKPhHbAG-nCmcRUBrnQd6\",\"children\":[{\"text\":\"If you need to use voice chat and voice messaging services at the same time, \"},{\"b\":1,\"text\":\"you only need to call \"},{\"code\":1,\"text\":\"Init\"},{\"text\":\" API once\"},{\"text\":\".\\nThe billing will not start after initialization. Receiving or sending a voice message in speech-to-text service is counted as a voice message DAU.\"}],\"type\":\"p\"}],\"hintType\":\"alert\",\"type\":\"hint\"},{\"id\":\"cpmOAb2A6Opi63_gy0jnZ\",\"children\":[{\"text\":\"Directions\"}],\"nodeId\":\".E9.87.8D.E8.A6.81.E6.AD.A5.E9.AA.A4\",\"type\":\"h3\"},{\"id\":\"YmV-pb2sCf-BGvEEei5Gz\",\"children\":[{\"text\":\"\"},{\"id\":\"WZI9yH8G4I_8pPBrKum14\",\"type\":\"ref\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/40861?!editLang=zh&!preview=&lang=zh&pg=#.3Ca-id.3D.22init.22.3E.E5.88.9D.E5.A7.8B.E5.8C.96-sdk.3C.2Fa.3E\"},\"children\":[{\"text\":\"Initializing GME\"}]},{\"text\":\"\"}],\"start\":true,\"type\":\"oli\"},{\"id\":\"mOaQq7bha3OuliFNoG2ki\",\"children\":[{\"text\":\"\"},{\"id\":\"t_v1G51u6WpWXa5HzO47W\",\"type\":\"ref\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/40861?!editLang=zh&!preview=&lang=zh&pg=#.3Ca-id.3D.22poll.22.3E.E8.A7.A6.E5.8F.91.E4.BA.8B.E4.BB.B6.E5.9B.9E.E8.B0.83.3C.2Fa.3E\"},\"children\":[{\"text\":\"Calling Poll periodically to trigger callbacks\"}]},{\"text\":\"\"}],\"type\":\"oli\"},{\"id\":\"keBULP-kCIjRTYbhF3FFN\",\"children\":[{\"text\":\"\"},{\"id\":\"AvZYcPMZDZeHXNk9MZmz3\",\"type\":\"ref\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/40861?lang=en&pg=#.3Ca-id.3D.22applyptt.22.3E.E9.89.B4.E6.9D.83.E5.88.9D.E5.A7.8B.E5.8C.96.3C.2Fa.3E\"},\"children\":[{\"text\":\"Initializing authentication\"}]},{\"text\":\"\"}],\"type\":\"oli\"},{\"id\":\"gXwQ1dATLBoYifaM0HJcd\",\"children\":[{\"text\":\"\"},{\"id\":\"l1IAlGDzg95k8mXiP-8_Z\",\"type\":\"ref\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/40861?lang=en&pg=#.E6.B5.81.E5.BC.8F.E8.AF.AD.E9.9F.B3.E8.AF.86.E5.88.AB.E7.9A.84.E5.9B.9E.E8.B0.83\"},\"children\":[{\"text\":\"Starting streaming speech-to-text conversion\"}]},{\"text\":\"\"}],\"type\":\"oli\"},{\"id\":\"RFq8NKFnF3inUdcT5Fkgm\",\"children\":[{\"text\":\"\"},{\"id\":\"oRzIHO7jBuD0Xd_0xX8rQ\",\"type\":\"ref\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/40861?lang=en&pg=#.3Ca-id.3D.22stop.22.3E.E5.81.9C.E6.AD.A2.E5.BD.95.E9.9F.B3.3C.2Fa.3E\"},\"children\":[{\"text\":\"Stopping recording\"}]},{\"text\":\"\"}],\"type\":\"oli\"},{\"id\":\"ScHjNpFp42QIiAh-urnuC\",\"children\":[{\"text\":\"\"},{\"id\":\"h-LkKzggabrFyh9y7v3zi\",\"type\":\"ref\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/40861?lang=en&pg=#.3Ca-id.3D.22uninit.22.3E.E5.8F.8D.E5.88.9D.E5.A7.8B.E5.8C.96-sdk.3C.2Fa.3E\"},\"children\":[{\"text\":\"Uninitializing GME\"}]},{\"text\":\"\"}],\"type\":\"oli\"},{\"id\":\"BoluNvz3MOdimOmsuzNPo\",\"children\":[{\"text\":\"Important notes\"}],\"nodeId\":\".E9.87.8D.E7.82.B9.E6.8F.90.E7.A4.BA\",\"type\":\"h3\"},{\"id\":\"JKRwTewM8jHNkq7UbMFPG\",\"children\":[{\"text\":\"Configure your project before using GME; otherwise, the SDK will not take effect.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"8I4sYdZ6GPakBmcCZYcT3\",\"children\":[{\"text\":\"After a GME API is called successfully, \"},{\"code\":1,\"text\":\"QAVError.OK\"},{\"text\":\" will be returned with the value being \"},{\"code\":1,\"text\":\"0\"},{\"text\":\".\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"A4KIYxQxXrq8KhIGlr89O\",\"children\":[{\"text\":\"GME APIs should be called in the same thread.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"pW8CyJhdr3dZfLu67YTA7\",\"children\":[{\"text\":\"The \"},{\"code\":1,\"text\":\"Poll\"},{\"text\":\" API should be called periodically for GME to trigger event callbacks.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"zUbtEDjVv95OgpNXkdeoL\",\"children\":[{\"text\":\"For detailed error codes, see \"},{\"id\":\"SUtZuHqydR5a1Ki3ES42j\",\"children\":[{\"text\":\"Error Codes\"}],\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/33223\"},\"type\":\"ref\"},{\"text\":\".\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"LbCC6fdRWi2ci18r-ENOT\",\"children\":[{\"text\":\"Voice message for Android class\"}],\"nodeId\":\".E8.AF.AD.E9.9F.B3.E6.B6.88.E6.81.AF-android-.E7.B1.BB\",\"type\":\"h3\"},{\"id\":\"Y8Jj6P0TVFKs-LVyeHFv_\",\"children\":[{\"id\":\"0fLGM-Evajik19MVN7mDe\",\"children\":[{\"id\":\"4CvDOQX1dcN2JvrB1yOWW\",\"children\":[{\"id\":\"PI1Xg_id7ckYgkbOHInqB\",\"children\":[{\"text\":\"Class\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"d0y4QbOsP-2xfmSauK-Lh\",\"children\":[{\"id\":\"qwaqt6G7JOMrtNrUnhQ-1\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"bDYjVN5qs82KjYfvBid0Z\",\"children\":[{\"id\":\"_7sHUN0Q3JF07jJJ9wRGM\",\"children\":[{\"id\":\"r0Tb5dW4yvEEr0hxoFo9y\",\"children\":[{\"id\":\"G64swunU1wm9GA0WV5DmD\",\"children\":[{\"text\":\"ITMGContext\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"_gpbvAFF4rvvqRHBB7Xnz\",\"children\":[{\"id\":\"EKolsHmI7ibt4oni3z3gq\",\"children\":[{\"id\":\"tzmsOirsjBR3-kPKhfO44\",\"children\":[{\"text\":\"Core APIs\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"qMO9r9FhtXaswkFHg7LcE\",\"children\":[{\"id\":\"bhCt4UnsOHUn8LPo0B4td\",\"children\":[{\"id\":\"_z4wtucNtf7ymwzItuU-l\",\"children\":[{\"id\":\"2kvu6dB7kwROHCREP3IDq\",\"children\":[{\"text\":\"ITMGPTT\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"p11LHAIybsYoyv7NbLZoP\",\"children\":[{\"id\":\"eZjO3gcDLKxYPbUMQbAyx\",\"children\":[{\"id\":\"IX-8bR7qejLv0bxe9-OH2\",\"children\":[{\"text\":\"Voice messaging and speech-to-text APIs\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[28,72],\"widthMode\":\"percentage\"},{\"id\":\"8mBm7DFXJtW2RnqSN5dKn\",\"children\":[{\"text\":\"Core APIs\"}],\"nodeId\":\".E6.A0.B8.E5.BF.83.E6.8E.A5.E5.8F.A3\",\"type\":\"h2\"},{\"id\":\"v0CcQq0i17zP2TAsjFpiQ\",\"children\":[{\"text\":\"Before the initialization, the SDK is in the uninitialized status, and \"},{\"b\":1,\"text\":\"you need to initialize it through the \"},{\"code\":1,\"text\":\"Init\"},{\"text\":\" API\"},{\"text\":\" before you can use the voice chat and speech-to-text services.\"}],\"type\":\"p\"},{\"id\":\"TNw0RtSBV96ljRBsjsrtt\",\"children\":[{\"b\":1,\"text\":\"Call the \"},{\"code\":1,\"text\":\"Init\"},{\"text\":\" API before calling any APIs of GME.\"}],\"type\":\"p\"},{\"id\":\"myZksoNeyHtrQiQupEiRU\",\"children\":[{\"text\":\"If you have any questions when using the service, see \"},{\"id\":\"5qX7Enyz08BRGCO2sjyLn\",\"children\":[{\"text\":\"General\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://www.tencentcloud.com/document/product/607/30254\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/30254\"},\"type\":\"ref\"},{\"text\":\".\"}],\"type\":\"p\"},{\"id\":\"y-dxRDoQ6qF2f5Z2gEDxT\",\"children\":[{\"id\":\"wVe_2pXH81tTfZ8TWUlpc\",\"children\":[{\"id\":\"TyXVg3HJDMB6_zmXO6Keu\",\"children\":[{\"id\":\"Evk6ZR_A-wY-TzfTZ1d_u\",\"children\":[{\"text\":\"API\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"y0_9X5fqHH9SeqMERZNGV\",\"children\":[{\"id\":\"zsAK39ko3EiMCWSwVU8Ul\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"cdPIeYTA2Nej13ZmwQich\",\"children\":[{\"id\":\"GDGorjLXHEWDeKQmHcmEA\",\"children\":[{\"id\":\"XyK4vSFcBUySCn88KdRJQ\",\"children\":[{\"id\":\"3xfHNa88P0JO3x2MdSn6y\",\"children\":[{\"text\":\"Init\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Vg7L1vA5mQho9pyfYd2FP\",\"children\":[{\"id\":\"GzFshQ3Gjg50B87xryvzs\",\"children\":[{\"id\":\"r8WmCTJrOTlXkOdZdLYBu\",\"children\":[{\"text\":\"Initializes GME.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"a-atplmRe4QtTfA9W6ar0\",\"children\":[{\"id\":\"CscBhJQTKaeD15nPmu0x7\",\"children\":[{\"id\":\"6DOoBbWoBEhywvqCo_I-y\",\"children\":[{\"id\":\"tlqQoCPFEjIOgpNDJIRk_\",\"children\":[{\"text\":\"Poll\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"lW4RzgioAFFs_nqf7HV3K\",\"children\":[{\"id\":\"X-p_4854-amMl9ede0ytw\",\"children\":[{\"id\":\"lUtQCH9e0LF81XAcQwoTU\",\"children\":[{\"text\":\"Triggers an event callback.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"HoRB4Pt6MKCYPpZNlo1j8\",\"children\":[{\"id\":\"A3uUFRULWVH7tggSO0cOC\",\"children\":[{\"id\":\"K54M01iw-zNyK_9N7wsoS\",\"children\":[{\"id\":\"msvBP-FSUpcyy79FRDHX3\",\"children\":[{\"text\":\"Pause\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"z-xBmlfMzCt4oR-dFJTH9\",\"children\":[{\"id\":\"5ukpEEaanSNtymHOwoo8b\",\"children\":[{\"id\":\"m51wls4DdlOxH-NjlGyS4\",\"children\":[{\"text\":\"Pauses the system.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"VDSUGyEZS09YGtEDnQ-Kr\",\"children\":[{\"id\":\"GWdj_sxiLVM1NasFxRDHA\",\"children\":[{\"id\":\"sT7mDqANpWwU0xPkw1j5P\",\"children\":[{\"id\":\"yx99jR3XD_RaVUo2cUm7n\",\"children\":[{\"text\":\"Resume\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"IUA0HiicXr-KskotvN7rI\",\"children\":[{\"id\":\"8PpH4NJQnyJp6aSgl7N8T\",\"children\":[{\"id\":\"xvaHecl7xelQDt9YRHzQG\",\"children\":[{\"text\":\"Resumes the system.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"PJGRFbXSkibIcPiWcrfyX\",\"children\":[{\"id\":\"pQvT7XJskiXnWclceOmAV\",\"children\":[{\"id\":\"JgaxMhUcTNUAhpEoZ7Uyi\",\"children\":[{\"id\":\"vg66mIfOH2rt58JPJIsoP\",\"children\":[{\"text\":\"Uninit\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"cPPZW3ikmJCV6PFbz47d0\",\"children\":[{\"id\":\"u6iE-Vmv1QNSCCM4nEoLi\",\"children\":[{\"id\":\"uDm2q0jffWx4u8J64QOgH\",\"children\":[{\"text\":\"Uninitializes GME.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[29,71],\"widthMode\":\"percentage\"},{\"id\":\"U3Qdx8ICBpFEl1aTxHq18\",\"children\":[{\"id\":\"QMJYhk_MQF0C949TtS2MS\",\"children\":[{\"b\":1,\"text\":\"Note:\"}],\"type\":\"p\"},{\"id\":\"0WaCXJETwg8N2McFfSuN_\",\"children\":[{\"text\":\"If you need to switch the account, please call \"},{\"code\":1,\"text\":\"UnInit\"},{\"text\":\" to uninitialize the SDK. No fee is incurred for calling Init API.\"}],\"type\":\"p\"}],\"hintType\":\"alert\",\"type\":\"hint\"},{\"id\":\"kXuygX5yd6yD6qw97LQPh\",\"children\":[{\"text\":\"Getting singleton\"}],\"nodeId\":\".E8.8E.B7.E5.8F.96.E5.8D.95.E4.BE.8B\",\"type\":\"h3\"},{\"id\":\"4hXav-ajAuICq4RXA_FY1\",\"children\":[{\"text\":\"To use the voice feature, get the \"},{\"code\":1,\"text\":\"ITMGContext\"},{\"text\":\" object first.\"}],\"type\":\"p\"},{\"id\":\"7khyyeyYzz_IooShyeo0f\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.81\",\"type\":\"h4\"},{\"id\":\"gHwI5rORkqZUCv8Fhmr3c\",\"autoWrap\":false,\"children\":[{\"id\":\"AYFwlLxIYjx-PrQB_hnd_\",\"children\":[{\"text\":\"import com.tencent.TMG.ITMGContext; \"}],\"type\":\"code-line\"},{\"id\":\"qlDchmYnwgs90PqqPGfHI\",\"children\":[{\"text\":\"ITMGContext.getInstance(this);\"}],\"type\":\"code-line\"}],\"language\":\"java\",\"type\":\"code-block\"},{\"id\":\"5bI8E_w4-jGbqvKHG073L\",\"children\":[{\"text\":\"Registering callback\"}],\"nodeId\":\".E6.B3.A8.E5.86.8C.E5.9B.9E.E8.B0.83\",\"type\":\"h3\"},{\"id\":\"--k3IPU5p4I8tAI3j4HW5\",\"children\":[{\"text\":\"The API class uses the \"},{\"code\":1,\"text\":\"Delegate\"},{\"text\":\" method to send callback notifications to the application. Register the callback function to the SDK for receiving callback messages.\"}],\"type\":\"p\"},{\"id\":\"BT2CjkT4aj2W6QtOV33ZN\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\".E5.87.BD.E6.95.B0.E5.8E.9F.E5.9E.8B\",\"type\":\"h4\"},{\"id\":\"jLUHB121CEtRMWy9o9G_N\",\"children\":[{\"text\":\"Override this callback function in the constructor to process the parameters of the callback.\"}],\"type\":\"p\"},{\"id\":\"qrxbKjUdZlCSB2FNRP3bc\",\"autoWrap\":false,\"children\":[{\"id\":\"bg0mH5R1p_-V3udeB3ssp\",\"children\":[{\"text\":\"static public abstract class ITMGDelegate {\"}],\"type\":\"code-line\"},{\"id\":\"M0zWhzMB3HxuWcnJa9Amx\",\"children\":[{\"text\":\" public void OnEvent(ITMG_MAIN_EVENT_TYPE type, Intent data){}\"}],\"type\":\"code-line\"},{\"id\":\"XakusO7Mws_-fAEy1xtp_\",\"children\":[{\"text\":\"}\"}],\"type\":\"code-line\"}],\"language\":\"java\",\"type\":\"code-block\"},{\"id\":\"8NxPPywXdZ431x3wwHLp-\",\"children\":[{\"id\":\"lst-ZxZInmlnVj2foXy-x\",\"children\":[{\"id\":\"diVijehhDS_LAXTeUuV3_\",\"children\":[{\"id\":\"L4SNS-16_zjl2SwB3pl-c\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"k21JZrYASFp3sNp4cacWF\",\"children\":[{\"id\":\"KKLDzKvfmIcrQSpZoGVI8\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"-GGVgKFNLfWXVG0zO_rQh\",\"children\":[{\"id\":\"SiblO9O2MzNo1QC_VK3XZ\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"qtHYPC9mBvGJEgCu3L410\",\"children\":[{\"id\":\"8hxcFMzFTIR9uvclL1YBa\",\"children\":[{\"id\":\"wfygl_Er2w42L3PB9w-ve\",\"children\":[{\"id\":\"rpqQX_Qh9flQWXH3mOVuA\",\"children\":[{\"text\":\"type\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"y0LcOgyZi9jtjMgqxcAPB\",\"children\":[{\"id\":\"GGWSwhFrge6DekYr1YRl0\",\"children\":[{\"id\":\"8eIPhftAyjpbC37nh_M3U\",\"children\":[{\"text\":\"ITMGContext.ITMG_MAIN_EVENT_TYPE\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Dgjh_uA22lYmXGyeyiyha\",\"children\":[{\"id\":\"RqBvpMKpbJ5EtZ1YYm4SW\",\"children\":[{\"id\":\"jxHrfG8C43axVsFjGgEAw\",\"children\":[{\"text\":\"Event type in the callback response\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"aScYry20CALMtZfJfN8CK\",\"children\":[{\"id\":\"2N1yV7bBJ-8rb9fZe_9fy\",\"children\":[{\"id\":\"kPcJv8oVvjYZpg2chcWnV\",\"children\":[{\"id\":\"aEW3Jl2gAElwe_gXcGZwV\",\"children\":[{\"text\":\"data\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"vwlHM6tln5NGXIAoAhhop\",\"children\":[{\"id\":\"6w77J-RK3WRf95VJuoVFT\",\"children\":[{\"id\":\"G4g8XFqOrxmtGa5r6bpVe\",\"children\":[{\"text\":\"Intent message type\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"a-D1kTT78jNlL7-tGjA-r\",\"children\":[{\"id\":\"MeUBP833lbDJrSSaeLtLs\",\"children\":[{\"id\":\"QbYedExsPdKHv908Xcn6X\",\"children\":[{\"text\":\"Callback message, i.e., event data\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[15,45,40],\"widthMode\":\"percentage\"},{\"id\":\"IV9Qay5PEN_O9wBKR8gSD\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.812\",\"type\":\"h4\"},{\"id\":\"efmtQm8oEm-dZd41S9WMG\",\"children\":[{\"text\":\"Register the callback function to the SDK before room entry.\"}],\"type\":\"p\"},{\"id\":\"VP1y0BmZx5qKVuYIkgxcN\",\"autoWrap\":false,\"children\":[{\"id\":\"30ruivUi20vichgdsbi6U\",\"children\":[{\"text\":\"private ITMGContext.ITMGDelegate itmgDelegate = null;\"}],\"type\":\"code-line\"},{\"id\":\"Bw_yd0_xKao8itL0tp8gY\",\"children\":[{\"text\":\"itmgDelegate = new ITMGContext.ITMGDelegate() {\"}],\"type\":\"code-line\"},{\"id\":\"o2P3yxOiN-jHow5QXIDB4\",\"children\":[{\"text\":\" @Override\"}],\"type\":\"code-line\"},{\"id\":\"z0HC4dW260j3WTznm5kVW\",\"children\":[{\"text\":\" public void OnEvent(ITMGContext.ITMG_MAIN_EVENT_TYPE type, Intent data) {\"}],\"type\":\"code-line\"},{\"id\":\"zUg7f6s5G1CCEPzCHJBfN\",\"children\":[{\"text\":\" if (ITMGContext.ITMG_MAIN_EVENT_TYPE.ITMG_MAIN_EVENT_TYPE_ENTER_ROOM == type)\"}],\"type\":\"code-line\"},{\"id\":\"xSIFhcEkJ4fsQbxUEDu90\",\"children\":[{\"text\":\" {\"}],\"type\":\"code-line\"},{\"id\":\"HcA5OpUIuHFGl0mlPkrHl\",\"children\":[{\"text\":\" // Analyze the returned data\"}],\"type\":\"code-line\"},{\"id\":\"zcCMm6liv-frDT9J45LnF\",\"children\":[{\"text\":\" int nErrCode = data.getIntExtra(\\\"result\\\" , -1);\"}],\"type\":\"code-line\"},{\"id\":\"zKV3pMuxTzSd9jldJGMFD\",\"children\":[{\"text\":\" String strErrMsg = data.getStringExtra(\\\"error_info\\\");\"}],\"type\":\"code-line\"},{\"id\":\"izt3S76BFJW6z9FXvrgQl\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"_3j1MEQ9GdqiQJyArx06X\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"S8NlpeaFzp1F5-9rcs5kz\",\"children\":[{\"text\":\"}\"}],\"type\":\"code-line\"}],\"language\":\"java\",\"type\":\"code-block\"},{\"id\":\"bqVnVeqbCz82BVQBsiQ5g\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\".E5.87.BD.E6.95.B0.E5.8E.9F.E5.9E.8B2\",\"type\":\"h4\"},{\"id\":\"6qrerFLalKiJPSpveobpi\",\"autoWrap\":false,\"children\":[{\"id\":\"K5fjXB_UbMp5txJFUNnjc\",\"children\":[{\"text\":\"public abstract int SetTMGDelegate(ITMGDelegate delegate);\"}],\"type\":\"code-line\"}],\"language\":\"java\",\"type\":\"code-block\"},{\"id\":\"tZODhscOnWx3hM5cmnlst\",\"children\":[{\"id\":\"EcWD0dhstExptuIghuylk\",\"children\":[{\"id\":\"YWGeil4vJK6v91usXYCu0\",\"children\":[{\"id\":\"IDdHIop93R1KFTw81ZRtN\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"49TjgPI_xGwmXuAkFKN1P\",\"children\":[{\"id\":\"gBSFL9OALWmG3bnPl_OeS\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"jfS0LZ4H7Npt-HK8wzeM5\",\"children\":[{\"id\":\"d7_QKsx98YpdC0k8tW0vR\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"UUOS2fdroLESFfYRAcRu2\",\"children\":[{\"id\":\"xQ3S1tcFz7rNbSaavtZgQ\",\"children\":[{\"id\":\"vyrqZ4hD5P7TZXh04-goX\",\"children\":[{\"id\":\"LYJKQW1R-tjPpqwh1aeXn\",\"children\":[{\"text\":\"delegate\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"hDcW715l9y1fUIVpXWqsG\",\"children\":[{\"id\":\"38KNpeVR5HTvi3nXAuiU3\",\"children\":[{\"id\":\"hpf68OZvU2aKoV59TisMk\",\"children\":[{\"text\":\"ITMGDelegate\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"o55Di1hGWmXIaahv6L9Ec\",\"children\":[{\"id\":\"8UpuryUj1DHJnJ1OP0Pte\",\"children\":[{\"id\":\"Yv0nd4KYIex7Bx2oU02K8\",\"children\":[{\"text\":\"SDK callback function\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[25,31,44],\"widthMode\":\"percentage\"},{\"id\":\"7rQKrWYwj_1Z1d7Z1I3j7\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.813\",\"type\":\"h4\"},{\"id\":\"pjbn0GbV9Asfzu2K6kroT\",\"autoWrap\":false,\"children\":[{\"id\":\"J9HVQFCEff2TMpUpvdgP4\",\"children\":[{\"text\":\"ITMGContext.GetInstance(this).SetTMGDelegate(itmgDelegate);\"}],\"type\":\"code-line\"}],\"language\":\"java\",\"type\":\"code-block\"},{\"id\":\"cQrI4WcwoML7sknoNR82R\",\"children\":[{\"id\":\"9QxJgNFfLZiEBEXMo780u\",\"children\":[{\"text\":\"Initializing the SDK\"}],\"nodeId\":\"Init\",\"type\":\"p\"}],\"nodeId\":\".3Ca-id.3D.22init.22.3E.E5.88.9D.E5.A7.8B.E5.8C.96-sdk.3C.2Fa.3E\",\"type\":\"h3\"},{\"id\":\"nfWR7tJxMi4knGrL0mdVN\",\"children\":[{\"text\":\"This API is used to initialize the GME service. We recommend that you call it when initializing the application. No fees are incurred for calling this API.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"4qnZ32CAJNvzU5gzO0W8Z\",\"children\":[{\"text\":\"For more information on how to get the \"},{\"code\":1,\"text\":\"sdkAppID\"},{\"text\":\" parameter, see \"},{\"id\":\"7mwKNUF4VvoHQGjw4FgmM\",\"children\":[{\"text\":\"Activating Services\"}],\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/10782\"},\"type\":\"ref\"},{\"text\":\".\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"J69RxrLn5vD3NMuSucpgd\",\"children\":[{\"code\":1,\"text\":\"openID\"},{\"text\":\" uniquely identifies a user with the rules stipulated by you. It must be unique in the application and can only be in Int64 type.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"8720APGNxMMrJMPRCeT5C\",\"children\":[{\"id\":\"2MZ77ROGsyVG_a_RZN4wa\",\"children\":[{\"b\":1,\"text\":\"Note:\"}],\"type\":\"p\"},{\"id\":\"tAcGPwkVsMS2mJZycpUpf\",\"children\":[{\"text\":\"The Init API must be called in the same thread with other APIs. It is recommended to call all APIs in the main thread.\"}],\"type\":\"p\"}],\"hintType\":\"alert\",\"type\":\"hint\"},{\"id\":\"umaBAH0btHEB_i2W0r2kh\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\".E5.87.BD.E6.95.B0.E5.8E.9F.E5.9E.8B3\",\"type\":\"h4\"},{\"id\":\"Y5aobTtlcpiIF3EdX0ZCu\",\"autoWrap\":false,\"children\":[{\"id\":\"lJnSH1dzz6_0O8XmKsTw2\",\"children\":[{\"text\":\"public abstract int Init(String sdkAppId, String openId);\"}],\"type\":\"code-line\"}],\"language\":\"java\",\"type\":\"code-block\"},{\"id\":\"q2bUh7TifNPDcEIsPMu5x\",\"children\":[{\"id\":\"XUkm4Eq5jJP46K6rSLIte\",\"children\":[{\"id\":\"pXtkOYC0fv1bpxwZSh_wT\",\"children\":[{\"id\":\"EBzTAaaUrFSDXiU9Pmre-\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"DcvrGqZOgdIEYYqf3AoMM\",\"children\":[{\"id\":\"ni3OBNXoFwHGmV9ZnV1w1\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"gCIQEMs-sx43e0gVfCqwQ\",\"children\":[{\"id\":\"VvpRMUjH_yN2AJO-UxNWw\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"-9O0puf9-yrcBXCEAz73S\",\"children\":[{\"id\":\"-PNKrSXVqyMzcQfn3ZkHL\",\"children\":[{\"id\":\"6jBCsUXkt8JTWzVZskwh4\",\"children\":[{\"text\":\"sdkAppId\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Re7RzHsGwZztAKgzJUSnq\",\"children\":[{\"id\":\"wZLtqcH8gTgcTiZKDTgo8\",\"children\":[{\"id\":\"3Kibj6WrPqY-qDdv4Ww7Z\",\"children\":[{\"text\":\"String\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"W5SLBmVslKsNM23iKKrqe\",\"children\":[{\"id\":\"w7facUgJlISJc8UNTGxaJ\",\"children\":[{\"id\":\"CJdxiJAE5MRLYr3XIARbR\",\"children\":[{\"code\":1,\"text\":\"AppId\"},{\"text\":\" from the \"},{\"id\":\"dhEIHQV-Ijdv9cGoPG_yW\",\"children\":[{\"text\":\"GME\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://console.tencentcloud.com/gamegme\",\"props\":{\"type\":\"link\",\"url\":\"https://console.tencentcloud.com/gamegme\"},\"type\":\"ref\"},{\"text\":\" console\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"_W61L88dyC82P68HF997P\",\"children\":[{\"id\":\"ZisKNJ1Ezz6_RO1l_agEK\",\"children\":[{\"id\":\"CdKzFMUHQcstN6su9yFI8\",\"children\":[{\"text\":\"openId\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ZVyLvu75gux2JgRuxVvKA\",\"children\":[{\"id\":\"fmxyZFHvCmyhPl1hbFtGd\",\"children\":[{\"id\":\"krZrfZHAh88pfAfBLkvaG\",\"children\":[{\"text\":\"String\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"yo03_F3y9MIohLnwm6qv1\",\"children\":[{\"id\":\"3KwHZ4GkKPwvgcJfLwZGk\",\"children\":[{\"id\":\"St8pFpLdH8SBvcgucQ4qR\",\"children\":[{\"code\":1,\"text\":\"OpenId\"},{\"text\":\" can only be in Int64 type, which is passed in after being converted to a string.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[13,9,78],\"widthMode\":\"percentage\"},{\"id\":\"eG1jHsBZmAD1GIk9iPdJ-\",\"children\":[{\"id\":\"ofJ96IUXI6bHYvH3PNdrR\",\"children\":[{\"id\":\"dCv7xohV_lXjkZtWnEDTe\",\"children\":[{\"id\":\"7F2WHxu2X61b5ZMoQRCPs\",\"children\":[{\"text\":\"Returned Value\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"YeqNToClpUCbcoXrC35AF\",\"children\":[{\"id\":\"6CfjvGebj3wkT01hPgZ8Y\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"OGI1IjErM-QgDVbpnlPkG\",\"children\":[{\"id\":\"M_iBF3RgMXk_DqA0ZdiV8\",\"children\":[{\"id\":\"_bweHOoq4YBln37hRfLdC\",\"children\":[{\"id\":\"32cn0okITk1zFP80yM2vA\",\"children\":[{\"text\":\"QAVError.OK= 0\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"uwjtCZpquBu0k3GyvyHzG\",\"children\":[{\"id\":\"TGnDyl43CBC64NXm7ingQ\",\"children\":[{\"id\":\"SJeIpCsK7HjFEWHGZ_qaS\",\"children\":[{\"text\":\"The SDK was initialized successfully.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"WeVSYNdkaRpna0yt6WqIG\",\"children\":[{\"id\":\"gnF8zcV0ZDzdi3ouPkJa1\",\"children\":[{\"id\":\"3fUv4a-JtfeMSa19C_Ljv\",\"children\":[{\"id\":\"8TEjZ6s15HQHHRKcmP7ZO\",\"children\":[{\"text\":\"AV_ERR_SDK_NOT_FULL_UPDATE=7015\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"H1mbSr5T_5hpaERDNZsp3\",\"children\":[{\"id\":\"S-i80wQzfZmuXCMT8xCvC\",\"children\":[{\"id\":\"0MXuTwaM2QY6fMgTRAXL_\",\"children\":[{\"text\":\"Checks whether the SDK file is complete. We recommend that you delete it and then import it again.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[34,66],\"widthMode\":\"percentage\"},{\"id\":\"ty5N-YZlJay6zsYTdzQXC\",\"children\":[{\"text\":\"The returned value \"},{\"code\":1,\"text\":\"AV_ERR_SDK_NOT_FULL_UPDATE\"},{\"text\":\" is only a reminder but will not cause an initialization failure.\"}],\"type\":\"p\"},{\"id\":\"SpyKC-DcKiERQndKD1WmP\",\"children\":[{\"text\":\"If this error is reported during integration, check the integrity and version of the SDK file as prompted.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"86IJitrUFuvnfjI7Hno5Z\",\"children\":[{\"text\":\"If this error is returned after executable file export, ignore it and avoid displaying it on the UI.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"p68ZLFmeVRL03zCPiUh6K\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.814\",\"type\":\"h4\"},{\"id\":\"uBCNYLj72tgRqr-LnT-NS\",\"autoWrap\":false,\"children\":[{\"id\":\"dyv25X6o1HLM0fA3fzpC_\",\"children\":[{\"text\":\"String sdkAppID = \\\"14000*****\\\";\"}],\"type\":\"code-line\"},{\"id\":\"eR2c49WRwlGW1p-fpqMXc\",\"children\":[{\"text\":\"String openID = \\\"100\\\";\"}],\"type\":\"code-line\"},{\"id\":\"i6KbTkD8cOxS8y53XitPT\",\"children\":[{\"text\":\"int ret = ITMGContext.GetInstance(this).Init(sdkAppId, openId);\"}],\"type\":\"code-line\"},{\"id\":\"FKQzc0CCKaKbFLN3rRMJY\",\"children\":[{\"text\":\"if(ret != 0){\"}],\"type\":\"code-line\"},{\"id\":\"_tsc2DjFJJ28oDuge1Ecs\",\"children\":[{\"text\":\" Log.e(TAG,\\\"SDK initialization failed\\\");\"}],\"type\":\"code-line\"},{\"id\":\"23gOntYgB9aeAp3g-M52S\",\"children\":[{\"text\":\"}\"}],\"type\":\"code-line\"}],\"language\":\"java\",\"type\":\"code-block\"},{\"id\":\"NTvSzBB3RUJztSNUMuD_A\",\"children\":[{\"id\":\"i4v5NWGujAVfuI1J2CQE6\",\"children\":[{\"text\":\"Triggering event callback\"}],\"nodeId\":\"Poll\",\"type\":\"p\"}],\"nodeId\":\".3Ca-id.3D.22poll.22.3E.E8.A7.A6.E5.8F.91.E4.BA.8B.E4.BB.B6.E5.9B.9E.E8.B0.83.3C.2Fa.3E\",\"type\":\"h3\"},{\"id\":\"mQYYeLs8UkXC39Dbfgj27\",\"children\":[{\"text\":\"Event callbacks can be triggered by periodically calling the \"},{\"code\":1,\"text\":\"Poll\"},{\"text\":\" API in \"},{\"code\":1,\"text\":\"update\"},{\"text\":\". The \"},{\"code\":1,\"text\":\"Poll\"},{\"text\":\" API should be called periodically for GME to trigger event callbacks; otherwise, the entire SDK service will run exceptionally.\\nYou can refer to the \"},{\"code\":1,\"text\":\"EnginePollHelper.java\"},{\"text\":\" file in the demo.\"}],\"type\":\"p\"},{\"id\":\"0ycoQCZibvHE3lZOGGxAM\",\"children\":[{\"id\":\"NQ9TwyQGnfszmdG-G_yM1\",\"children\":[{\"b\":1,\"text\":\"Note:\"}],\"type\":\"p\"},{\"id\":\"SxRwRtilswqdHuM37XHPT\",\"children\":[{\"text\":\"The \"},{\"code\":1,\"text\":\"Poll\"},{\"text\":\" API must be called periodically and in the main thread to avoid abnormal API callbacks.\"}],\"type\":\"p\"}],\"hintType\":\"alert\",\"type\":\"hint\"},{\"id\":\"6g43aSo1oi5zDvIdpM3Ct\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\".E5.87.BD.E6.95.B0.E5.8E.9F.E5.9E.8B4\",\"type\":\"h4\"},{\"id\":\"oHP2_-hih6o6v62N5O71w\",\"autoWrap\":false,\"children\":[{\"id\":\"rDURKjPvdc0DRdwaB_wJz\",\"children\":[{\"text\":\"public abstract int Poll();\"}],\"type\":\"code-line\"}],\"language\":\"java\",\"type\":\"code-block\"},{\"id\":\"Os0FRS8I_3Z-T4M5gnh1H\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.815\",\"type\":\"h4\"},{\"id\":\"NKmVrSMtYO-4WRAwsZ7Ko\",\"autoWrap\":false,\"children\":[{\"id\":\"QA8zDgdA-FSNdeqPUdI3b\",\"children\":[{\"text\":\"private Handler mhandler = new Handler();\"}],\"type\":\"code-line\"},{\"id\":\"MfQbhReI_Fh-SW5iB5T2_\",\"children\":[{\"text\":\"private Runnable mRunnable = new Runnable() {\"}],\"type\":\"code-line\"},{\"id\":\"zZMhaBPnaF0hywCbwaePL\",\"children\":[{\"text\":\" @Override\"}],\"type\":\"code-line\"},{\"id\":\"8BaKALBvar0bIgOl8Z-dT\",\"children\":[{\"text\":\" public void run() {\"}],\"type\":\"code-line\"},{\"id\":\"bJUW8SIHJqUPjJ3epSafH\",\"children\":[{\"text\":\" if (s_pollEnabled) {\"}],\"type\":\"code-line\"},{\"id\":\"PuTqXxJRyg96y_OlGKmgP\",\"children\":[{\"text\":\" if (ITMGContext.GetInstance(null) != null)\"}],\"type\":\"code-line\"},{\"id\":\"LggBgkOSPLcw6ab-SfMmS\",\"children\":[{\"text\":\" ITMGContext.GetInstance(null).Poll();\"}],\"type\":\"code-line\"},{\"id\":\"JydKdxzgS2pSm00E5iw4l\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"lg_tdfaSLEygeXJ0OrgDz\",\"children\":[{\"text\":\" mhandler.postDelayed(mRunnable, 33);\"}],\"type\":\"code-line\"},{\"id\":\"zQoa_ovTfDX4tFO4d_2dH\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"ro10I0B_jLnZqOoPwL8ir\",\"children\":[{\"text\":\"};\"}],\"type\":\"code-line\"}],\"language\":\"java\",\"type\":\"code-block\"},{\"id\":\"EjLdJJQL1K0kPbulCusB8\",\"children\":[{\"text\":\"Pausing the system\"}],\"nodeId\":\".E7.B3.BB.E7.BB.9F.E6.9A.82.E5.81.9C\",\"type\":\"h3\"},{\"id\":\"jUR03BZK1D8HFUc0ApMzF\",\"children\":[{\"text\":\"When a \"},{\"code\":1,\"text\":\"Pause\"},{\"text\":\" event occurs in the system, the engine should also be notified for pause.\\nIf you need to pause the audio when switching to the background, you can call the \"},{\"code\":1,\"text\":\"Pause\"},{\"text\":\" API in the listening code used to switch to the background, and call the \"},{\"code\":1,\"text\":\"Resume\"},{\"text\":\" API in the listening event used to resume the foreground.\"}],\"type\":\"p\"},{\"id\":\"Qb1fe_Wb623j_u1UVUc34\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\".E5.87.BD.E6.95.B0.E5.8E.9F.E5.9E.8B5\",\"type\":\"h4\"},{\"id\":\"u9IEx0mET8NQt1n7nzGlZ\",\"autoWrap\":false,\"children\":[{\"id\":\"fyGoubf1tTNoAOCyIoWHy\",\"children\":[{\"text\":\"public abstract int Pause();\"}],\"type\":\"code-line\"}],\"language\":\"java\",\"type\":\"code-block\"},{\"id\":\"hn5EzsJXayqsVZtD8h49T\",\"children\":[{\"text\":\"Resuming the system\"}],\"nodeId\":\".E7.B3.BB.E7.BB.9F.E6.81.A2.E5.A4.8D\",\"type\":\"h3\"},{\"id\":\"HdePPRwPLq1JyYx6ULS42\",\"children\":[{\"text\":\"When a \"},{\"code\":1,\"text\":\"Resume\"},{\"text\":\" event occurs in the system, the engine should also be notified for resumption. The \"},{\"code\":1,\"text\":\"Resume\"},{\"text\":\" API only supports resuming voice chat.\"}],\"type\":\"p\"},{\"id\":\"vJYp8ShtYMAjtSWp2rPhu\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\".E5.87.BD.E6.95.B0.E5.8E.9F.E5.9E.8B6\",\"type\":\"h4\"},{\"id\":\"XCQ8bh-g1cTha-Vn1c7x4\",\"autoWrap\":false,\"children\":[{\"id\":\"IEa8rnPhFG1SHSWpmeT1E\",\"children\":[{\"text\":\"public abstract int Resume();\"}],\"type\":\"code-line\"}],\"language\":\"java\",\"type\":\"code-block\"},{\"id\":\"L4q-hb3nbk0dtv7l4RyeC\",\"children\":[{\"id\":\"wbHFy8oDQ75WJAZLtVUQP\",\"children\":[{\"text\":\"Uninitializing SDK\"}],\"nodeId\":\"UnInit\",\"type\":\"p\"}],\"nodeId\":\".3Ca-id.3D.22uninit.22.3E.E5.8F.8D.E5.88.9D.E5.A7.8B.E5.8C.96-sdk.3C.2Fa.3E\",\"type\":\"h3\"},{\"id\":\"hmMFnEuNcIK8QSjekXQTN\",\"children\":[{\"text\":\"This API is used to uninitialize the SDK to make it uninitialized. \"},{\"b\":1,\"text\":\"Switching accounts requires uninitialization\"},{\"text\":\".\"}],\"type\":\"p\"},{\"id\":\"dsYOG12ies2l8wlYD1vRd\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\".E5.87.BD.E6.95.B0.E5.8E.9F.E5.9E.8B7\",\"type\":\"h4\"},{\"id\":\"Keswm7LfXYEaVO1v5XZdQ\",\"autoWrap\":false,\"children\":[{\"id\":\"vGPWisO20_GiXT0XwVFjy\",\"children\":[{\"text\":\"public abstract int Uninit();\"}],\"type\":\"code-line\"}],\"language\":\"java\",\"type\":\"code-block\"},{\"id\":\"XHgViwa3INHoiN8_kc1KX\",\"children\":[{\"text\":\"Voice Messaging and Speech-to-Text\"}],\"nodeId\":\".E8.AF.AD.E9.9F.B3.E6.B6.88.E6.81.AF.E5.8F.8A.E8.BD.AC.E6.96.87.E5.AD.97\",\"type\":\"h2\"},{\"id\":\"hpd7yZgpcPVaV9a13hFU_\",\"children\":[{\"text\":\"Voice messaging refers to recording and sending a voice message. At the same time, the voice message can be converted to text and translated, as shown below:\"}],\"type\":\"p\"},{\"id\":\"WiOtRw9tiArFFx2rEpShc\",\"type\":\"p\",\"children\":[{\"text\":\"\"},{\"type\":\"image\",\"url\":\"https://cloudcache.intl.tencent-cloud.com/cms/backend-cms/e094c397b37211eeb2a1525400170219.gif\",\"inline\":true,\"alt\":\"\",\"children\":[{\"text\":\"\"}],\"id\":\"XdoAMk3T9mSnAR_4vlK_C\",\"naturalSize\":[960,444],\"size\":[603,278]},{\"text\":\"\"}]},{\"id\":\"DMaXTiN1BWrjXQzQHTp2C\",\"children\":[{\"id\":\"gQ3JFIo-SkVeCRryG7SrW\",\"children\":[{\"b\":1,\"text\":\"Note:\"}],\"type\":\"p\"},{\"id\":\"9X1GEa7G9xpNzGE9l_5Rd\",\"children\":[{\"text\":\"We recommend that you use the streaming speech-to-text service.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"KB5w8q0qTl-1RwySkJ6Pm\",\"children\":[{\"text\":\"You do not need to enter a voice chat room when using the voice messaging service.\"}],\"start\":false,\"type\":\"uli\"}],\"hintType\":\"info\",\"type\":\"hint\"},{\"id\":\"62fU1cvLgD7erB3nOQCg8\",\"children\":[{\"text\":\"Voice messaging and speech-to-text conversion flowchart\"}],\"nodeId\":\".E8.AF.AD.E9.9F.B3.E6.B6.88.E6.81.AF.E5.8F.8A.E8.AF.AD.E9.9F.B3.E8.BD.AC.E6.96.87.E5.AD.97.E6.B5.81.E7.A8.8B.E5.9B.BE\",\"type\":\"h4\"},{\"type\":\"p\",\"children\":[{\"text\":\"\"},{\"id\":\"OxFi_ysnhNiPu23xpjERa\",\"alt\":\"\",\"children\":[{\"text\":\"\"}],\"inline\":true,\"naturalSize\":[878,828],\"size\":[801,755],\"type\":\"image\",\"url\":\"https://cloudcache.intl.tencent-cloud.com/cms/backend-cms/f85f96e5b96711eda534525400c56988.png\"},{\"text\":\"\"}],\"id\":\"nTy0tnzdNPnhbrBoCocZ9\"},{\"id\":\"9EHFg0fQf0JbYSg7-HI87\",\"children\":[{\"text\":\"Integrating Voice Messaging and Speech-to-Text Service\"}],\"nodeId\":\".E6.8E.A5.E5.85.A5.E8.AF.AD.E9.9F.B3.E6.B6.88.E6.81.AF.E5.8F.8A.E8.BD.AC.E6.96.87.E6.9C.AC.E6.9C.8D.E5.8A.A1\",\"type\":\"h2\"},{\"id\":\"TkJNXKl5AqvDuMqKKndsE\",\"children\":[{\"text\":\"Voice messaging and speech-to-text APIs\"}],\"nodeId\":\".E8.AF.AD.E9.9F.B3.E6.B6.88.E6.81.AF.E5.8F.8A.E8.BD.AC.E6.96.87.E5.AD.97.E7.9B.B8.E5.85.B3.E6.8E.A5.E5.8F.A3\",\"type\":\"h3\"},{\"id\":\"uVe4QQu_kHnYrah3KZJks\",\"children\":[{\"id\":\"AMjrkP9TbY69UGI9N-1Wt\",\"children\":[{\"id\":\"P4f0qVSigf-gXnVVnz12O\",\"children\":[{\"id\":\"zZfwGuqqOpj7T0Ar1fFdd\",\"children\":[{\"text\":\"API\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"4dAKXFI6b0B2m3LUDwb0p\",\"children\":[{\"id\":\"QNBE1VcyM3Rr9us2Y7cDJ\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"dskvm7fWZdRlnSA5uOCDd\",\"children\":[{\"id\":\"NJZV4lBMDmMvBNGS0bSgt\",\"children\":[{\"id\":\"YWsifB8U_o5FWUlnE5eFu\",\"children\":[{\"id\":\"P0QI-IFI-qEAS_VfFiJcv\",\"children\":[{\"text\":\"ApplyPTTAuthbuffer\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"hBcOrG_aRxO-YNbkTXT7Y\",\"children\":[{\"id\":\"oFIAsKEeP3AGk3Ap-6cKK\",\"children\":[{\"id\":\"xOJjJnzRVxUsEZSyQRQms\",\"children\":[{\"text\":\"Initializes authentication.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"Z4_VtDYBv18Eos1eh8aSh\",\"children\":[{\"id\":\"3aGs0CFehs1g8JI3prAC2\",\"children\":[{\"id\":\"hLQaRHHmVPF0y4GJACgbS\",\"children\":[{\"id\":\"W85YryT4Nu-OtpvBx_Otw\",\"children\":[{\"text\":\"SetMaxMessageLength\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Rs5fO5EqJ02ELeUDSkGyj\",\"children\":[{\"id\":\"yCLD8RVp184luZjACKJNA\",\"children\":[{\"id\":\"OCeMNIcKQChZg24Y1CczG\",\"children\":[{\"text\":\"Specifies the maximum duration of a voice message.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"2jB4LNTLF4Qa8p7LDzIyU\",\"children\":[{\"id\":\"BCcyrByw8cqWTgiSEx3C1\",\"children\":[{\"id\":\"V77u_oViMErluwgyWaJzQ\",\"children\":[{\"id\":\"kc9PPCkYUPeBBrjALRFO-\",\"children\":[{\"text\":\"StartRecording\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"EffdJHd0Qo89qPeb9oiyx\",\"children\":[{\"id\":\"zn69RlC0eDr0iZVd3k3oY\",\"children\":[{\"id\":\"suy3BopNYyJu3g9bB584K\",\"children\":[{\"text\":\"Starts recording.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"JIK0DFVl5gWMByONfhusr\",\"children\":[{\"id\":\"V5OZg51-3S9dYyUk_QCH0\",\"children\":[{\"id\":\"1MmXJyuW0Zt-MkbABIscd\",\"children\":[{\"id\":\"fUNKUEqw6ClYr7sD3gHhg\",\"children\":[{\"text\":\"StartRecordingWithStreamingRecognition\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"MUdZtY62tbehBKA6kWhKJ\",\"children\":[{\"id\":\"yElsZox76_DCT6mrNfDFd\",\"children\":[{\"id\":\"s9i6IUh9hjlkNJcsQvnOt\",\"children\":[{\"text\":\"Starts streaming recording.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"ijlFMz6zhFYrkEUWxU-VW\",\"children\":[{\"id\":\"u_rppahJBoB2C82dBrg91\",\"children\":[{\"id\":\"HAfPADJ8KOxKYudHmX8Kl\",\"children\":[{\"id\":\"kz3Zz9TKcZZ-Dhq5FteaA\",\"children\":[{\"text\":\"PauseRecording\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Rz47trE344FB7_BDc7Nat\",\"children\":[{\"id\":\"n52ZtmyXGE7OuQfHxqUqy\",\"children\":[{\"id\":\"b0D-PW2AJ2Eh6DCH4El6C\",\"children\":[{\"text\":\"Pauses recording.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"fVJsM7FpERmb83ItbdKbW\",\"children\":[{\"id\":\"dkPrJBygDqkkvnnHXLNiZ\",\"children\":[{\"id\":\"b1q3SmjdKh8X1YGcEXh55\",\"children\":[{\"id\":\"DgGTHz_F0zbCkTEDmHGv6\",\"children\":[{\"text\":\"ResumeRecording\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"riigqFdB5t86D-w1ieBFI\",\"children\":[{\"id\":\"wHn693w3H-byFLq6epUf9\",\"children\":[{\"id\":\"vnL4QL6SOZJdRt-h8BTIF\",\"children\":[{\"text\":\"Resumes recording.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"20GFjFikKbnGOYGkUWw6K\",\"children\":[{\"id\":\"v4ZTmQQC0BojJYO8knsTC\",\"children\":[{\"id\":\"6IdI-try0g4fHBinbdEiy\",\"children\":[{\"id\":\"VF75nPX0acKQLXEKl8mzB\",\"children\":[{\"text\":\"StopRecording\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Wny-9h5JQ_NP7ZFulwgc_\",\"children\":[{\"id\":\"ZsRjR3Vvu-ocNajdUmaIX\",\"children\":[{\"id\":\"3B5Go-sz1naomd2qiAEb9\",\"children\":[{\"text\":\"This API is used to stop audio recording.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"wy0fugof51Emy_LjkJGI0\",\"children\":[{\"id\":\"875N0tRM7PFS_E3sv5N_m\",\"children\":[{\"id\":\"5fzK5SvJ6n2KZyoMY3HUn\",\"children\":[{\"id\":\"CLARpWp_9GcuhV69V0XFr\",\"children\":[{\"text\":\"CancelRecording\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"5GkiEdXCx9b2oaJ2_71d8\",\"children\":[{\"id\":\"8slo5Q9FUq1JoWq7p3M9U\",\"children\":[{\"id\":\"f-GlN34sqDMHnlUvxqgDA\",\"children\":[{\"text\":\"Cancels recording.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"mgJ6xkdikJf688cPaA-fd\",\"children\":[{\"id\":\"AkP4GbC4TLimuQPZQJym9\",\"children\":[{\"id\":\"wKx90WKgbOVNoRgsVM2jH\",\"children\":[{\"id\":\"LibJukF1jGyvyJ-A8JiYX\",\"children\":[{\"text\":\"GetMicLevel\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"cVmQlphzH_7g9QWSvxO6e\",\"children\":[{\"id\":\"dkCtdWGUj9nbFp8Wyb6aJ\",\"children\":[{\"id\":\"geZi9PLl_YpqcyUJYVN_l\",\"children\":[{\"text\":\"Gets the real-time mic volume level.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"VISYYijj-TYec-NUROrLU\",\"children\":[{\"id\":\"RYXBJkcvgNwPqPKNLIk1h\",\"children\":[{\"id\":\"dqlHZh24uyZIKJRGXI8-o\",\"children\":[{\"id\":\"nDH5q_mGDmOg0uL6FMCV-\",\"children\":[{\"text\":\"SetMicVolume\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"DiLbHCeWCqKYQDfy2n6Cb\",\"children\":[{\"id\":\"AOL-nVWYJmSRdQ-b0Vdmn\",\"children\":[{\"id\":\"DLn5khD0WGjebfCE6PiVD\",\"children\":[{\"text\":\"Sets the recording volume level.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"99HJD5IrGvdsDy0RZN8Hg\",\"children\":[{\"id\":\"ZDoj404Kuhh3GXfauO1Ky\",\"children\":[{\"id\":\"Diil2y_xt6u1sE9gREtgD\",\"children\":[{\"id\":\"-Nw8oOW621oJiIt_sTn0G\",\"children\":[{\"text\":\"GetMicVolume\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"HKzRH32B5k4-egQ2XTK_E\",\"children\":[{\"id\":\"kH-WyuxAwoWFNN_j7NTj1\",\"children\":[{\"id\":\"W1gwWZcYN0oRKATD_EOZF\",\"children\":[{\"text\":\"Gets the recording volume level.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"_xo2q1xszLUWolVH1gxFu\",\"children\":[{\"id\":\"BsTj4yzjwSrdALOyLcWXK\",\"children\":[{\"id\":\"lHOnkNv4gMHxy1JqBufhH\",\"children\":[{\"id\":\"v3cl0DdSBtel2Z3gu3dc7\",\"children\":[{\"text\":\"GetSpeakerLevel\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"I9LlMjkKxdfDi1yv1OU1_\",\"children\":[{\"id\":\"3XKH8HTizGGImnj-rHhyf\",\"children\":[{\"id\":\"-8aBHVX_wOc0ar_v25Q9N\",\"children\":[{\"text\":\"Gets the real-time speaker volume level.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"RWDjrqVkibAtguXaRhRDF\",\"children\":[{\"id\":\"jOdMfjFt6nqyH6r0DZwNB\",\"children\":[{\"id\":\"dEFAJRnVcl_98gyQ6cGGs\",\"children\":[{\"id\":\"ejHioUYI87xfuAFmfuq3T\",\"children\":[{\"text\":\"SetSpeakerVolume\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"AEf32TIxbg9VAZVm3_xcx\",\"children\":[{\"id\":\"joBnBztfiP-tdWGerQoah\",\"children\":[{\"id\":\"O_Qu4u3RKAOXRQvJ8Y6CK\",\"children\":[{\"text\":\"Sets the playback volume level.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"iDWZV7FW7zb1q0CvRyKYt\",\"children\":[{\"id\":\"uWvlXK__O2nSzkHj38hqS\",\"children\":[{\"id\":\"PrHsM4BU2Ubn4oWlrf3b7\",\"children\":[{\"id\":\"Hr4GNT0I9cp15LSctWZ6g\",\"children\":[{\"text\":\"GetSpeakerVolume\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"kriv-7L5zwrUvgDSGlOzu\",\"children\":[{\"id\":\"nzzE8CKVBgC8GioqywVB9\",\"children\":[{\"id\":\"_blft48hpgOY3mbKI0tBZ\",\"children\":[{\"text\":\"Gets the playback volume level.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"VVaUoJT_9eS9HmroF0qoQ\",\"children\":[{\"id\":\"PbLozAgce-9uH7MxXKWe1\",\"children\":[{\"id\":\"wHv8H_S45EvS1teQqxzEC\",\"children\":[{\"id\":\"DiEMtDTEfH1sn6py2BKgn\",\"children\":[{\"text\":\"UploadRecordedFile\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"-6gSUGS05sbI8ck8ty3AH\",\"children\":[{\"id\":\"OFCvBk_zGESqCDdoKgbW8\",\"children\":[{\"id\":\"twOnjwqLYOVEJkgOiOq1N\",\"children\":[{\"text\":\"Uploads an audio file.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"aRYTEZVtlzYcMQxyT7xTb\",\"children\":[{\"id\":\"vgwL8mxgjTiKE8RJBSvs2\",\"children\":[{\"id\":\"AFkC33t3sTEq843iXh59p\",\"children\":[{\"id\":\"aYdLBwwMypoc7zIJPmSRP\",\"children\":[{\"text\":\"DownloadRecordedFile\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"YVYMfdCvIyiG1kxcJ7Ffs\",\"children\":[{\"id\":\"L-pVjeu3OF-TiYe-ufrkV\",\"children\":[{\"id\":\"Cx7X4ZO-ELoN55WX-2Jl7\",\"children\":[{\"text\":\"Downloads an audio file.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"-zuHFHvfkon7Hj_ihkCds\",\"children\":[{\"id\":\"wfG6X6D4GM54DkbNt_cX6\",\"children\":[{\"id\":\"zO66PG_0o4BuMT-B2JQsu\",\"children\":[{\"id\":\"ZV_1tbQCkusegYAKkBHZ3\",\"children\":[{\"text\":\"PlayRecordedFile\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"UKYUJgBMQ2bfOuy0Rv386\",\"children\":[{\"id\":\"tu_orRK0wTeE1hys3_n56\",\"children\":[{\"id\":\"svtbLZ9XQy-g1kas-4bxG\",\"children\":[{\"text\":\"Plays back an audio file.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"rUR8n0QFfbYJTlzwTi3KH\",\"children\":[{\"id\":\"Bw5rNAGyZGBvTWw1_RuDT\",\"children\":[{\"id\":\"0uZgYOdbO3AedaEijFGC1\",\"children\":[{\"id\":\"0ZUSlKXfwzvriSqFBp__u\",\"children\":[{\"text\":\"StopPlayFile\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"h3YS5o9JZQH5Vw--p4U8Y\",\"children\":[{\"id\":\"HSB5cTOhfJFI9pZ6KGxoU\",\"children\":[{\"id\":\"KBfu7Mqv7dMvPtItoO3ND\",\"children\":[{\"text\":\"Stops playing back an audio file.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"CGh-4dw1ML1gEZm9Lb-2m\",\"children\":[{\"id\":\"jo1El4F0Uqhzie074fjXj\",\"children\":[{\"id\":\"bWSTuk3_Z4fWHIWgZOjxU\",\"children\":[{\"id\":\"TPbdyJLgYBZbi-WaLwb6p\",\"children\":[{\"text\":\"GetFileSize\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"GSbk986hbfMQTaFzbtv6Z\",\"children\":[{\"id\":\"Yn2GfWc3jpudXrZVKJqkn\",\"children\":[{\"id\":\"doMq9avViWru4I3-oD0Ke\",\"children\":[{\"text\":\"Gets the audio file size.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"lUreYWSGmLAQ8CzrJxRdj\",\"children\":[{\"id\":\"RwolYVKBL3RZpip_zjXly\",\"children\":[{\"id\":\"ZTxYnClIP_sfsb4ecPIis\",\"children\":[{\"id\":\"LAnMI7RFzUvClg8nwpwGU\",\"children\":[{\"text\":\"GetVoiceFileDuration\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"AhuA6-CtL2mzlH18Eoxd0\",\"children\":[{\"id\":\"jAw0jMugFsz3CEK67Hu56\",\"children\":[{\"id\":\"UtMzOcr6RXNTgCRrjfTma\",\"children\":[{\"text\":\"Gets the audio file duration.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"mTs0e9Rb0A1_14bzBM9i2\",\"children\":[{\"id\":\"eBEpm97i3eT3RGgowBGH-\",\"children\":[{\"id\":\"LZwrNsUWD9F0KU1A9TGOr\",\"children\":[{\"id\":\"r9B7cXJwnCBf23E1Bu3Ak\",\"children\":[{\"text\":\"SpeechToText\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"NprpPUqOts1mcXf6xx-Yc\",\"children\":[{\"id\":\"NomZ1rtP0t-dZXbq5RrvR\",\"children\":[{\"id\":\"MQoID1KY9doPagsjCtvas\",\"children\":[{\"text\":\"Converts speech to text.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[44,56],\"widthMode\":\"percentage\"},{\"id\":\"EfA2844fU4TmUgmwkXhjQ\",\"children\":[{\"id\":\"4a6efqFSV8Z9S0WxLLdco\",\"children\":[{\"b\":1,\"text\":\"Maximum recording duration\"}],\"type\":\"p\"},{\"id\":\"Mwkx1fnCdQr4Zl7mq5FMX\",\"children\":[{\"text\":\"The maximum recording duration of a voice message is 58 seconds by default, and the minimum recording duration cannot be less than 1 second. If you want to customize the recording duration, for example, to modify the maximum recording duration to 10 seconds, please call the \"},{\"code\":1,\"text\":\"SetMaxMessageLength\"},{\"text\":\" API to set it after initialization.\"}],\"type\":\"p\"}],\"hintType\":\"warn\",\"type\":\"hint\"},{\"id\":\"ksfi5tOPP4KTcE7k--gAr\",\"children\":[{\"text\":\"Initializing the SDK\"}],\"nodeId\":\".E5.88.9D.E5.A7.8B.E5.8C.96-sdk\",\"type\":\"h3\"},{\"id\":\"_X8-0idCLkA335WRr2t85\",\"children\":[{\"text\":\"Before the initialization, the SDK is in the uninitialized status, and you need to initialize it through the \"},{\"code\":1,\"text\":\"Init\"},{\"text\":\" API before you can use the voice chat and voice message services.\"}],\"type\":\"p\"},{\"id\":\"HJSUC372Ez-7cyqEjrBsi\",\"children\":[{\"text\":\"If you have any questions when using the service, see \"},{\"id\":\"Ot0_spHfqm6yd7AXOplvV\",\"children\":[{\"text\":\"Speech-to-text Conversion\"}],\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/39716\"},\"type\":\"ref\"},{\"text\":\".\"}],\"type\":\"p\"},{\"id\":\"4WHGvQl_Tc8B1SySS7saG\",\"children\":[{\"text\":\"Authentication information\"}],\"nodeId\":\".E9.89.B4.E6.9D.83.E4.BF.A1.E6.81.AF\",\"type\":\"h3\"},{\"id\":\"nb9Wwl1ea7JTx2T_g_iT6\",\"children\":[{\"text\":\"Generate \"},{\"code\":1,\"text\":\"AuthBuffer\"},{\"text\":\" for encryption and authentication of relevant features. For release in the production environment, use the backend deployment key as detailed in \"},{\"id\":\"t2mqlpKMKWX7xu8PpnIPj\",\"children\":[{\"text\":\"Authentication Key\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://www.tencentcloud.com/document/product/607/12218\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/12218\"},\"type\":\"ref\"},{\"text\":\". To get the authentication key for voice messaging and speech-to-text services, the room ID parameter must be set to null.\"}],\"type\":\"p\"},{\"id\":\"oe9xmVTdl8W_1eRnc5oVB\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\".E5.87.BD.E6.95.B0.E5.8E.9F.E5.9E.8B8\",\"type\":\"h4\"},{\"id\":\"PjOow2Vsuz_MUg3vp_a3A\",\"autoWrap\":false,\"children\":[{\"id\":\"sJujhV_18G6oE_KeVA43U\",\"children\":[{\"text\":\"AuthBuffer public native byte[] genAuthBuffer(int sdkAppId, String roomId, String openId, String key)\"}],\"type\":\"code-line\"}],\"language\":\"java\",\"type\":\"code-block\"},{\"id\":\"0tzgAiQxsfOSWUptmJP0j\",\"children\":[{\"id\":\"BY4tvL7ipv0P3uIMg95lm\",\"children\":[{\"id\":\"uH4NAsboOvRJDIy11jh70\",\"children\":[{\"id\":\"9BqepsELo5ABPYr2ulx2L\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"nw6oXfr4pi2ILCRZbaLPU\",\"children\":[{\"id\":\"b9kBRWTa4war1HjayXXM-\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"kvG9f_yS8WFzCBMElyjzS\",\"children\":[{\"id\":\"eWMVXXeGoImU4VUhqfVZS\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"HhlbOclQay5cfPQCHdzSV\",\"children\":[{\"id\":\"vTqbyzPRY398C-1CmyRXR\",\"children\":[{\"id\":\"WnKG1Y3AGsZLBVdJskZDc\",\"children\":[{\"id\":\"L5ZzrbwOf3sWVs2kHe3Q_\",\"children\":[{\"text\":\"appId\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"qmkFXS7X4jWj2qSDXjZxw\",\"children\":[{\"id\":\"5d_oFYLVK22OV3Optr-Ys\",\"children\":[{\"id\":\"G581hNqcLoQdLB4w9_i4M\",\"children\":[{\"text\":\"int\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"TWfw2D4fcqpvrKCcqVnx0\",\"children\":[{\"id\":\"o-1tOc3UVPPGU6IF69rco\",\"children\":[{\"id\":\"vEJVpTnzf4HdBkpNkfPQU\",\"children\":[{\"code\":1,\"text\":\"AppId\"},{\"text\":\" from the Tencent Cloud console\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"B6ac7GptpwrHwDnAFkWQG\",\"children\":[{\"id\":\"B_xnFQrBmrN5LmpbC7qpx\",\"children\":[{\"id\":\"JFPfhUNWcJ3K3pHQPdTQP\",\"children\":[{\"id\":\"h9h0AWNLzVQoXm6rMalCN\",\"children\":[{\"text\":\"roomId\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"QchDaw4mLmEl86XGn6y62\",\"children\":[{\"id\":\"5UrnRrUg7B-L2VShakAfs\",\"children\":[{\"id\":\"Avz-qQ37jjeTORqVaDiXW\",\"children\":[{\"text\":\"string\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"IaRWa9zm30CesI4Vnb7b4\",\"children\":[{\"id\":\"KDL31k_Suc7viNFCCW_Ay\",\"children\":[{\"id\":\"paDQLOyx5Zt1staSK2_YU\",\"children\":[{\"text\":\"Room ID, which must be set to null.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"rqo4Q2J_hMQaqJGPAxFxR\",\"children\":[{\"id\":\"wWTz-0eCET5jE6TkRaz68\",\"children\":[{\"id\":\"rFMvUBCLzKbwLEDhmCTo_\",\"children\":[{\"id\":\"3OJofsGZhpmYFOJRiKd3q\",\"children\":[{\"text\":\"openId\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"D6NFwft5hy3FcMuJL2ren\",\"children\":[{\"id\":\"fZsj_a-CpZnearDDF-Gh2\",\"children\":[{\"id\":\"xSlNuGHdBap8HGUciVvqh\",\"children\":[{\"text\":\"string\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ceX9iX-Z40JJgNkU0TsUG\",\"children\":[{\"id\":\"-4mHVpaKiU4UUPJiKTl_J\",\"children\":[{\"id\":\"89-MxdDx44GKGD9x8UlFr\",\"children\":[{\"text\":\"User ID, which is the same as \"},{\"code\":1,\"text\":\"openId\"},{\"text\":\" during initialization.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"yNvh3Q9cSin-qwi-9Y2Vj\",\"children\":[{\"id\":\"32UcLMrh2AR-vT_SNA28f\",\"children\":[{\"id\":\"DhB0eo5T74-m2QWbgEuN0\",\"children\":[{\"id\":\"J08YwCA5-hHp69TfsQqVe\",\"children\":[{\"text\":\"key\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"oM9LiicUUzEzYaBhURN7Z\",\"children\":[{\"id\":\"v2U5smr5-Vpyia88ljmiR\",\"children\":[{\"id\":\"HIEXV_ZNUAEM6W-IBX8W5\",\"children\":[{\"text\":\"string\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"CCj_JNmfxbQjPsJGG7_nd\",\"children\":[{\"id\":\"_X3s7iEA_Orf9VGCPeog_\",\"children\":[{\"id\":\"r8ZhonPMBVN2ZTyVbjDt_\",\"children\":[{\"text\":\"Permission key from the Tencent Cloud \"},{\"id\":\"SkNPqXDeOnuimWeoBRsS4\",\"children\":[{\"text\":\"console\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://console.tencentcloud.com/gamegme\",\"props\":{\"type\":\"link\",\"url\":\"https://console.tencentcloud.com/gamegme\"},\"type\":\"ref\"},{\"text\":\".\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[17,11,72],\"widthMode\":\"percentage\"},{\"id\":\"_ZA8_7c_Ku9dG7MvpZAag\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.816\",\"type\":\"h4\"},{\"id\":\"ip2X_kG7s9EvH2sItIhft\",\"autoWrap\":false,\"children\":[{\"id\":\"vvaF65ETAoArMyuUSvI_Q\",\"children\":[{\"text\":\"import com.tencent.av.sig.AuthBuffer;// Header file\"}],\"type\":\"code-line\"},{\"id\":\"WO9bdtvU9DhBgsJnv2erU\",\"children\":[{\"text\":\"byte[] authBuffer = AuthBuffer.getInstance().genAuthBuffer(Integer.parseInt(sdkAppId), \\\"0\\\",openId, key);\"}],\"type\":\"code-line\"}],\"language\":\"java\",\"type\":\"code-block\"},{\"id\":\"YUTfhW6dYNJ-zPiuUYcda\",\"children\":[{\"id\":\"1ofvC7oU1x7hLNAFAySh8\",\"children\":[{\"text\":\"Authentication initialization\"}],\"nodeId\":\"ApplyPtt\",\"type\":\"p\"}],\"nodeId\":\".3Ca-id.3D.22applyptt.22.3E.E9.89.B4.E6.9D.83.E5.88.9D.E5.A7.8B.E5.8C.96.3C.2Fa.3E\",\"type\":\"h3\"},{\"id\":\"YQA-fuIPo3-KLliSwC5DF\",\"children\":[{\"text\":\"Call authentication initialization after initializing the SDK. For more information on how to get the \"},{\"code\":1,\"text\":\"authBuffer\"},{\"text\":\", see \"},{\"code\":1,\"text\":\"genAuthBuffer\"},{\"text\":\" (the voice chat authentication information API).\"}],\"type\":\"p\"},{\"id\":\"TazhlRr8dAdB9Xbxjs0_P\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\".E5.87.BD.E6.95.B0.E5.8E.9F.E5.9E.8B9\",\"type\":\"h4\"},{\"id\":\"AszxqUP1WcX5Dzsi6gPbN\",\"autoWrap\":false,\"children\":[{\"id\":\"p3sBCklIR4TBHgj7c4E6f\",\"children\":[{\"text\":\"public abstract int ApplyPTTAuthbuffer(byte[] authBuffer);\"}],\"type\":\"code-line\"}],\"language\":\"java\",\"type\":\"code-block\"},{\"id\":\"MIWvERwli0SX8ZQEPtbQR\",\"children\":[{\"id\":\"NTqGP8VhifBWAz17wQP8m\",\"children\":[{\"id\":\"Feh3DyVpjr8duoqWw_wnG\",\"children\":[{\"id\":\"zvsome7FSlpWMo04wAPae\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Y2aTpNjXbEhZxJhxk2sC8\",\"children\":[{\"id\":\"bXqKx3bWdWFWccs4gK43e\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"EECifuJJDcd-0rC2g1aKF\",\"children\":[{\"id\":\"_TCcMOtd91aa15F4tT6dV\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"GCSXynFXUx8LdInGI53u6\",\"children\":[{\"id\":\"iEX7SOMCy95HNbrYwUI-e\",\"children\":[{\"id\":\"vjRVGSsuOHTWesxMnvw_0\",\"children\":[{\"id\":\"h3Z50poWBtlH3BLUqCQ2v\",\"children\":[{\"text\":\"authBuffer\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"YdhqPKXsxKy5VeWoE-HzU\",\"children\":[{\"id\":\"wSYe8nPojTvmmWUF4FxJ7\",\"children\":[{\"id\":\"IgleAFQka-SQliZD3sEsJ\",\"children\":[{\"text\":\"String\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"oWEWtvT0-iJSM0bTyPuZY\",\"children\":[{\"id\":\"zGn0YrJDrzZ4MQysH3EkP\",\"children\":[{\"id\":\"qx7HU1lzC34OVS3xJyTjc\",\"children\":[{\"text\":\"Authentication\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[33,24,43],\"widthMode\":\"percentage\"},{\"id\":\"caNWCGpeu_309gJS1C1aA\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.817\",\"type\":\"h4\"},{\"id\":\"EeOmmw_mGMQif1RYO5iS-\",\"autoWrap\":false,\"children\":[{\"id\":\"dxR-KxkRuHpdR0qnXCZTl\",\"children\":[{\"text\":\"byte[] authBuffer = AuthBuffer.getInstance().genAuthBuffer(Integer.parseInt(sdkAppId), \\\"0\\\", openId, key);\"}],\"type\":\"code-line\"},{\"id\":\"ft0o_5CKcNybjobU1ds6G\",\"children\":[{\"text\":\"ITMGContext.GetInstance(this).GetPTT().ApplyPTTAuthbuffer(authBuffer);\"}],\"type\":\"code-line\"}],\"language\":\"java\",\"type\":\"code-block\"},{\"id\":\"lrbCebFE9AFBRc0S8_vT4\",\"children\":[{\"text\":\"Streaming Speech Recognition\"}],\"nodeId\":\".E6.B5.81.E5.BC.8F.E8.AF.AD.E9.9F.B3.E8.AF.86.E5.88.AB\",\"type\":\"h2\"},{\"id\":\"2b5t1OVsaLA8cXH2V9u6A\",\"children\":[{\"id\":\"gUnZSVyjWLLYFqBK0YfkP\",\"children\":[{\"text\":\"Starting streaming speech recognition\"}],\"nodeId\":\"StartRWSR\",\"type\":\"p\"}],\"nodeId\":\".3Ca-id.3D.22startrwsr.22.3E.E5.90.AF.E5.8A.A8.E6.B5.81.E5.BC.8F.E8.AF.AD.E9.9F.B3.E8.AF.86.E5.88.AB.3C.2Fa.3E\",\"type\":\"h3\"},{\"id\":\"sM2DzAE_iWvGo0MZkIuBe\",\"children\":[{\"text\":\"This API is used to start streaming speech recognition. Text obtained from speech-to-text conversion will be returned in real time in its callback. It can specify a language for recognition or translate the information recognized in speech into a specified language and return the translation. \"},{\"text\":\"To stop recording, call \",\"b\":1},{\"code\":1,\"text\":\"StopRecording\",\"b\":1},{\"text\":\". The callback will be returned after the recording is stopped.\"}],\"type\":\"p\"},{\"id\":\"ONS-EYw8LkWuklRAfgAWN\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\".E5.87.BD.E6.95.B0.E5.8E.9F.E5.9E.8B10\",\"type\":\"h4\"},{\"id\":\"GqbkSg6pPTsEQP5VLqpvr\",\"autoWrap\":false,\"children\":[{\"id\":\"nUOAXydt4Rp8-6iNr-6O7\",\"children\":[{\"text\":\"public abstract int StartRecordingWithStreamingRecognition (String filePath);\"}],\"type\":\"code-line\"},{\"id\":\"7xr-w4XEwLT4RIM0pKvde\",\"children\":[{\"text\":\"public abstract int StartRecordingWithStreamingRecognition (String filePath,String language,String translatelanguage);\"}],\"type\":\"code-line\"},{\"id\":\"utNIflwtWfAtW_BGenvA_\",\"children\":[{\"text\":\"public abstract int StopRecording();\"}],\"type\":\"code-line\"}],\"language\":\"java\",\"type\":\"code-block\"},{\"id\":\"SjaCf453ENz3EUoTIMLsI\",\"children\":[{\"id\":\"ur-YIr_T73jYJIEBmiVPu\",\"children\":[{\"id\":\"izc_qHJdL4UdaWW8Ihqdr\",\"children\":[{\"id\":\"2mRbwJ0CjCko2zyldQgV4\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"LNrNxLhVQddT5UNcXqhIb\",\"children\":[{\"id\":\"BmSLcmEnXS4OrIE5qEdpa\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Qs1lpeIAC9C2DYMxlZs4k\",\"children\":[{\"id\":\"eCLGzg4sNvoJoouqddAQ8\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"-tJQYOLr-dvPTi9aezgU5\",\"children\":[{\"id\":\"1gKqBMWL3-MU__f9rqPy5\",\"children\":[{\"id\":\"BFVMHYRhKaJ2-pwHqBUkN\",\"children\":[{\"id\":\"n4uU0BrU22rmSyLqK3Cvf\",\"children\":[{\"text\":\"filePath\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"oN95BrLgGoiEUXPhzMN26\",\"children\":[{\"id\":\"IVT-9OdSLmPu-d6zaetQe\",\"children\":[{\"id\":\"MIW88pHtdGrEnEwzT2-5X\",\"children\":[{\"text\":\"String\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"iOuLRPArTDxKxS6CnQ7Zt\",\"children\":[{\"id\":\"lcq9MMlbQdJL107LBdJl_\",\"children\":[{\"id\":\"Frbzr7hXVxqjEpB9WW6St\",\"children\":[{\"text\":\"Path of the stored audio file\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"ZbIjZxLTGVGU1ri_uVV3o\",\"children\":[{\"id\":\"atFnUBFAA1Td0n6-augaV\",\"children\":[{\"id\":\"eNjwhBkFXHBJy9vfJKLuS\",\"children\":[{\"id\":\"2N4zRZ08PiWog0_D912DQ\",\"children\":[{\"text\":\"speechLanguage\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"8NC2QfLo-Zrz3YjqipMuE\",\"children\":[{\"id\":\"gEkEYgDNzhc4NWAgyJidN\",\"children\":[{\"id\":\"FhNuuU8ypCLVowQDLyEpe\",\"children\":[{\"text\":\"String\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"d8BsON9cbJfhAKFjvpH3c\",\"children\":[{\"id\":\"feE4qajpHrhEtVlRIc39a\",\"children\":[{\"id\":\"Lto02JA7jDYDAp8pErNxg\",\"children\":[{\"text\":\"The language in which the audio file is to be converted into text. For parameters, see \"},{\"id\":\"vMXySiqdxjDPnUd04WvU6\",\"children\":[{\"text\":\"Language Parameter Reference List\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://www.tencentcloud.com/document/product/607/30260\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/30260\"},\"type\":\"ref\"},{\"text\":\".\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"wgXe6T5P1i1x9nUSI9ueu\",\"children\":[{\"id\":\"1BtZ6WE_XzdEPri4U8H65\",\"children\":[{\"id\":\"g_96DLA8hDQBjP0oVMw81\",\"children\":[{\"id\":\"5ORyjhAUCkHjW4tTrq32P\",\"children\":[{\"text\":\"translateLanguage\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"yCJNOx9Up5Hv_Uhqdc4ES\",\"children\":[{\"id\":\"UDCqVUybeoD7HRLcUnGPV\",\"children\":[{\"id\":\"iRDV-X8yNZYbz2XdAms8O\",\"children\":[{\"text\":\"String\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"55k0Rhsz7ily3Jz-FMYeg\",\"children\":[{\"id\":\"V0HOsCYOBafLJ7tTRkmJv\",\"children\":[{\"id\":\"5BHqhl6OAFTwHxyyB91qe\",\"children\":[{\"text\":\"The language into which the audio file is to be translated into text. For parameters, see \"},{\"id\":\"vwN18P3Fiz1xbypQu10h9\",\"children\":[{\"text\":\"Language Parameter Reference List\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://www.tencentcloud.com/document/product/607/30260\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/30260\"},\"type\":\"ref\"},{\"text\":\". (This parameter is currently unavailable. Enter the same value as that of \"},{\"code\":1,\"text\":\"speechLanguage\"},{\"text\":\".)\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[18,10,72],\"widthMode\":\"percentage\"},{\"id\":\"xXcEttwGsETbhaz8lMLmg\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.818\",\"type\":\"h4\"},{\"id\":\"Hq_CDDoYwnwdoBkS7FsKi\",\"autoWrap\":false,\"children\":[{\"id\":\"7wbpu-zwJzvN0CtjuckmE\",\"children\":[{\"text\":\"String temple = getActivity().getExternalFilesDir(null).getAbsolutePath() + \\\"/test_\\\"+(index++)+\\\".ptt\\\";\"}],\"type\":\"code-line\"},{\"id\":\"o7nhH7zpN7VsQ4HAUwHR8\",\"children\":[{\"text\":\"ITMGContext.GetInstance(getActivity()).GetPTT().StartRecordingWithStreamingRecognition(temple,\\\"cmn-Hans-CN\\\",\\\"cmn-Hans-CN\\\");\"}],\"type\":\"code-line\"}],\"language\":\"java\",\"type\":\"code-block\"},{\"id\":\"EExbgKWvSRZ_OLU6nL33b\",\"children\":[{\"text\":\"Callback for streaming speech recognition\"}],\"nodeId\":\".E6.B5.81.E5.BC.8F.E8.AF.AD.E9.9F.B3.E8.AF.86.E5.88.AB.E7.9A.84.E5.9B.9E.E8.B0.83\",\"type\":\"h3\"},{\"id\":\"yZL6bqR6VCqtk8XTMV2qP\",\"children\":[{\"text\":\"After streaming speech recognition is started, you need to listen for callback messages in the callback function \"},{\"code\":1,\"text\":\"onEvent\"},{\"text\":\". Event messages are divided into:\"}],\"type\":\"p\"},{\"id\":\"4JGlqiErshZsCDZzS1rig\",\"children\":[{\"code\":1,\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRECOGNITION_COMPLETE\"},{\"text\":\" returns text after the recording is stopped and the recognition is completed, which is equivalent to returning the recognized text after a paragraph of speech.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"fzBtFpA36mqiEnyTsNoQy\",\"children\":[{\"code\":1,\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRECOGNITION_IS_RUNNING\"},{\"text\":\" returns the recognized text in real time during the recording, which is equivalent to returning the recognized text while speaking.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"9Be-vuyk8KIorrUHEs2S4\",\"children\":[{\"text\":\"The event message will be identified in the \"},{\"code\":1,\"text\":\"OnEvent function\"},{\"text\":\" based on the actual needs. The delivered event message contains the following four parameters.\"}],\"type\":\"p\"},{\"id\":\"BAxmVBQHOU-DPNGHC_jhs\",\"children\":[{\"id\":\"0Mz5y9emfb-mNPykDWm1t\",\"children\":[{\"id\":\"zI9z8zPBC77v7x5KowAYC\",\"children\":[{\"id\":\"6NN8MvcCGx37L0pZ7TjTT\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"qSk_n3gQYrRKDge_gzMr6\",\"children\":[{\"id\":\"WMpSePySwfq58Pb3xbuDF\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"KnHM6NIb9IKUIvsl1nlfr\",\"children\":[{\"id\":\"EHDzwz9bia7Ht_tRSw4Me\",\"children\":[{\"id\":\"1FZYHv88yiejsQhOzLB6Z\",\"children\":[{\"id\":\"hpsRRuwRApmvq1uuhjZ7l\",\"children\":[{\"text\":\"result\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"aP8grdJsKlpjQwVlJGpRC\",\"children\":[{\"id\":\"z-bgwPqs5keyZuPqyhzBG\",\"children\":[{\"id\":\"yAYHqO3ziyWDCxiz8a6CF\",\"children\":[{\"text\":\"Return code indicating whether streaming speech-to-text conversion is successful\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"M-8MnhzY8V19zM12j6Xgx\",\"children\":[{\"id\":\"QhX1BbCKaxhyJ0gWsOznX\",\"children\":[{\"id\":\"O320CXtU9Hj3tBtTxBWU9\",\"children\":[{\"id\":\"XKH97lBpOA0DLEmryJo66\",\"children\":[{\"text\":\"text\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"gcx_e0sf3MKJr2XfgX0nT\",\"children\":[{\"id\":\"6qbvAjk3rUHHC8rz1uhHA\",\"children\":[{\"id\":\"eoD6OKSkjSpU5oTxJbMSq\",\"children\":[{\"text\":\"Text converted from speech\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"sKsfhOXFOEbibmFFYPNgz\",\"children\":[{\"id\":\"QbbCwK5kr585XilUHkDlG\",\"children\":[{\"id\":\"5cZ-iLcViciQe-rsYw8wl\",\"children\":[{\"id\":\"MU8_8PeSgnXabJIiHDmiK\",\"children\":[{\"text\":\"file_path\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"3ucvO478COwPnt-qnSnbM\",\"children\":[{\"id\":\"PejviJIdoYhWWX5XMTWlz\",\"children\":[{\"id\":\"zUhMh0CRtUYZij1D09w1Z\",\"children\":[{\"text\":\"Local path of the stored recording file\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"ikrYZlaJkxfYVFehbIbfs\",\"children\":[{\"id\":\"Kiws7JJcjTbcys7VE1sup\",\"children\":[{\"id\":\"BiJElBjI2NfUmtIKokpbG\",\"children\":[{\"id\":\"C0VKbEemZUjnoc_qHuubO\",\"children\":[{\"text\":\"file_id\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"R_byxl6CXhGMxYoHQ4jiw\",\"children\":[{\"id\":\"JCB8i592HAIybphF20JG5\",\"children\":[{\"id\":\"l58QcGEb6ySoT1A_BCw-a\",\"children\":[{\"text\":\"Backend URL address of the recording file, which will be retained for 90 days. This field is fixed at \"},{\"id\":\"qXNxPGk4Km6r_VYaGJ_Vb\",\"children\":[{\"text\":\"http://gme-v2-\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"http://gme-v2-\",\"props\":{\"type\":\"link\",\"url\":\"http://gme-v2-\"},\"type\":\"ref\"},{\"text\":\".\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[11,89],\"widthMode\":\"percentage\"},{\"id\":\"qOysf8EiJ1y7zKBRvN1pr\",\"children\":[{\"id\":\"8N5dGtOUKF1niTSKbxWQg\",\"children\":[{\"b\":1,\"text\":\"Note:\"}],\"type\":\"p\"},{\"id\":\"9r9_SRLZlTewXnij8qcqu\",\"children\":[{\"text\":\"The file_id is empty when the 'ITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRecognition_IS_RUNNING' message is listened.\"}],\"type\":\"p\"}],\"hintType\":\"alert\",\"type\":\"hint\"},{\"id\":\"wjrq_gfBj20FYgLTOWgJS\",\"children\":[{\"text\":\"Error codes\"}],\"nodeId\":\".E9.94.99.E8.AF.AF.E7.A0.81\",\"type\":\"h4\"},{\"id\":\"XR3WazRe_T87nDznlfiu_\",\"children\":[{\"id\":\"A2KykU59yv1dDuUE65Kq8\",\"children\":[{\"id\":\"okNRzF9wYc0Sx9IRwpJ6a\",\"children\":[{\"id\":\"PENX1E_yME_dHF7FJJX5_\",\"children\":[{\"text\":\"Error Code\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"vUYVewn_zbeix_YuSS_ol\",\"children\":[{\"id\":\"X_Cmg0mceJ0d7WvTfXAjj\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"T_-3Wn6vQxyjNSEf7JOyj\",\"children\":[{\"id\":\"tF7AsdT7XEgCmyG3Syd3b\",\"children\":[{\"text\":\"Solution\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"Vzi2Bqakg_jwC7_JSQOIl\",\"children\":[{\"id\":\"TcEE7-yYYzyQdGFs2tITO\",\"children\":[{\"id\":\"W5AQdbWdGeXQBpwVid5yT\",\"children\":[{\"id\":\"qo_RgoCdAS6w8Ppi08LyF\",\"children\":[{\"text\":\"32775\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ENXO1-HjIcpiyHexn7a80\",\"children\":[{\"id\":\"i9diqI6irz3I6vG1N5gog\",\"children\":[{\"id\":\"cz3az9clHNVc0JYpzaFLh\",\"children\":[{\"text\":\"Streaming speech-to-text conversion failed, but recording succeeded.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"2OwmhrgYcsjjhx9P4PsZR\",\"children\":[{\"id\":\"pcgqPyOB-v3xBRHTvZAQ6\",\"children\":[{\"id\":\"5hMAeLNoNo9XD90Ga_RbK\",\"children\":[{\"text\":\"Call the \"},{\"code\":1,\"text\":\"UploadRecordedFile\"},{\"text\":\" API to upload the recording file and then call the \"},{\"code\":1,\"text\":\"SpeechToText\"},{\"text\":\" API to perform speech-to-text conversion.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"zzm6sWaS6PBSKDeQJCB0E\",\"children\":[{\"id\":\"UimQ7Pi5DDIVQ0iWJVCiz\",\"children\":[{\"id\":\"JRJt26441oJwlwULjfxod\",\"children\":[{\"id\":\"A_Eq1mwnjeWh2cCHlPqoj\",\"children\":[{\"text\":\"32777\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ElolTzwJgu9YLzVkcznMo\",\"children\":[{\"id\":\"C0V0il-qlUAeqv4rW5lBE\",\"children\":[{\"id\":\"OQprakWbqEWBCbSfFE6AZ\",\"children\":[{\"text\":\"Streaming speech-to-text conversion failed, but recording and upload succeeded.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"eobgi-s-PTB8K2lV9x7jS\",\"children\":[{\"id\":\"smhTVzTnkl5QvEa6CeXo5\",\"children\":[{\"id\":\"jWoNDqbkFVBspDMQ_GSVt\",\"children\":[{\"text\":\"The message returned contains a backend URL after successful upload. Call the \"},{\"code\":1,\"text\":\"SpeechToText\"},{\"text\":\" API to perform speech-to-text conversion.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"75533-q3zJ-R6npqTQqYz\",\"children\":[{\"id\":\"P-klgPZjqPILFuBQShuUH\",\"children\":[{\"id\":\"iv1MMKVpuX5jR9a_-gcsz\",\"children\":[{\"id\":\"Rn5tkhuVNOy-zw8qwazBM\",\"children\":[{\"text\":\"32786\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"aAV7b2f01_nUiNA20dAeR\",\"children\":[{\"id\":\"Ki07Jv6KzmlELhF8A4I58\",\"children\":[{\"id\":\"h-u-LtknSvkRvrDeXzORh\",\"children\":[{\"text\":\"Streaming speech-to-text conversion failed.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"lc8llVhZVEFRas0sXGXgk\",\"children\":[{\"id\":\"jsY-dRaOZzz_JfelKiW1Q\",\"children\":[{\"id\":\"v6PHPRw6OHWngxZRAJnX2\",\"children\":[{\"text\":\"During streaming recording, wait for the execution result of the streaming recording API to return.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[12,33,55],\"widthMode\":\"percentage\"},{\"id\":\"9LYatlH1T0beQIsGOAT69\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.819\",\"type\":\"h4\"},{\"id\":\"FzTUe85HOHf5MKLnBXS_P\",\"autoWrap\":false,\"children\":[{\"id\":\"5rKG8thsffwXBlhk3iqPo\",\"children\":[{\"text\":\"public void OnEvent(ITMGContext.ITMG_MAIN_EVENT_TYPE type, Intent data) {\"}],\"type\":\"code-line\"},{\"id\":\"15-tu7FWJX7icNlSq6v1Z\",\"children\":[{\"text\":\" if (ITMGContext.ITMG_MAIN_EVENT_TYPE.ITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRECOGNITION_COMPLETE == type)\"}],\"type\":\"code-line\"},{\"id\":\"Qw_ZoMLDwtTvSdbh5yuxI\",\"children\":[{\"text\":\" {\"}],\"type\":\"code-line\"},{\"id\":\"0TwrsJ5sLgLGZlTMnD1Av\",\"children\":[{\"text\":\" /Callback for streaming voice message and speech-to-text\"}],\"type\":\"code-line\"},{\"id\":\"AgWW8UUOKlMgKT3xEOpZ2\",\"children\":[{\"text\":\" Handler mainHander = new Handler(Looper.getMainLooper());\"}],\"type\":\"code-line\"},{\"id\":\"jU2yiMgo_oE76FZ9GLStE\",\"children\":[{\"text\":\" mainHander.post(new Runnable() {\"}],\"type\":\"code-line\"},{\"id\":\"nM6YRA7PZv8mdFDX4GxA4\",\"children\":[{\"text\":\" @Override\"}],\"type\":\"code-line\"},{\"id\":\"edVZhhgW98HEyp198d7qm\",\"children\":[{\"text\":\" public void run() {\"}],\"type\":\"code-line\"},{\"id\":\"5uy0DUjUxKrNWSLQyBKGJ\",\"children\":[{\"text\":\" if (nErrCode ==0) {\"}],\"type\":\"code-line\"},{\"id\":\"H8_W9j2yuWzsluvNAeHlF\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"},{\"id\":\"gcuiFNQ_yHaKiqys4WkYT\",\"children\":[{\"text\":\" String textString = templeData.getStringExtra(\\\"text\\\");\"}],\"type\":\"code-line\"},{\"id\":\"dKH-8uFWygonxPGlK4pll\",\"children\":[{\"text\":\" EditText _editText = (EditText) root.findViewById(R.id.edit_audio_to_text);\"}],\"type\":\"code-line\"},{\"id\":\"zPykK6qTgG4DHKzZfLZ12\",\"children\":[{\"text\":\" _editText.setText(textString);\"}],\"type\":\"code-line\"},{\"id\":\"nxSBvm4FwGcQehFok6dsG\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"},{\"id\":\"3KAhFSGapCcjsD3YREpXI\",\"children\":[{\"text\":\" recordfilePath = templeData.getStringExtra(\\\"file_path\\\");\"}],\"type\":\"code-line\"},{\"id\":\"0sD_4ph4h2-n-MP1eV5KX\",\"children\":[{\"text\":\" mEditTextfiletoupload.setText(recordfilePath);\"}],\"type\":\"code-line\"},{\"id\":\"B8UtvRYlEnhr5kfw1ry95\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"},{\"id\":\"6-8ukjoyzwvgbjEb2XMrS\",\"children\":[{\"text\":\" donwLoadUrlPath = templeData.getStringExtra(\\\"file_id\\\");\"}],\"type\":\"code-line\"},{\"id\":\"4JY31WlCoP1gJ2sFULf60\",\"children\":[{\"text\":\" mEditTextDownloadurl.setText(donwLoadUrlPath);\"}],\"type\":\"code-line\"},{\"id\":\"GxtSYRGTFp_eMjvALsmE0\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"},{\"id\":\"lcCvbVFGkHWS7FoucVhiW\",\"children\":[{\"text\":\" Log.e(TARGET, \\\"STREAMINGRECOGNITION\\\" + \\\"nErrCode=\\\" + nErrCode + \\\", content=\\\" + textString+\\\"recordfilePath\\\"+recordfilePath+\\\"donwLoadUrlPath\\\"+donwLoadUrlPath);\"}],\"type\":\"code-line\"},{\"id\":\"ESW5NlMGH9DkeHeV3Fpa5\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"BlNBKKMG8ZwUHxT47nk4J\",\"children\":[{\"text\":\" else\"}],\"type\":\"code-line\"},{\"id\":\"EpV99MCgKDgHCbFgfwpVx\",\"children\":[{\"text\":\" {\"}],\"type\":\"code-line\"},{\"id\":\"Cd_SdhTOo8A9nBLa7YDlI\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"},{\"id\":\"CSbF5k_VS0jqJEkYEMqjU\",\"children\":[{\"text\":\" Toast.makeText(getActivity(), String.format(\\\"Streaming speech-to-text conversion failed. Error code: %d\\\",nErrCode), Toast.LENGTH_SHORT).show();\"}],\"type\":\"code-line\"},{\"id\":\"yjlA0H_EU5BXpDtpbic5T\",\"children\":[{\"text\":\" Log.e(TARGET, \\\"Streaming speech-to-text conversion failed. Error code\\\"+nErrCode);\"}],\"type\":\"code-line\"},{\"id\":\"tdwvthi7d2FFZqf2Bm0rK\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"I-ebJrnxGu-tmlSvRfvKV\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"r1RZ3cSWNfRUTdyBtqIFn\",\"children\":[{\"text\":\" });\"}],\"type\":\"code-line\"},{\"id\":\"YCnCr13dloWOgcXXJIeHi\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"t5Lga_3FgHmelArNqxdnR\",\"children\":[{\"text\":\"}\"}],\"type\":\"code-line\"}],\"language\":\"java\",\"type\":\"code-block\"},{\"id\":\"05KzdUDnL8GUVjmdouyhU\",\"children\":[{\"text\":\"Voice Message Recording\"}],\"nodeId\":\".E8.AF.AD.E9.9F.B3.E6.B6.88.E6.81.AF.E5.BD.95.E5.88.B6\",\"type\":\"h2\"},{\"id\":\"sBL_4ZtI4trAOUCANy0wW\",\"children\":[{\"b\":1,\"text\":\"The recording process is as follows: start recording > stop recording > return recording callback > start the next recording.\"}],\"type\":\"p\"},{\"id\":\"cpKvbPfagTzg4x2wWSSYn\",\"children\":[{\"text\":\"Specifying the maximum duration of voice message\"}],\"nodeId\":\".E9.99.90.E5.88.B6.E6.9C.80.E5.A4.A7.E8.AF.AD.E9.9F.B3.E4.BF.A1.E6.81.AF.E6.97.B6.E9.95.BF\",\"type\":\"h3\"},{\"id\":\"zXJKeIpMUmjCJ-JI_OLy3\",\"children\":[{\"text\":\"This API is used to specify the maximum duration of a voice message, which can be up to 58 seconds.\"}],\"type\":\"p\"},{\"id\":\"T7RpV3xFCuX5KlZ4WqsbY\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\".E5.87.BD.E6.95.B0.E5.8E.9F.E5.9E.8B11\",\"type\":\"h4\"},{\"id\":\"YACOTZ1DmTRLPh0dE0Kvl\",\"autoWrap\":false,\"children\":[{\"id\":\"63p3JB0LvoacIQX_Qrjdm\",\"children\":[{\"text\":\"public abstract int SetMaxMessageLength(int msTime);\"}],\"type\":\"code-line\"}],\"language\":\"java\",\"type\":\"code-block\"},{\"id\":\"w_axQQLstWfhAP7ZaUGP7\",\"children\":[{\"id\":\"lKBlw1MsiHx2CcTva0doB\",\"children\":[{\"id\":\"isfDknOOkgxTk9zFzBpDz\",\"children\":[{\"id\":\"C-TedRSMuuSzrqx2Zt3uJ\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"cdSMdmzXcicqoy74tIzjn\",\"children\":[{\"id\":\"qH7YtS4bF1GfctIMc8WqG\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"dHlptbgvrmkiZANC3IjOG\",\"children\":[{\"id\":\"02844LX61Njhc-upcc94p\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"7E-bYegLKJhJxHGZPqjvp\",\"children\":[{\"id\":\"D3lDSIJAqlZ7YrNI_lrHL\",\"children\":[{\"id\":\"N7_BwojaCZLeWRxex7f3L\",\"children\":[{\"id\":\"ntoTOnGq-OzdvvfxSuPT0\",\"children\":[{\"text\":\"msTime\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"-H0_V9u-RMseqkObfYWAu\",\"children\":[{\"id\":\"lWbBxmDjmX0CmveYB0kMi\",\"children\":[{\"id\":\"eT2Tmc64muOtgCMFpbTto\",\"children\":[{\"text\":\"int\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"NmsUI6kr3JfkzKt5QO7vj\",\"children\":[{\"id\":\"xCO-PzjHfy1ks4WTk0pj-\",\"children\":[{\"id\":\"zlkagFdwMRudlI0dUcRca\",\"children\":[{\"text\":\"Audio duration in ms. Value range: 1000 < \"},{\"code\":1,\"text\":\"msTime\"},{\"text\":\" < 58000.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[17,10,73],\"widthMode\":\"percentage\"},{\"id\":\"C_oQPNeft9RqJcJ59pmBi\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.8110\",\"type\":\"h4\"},{\"id\":\"kntuVPl-l7zA3x9qaZZrY\",\"autoWrap\":false,\"children\":[{\"id\":\"Nj1H6JhgeN3FAGN3H3OBe\",\"children\":[{\"text\":\"ITMGContext.GetInstance(this).GetPTT().SetMaxMessageLength(msTime);\"}],\"type\":\"code-line\"}],\"language\":\"java\",\"type\":\"code-block\"},{\"id\":\"KtfOWql7iYxQAESTObmFV\",\"children\":[{\"text\":\"Starting recording\"}],\"nodeId\":\".E5.90.AF.E5.8A.A8.E5.BD.95.E9.9F.B3\",\"type\":\"h3\"},{\"id\":\"iotjtcsJtxywKYOiSTzoW\",\"children\":[{\"text\":\"This API is used to start recording. The recording file must be uploaded first before you can perform operations such as speech-to-text conversion. \"},{\"text\":\"To stop recording, call \",\"b\":1},{\"code\":1,\"text\":\"StopRecording\",\"b\":1},{\"text\":\".\"}],\"type\":\"p\"},{\"id\":\"RLkVEbHAoLCxuRegKa6M9\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\".E5.87.BD.E6.95.B0.E5.8E.9F.E5.9E.8B12\",\"type\":\"h4\"},{\"id\":\"6LdoaTeMUIUq0EVuirJKg\",\"autoWrap\":false,\"children\":[{\"id\":\"3M9hVTFaoui3dkUbkPTCD\",\"children\":[{\"text\":\"public abstract int StartRecording(String filePath);\"}],\"type\":\"code-line\"}],\"language\":\"java\",\"type\":\"code-block\"},{\"id\":\"kYdY6iLvylYCE9DJr1AXT\",\"children\":[{\"id\":\"i7CL5rV8-GbLtFJ88LF4Q\",\"children\":[{\"id\":\"Umnkhjz1WVz7kOumcKsaZ\",\"children\":[{\"id\":\"9Rf6yH4BzD7ifVgtB-52Z\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"KvGmktP5se9tc26Al5KKs\",\"children\":[{\"id\":\"QcmFaPSi1JPAIzyMwgDks\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"77bnRN2CJI6tNQtzvIubU\",\"children\":[{\"id\":\"9OHEvZ-pL0HI0MW5DkqBQ\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"y9HgVsDly0rbYosdZVRyO\",\"children\":[{\"id\":\"qEGQyalEBl77Una44X4Gr\",\"children\":[{\"id\":\"N2u7ESdaxU0HPItbtmzq9\",\"children\":[{\"id\":\"F1Wpdpm19h3T72Ly-e62o\",\"children\":[{\"text\":\"filePath\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"cqJQutC-6Ix3bRNqAwzkO\",\"children\":[{\"id\":\"OK24cOhNorGdKE-n3YUJR\",\"children\":[{\"id\":\"SUUvrHbH_j9kr2kLHwLVN\",\"children\":[{\"text\":\"String\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"wy89Z-WBo8bY_n9rqjWIb\",\"children\":[{\"id\":\"TyyeJBUUo1hbO1ftmv_4B\",\"children\":[{\"id\":\"UCdn4riWmmd7rzHIaFR13\",\"children\":[{\"text\":\"Path of the stored audio file\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[26,18,56],\"widthMode\":\"percentage\"},{\"id\":\"8x4BwdlwHU-WPyYyCDmYM\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.8111\",\"type\":\"h4\"},{\"id\":\"NqpTREtf7e5JF9dlp72ve\",\"autoWrap\":false,\"children\":[{\"id\":\"KvPlfoPMJlhulfFUVsmuE\",\"children\":[{\"text\":\"ITMGContext.GetInstance(this).GetPTT().StartRecording(filePath);\"}],\"type\":\"code-line\"}],\"language\":\"java\",\"type\":\"code-block\"},{\"id\":\"X6q2Cl2ncGBR8EXazXpWw\",\"children\":[{\"id\":\"x-m2OhEAqFJB6Fjl_hPhm\",\"children\":[{\"text\":\"Stopping recording\"}],\"nodeId\":\"Stop\",\"type\":\"p\"}],\"nodeId\":\".3Ca-id.3D.22stop.22.3E.E5.81.9C.E6.AD.A2.E5.BD.95.E9.9F.B3.3C.2Fa.3E\",\"type\":\"h3\"},{\"id\":\"vX89hfdAd61ul1XPkilEI\",\"children\":[{\"text\":\"This API is used to stop recording. It is async, and a callback for recording completion will be returned after recording stops. A recording file will be available only after recording succeeds.\"}],\"type\":\"p\"},{\"id\":\"um-KNxKcVTQKBgvIQE16m\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\".E5.87.BD.E6.95.B0.E5.8E.9F.E5.9E.8B13\",\"type\":\"h4\"},{\"id\":\"BKtvsShq42NljQig9Wcoy\",\"autoWrap\":false,\"children\":[{\"id\":\"B7z1N7pZTBZYRrcy-rAXJ\",\"children\":[{\"text\":\"public abstract int StopRecording();\"}],\"type\":\"code-line\"}],\"language\":\"java\",\"type\":\"code-block\"},{\"id\":\"PW5_2nKoJxhErOaff2ZX8\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.8112\",\"type\":\"h4\"},{\"id\":\"TXJ05-xA97sziL_A6Wif2\",\"autoWrap\":false,\"children\":[{\"id\":\"yTCSqyjTuh7ogT0FSi_oN\",\"children\":[{\"text\":\"ITMGContext.GetInstance(this).GetPTT().StopRecording();\"}],\"type\":\"code-line\"}],\"language\":\"java\",\"type\":\"code-block\"},{\"id\":\"usPQeABxqdjIrI78jnXgx\",\"children\":[{\"text\":\"Callback for recording start\"}],\"nodeId\":\".E5.90.AF.E5.8A.A8.E5.BD.95.E9.9F.B3.E7.9A.84.E5.9B.9E.E8.B0.83\",\"type\":\"h3\"},{\"id\":\"ye406VRY6ekDIsBz6r3pY\",\"children\":[{\"text\":\"A callback will be executed through a delegate function to pass a message when recording is completed.\"}],\"type\":\"p\"},{\"id\":\"9XmEpRfjo-lUhSQEWxFkb\",\"children\":[{\"text\":\"To stop recording, call \",\"b\":1},{\"code\":1,\"text\":\"StopRecording\",\"b\":1},{\"text\":\". The callback for recording start will be returned after the recording is stopped.\"}],\"type\":\"p\"},{\"id\":\"hnxSq5FlHYcCLd6YYom_0\",\"children\":[{\"text\":\"The callback function \"},{\"code\":1,\"text\":\"OnEvent\"},{\"text\":\" will be called after recording is started. The event message \"},{\"code\":1,\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_RECORD_COMPLETE\"},{\"text\":\" will be returned, which will be identified in the \"},{\"code\":1,\"text\":\"OnEvent\"},{\"text\":\" function.\\nThe passed parameter includes \"},{\"code\":1,\"text\":\"result\"},{\"text\":\" and \"},{\"code\":1,\"text\":\"file_path\"},{\"text\":\".\"}],\"type\":\"p\"},{\"id\":\"kE91ZaVNj47GxSHBJ1uvs\",\"children\":[{\"text\":\"Error codes\"}],\"nodeId\":\".E9.94.99.E8.AF.AF.E7.A0.812\",\"type\":\"h4\"},{\"id\":\"BfU-LUPV3cl4MTYHKKKXD\",\"children\":[{\"id\":\"ZE3qJ2TYZ7Yq3huPZSDAH\",\"children\":[{\"id\":\"BSgaWfMphnlo5jlPBZCNB\",\"children\":[{\"id\":\"Di-0p53lgzT1AkJ_-e2u5\",\"children\":[{\"text\":\"Error Code\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"rmcOYjm8M-DPCvdzw8OaT\",\"children\":[{\"id\":\"nPQ7CJntPccEmYzzmJMAo\",\"children\":[{\"text\":\"Reasons\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"lSmry2hDJ2NHSR3pFe7Xb\",\"children\":[{\"id\":\"WxH88sB9s55kFwT3cHE_Z\",\"children\":[{\"text\":\"Suggested Solution\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"7MdnCDlFR4AfW_3h0TuKS\",\"children\":[{\"id\":\"D5r-iOKYGvF5Ikye96jqK\",\"children\":[{\"id\":\"DyaDWn1ucP6WpUMKpExXn\",\"children\":[{\"id\":\"AE9FezDr083QM8X0JMTSs\",\"children\":[{\"text\":\"4097\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"3FjmCTXMC7i0esY_vNgeo\",\"children\":[{\"id\":\"30pPXMqm3wMXdHz-k9YgU\",\"children\":[{\"id\":\"9AsTa759OHGaHfpd5bqRc\",\"children\":[{\"text\":\"Empty parameters.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"wZyH-_kO9sKmcEzSrM7_H\",\"children\":[{\"id\":\"kmfPfxMCAnzWS4JED3BWC\",\"children\":[{\"id\":\"8mCHOkTYllco0a_ESpt72\",\"children\":[{\"text\":\"Check whether the API parameters in the code are correct.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"RWIIT2Qs-93ZHdRtMqI3x\",\"children\":[{\"id\":\"TCE1GO0hD-NXv93QCFdGs\",\"children\":[{\"id\":\"e0qmMaK91bIJfXKMPnReJ\",\"children\":[{\"id\":\"fXKkz0_KfIAKU_Mxb4rQp\",\"children\":[{\"text\":\"4098\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"GoMgttYcOP9MMhPXFqRi_\",\"children\":[{\"id\":\"Oa7BpGO-nuCs31w9azh0H\",\"children\":[{\"id\":\"O2FHURnfGTxBsULl7f67i\",\"children\":[{\"text\":\"An initialization error occurred.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"2e4tnrLQPn8c2p_lB3lsn\",\"children\":[{\"id\":\"3111KOpid8X2fRYL107wf\",\"children\":[{\"id\":\"9fRk1Vt6LOjIwWlJ_yK2Q\",\"children\":[{\"text\":\"Check whether the device is being used, whether the permissions are normal, and whether the initialization is normal.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"1Ttr6CBtYPin-hKN5KiEY\",\"children\":[{\"id\":\"1NNIOo0gguOR7Wp8IzML8\",\"children\":[{\"id\":\"sB6C06EJLcpeBUt6USiKB\",\"children\":[{\"id\":\"BNRK2f9_7xhpjnJfkublb\",\"children\":[{\"text\":\"4099\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"gYMQJGvwmu28KR6KQDgjQ\",\"children\":[{\"id\":\"3nbnt1azunEjJ-8wsLTqi\",\"children\":[{\"id\":\"F6o5f9a0R1G6i2OnArASL\",\"children\":[{\"text\":\"Recording is in progress.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"q6MIXsNLIB8zRM9TFXXyB\",\"children\":[{\"id\":\"NJQHcaFL-3Vt6H-SMMrff\",\"children\":[{\"id\":\"icA3dkb55XFTbUys64L1x\",\"children\":[{\"text\":\"Make sure that the SDK recording feature is used at the right time.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"KDRhaSIDQRY2skN1gCVDr\",\"children\":[{\"id\":\"Hi5CkDt4SyfNC92kppEu6\",\"children\":[{\"id\":\"u9TddijlcId2rWwFdtJCB\",\"children\":[{\"id\":\"YSF3F3431ovtFOspc2t7m\",\"children\":[{\"text\":\"4100\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"cISOQxbAqOiCh82VBCDa0\",\"children\":[{\"id\":\"wvVh6ESF02_J9QAlHZ2tc\",\"children\":[{\"id\":\"XNMxh8A15_PTg5WPmU3gg\",\"children\":[{\"text\":\"No audio data is captured.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"n2mbS6mAXkfSz3l2Cgp-i\",\"children\":[{\"id\":\"qxY1jv5DcP6mvd5kznHwY\",\"children\":[{\"id\":\"oeOBiZzlfM3pyMCM2EJTb\",\"children\":[{\"text\":\"Check whether the mic is working properly.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"R2FZcxBJnPBfRNtGCsX7f\",\"children\":[{\"id\":\"GC9xDGVqP_YWAgNSgXrw1\",\"children\":[{\"id\":\"CXEFGyVvimuYY9MuaYKZE\",\"children\":[{\"id\":\"BlYQM6di3OYHTxzcbqpat\",\"children\":[{\"text\":\"4101\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"eFzO-wB5ITi26iUcIQvzP\",\"children\":[{\"id\":\"LUalJW8kYszJwTyNtD1E_\",\"children\":[{\"id\":\"yoybW4Mm-xacALWd9W_M2\",\"children\":[{\"text\":\"An error occurred while accessing the file during recording.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"3_771DjGCpDZIG_w6bcEB\",\"children\":[{\"id\":\"ciFC0ghJKDW9t5jQ8fh-Y\",\"children\":[{\"id\":\"v3tkWg61vJN-4RD3a30wH\",\"children\":[{\"text\":\"Ensure the existence of the file and the validity of the file path.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"CRf9qa4aWsEGY6UVvxnKb\",\"children\":[{\"id\":\"2c7bpBM4TPIGwrlBuFwcG\",\"children\":[{\"id\":\"aqmAzSNQJcSAnv5pelrwC\",\"children\":[{\"id\":\"1PXHSf9IRYHXCc5nDwERE\",\"children\":[{\"text\":\"4102\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"urwS_AAPhUuxADLdBjTac\",\"children\":[{\"id\":\"arriHfqvdHGVrR_M4ecnY\",\"children\":[{\"id\":\"OAubGQi-xJ_nvMi8q6y7u\",\"children\":[{\"text\":\"The mic is not authorized.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"LR8UkRVgtNZpnQoCAnSop\",\"children\":[{\"id\":\"R0MNBAN31iJeBBORMZwVL\",\"children\":[{\"id\":\"BemIOvyF6QOWs7k5Lk_yD\",\"children\":[{\"text\":\"The mic permission is required for using the SDK. To add the permission, see the SDK project configuration document for the corresponding engine or platform.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"WAdgM-ZeLllr3hJe1fuhE\",\"children\":[{\"id\":\"HlnpBPbRjbVxXbnzL5q7f\",\"children\":[{\"id\":\"o95rzBT4HP7nJeINq2bmf\",\"children\":[{\"id\":\"-Sjt31C3ITUjSZ7SwnUvA\",\"children\":[{\"text\":\"4103\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"rm-lMULHeYxt5U7zCvELZ\",\"children\":[{\"id\":\"0E-mGJr-bnGLXdVZ-b9Jc\",\"children\":[{\"id\":\"No_Dsr2iIcPi9cFWD8VDO\",\"children\":[{\"text\":\"The recording duration is too short.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"PxdCfpOx68uLvPOEirIti\",\"children\":[{\"id\":\"MYmwZuNLkE-KBO8tYKQa3\",\"children\":[{\"id\":\"BBcvcebS-aCMdHbXXb3IJ\",\"children\":[{\"text\":\"The recording duration should be in ms and longer than 1,000 ms.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"Mut2gwSHiUdZTjzGNWNL3\",\"children\":[{\"id\":\"UptSHUCnoxz6cfrGCyo-o\",\"children\":[{\"id\":\"-CEF8hf5XHxTQIcTcKA1u\",\"children\":[{\"id\":\"u5EDRTPZ-JXitsWFK-6qi\",\"children\":[{\"text\":\"4104\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"U-UmhVSXysVkftyYIoIdG\",\"children\":[{\"id\":\"JFgAUDyqBPOMNaUgDa0uq\",\"children\":[{\"id\":\"5aAGd0LZpEz-ClnvdVm22\",\"children\":[{\"text\":\"No recording operation is started.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Q0M2YbWvCDdWGT-NNRNHB\",\"children\":[{\"id\":\"-t7BSI5FRnSRCduqw0N0T\",\"children\":[{\"id\":\"hmSgp0x9ZR2ZTPpVVmkkW\",\"children\":[{\"text\":\"Check whether the recording starting API has been called.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[12,28,60],\"widthMode\":\"percentage\"},{\"id\":\"AtYXb5Fx4CT3c4fbV0ENl\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.8113\",\"type\":\"h4\"},{\"id\":\"XQV8maFNlbS6D2UqRomQP\",\"autoWrap\":false,\"children\":[{\"id\":\"82hINTOOhWSqHKTV0Eu7c\",\"children\":[{\"text\":\"public void OnEvent(ITMGContext.ITMG_MAIN_EVENT_TYPE type, Intent data) {\"}],\"type\":\"code-line\"},{\"id\":\"lOkpQeA4bY7EkpiR1zfz9\",\"children\":[{\"text\":\" if (ITMGContext.ITMG_MAIN_EVENT_TYPE.ITMG_MAIN_EVNET_TYPE_PTT_RECORD_COMPLETE == type)\"}],\"type\":\"code-line\"},{\"id\":\"ufdL0N1OVk8Hla2xckXWM\",\"children\":[{\"text\":\" {\"}],\"type\":\"code-line\"},{\"id\":\"WhTKfCsByxYTS5wsfDmHe\",\"children\":[{\"text\":\" // Callback for recording start\"}],\"type\":\"code-line\"},{\"id\":\"uQgEQ62PFGjj7rqcNMOqL\",\"children\":[{\"text\":\" if (nErrCode ==0)\"}],\"type\":\"code-line\"},{\"id\":\"8kTVPDLLLtW3RjtA-pAzM\",\"children\":[{\"text\":\" {\"}],\"type\":\"code-line\"},{\"id\":\"Xa9uUzyuiw7rkwaZ33WVN\",\"children\":[{\"text\":\" recordfilePath = templeData.getStringExtra(\\\"file_path\\\");\"}],\"type\":\"code-line\"},{\"id\":\"qaKpKtco5PcMaEHTxFDaa\",\"children\":[{\"text\":\" mEditTextfiletoupload.setText(recordfilePath);\"}],\"type\":\"code-line\"},{\"id\":\"VtXqJYY2-69oNEldND9bn\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"hAovynu5ZGXhPMwWZnmj6\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"co-Lx26nEBfeFrysS27NM\",\"children\":[{\"text\":\"}\"}],\"type\":\"code-line\"}],\"language\":\"java\",\"type\":\"code-block\"},{\"id\":\"Fsvvpm0u9oSmchXZRzwcE\",\"children\":[{\"text\":\"Pausing recording\"}],\"nodeId\":\".E6.9A.82.E5.81.9C.E5.BD.95.E9.9F.B3\",\"type\":\"h3\"},{\"id\":\"wEAl38eKUrUevXARN7H4o\",\"children\":[{\"text\":\"This API is used to pause recording. If you want to resume recording, call the \"},{\"code\":1,\"text\":\"ResumeRecording\"},{\"text\":\" API.\"}],\"type\":\"p\"},{\"id\":\"O88pVUTTxK3mO4V8YAcDi\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\".E5.87.BD.E6.95.B0.E5.8E.9F.E5.9E.8B14\",\"type\":\"h4\"},{\"id\":\"JvMuMNSZ2JlGy9Mp7cHqB\",\"autoWrap\":false,\"children\":[{\"id\":\"sD2aO3UUvMs6kbBYGxijs\",\"children\":[{\"text\":\"public abstract int PauseRecording();\"}],\"type\":\"code-line\"}],\"language\":\"java\",\"type\":\"code-block\"},{\"id\":\"MOJ2tsOciygaChhrxY6A3\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.8114\",\"type\":\"h4\"},{\"id\":\"grsKTXiXgHFPew7-iZMG5\",\"autoWrap\":false,\"children\":[{\"id\":\"W2Tc1ieDJ8k8DuMW3pPqF\",\"children\":[{\"text\":\"ITMGContext.GetInstance(this).GetPTT().PauseRecording();\"}],\"type\":\"code-line\"}],\"language\":\"java\",\"type\":\"code-block\"},{\"id\":\"jOUK5SC6Js6mb9QpJ2_gA\",\"children\":[{\"text\":\"Resuming recording\"}],\"nodeId\":\".E6.81.A2.E5.A4.8D.E5.BD.95.E9.9F.B3\",\"type\":\"h3\"},{\"id\":\"toZpdcao4WkG-HeBn1wNW\",\"children\":[{\"text\":\"This API is used to resume recording.\"}],\"type\":\"p\"},{\"id\":\"pBzQw8wNSCwtU0NL2ibE8\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\".E5.87.BD.E6.95.B0.E5.8E.9F.E5.9E.8B15\",\"type\":\"h4\"},{\"id\":\"E8AfvCVrLxyCixBW1tSgP\",\"autoWrap\":false,\"children\":[{\"id\":\"nkhyQgq8HQxZ7i-_uMmVM\",\"children\":[{\"text\":\"public abstract int ResumeRecording();\"}],\"type\":\"code-line\"}],\"language\":\"java\",\"type\":\"code-block\"},{\"id\":\"9C5tGsylNypLdfotYDefx\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.8115\",\"type\":\"h4\"},{\"id\":\"pYAaKxzATkm9zeXL_63DS\",\"autoWrap\":false,\"children\":[{\"id\":\"IcmpqLSjE2V4yY7W6qnDd\",\"children\":[{\"text\":\"ITMGContext.GetInstance(this).GetPTT().ResumeRecording();\"}],\"type\":\"code-line\"}],\"language\":\"java\",\"type\":\"code-block\"},{\"id\":\"Bw6SFOP0zpjVpkVYAc4N4\",\"children\":[{\"text\":\"Canceling recording\"}],\"nodeId\":\".E5.8F.96.E6.B6.88.E5.BD.95.E9.9F.B3\",\"type\":\"h3\"},{\"id\":\"ICyQTUfem_4qM3lozBnAu\",\"children\":[{\"text\":\"This API is used to cancel recording. There is no callback after cancellation.\"}],\"type\":\"p\"},{\"id\":\"s3YRwfDJ6d0zjq7qQ3AAJ\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\".E5.87.BD.E6.95.B0.E5.8E.9F.E5.9E.8B16\",\"type\":\"h4\"},{\"id\":\"Aj7izvajbkNByhu3m0W8A\",\"autoWrap\":false,\"children\":[{\"id\":\"W10Td7gdOw9mPCRFGntk4\",\"children\":[{\"text\":\"public abstract int CancelRecording();\"}],\"type\":\"code-line\"}],\"language\":\"java\",\"type\":\"code-block\"},{\"id\":\"HZDeq0UALE-RAFYfR7Xm6\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.8116\",\"type\":\"h4\"},{\"id\":\"mU49GNw1F8dZya9U5CIJW\",\"autoWrap\":false,\"children\":[{\"id\":\"rR9EM2I2rH3MMFcRaYobb\",\"children\":[{\"text\":\"ITMGContext.GetInstance(this).GetPTT().CancelRecording();\"}],\"type\":\"code-line\"}],\"language\":\"java\",\"type\":\"code-block\"},{\"id\":\"JM_bonkdvyDHTdo3TsWyy\",\"children\":[{\"text\":\"Getting the real-time mic volume of voice message\"}],\"nodeId\":\".E8.8E.B7.E5.8F.96.E8.AF.AD.E9.9F.B3.E6.B6.88.E6.81.AF.E9.BA.A6.E5.85.8B.E9.A3.8E.E5.AE.9E.E6.97.B6.E9.9F.B3.E9.87.8F\",\"type\":\"h3\"},{\"id\":\"2gqy5lucqtoGDJgmb78Wo\",\"children\":[{\"text\":\"This API is used to get the real-time mic volume. An int-type value will be returned. Value range: 0-200.\"}],\"type\":\"p\"},{\"id\":\"IenJ3St4MrwWCvIUkYOTP\",\"children\":[{\"text\":\"This API is different from the voice chat API and is in \",\"b\":1},{\"code\":1,\"text\":\"ITMGPTT.java\",\"b\":1},{\"text\":\".\"}],\"type\":\"p\"},{\"id\":\"21-__4ZoS-Ns47lYi-nNH\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\".E5.87.BD.E6.95.B0.E5.8E.9F.E5.9E.8B17\",\"type\":\"h4\"},{\"id\":\"60MC2DcVvojsd-Cftwh4Q\",\"autoWrap\":false,\"children\":[{\"id\":\"DTW5dxnq3sMnufqddaYUA\",\"children\":[{\"text\":\"public abstract int GetMicLevel();\"}],\"type\":\"code-line\"}],\"language\":\"java\",\"type\":\"code-block\"},{\"id\":\"K3GHZC5cGG2zaRUTg9Xag\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.8117\",\"type\":\"h4\"},{\"id\":\"6povX99EsHMQlylbYwVOb\",\"autoWrap\":false,\"children\":[{\"id\":\"P7TWyY-lPo_VMNHUG795Q\",\"children\":[{\"text\":\"ITMGContext.GetInstance(this).GetPTT().GetMicLevel();\"}],\"type\":\"code-line\"}],\"language\":\"java\",\"type\":\"code-block\"},{\"id\":\"OEoK-sBGcSOSqMPFX8du8\",\"children\":[{\"text\":\"Setting the recording volume of voice message\"}],\"nodeId\":\".E8.AE.BE.E7.BD.AE.E8.AF.AD.E9.9F.B3.E6.B6.88.E6.81.AF.E5.BD.95.E5.88.B6.E9.9F.B3.E9.87.8F\",\"type\":\"h3\"},{\"id\":\"jRAkDGMBLp7HmKefO0RsM\",\"children\":[{\"text\":\"This API is used to set the recording volume of voice message. Value range: 0-200.\"}],\"type\":\"p\"},{\"id\":\"71lXT0BwwUQYxSXME9Y5X\",\"children\":[{\"text\":\"This API is different from the voice chat API and is in \",\"b\":1},{\"code\":1,\"text\":\"ITMGPTT.java\",\"b\":1},{\"text\":\".\"}],\"type\":\"p\"},{\"id\":\"72r38_nMboOj5UUCGdEj5\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\".E5.87.BD.E6.95.B0.E5.8E.9F.E5.9E.8B18\",\"type\":\"h4\"},{\"id\":\"3y2aRPOwyYTRckilu9Z9L\",\"autoWrap\":false,\"children\":[{\"id\":\"Zc3neOwgw5w60eTog2jeG\",\"children\":[{\"text\":\"public abstract int SetMicVolume(int volume);\"}],\"type\":\"code-line\"}],\"language\":\"java\",\"type\":\"code-block\"},{\"id\":\"dooKrWgFV23k0ucI1AW8I\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.8118\",\"type\":\"h4\"},{\"id\":\"eML69SEGKcDV78AzillBr\",\"autoWrap\":false,\"children\":[{\"id\":\"2N24XqMsOI8iSDuErZxMI\",\"children\":[{\"text\":\"ITMGContext.GetInstance(this).GetPTT().SetMicVolume(100);\"}],\"type\":\"code-line\"}],\"language\":\"java\",\"type\":\"code-block\"},{\"id\":\"pCq71npCOqixNdpfnvoNG\",\"children\":[{\"text\":\"Getting the recording volume of voice message\"}],\"nodeId\":\".E8.8E.B7.E5.8F.96.E8.AF.AD.E9.9F.B3.E6.B6.88.E6.81.AF.E5.BD.95.E5.88.B6.E9.9F.B3.E9.87.8F\",\"type\":\"h3\"},{\"id\":\"hgr0xG-Ci55Du1il_Lvas\",\"children\":[{\"text\":\"This API is used to get the recording volume of voice message. An int-type value will be returned. Value range: 0-200.\"}],\"type\":\"p\"},{\"id\":\"xvqm7s5C1H3YfB11myrM-\",\"children\":[{\"text\":\"This API is different from the voice chat API and is in \",\"b\":1},{\"code\":1,\"text\":\"ITMGPTT.java\",\"b\":1},{\"text\":\".\"}],\"type\":\"p\"},{\"id\":\"ldV5Vr35OHHJp1Gi7_JV5\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\".E5.87.BD.E6.95.B0.E5.8E.9F.E5.9E.8B19\",\"type\":\"h4\"},{\"id\":\"-CF7OaDIZJ7fNu8Yt29wT\",\"autoWrap\":false,\"children\":[{\"id\":\"2RXUERg77UrHGqbQBuY2j\",\"children\":[{\"text\":\"public abstract int GetMicVolume();\"}],\"type\":\"code-line\"}],\"language\":\"java\",\"type\":\"code-block\"},{\"id\":\"d5puTnoIiXwbwpQHL1UhP\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.8119\",\"type\":\"h4\"},{\"id\":\"qh9yqTO-uZta4aRLY8LyA\",\"autoWrap\":false,\"children\":[{\"id\":\"UWFjzI8qQklIZa9pJQ5Jc\",\"children\":[{\"text\":\"ITMGContext.GetInstance(this).GetPTT().GetMicVolume();\"}],\"type\":\"code-line\"}],\"language\":\"java\",\"type\":\"code-block\"},{\"id\":\"wQjHq7fMJYRSc3iAfQUtA\",\"children\":[{\"text\":\"Getting the real-time speaker volume of voice message\"}],\"nodeId\":\".E8.8E.B7.E5.8F.96.E8.AF.AD.E9.9F.B3.E6.B6.88.E6.81.AF.E6.89.AC.E5.A3.B0.E5.99.A8.E5.AE.9E.E6.97.B6.E9.9F.B3.E9.87.8F\",\"type\":\"h3\"},{\"id\":\"fLx88KBHWPTxomw7bnSIq\",\"children\":[{\"text\":\"This API is used to get the real-time speaker volume. An int-type value will be returned. Value range: 0-200.\"}],\"type\":\"p\"},{\"id\":\"BZ5bH84PPz1XRfyfJdCwE\",\"children\":[{\"text\":\"This API is different from the voice chat API and is in \",\"b\":1},{\"code\":1,\"text\":\"ITMGPTT.java\",\"b\":1},{\"text\":\".\"}],\"type\":\"p\"},{\"id\":\"W1w4OpnC0hN3AdO_HdxVm\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\".E5.87.BD.E6.95.B0.E5.8E.9F.E5.9E.8B20\",\"type\":\"h4\"},{\"id\":\"xAHaLiQ4kj7fV74UkgQkj\",\"autoWrap\":false,\"children\":[{\"id\":\"vApiPLmZGEfSmRCciVBrp\",\"children\":[{\"text\":\"public abstract int GetSpeakerLevel();\"}],\"type\":\"code-line\"}],\"language\":\"java\",\"type\":\"code-block\"},{\"id\":\"enoiGbVKv2nRZe70xTZbM\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.8120\",\"type\":\"h4\"},{\"id\":\"87BAS98SXFNvqHkBInte9\",\"autoWrap\":false,\"children\":[{\"id\":\"f6KAGhZpv6Wfx0owbkQUA\",\"children\":[{\"text\":\"ITMGContext.GetInstance(this).GetPTT().GetSpeakerLevel();\"}],\"type\":\"code-line\"}],\"language\":\"java\",\"type\":\"code-block\"},{\"id\":\"dba_w0Jmx11z4zbEg8kQA\",\"children\":[{\"text\":\"Setting the playback volume of voice message\"}],\"nodeId\":\".E8.AE.BE.E7.BD.AE.E8.AF.AD.E9.9F.B3.E6.B6.88.E6.81.AF.E6.92.AD.E6.94.BE.E9.9F.B3.E9.87.8F\",\"type\":\"h3\"},{\"id\":\"7xhLBQbTk49r0SqA3HwlV\",\"children\":[{\"text\":\"This API is used to set the playback volume of voice message. Value range: 0-200.\"}],\"type\":\"p\"},{\"id\":\"qkuDRHrMvd4WGLyJwcssx\",\"children\":[{\"text\":\"This API is different from the voice chat API and is in \",\"b\":1},{\"code\":1,\"text\":\"ITMGPTT.java\",\"b\":1},{\"text\":\".\"}],\"type\":\"p\"},{\"id\":\"V_wCuxcSbBOp8ZuxS6XZ1\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\".E5.87.BD.E6.95.B0.E5.8E.9F.E5.9E.8B21\",\"type\":\"h4\"},{\"id\":\"1YbydEAfoSpDtSR3P5ZLs\",\"autoWrap\":false,\"children\":[{\"id\":\"b3rtiNUU8P807FkGmKw83\",\"children\":[{\"text\":\"public abstract int SetSpeakerVolume(int volume);\"}],\"type\":\"code-line\"}],\"language\":\"java\",\"type\":\"code-block\"},{\"id\":\"aT4TkFXd07I_AhcVp48R2\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.8121\",\"type\":\"h4\"},{\"id\":\"uO17Kk6qYus69I61_ZFZa\",\"autoWrap\":false,\"children\":[{\"id\":\"SMEju0YrpsifPLiFFx6hx\",\"children\":[{\"text\":\"ITMGContext.GetInstance(this).GetPTT().SetSpeakerVolume(100);\"}],\"type\":\"code-line\"}],\"language\":\"java\",\"type\":\"code-block\"},{\"id\":\"KylgpBJ5uDm-k7hQMU9IY\",\"children\":[{\"text\":\"Getting the playback volume of voice message\"}],\"nodeId\":\".E8.8E.B7.E5.8F.96.E8.AF.AD.E9.9F.B3.E6.B6.88.E6.81.AF.E6.92.AD.E6.94.BE.E9.9F.B3.E9.87.8F\",\"type\":\"h3\"},{\"id\":\"M23416W7E1lq9edrLqMMn\",\"children\":[{\"text\":\"This API is used to get the playback volume of voice message. An int-type value will be returned. Value range: 0-200.\"}],\"type\":\"p\"},{\"id\":\"mgBIOF8yZBIEq0s2oIqFx\",\"children\":[{\"text\":\"This API is different from the voice chat API and is in \",\"b\":1},{\"code\":1,\"text\":\"ITMGPTT.java\",\"b\":1},{\"text\":\".\"}],\"type\":\"p\"},{\"id\":\"pi_6MpPg9uLIcT3EYSK8P\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\".E5.87.BD.E6.95.B0.E5.8E.9F.E5.9E.8B22\",\"type\":\"h4\"},{\"id\":\"dBwExwm2_y9PFT_tQVdqK\",\"autoWrap\":false,\"children\":[{\"id\":\"LQfdnXO5zz7h9SZNXLxxG\",\"children\":[{\"text\":\"public abstract int GetSpeakerVolume();\"}],\"type\":\"code-line\"}],\"language\":\"java\",\"type\":\"code-block\"},{\"id\":\"Da3i2MgBD-05edlvH7MOa\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.8122\",\"type\":\"h4\"},{\"id\":\"TllIA8ZVC-bZzxu1nHlQ3\",\"autoWrap\":false,\"children\":[{\"id\":\"D1Kp75XD0uOWA4bL2jPVJ\",\"children\":[{\"text\":\"ITMGContext.GetInstance(this).GetPTT().GetSpeakerVolume();\"}],\"type\":\"code-line\"}],\"language\":\"java\",\"type\":\"code-block\"},{\"id\":\"isGsFKnRJoVbBP2tdjhkb\",\"children\":[{\"text\":\"Voice Message Playback\"}],\"nodeId\":\".E8.AF.AD.E9.9F.B3.E6.B6.88.E6.81.AF.E6.92.AD.E6.94.BE\",\"type\":\"h2\"},{\"id\":\"a8t73CI8hJ3tuDYZUgcyu\",\"children\":[{\"text\":\"Playing back audio\"}],\"nodeId\":\".E6.92.AD.E6.94.BE.E8.AF.AD.E9.9F.B3\",\"type\":\"h3\"},{\"id\":\"FDeHjwFXPKr4027TBUTff\",\"children\":[{\"text\":\"This API is used to play back audio.\"}],\"type\":\"p\"},{\"id\":\"hUCJSalWd3AUJP3iqtN1f\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\".E5.87.BD.E6.95.B0.E5.8E.9F.E5.9E.8B23\",\"type\":\"h4\"},{\"id\":\"i2ZaIupKVGAdL35_zaUo6\",\"autoWrap\":false,\"children\":[{\"id\":\"c1qgwX_KdHvOsei7C4DRn\",\"children\":[{\"text\":\"public abstract int PlayRecordedFile(String filePath);public abstract int PlayRecordedFile(String filePath,int voicetype);\"}],\"type\":\"code-line\"}],\"language\":\"java\",\"type\":\"code-block\"},{\"id\":\"1bzxq2Bj_p5ZSKU6JzxZp\",\"children\":[{\"id\":\"9MjV1MNDkw8XB0_kDBigj\",\"children\":[{\"id\":\"1P4B4xwxQevuk7INgLmlQ\",\"children\":[{\"id\":\"NknCA73HJetmwJSv2HIoa\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"cksLD8D8tvurVzPvejlWV\",\"children\":[{\"id\":\"Nl85UiaVeGQQFMy1Z-XXu\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"MoZgSHR9Kk78f4VoitNiK\",\"children\":[{\"id\":\"WrQBwnShq1Do9M5fwVaJT\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"ooZzXXEKPkWb9SoHWm4dD\",\"children\":[{\"id\":\"_HpCH1nmwJzsu77Go9tLH\",\"children\":[{\"id\":\"VjP5gIeHILIU2QUUw-eG9\",\"children\":[{\"id\":\"VX7jpmCoYC_97L8Q3R2BQ\",\"children\":[{\"text\":\"downloadFilePath\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"44kURvdAXkTxJfgvBO4Hi\",\"children\":[{\"id\":\"Zg34YbSyvB23IBy1zaqF3\",\"children\":[{\"id\":\"XQyvfgKSJxG3ioUM7Ju1r\",\"children\":[{\"text\":\"String\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"pMAtgMm5w7xm7kiRfMufG\",\"children\":[{\"id\":\"4r6OpMVzJjlnDTdi036md\",\"children\":[{\"id\":\"Y6RwMfslnCzM5uRDo_1Q2\",\"children\":[{\"text\":\"Local audio file path\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"di_miYJSctODHPF6OCmCR\",\"children\":[{\"id\":\"KY_dc2oUMhplQZxjRVlBn\",\"children\":[{\"id\":\"n_OGxdkJLblIp_lHAstFr\",\"children\":[{\"id\":\"CRePIQ_LOcV9Rs6CKca1W\",\"children\":[{\"text\":\"voicetype\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"JxdWig2GZgm1_rplv3tp7\",\"children\":[{\"id\":\"6LToV2epQPczNGGjVQTGh\",\"children\":[{\"id\":\"GFmOZDxb3-xHjVRQfYifD\",\"children\":[{\"text\":\"int\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"mYLDLHmzmUDTTKqGk5W4I\",\"children\":[{\"id\":\"3fTiHmUM_DtWo9s4kA4KF\",\"children\":[{\"text\":\"Voice changing type. For more information, see \"},{\"id\":\"5b3QF_0vQ-Y-fF49VJxom\",\"children\":[{\"text\":\"Voice Changing\"}],\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/44995\"},\"type\":\"ref\"},{\"text\":\".\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[22,10,68],\"widthMode\":\"percentage\"},{\"id\":\"D8SbDyECWvM6BbXRjYS_a\",\"children\":[{\"text\":\"Error codes\"}],\"nodeId\":\".E9.94.99.E8.AF.AF.E7.A0.813\",\"type\":\"h4\"},{\"id\":\"liwjyKkNdul_Doix_RiOR\",\"children\":[{\"id\":\"B_Wizvi4ToiPQHoW4eI8L\",\"children\":[{\"id\":\"_TPdtP-14jhMUqJFTid41\",\"children\":[{\"id\":\"xIPqVPE1w0YnVfx9WBzjt\",\"children\":[{\"text\":\"Error Code\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"hIt35XUQjs8JMgnv999yn\",\"children\":[{\"id\":\"PkzF46GlY1ok5rs3sMeCP\",\"children\":[{\"text\":\"Reasons\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"gFIdLZn-OmAav95k_RtzJ\",\"children\":[{\"id\":\"VDG2jqL6LyfLrtmUoYcFJ\",\"children\":[{\"text\":\"Suggested Solution\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"ZCkOAykgQbfThHcItyhz0\",\"children\":[{\"id\":\"BgUpowxMi1Gy4-eKPQChg\",\"children\":[{\"id\":\"T4K36hHj825bcUbI7PeIY\",\"children\":[{\"id\":\"QnblhyF8ZgHtSjg4NRIEW\",\"children\":[{\"text\":\"20485\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"tfSXxbF04vCUFdvBKiRAx\",\"children\":[{\"id\":\"5veVhb8uBGG3ObyB92tEi\",\"children\":[{\"id\":\"MCfzAYUN7fQYBDHR2My2k\",\"children\":[{\"text\":\"Playback is not started.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"excfECb6v9i4307Tm3sca\",\"children\":[{\"id\":\"mSeooRmEnHAhXpmX7HXpc\",\"children\":[{\"id\":\"BPkjSg35uBIFicjPXhgE0\",\"children\":[{\"text\":\"Ensure the existence of the file and the validity of the file path.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[14,25,61],\"widthMode\":\"percentage\"},{\"id\":\"C40-Uwr0uwtfotSydVhkA\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.8123\",\"type\":\"h4\"},{\"id\":\"8NK_w71x-PmGWIDVEYtXY\",\"autoWrap\":false,\"children\":[{\"id\":\"Urvdo1oVfKZvz4N0OFBRD\",\"children\":[{\"text\":\"ITMGContext.GetInstance(this).GetPTT().PlayRecordedFile(downloadFilePath);\"}],\"type\":\"code-line\"}],\"language\":\"java\",\"type\":\"code-block\"},{\"id\":\"EpSyr0vcRD3oI0_qVD3e4\",\"children\":[{\"text\":\"Callback for audio playback\"}],\"nodeId\":\".E6.92.AD.E6.94.BE.E8.AF.AD.E9.9F.B3.E7.9A.84.E5.9B.9E.E8.B0.83\",\"type\":\"h3\"},{\"id\":\"ghX5sXSJJ_mCTddhbyr4r\",\"children\":[{\"text\":\"After the audio is played back, the event message \"},{\"code\":1,\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_PLAY_COMPLETE\"},{\"text\":\" will be returned, which will be identified in the \"},{\"code\":1,\"text\":\"OnEvent\"},{\"text\":\" function.\\nThe passed parameter includes \"},{\"code\":1,\"text\":\"result\"},{\"text\":\" and \"},{\"code\":1,\"text\":\"file_path\"},{\"text\":\".\"}],\"type\":\"p\"},{\"id\":\"uNjKRa00lMWhhtbMpVxYX\",\"children\":[{\"text\":\"Error codes\"}],\"nodeId\":\".E9.94.99.E8.AF.AF.E7.A0.814\",\"type\":\"h4\"},{\"id\":\"GHeQswpljUKpbqvNVNjcI\",\"children\":[{\"id\":\"27DOYjjTHMtwWM01XRG8V\",\"children\":[{\"id\":\"rqmoAvwFM8xv86k0AUpPV\",\"children\":[{\"id\":\"P4cog02zjjGP4CgFN6jgJ\",\"children\":[{\"text\":\"Error Code\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ubF5YjT3_oy7P-jEUJRrm\",\"children\":[{\"id\":\"-snesQyaaVrwURkSQA_Pd\",\"children\":[{\"text\":\"Reasons\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"htk1MOxWX3y-OgjJOTLRZ\",\"children\":[{\"id\":\"HHloEEBX4zP9fy0xvtmbP\",\"children\":[{\"text\":\"Suggested Solution\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"1bM9J_p0z0Tfv8zhjgSC-\",\"children\":[{\"id\":\"70PH8nZgV3BDg_4hZx_S7\",\"children\":[{\"id\":\"_Ba-VOJ0apd_fAPZ_2nmY\",\"children\":[{\"id\":\"oNdxZeLHVfnTmv5pWMkGk\",\"children\":[{\"text\":\"20481\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ghOhZsOyK85tt96NMrsRW\",\"children\":[{\"id\":\"5MI4ser09YyKxosiBA_R5\",\"children\":[{\"id\":\"ZCBhEu1wIW6V78v42MrBP\",\"children\":[{\"text\":\"An initialization error occurred.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"qDS0rXMLCQTF-MLDvFKq9\",\"children\":[{\"id\":\"gAv1ulp2xK9MSMoOIoMIw\",\"children\":[{\"id\":\"ScZ-cXbztXR4qCO385wiV\",\"children\":[{\"text\":\"Check whether the device is being used, whether the permissions are normal, and whether the initialization is normal.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"yp2NEHuxCw89UId0VxhoU\",\"children\":[{\"id\":\"X-i0Xkjpp1DMcbgaPNkmB\",\"children\":[{\"id\":\"L-6Q86Buz1Nh0t4lkLpZz\",\"children\":[{\"id\":\"a4eSYsihaFeFjjSL0MPCP\",\"children\":[{\"text\":\"20482\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"X5PCOmsz6ajimKCLlgN9b\",\"children\":[{\"id\":\"WKYit4SwDeB39PiLxxZrk\",\"children\":[{\"id\":\"M25MygkxknvwJj3kl3DFw\",\"children\":[{\"text\":\"During playback, the client tried to interrupt and play back the next one but failed (which should succeed normally).\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"tVCOHjiWRwhpemO0YIl0E\",\"children\":[{\"id\":\"SuIxXfZ1BHAWajiedmpGM\",\"children\":[{\"id\":\"sna0GiZ2BysMeD95nQL8i\",\"children\":[{\"text\":\"Check whether the code logic is correct.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"ZtVxPhe5eXBHTJtvHddUm\",\"children\":[{\"id\":\"qSanM5p949mHUi6qxxC9d\",\"children\":[{\"id\":\"snzRDUEru9_AqgRDd0a5-\",\"children\":[{\"id\":\"tTRMdDIwilCCNJvv_lvai\",\"children\":[{\"text\":\"20483\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"3FmSebUtTwWaCfv4D0QdH\",\"children\":[{\"id\":\"q24PjhlXxBIO6DcHrv5K8\",\"children\":[{\"id\":\"vr_QsQNEtx61VtOlA_Gmx\",\"children\":[{\"text\":\"Empty parameters.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"yW_SyLuUJfEjjxiPx3tkk\",\"children\":[{\"id\":\"0hJgxrJuK-HEwL-omaTPE\",\"children\":[{\"id\":\"JDNqKwfMZ499IbYXkXT2g\",\"children\":[{\"text\":\"Check whether the API parameters in the code are correct.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"CSiuXSFBCr1kFwryeyaeu\",\"children\":[{\"id\":\"G-wQZWXhKXjE_tutSlhQb\",\"children\":[{\"id\":\"m8UtYKlLFBipoTyWaf_x3\",\"children\":[{\"id\":\"fkpIT1dindpejaC__hHvo\",\"children\":[{\"text\":\"20484\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"tq8PU-1xT7j3pLjCLhVQB\",\"children\":[{\"id\":\"hNXWnVDfl-NN98Hph0u9W\",\"children\":[{\"id\":\"Lv43r_GTO3vcMivhdRgBs\",\"children\":[{\"text\":\"An internal error occurred.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"KzTqWF1VOQU5msDMcR0IU\",\"children\":[{\"id\":\"sNEsfO_45r6rPv3O6yGmh\",\"children\":[{\"id\":\"n2u8bYJTjsNWJctk4-zGQ\",\"children\":[{\"text\":\"An error occurred while initializing the player. This error code is generally caused by failure in decoding, and the error should be located with the aid of logs.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[13,33,54],\"widthMode\":\"percentage\"},{\"id\":\"KWr3m41mx48N4x-HBV1EA\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.8124\",\"type\":\"h4\"},{\"id\":\"4etww3tNTlJkPj53VXRpU\",\"autoWrap\":false,\"children\":[{\"id\":\"f85LB2Pf2Rc8FvK8gxhHK\",\"children\":[{\"text\":\"public void OnEvent(ITMGContext.ITMG_MAIN_EVENT_TYPE type, Intent data) {\"}],\"type\":\"code-line\"},{\"id\":\"nQwi63HWMIDuiYoV6jv05\",\"children\":[{\"text\":\" if(ITMGContext.ITMG_MAIN_EVNET_TYPE_PTT_PLAY_COMPLETE== type)\"}],\"type\":\"code-line\"},{\"id\":\"wR6Upn_VZF6lXoMAEeWmJ\",\"children\":[{\"text\":\" \\t{\"}],\"type\":\"code-line\"},{\"id\":\"7_MTs-yivhy1b4HZapQkL\",\"children\":[{\"text\":\" // Callback for audio playback \"}],\"type\":\"code-line\"},{\"id\":\"4bKyr8HqRxi8u01quw0eg\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"EAGgMst6Hx6O4RQlBnlU0\",\"children\":[{\"text\":\"}\"}],\"type\":\"code-line\"}],\"language\":\"java\",\"type\":\"code-block\"},{\"id\":\"X4AUMJrxjBBQ2nz6i3AYA\",\"children\":[{\"text\":\"Stopping audio playback\"}],\"nodeId\":\".E5.81.9C.E6.AD.A2.E6.92.AD.E6.94.BE.E8.AF.AD.E9.9F.B3\",\"type\":\"h3\"},{\"id\":\"AxcMxKSLlzObTgVrbkAiw\",\"children\":[{\"text\":\"This API is used to stop audio playback. There will be a callback for playback completion when the playback stops.\"}],\"type\":\"p\"},{\"id\":\"RHHFN-bUDrHuEaa8anJpm\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\".E5.87.BD.E6.95.B0.E5.8E.9F.E5.9E.8B24\",\"type\":\"h4\"},{\"id\":\"urS-H04wvpylUvOD-1KwT\",\"autoWrap\":false,\"children\":[{\"id\":\"tDSL5nlZZay7ZIam40Wev\",\"children\":[{\"text\":\"public abstract int StopPlayFile();\"}],\"type\":\"code-line\"}],\"language\":\"java\",\"type\":\"code-block\"},{\"id\":\"ied7iwGyneqB10FouI3n0\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.8125\",\"type\":\"h4\"},{\"id\":\"KkCMvoM_txGFufp7xCc2x\",\"autoWrap\":false,\"children\":[{\"id\":\"B3GC0_kw2tSQdi_FpOZiQ\",\"children\":[{\"text\":\"ITMGContext.GetInstance(this).GetPTT().StopPlayFile();\"}],\"type\":\"code-line\"}],\"language\":\"java\",\"type\":\"code-block\"},{\"id\":\"aKcGM7bqAkBn6h7gVbJiT\",\"children\":[{\"text\":\"Getting audio file size\"}],\"nodeId\":\".E8.8E.B7.E5.8F.96.E8.AF.AD.E9.9F.B3.E6.96.87.E4.BB.B6.E7.9A.84.E5.A4.A7.E5.B0.8F\",\"type\":\"h3\"},{\"id\":\"ollYajMcTwnv4b1Nkx4Ef\",\"children\":[{\"text\":\"This API is used to get the size of an audio file.\"}],\"type\":\"p\"},{\"id\":\"taYnkvDZES_p7ive3c30P\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\".E5.87.BD.E6.95.B0.E5.8E.9F.E5.9E.8B25\",\"type\":\"h4\"},{\"id\":\"rXYVol5Muf-d1yfwficQC\",\"autoWrap\":false,\"children\":[{\"id\":\"wk_a9MQzamSeGE_N7UoUg\",\"children\":[{\"text\":\"public abstract int GetFileSize(String filePath);\"}],\"type\":\"code-line\"}],\"language\":\"java\",\"type\":\"code-block\"},{\"id\":\"G9zpFh0zocV-evpNQUyeQ\",\"children\":[{\"id\":\"OUBpJGmcb7WY8pvmxO_BG\",\"children\":[{\"id\":\"fE2bpK00PS_oh0WwjtOSm\",\"children\":[{\"id\":\"07Qyh8u-t_xxqpxfx-BPM\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"mtX5FFyK9bmnlBjHlsrQF\",\"children\":[{\"id\":\"nnqx09nIRyjeAAZAsmy6s\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"BzTaTAxriv4he4xCphKJo\",\"children\":[{\"id\":\"qdHRRZ2pwi53bytm2Wxic\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"rKhfPixAxQ9Jtz6r5Fteq\",\"children\":[{\"id\":\"6m9TRQxEKouD-BwiTbTBW\",\"children\":[{\"id\":\"WxrhXxxlZxj9DC8xUXsEB\",\"children\":[{\"id\":\"S3LQ0hA4nqejU_nacSniG\",\"children\":[{\"text\":\"filePath\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"RuRccgYSJzCgjuXm051P_\",\"children\":[{\"id\":\"Zun2k8ecvV70uaxIFfKvO\",\"children\":[{\"id\":\"Dmb6eQcbelbkRmsbiKAxS\",\"children\":[{\"text\":\"String\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"kxYPXVjTuNquaQAV-7MUS\",\"children\":[{\"id\":\"AetV3Qqo8cqmhjwPw1NIN\",\"children\":[{\"id\":\"vAk5h8t39_oqScUOSh5FJ\",\"children\":[{\"text\":\"Path of the audio file, which is a local path.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[21,14,65],\"widthMode\":\"percentage\"},{\"id\":\"q2O0HLTCMAskLCwDVTAZp\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.8126\",\"type\":\"h4\"},{\"id\":\"L_ePxpCX80chkslIcz5FY\",\"autoWrap\":false,\"children\":[{\"id\":\"iXPvXQN2dvtXa0A_2kK2V\",\"children\":[{\"text\":\"ITMGContext.GetInstance(this).GetPTT().GetFileSize(path);\"}],\"type\":\"code-line\"}],\"language\":\"java\",\"type\":\"code-block\"},{\"id\":\"LWGO6g15o709LV-P_pZkU\",\"children\":[{\"text\":\"Getting audio file duration\"}],\"nodeId\":\".E8.8E.B7.E5.8F.96.E8.AF.AD.E9.9F.B3.E6.96.87.E4.BB.B6.E7.9A.84.E6.97.B6.E9.95.BF\",\"type\":\"h3\"},{\"id\":\"pphr68ZOGmBMQdmElP_7a\",\"children\":[{\"text\":\"This API is used to get the duration of an audio file in milliseconds.\"}],\"type\":\"p\"},{\"id\":\"CMT4nc_ybOfmQ-U7vd0Hj\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\".E5.87.BD.E6.95.B0.E5.8E.9F.E5.9E.8B26\",\"type\":\"h4\"},{\"id\":\"f1aeCU8yIUGCA3K-RJdJD\",\"autoWrap\":false,\"children\":[{\"id\":\"rmGVogEZtBX7phYgVsFCv\",\"children\":[{\"text\":\"public abstract int GetVoiceFileDuration(String filePath);\"}],\"type\":\"code-line\"}],\"language\":\"java\",\"type\":\"code-block\"},{\"id\":\"23gd-WJ2EyIayDl36fDsk\",\"children\":[{\"id\":\"TzGpZYEGzqy1PosUWjsrQ\",\"children\":[{\"id\":\"mLaUhFQGtwLLBFe8ZjuUr\",\"children\":[{\"id\":\"rDpnMm3HA-4uEpMn_H3Ij\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"YwBvj49ZSzcVGxzcTZI2u\",\"children\":[{\"id\":\"f3uXDTW89SliHLbqJTMhJ\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"kxFSAsnrOqsm9fWqNc7ee\",\"children\":[{\"id\":\"yWOzZn9Kcz24ktHKgceQu\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"MI0XmXdi5F0NJEedc4yrV\",\"children\":[{\"id\":\"Yx_yl8BO8YpdI8rllsZLp\",\"children\":[{\"id\":\"R95I4eMaxGQsAkvb6lVlt\",\"children\":[{\"id\":\"oOVYOjin_SRMrxSZjxfmZ\",\"children\":[{\"text\":\"filePath\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"SyAO3rIdKkOeo_yP5dinZ\",\"children\":[{\"id\":\"oOBqNx0FB5UezN6QcPMM3\",\"children\":[{\"id\":\"VEV7LV7aiuA95nV9n2cf0\",\"children\":[{\"text\":\"String\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"eXszF2IE3oNnCNfwsMii2\",\"children\":[{\"id\":\"iO_hY98G9RWW447EVzBo2\",\"children\":[{\"id\":\"9zRGHCjSZyFO5LAkDMFg0\",\"children\":[{\"text\":\"Path of the audio file, which is a local path.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[21,14,65],\"widthMode\":\"percentage\"},{\"id\":\"TC4vnZ7W2rtcy5Tz7QgV4\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.8127\",\"type\":\"h4\"},{\"id\":\"o3Cwm647SLuYwBrlnCExC\",\"autoWrap\":false,\"children\":[{\"id\":\"i1FZkjCICd9Bk8UCd2_xG\",\"children\":[{\"text\":\"ITMGContext.GetInstance(this).GetPTT().GetVoiceFileDuration(path);\"}],\"type\":\"code-line\"}],\"language\":\"java\",\"type\":\"code-block\"},{\"id\":\"A3fWoUfTs3q88RtuTCdiN\",\"children\":[{\"text\":\"Voice Message Upload and Download\"}],\"nodeId\":\".E8.AF.AD.E9.9F.B3.E6.B6.88.E6.81.AF.E4.B8.8A.E4.BC.A0.E5.8F.8A.E4.B8.8B.E8.BD.BD\",\"type\":\"h2\"},{\"id\":\"vUI46Gbp8mtTYWaGXL_0_\",\"children\":[{\"text\":\"Uploading an audio file\"}],\"nodeId\":\".E4.B8.8A.E4.BC.A0.E8.AF.AD.E9.9F.B3.E6.96.87.E4.BB.B6\",\"type\":\"h3\"},{\"id\":\"jSNPi5AMHo07kOMtu87Cj\",\"children\":[{\"text\":\"This API is used to upload an audio file.\"}],\"type\":\"p\"},{\"id\":\"x5xf77lot6S2eVsClRiJV\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\".E5.87.BD.E6.95.B0.E5.8E.9F.E5.9E.8B27\",\"type\":\"h4\"},{\"id\":\"T58jjzTdH_5pBtc9aFVUa\",\"autoWrap\":false,\"children\":[{\"id\":\"5l0lpg1MBMYsP6yNpNO6O\",\"children\":[{\"text\":\"public abstract int UploadRecordedFile(String filePath);\"}],\"type\":\"code-line\"}],\"language\":\"java\",\"type\":\"code-block\"},{\"id\":\"tS3NgHQQpJz7GYigXHXEu\",\"children\":[{\"id\":\"ZFnSotKco5HBEn5B39yfG\",\"children\":[{\"id\":\"k9ft5kjQGEoA6Wia8n6_C\",\"children\":[{\"id\":\"yILerrVZaw4CF2WLf9ARZ\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"vvFGUpLYFm5K0E2YwJVhw\",\"children\":[{\"id\":\"VKPE7Iao7xeV9Tkp-SYzw\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"vVgnunU8lg4d1fG51gGj0\",\"children\":[{\"id\":\"YtFj0rIOpffhB08McwHvX\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"2jwv5ZvaEELR0hWd0aeAJ\",\"children\":[{\"id\":\"CE_59Iq0VRVgCCauuRWZY\",\"children\":[{\"id\":\"dX__Fyd2In0g3ut8utWrL\",\"children\":[{\"id\":\"04935fX2IwjQ7utONfnSI\",\"children\":[{\"text\":\"filePath\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"IlyempYkbx0ANwTR39mqD\",\"children\":[{\"id\":\"lBvQtEcxF_-Lbry7HBLaU\",\"children\":[{\"id\":\"4MwY1QStQSMB7dps-dXBR\",\"children\":[{\"text\":\"String\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"58Mmwux3TqjcddPM_rahj\",\"children\":[{\"id\":\"EmwY4kFMT5mZwRpIhrXcB\",\"children\":[{\"id\":\"VsXNitBo04ZPgcHXJtZoj\",\"children\":[{\"text\":\"Path of the uploaded audio file, which is a local path.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[18,13,69],\"widthMode\":\"percentage\"},{\"id\":\"-5eRxOA6WhcGxMLq6795N\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.8128\",\"type\":\"h4\"},{\"id\":\"bgWUKcWSDYa1NOKpkorGT\",\"autoWrap\":false,\"children\":[{\"id\":\"xsG7_KX_pi_2U0PxsyjHq\",\"children\":[{\"text\":\"ITMGContext.GetInstance(this).GetPTT().UploadRecordedFile(filePath);\"}],\"type\":\"code-line\"}],\"language\":\"java\",\"type\":\"code-block\"},{\"id\":\"gzOViAE8PR7PkwT2zvc05\",\"children\":[{\"text\":\"Callback for audio file upload completion\"}],\"nodeId\":\".E4.B8.8A.E4.BC.A0.E8.AF.AD.E9.9F.B3.E5.AE.8C.E6.88.90.E7.9A.84.E5.9B.9E.E8.B0.83\",\"type\":\"h3\"},{\"id\":\"vnmH4cr8-VCyArzN9CJNl\",\"children\":[{\"text\":\"After the audio file is uploaded, the event message \"},{\"code\":1,\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_UPLOAD_COMPLETE\"},{\"text\":\" will be returned, which will be identified in the \"},{\"code\":1,\"text\":\"OnEvent\"},{\"text\":\" function.\\nThe passed parameters include \"},{\"code\":1,\"text\":\"result\"},{\"text\":\", \"},{\"code\":1,\"text\":\"file_path\"},{\"text\":\", and \"},{\"code\":1,\"text\":\"file_id\"},{\"text\":\".\"}],\"type\":\"p\"},{\"id\":\"HShQz7mY_O6tG_8JB7O3V\",\"children\":[{\"text\":\"Error codes\"}],\"nodeId\":\".E9.94.99.E8.AF.AF.E7.A0.815\",\"type\":\"h4\"},{\"id\":\"LCBSxlUrh7GTwHO9GrdPY\",\"children\":[{\"id\":\"fjldBguKexLQ5cuIdFtDn\",\"children\":[{\"id\":\"FM_WOs4qXP5sNJ-82CzBA\",\"children\":[{\"id\":\"ILuCLgMlC3Q_Nd3HYSMYy\",\"children\":[{\"text\":\"Error Code\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"8axBs8D8xSrZzYJuZF02w\",\"children\":[{\"id\":\"bkbDxubEZ0Bbi7C_K8VFf\",\"children\":[{\"text\":\"Reasons\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"_8Y_VrOBcaq3Qjx1JcQHn\",\"children\":[{\"id\":\"tpfV8z4tHKY5MfwLLUztk\",\"children\":[{\"text\":\"Suggested Solution\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"cKNS2NTcoZDcZi35784B6\",\"children\":[{\"id\":\"6F0CoMQCi5RZ670JSy5sN\",\"children\":[{\"id\":\"-ZZFeNEmfiXjyq1Zb8LhL\",\"children\":[{\"id\":\"qF3LUdZAOmcqmyZAE64Qk\",\"children\":[{\"text\":\"8193\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"APlWYKGddFgGLmBfiNFi8\",\"children\":[{\"id\":\"RqBkMDAWwbm8vbNq44prW\",\"children\":[{\"id\":\"Wazjoozdwx2qpwhpOCvsd\",\"children\":[{\"text\":\"An error occurred while accessing the file during upload.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"nXNVsRnoI-gryevapP0bj\",\"children\":[{\"id\":\"Z8k0PDin5WL4ezkvG0nWB\",\"children\":[{\"id\":\"RXJ6WBxeCH--XUS8vgknW\",\"children\":[{\"text\":\"Ensure the existence of the file and the validity of the file path.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"ejQBAOalNKsKD19DRtse3\",\"children\":[{\"id\":\"2CmCxmtn8Mmxzd0ExYu1E\",\"children\":[{\"id\":\"5tvXs2x_26ARQh_gy4jJ2\",\"children\":[{\"id\":\"s-_fNogIOXeBRFf1mJpgP\",\"children\":[{\"text\":\"8194\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"d3GSzHa9k7hncVb1H8Vi_\",\"children\":[{\"id\":\"xBOwDrrfbrlYzarGPi8fh\",\"children\":[{\"id\":\"GMi87k6e1SqA6u2RI5QLj\",\"children\":[{\"text\":\"Signature verification failed.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"qebr1TpjG2RKHZkzzLUTb\",\"children\":[{\"id\":\"_1HDfvK6QUQ4Ibw2k22Za\",\"children\":[{\"id\":\"2Ek14Vn4RQv2RsDfzyqbu\",\"children\":[{\"text\":\"Check whether the authentication key is correct and whether the voice messaging and speech-to-text feature is initialized.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"R7v1QZhivxj5ZCo0zoB97\",\"children\":[{\"id\":\"uen4pnFWfZpHnK74PWnMn\",\"children\":[{\"id\":\"-KkqXwu7qIZj-4IaZeeQ2\",\"children\":[{\"id\":\"o6NrKhVnaHFhD_XMWO5Kp\",\"children\":[{\"text\":\"8195\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"6ORo9hypmCTWmb_HZ24I_\",\"children\":[{\"id\":\"GrNsdeDcJVWpxi4_bfMk3\",\"children\":[{\"id\":\"TW79NV7B0Agd9w_Zhjyep\",\"children\":[{\"text\":\"Network error\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"yWf3_q93Jzka-B0rsjZHp\",\"children\":[{\"id\":\"VsTNof7Z2VFaiYcgM3Qqg\",\"children\":[{\"id\":\"Gyny1mx5wEUO-t3jzp6GJ\",\"children\":[{\"text\":\"Check whether the device can access the internet.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"fUwg9xigzKIunanya5SQa\",\"children\":[{\"id\":\"QxnYh2mF4aTiBEi_eYnrq\",\"children\":[{\"id\":\"ch-zFSx7U13q6IGMjTn15\",\"children\":[{\"id\":\"URNUvioEbYGkxakPNdGfj\",\"children\":[{\"text\":\"8196\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"W9C3dl__toqZR_mzJP1y2\",\"children\":[{\"id\":\"rNVb2kC3pivIbNlnkbCxn\",\"children\":[{\"id\":\"4e2G9jyJl9LJZtaSahMZL\",\"children\":[{\"text\":\"The network failed while getting the upload parameters.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"oP4quWmHatk2mIEZGMBxm\",\"children\":[{\"id\":\"a9L4cedsToZY7neuCTWM8\",\"children\":[{\"id\":\"6zysd80vJsNXrpOEva-Mj\",\"children\":[{\"text\":\"Check whether the authentication is correct and whether the device network can normally access the internet.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"3ZqpLJtAx3ZIrz3eB_4rL\",\"children\":[{\"id\":\"rtgZfnRMYut792JmHHtDb\",\"children\":[{\"id\":\"XZ1BthndP-fSluagY-V_8\",\"children\":[{\"id\":\"WQnLnmxnP0TD1gTdXICvX\",\"children\":[{\"text\":\"8197\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"yzgSSmwncd5ITAktR5SIC\",\"children\":[{\"id\":\"D1bMtX355GbUCRm3UqIos\",\"children\":[{\"id\":\"7uIMeppqRv1ZhFgjCe2NH\",\"children\":[{\"text\":\"The packet returned during the process of getting the upload parameters is empty.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"5mDNrr96QWRPr8HjQQdAB\",\"children\":[{\"id\":\"3Kzvr0I7RDIkXeOvxR1t1\",\"children\":[{\"id\":\"p7c1uWAnZVJkUDUc2ab3E\",\"children\":[{\"text\":\"Check whether the authentication is correct and whether the device network can normally access the internet.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"g8wIVYRf92pGPrBFIlBbc\",\"children\":[{\"id\":\"YBTslj1NiyUbAtd4KPliB\",\"children\":[{\"id\":\"Vt_RHgVP4ndN7YSYGgWQ7\",\"children\":[{\"id\":\"utO47BvxlQBr06VPG3j37\",\"children\":[{\"text\":\"8198\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Gw7LlcjirPRTDRUshMcbe\",\"children\":[{\"id\":\"Cz1aeNg8t217Ph1mnPOMt\",\"children\":[{\"id\":\"76Oyk0aSwA7ILTbScNHD5\",\"children\":[{\"text\":\"Failed to decode the packet returned during the process of getting the upload parameters.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"kEnxvsZuTxVjaMJDkCNIo\",\"children\":[{\"id\":\"HBLYaeU6yhd107ZOoGYd_\",\"children\":[{\"id\":\"ogZdZ3ZKgbGUgyrxOXPG-\",\"children\":[{\"text\":\"Check whether the authentication is correct and whether the device network can normally access the internet.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"35Xg8lzSc1w2gNxlXKfe2\",\"children\":[{\"id\":\"n_ByX8AOu_UpgN-WpZ8_e\",\"children\":[{\"id\":\"lB5jZiGaINhg2CKD2VKVD\",\"children\":[{\"id\":\"tXTYj8ZaqdwA5duzvVeBw\",\"children\":[{\"text\":\"8200\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"oyB5kuBVHZJa8_eaQwa_Z\",\"children\":[{\"id\":\"p_HzXF-vlwUlK5By-NPpE\",\"children\":[{\"id\":\"7suDZB6skmoFrb8Hgveuk\",\"children\":[{\"code\":1,\"text\":\"appinfo\"},{\"text\":\" is not set.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"6Sehiain61JzrJXeCTUE3\",\"children\":[{\"id\":\"pBoJsv4W80z-053QzUljI\",\"children\":[{\"id\":\"yyNG1dX8Omzb9qzBI39nB\",\"children\":[{\"text\":\"Check whether the \"},{\"code\":1,\"text\":\"apply\"},{\"text\":\" API is called or whether the input parameter is not specified or null.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[12,36,52],\"widthMode\":\"percentage\"},{\"id\":\"xOtRR5ShRc6YHVSAMvFp9\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.8129\",\"type\":\"h4\"},{\"id\":\"8vXfDP2Iy7pnKz1_77map\",\"autoWrap\":false,\"children\":[{\"id\":\"VLZeUT5iKlDboy0FkYksQ\",\"children\":[{\"text\":\"public void OnEvent(ITMGContext.ITMG_MAIN_EVENT_TYPE type, Intent data) {\"}],\"type\":\"code-line\"},{\"id\":\"vIXTcbIuV53Y5Pq5h7SU8\",\"children\":[{\"text\":\" if(ITMGContext.ITMG_MAIN_EVENT_TYPE.ITMG_MAIN_EVNET_TYPE_PTT_UPLOAD_COMPLETE== type)\"}],\"type\":\"code-line\"},{\"id\":\"afHxKSsSag1_yvq-hpZ9s\",\"children\":[{\"text\":\" {\"}],\"type\":\"code-line\"},{\"id\":\"OsA2z6jqGjgJQuXcZNivW\",\"children\":[{\"text\":\" // Callback for audio file upload completion\"}],\"type\":\"code-line\"},{\"id\":\"HSNN9-PRtE8cDkZSNHvXU\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"YXWrl_FBpuP_lt91cu9R7\",\"children\":[{\"text\":\"}\"}],\"type\":\"code-line\"}],\"language\":\"java\",\"type\":\"code-block\"},{\"id\":\"GR1VpjCcuxVRwLbeJvuij\",\"children\":[{\"text\":\"Downloading the audio file\"}],\"nodeId\":\".E4.B8.8B.E8.BD.BD.E8.AF.AD.E9.9F.B3.E6.96.87.E4.BB.B6\",\"type\":\"h3\"},{\"id\":\"-PddDi-Fu_PExsldaxepi\",\"children\":[{\"text\":\"This API is used to download an audio file.\"}],\"type\":\"p\"},{\"id\":\"XnqtrUsZwN_45_EjzA3Un\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\".E5.87.BD.E6.95.B0.E5.8E.9F.E5.9E.8B28\",\"type\":\"h4\"},{\"id\":\"v2jgsZM8tmovtNSrGHF4E\",\"autoWrap\":false,\"children\":[{\"id\":\"YHE6YPyTP4AiXbWeDrOsp\",\"children\":[{\"text\":\"public abstract int DownloadRecordedFile(String fileID, String filePath);\"}],\"type\":\"code-line\"}],\"language\":\"java\",\"type\":\"code-block\"},{\"id\":\"oehqrIIn1de0rxjM46yFs\",\"children\":[{\"id\":\"OB2J-b4da0ChJs-DUTSbI\",\"children\":[{\"id\":\"UMryZ3DFKfubJkUkt78pF\",\"children\":[{\"id\":\"uptPfdEi0k6vjm3EmX-z3\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"79GlXv6fHxHDFlSir6JUf\",\"children\":[{\"id\":\"TaiYc5trJD3AioOX4atEy\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"p9DZix3jsglinTY1Q6-P8\",\"children\":[{\"id\":\"UF2hS-4M542yEbhSsdhzj\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"d1yc0LvB5zGaTnEXd3aC4\",\"children\":[{\"id\":\"-9M9o4YHw9seoVnMzisEg\",\"children\":[{\"id\":\"DCepJZZx_dXN6Vx1lTN9I\",\"children\":[{\"id\":\"yjpGBzCkbD-nSglehIwic\",\"children\":[{\"text\":\"fileID\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"t1gVxwlhPj6aE7Q6wHBml\",\"children\":[{\"id\":\"rNNC6xYXHP4E-miS3Vlge\",\"children\":[{\"id\":\"d21Kg6jg6s8IKgTNnAvhD\",\"children\":[{\"text\":\"String\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"bU6cGkeoU1mYcxn7naQ9n\",\"children\":[{\"id\":\"EryeBztXMTdRyCvOPtaYx\",\"children\":[{\"id\":\"B6IzFw4vPOi2sBLmzS1jV\",\"children\":[{\"text\":\"File URL\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"bRmeDDjXeOE-kcrNQMKhT\",\"children\":[{\"id\":\"r3EXA7mb4Wko9dPlAHWqX\",\"children\":[{\"id\":\"XNHjDKrLu0ih8hwmwNWs3\",\"children\":[{\"id\":\"KfFGQCLiLxkp6kv0cH31r\",\"children\":[{\"text\":\"downloadFilePath\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"9deXeOYEVAwo61G6Jw_Si\",\"children\":[{\"id\":\"Bw_DVpGlsy6Ba6rOodm5t\",\"children\":[{\"id\":\"brXLhGBWF0c61IKwtcjSY\",\"children\":[{\"text\":\"String\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"aUXOf_88IXZ_cp1eIAwq-\",\"children\":[{\"id\":\"1kGzjHQKVrfZpV3LOr1sb\",\"children\":[{\"id\":\"E8klHb33GYeFPa80uRp0G\",\"children\":[{\"text\":\"Local path of the saved file\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[34,16,50],\"widthMode\":\"percentage\"},{\"id\":\"dIcqR3bgrC2sYvI-8kDgQ\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.8130\",\"type\":\"h4\"},{\"id\":\"sQWugQsUOsHuAUbTIrBHV\",\"autoWrap\":false,\"children\":[{\"id\":\"mOY5XAgCPkQC3DZVwer1j\",\"children\":[{\"text\":\"ITMGContext.GetInstance(this).GetPTT().DownloadRecordedFile(url,path);\"}],\"type\":\"code-line\"}],\"language\":\"java\",\"type\":\"code-block\"},{\"id\":\"LDe76VAyVyUv1svq4iUWi\",\"children\":[{\"text\":\"Callback for audio file download completion\"}],\"nodeId\":\".E4.B8.8B.E8.BD.BD.E8.AF.AD.E9.9F.B3.E6.96.87.E4.BB.B6.E5.AE.8C.E6.88.90.E5.9B.9E.E8.B0.83\",\"type\":\"h3\"},{\"id\":\"t_l36r6mVBdnGRx7b9AHi\",\"children\":[{\"text\":\"After the audio file is downloaded, the event message \"},{\"code\":1,\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_DOWNLOAD_COMPLETE\"},{\"text\":\" will be returned, which will be identified in the \"},{\"code\":1,\"text\":\"OnEvent\"},{\"text\":\" function. The passed parameters include \"},{\"code\":1,\"text\":\"result\"},{\"text\":\"、\"},{\"code\":1,\"text\":\"file_path\"},{\"text\":\" and \"},{\"code\":1,\"text\":\"file_id\"},{\"text\":\".\"}],\"type\":\"p\"},{\"id\":\"5YHqQz-eAyJgVsu_Fxe54\",\"children\":[{\"text\":\"Error codes\"}],\"nodeId\":\".E9.94.99.E8.AF.AF.E7.A0.816\",\"type\":\"h4\"},{\"id\":\"cIMgkbK0TuaBIo3jm-XoI\",\"children\":[{\"id\":\"KvusixpmIuUoyZrGmMf28\",\"children\":[{\"id\":\"5lOOxfoI7ptWpQp3JIYm3\",\"children\":[{\"id\":\"vYvjC-HmDHHxoPvI76NPp\",\"children\":[{\"text\":\"Error Code\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"gIQPGASllRLQyuIwiiRK6\",\"children\":[{\"id\":\"r8E2mNh3yrHQIe9o-QSVD\",\"children\":[{\"text\":\"Reasons\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"BXtPUHs1AJuQFqsDAxuRI\",\"children\":[{\"id\":\"M-rwvJTOtba4XiGWTa7Oe\",\"children\":[{\"text\":\"Suggested Solution\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"0nTfVdTUuQkhSkboLw9WH\",\"children\":[{\"id\":\"UceEobgEG29JyU7JmMUeF\",\"children\":[{\"id\":\"99wh_Th-Bno85qykPZSRD\",\"children\":[{\"id\":\"eoWs7VWwOKJAq6JZ00RUx\",\"children\":[{\"text\":\"12289\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"g60j3zrbZC1ryd8ip-seM\",\"children\":[{\"id\":\"wfS5JQcZyQIG9zPzxCCUv\",\"children\":[{\"id\":\"maCoy4djIAfZOQU6RNgkr\",\"children\":[{\"text\":\"An error occurred while accessing the file during download.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"IiZFNMFX1VnJ_m0OzAygL\",\"children\":[{\"id\":\"XvB5OSzIVLsq6z9Y2R7r7\",\"children\":[{\"id\":\"BQtCUTvxgFcmZaDthmuUO\",\"children\":[{\"text\":\"Check whether the file path is valid.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"G5olgQLwzsPMEnSM3wy5y\",\"children\":[{\"id\":\"IK_zOQO5nc5AOEp-3AKlU\",\"children\":[{\"id\":\"_kvGbxrhyl_8p2QlCfIT_\",\"children\":[{\"id\":\"lA7NIN3OsOPut92FXrtHK\",\"children\":[{\"text\":\"12290\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Q025VhPboz1atUt-qWqyf\",\"children\":[{\"id\":\"6RLNpT1qUqPzkdhnepdBu\",\"children\":[{\"id\":\"52ueAetDIDdRay0PTeXPg\",\"children\":[{\"text\":\"Signature verification failed.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"tnPTA8Ip59vsY4X6siDCz\",\"children\":[{\"id\":\"xqo-TT9iYaMwNPg1XJfft\",\"children\":[{\"id\":\"1iJ0JwkrNQAu_qjQUdsqd\",\"children\":[{\"text\":\"Check whether the authentication key is correct and whether the voice messaging and speech-to-text feature is initialized.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"uz5tQpscPNfvtDXYPm4xL\",\"children\":[{\"id\":\"FIz7FMiM-CY5myKC6jptb\",\"children\":[{\"id\":\"dSOikSLEJwvprWb-m6_s4\",\"children\":[{\"id\":\"q9LfotKBFH2UZ4lbx7idS\",\"children\":[{\"text\":\"12291\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Wv7XWx9R4_Ge6WqE8UCUQ\",\"children\":[{\"id\":\"tw0XE8PU6bEBBYRWnBsca\",\"children\":[{\"id\":\"eTJLiOCgLYYV25aR2MUSO\",\"children\":[{\"text\":\"A network storage system exception occurred.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"dB3G_N1_c1zZ2yBvRKp-G\",\"children\":[{\"id\":\"kqiFo-7TngI3QmDDV-6Mo\",\"children\":[{\"id\":\"Q9tPw6dVsEbocO8tP9n5B\",\"children\":[{\"text\":\"The server failed to get the audio file. Check whether the API parameter \"},{\"code\":1,\"text\":\"fileid\"},{\"text\":\" is correct, whether the network is normal, and whether the file exists in COS.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"RBk4MuJIBdxLe758_qpXx\",\"children\":[{\"id\":\"n5mnPmY12ZgFth2NDrw0h\",\"children\":[{\"id\":\"PHcxn45Ga7cmxet-dNCmf\",\"children\":[{\"id\":\"BF8HwmkOdgQTXn1Q-9Br9\",\"children\":[{\"text\":\"12292\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"QEJd-eCRD0bhcJagC4kzc\",\"children\":[{\"id\":\"qC1injyrmnOxw9hh-lDXb\",\"children\":[{\"id\":\"-gq7-yp9WtIQOWW6yweLA\",\"children\":[{\"text\":\"A server file system error occurred.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"sXrkua5VzGRJDba9StZiT\",\"children\":[{\"id\":\"WtmXtY2lqitMDTzNbqJMm\",\"children\":[{\"id\":\"pQOGWK6t8WDZZzgeb8X-w\",\"children\":[{\"text\":\"Check whether the device can access the internet and whether the file exists on the server.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"eo-uVgJMVgOhQzdhv2dpx\",\"children\":[{\"id\":\"skHxR2u2c6U5BgJlSVuNi\",\"children\":[{\"id\":\"ZfuIY4I4Si5KjW5BgV1SW\",\"children\":[{\"id\":\"QNaRCs-9UY5Km0yk7rvZ0\",\"children\":[{\"text\":\"12293\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"vnUtKp6OiInhsntfMQzUQ\",\"children\":[{\"id\":\"Rhqf3KmqY0vEz4n_OmhGB\",\"children\":[{\"id\":\"uv7is-3pt62Ned6D8e5oa\",\"children\":[{\"text\":\"The HTTP network failed while getting the download parameters.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"WK1NxpZOUYkYZS0fHmzCc\",\"children\":[{\"id\":\"oJLS9J7iGc9Z6xbdYdVb6\",\"children\":[{\"id\":\"8B91kdFSfrUCOtBpx9pK0\",\"children\":[{\"text\":\"Check whether the device can access the internet.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"tvZyXquRb5tjgwJuoCRg_\",\"children\":[{\"id\":\"aLDviCBC2pD-8JXgmfpfj\",\"children\":[{\"id\":\"xP3yYEjtwE-JlosLWSd5-\",\"children\":[{\"id\":\"bsfSAMyuGMGTv5-w4np9r\",\"children\":[{\"text\":\"12294\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"4RbeDelILL0LS2RbmFaVW\",\"children\":[{\"id\":\"yUZDpqxbWEAltIdYcDelL\",\"children\":[{\"id\":\"UByu1s5UgVv6yQ93sb_LC\",\"children\":[{\"text\":\"The packet returned during the process of getting the download parameters is empty.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"KDWERUyMWePhCS5xHur3Z\",\"children\":[{\"id\":\"TtuhSs2uLKBHIcki2iLTp\",\"children\":[{\"id\":\"AhlaXJ5Fo-BOYuYQE5rAE\",\"children\":[{\"text\":\"Check whether the device can access the internet.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"bMmeeZHo-f2PCT1Q1cmgE\",\"children\":[{\"id\":\"fTQqxJvwxX1fh-xqAYijV\",\"children\":[{\"id\":\"vwlhDht5m_C6uWOx1C8kw\",\"children\":[{\"id\":\"ZNy0-z7_fN5_3u9q0wqqJ\",\"children\":[{\"text\":\"12295\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"kDyqhQqvK6gRHX63o4I0e\",\"children\":[{\"id\":\"z5KmJlnkKYNoTTdMRwrPD\",\"children\":[{\"id\":\"Bti2OSF6XtiHk5VCgmmag\",\"children\":[{\"text\":\"Failed to decode the packet returned during the process of getting the download parameters.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"POUI6CEKnLa94pcAsbiw2\",\"children\":[{\"id\":\"SJuTlwCRIhAthKit7-S2I\",\"children\":[{\"id\":\"1R0jiI9UyCYX9_V42T15O\",\"children\":[{\"text\":\"Check whether the device can access the internet.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"fbtxbas7kQuT_cGEXiAnn\",\"children\":[{\"id\":\"a9ZBxpYa3SFm62OTjCeHS\",\"children\":[{\"id\":\"yUdhTwa4GohA5_a4l2vpx\",\"children\":[{\"id\":\"gMwjXqstyVhCrERUn3TxC\",\"children\":[{\"text\":\"12297\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"olfJlP-T6wJ36yt51N-yg\",\"children\":[{\"id\":\"3ExOoSVpej9MpbWo3RF0B\",\"children\":[{\"id\":\"4L38lZO5eayDgLvXD4FcC\",\"children\":[{\"code\":1,\"text\":\"appinfo\"},{\"text\":\" is not set.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"c8AG7gUotkiVgyWH2_Czf\",\"children\":[{\"id\":\"hQ9aVVEm0HUOFWAAdKCeA\",\"children\":[{\"id\":\"jYV8-xaFJLk4RMjFcgoPK\",\"children\":[{\"text\":\"Check whether the authentication key is correct and whether the voice messaging and speech-to-text feature is initialized.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[14,37,49],\"widthMode\":\"percentage\"},{\"id\":\"59u_79cWb6uABGmO4Iz8d\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.8131\",\"type\":\"h4\"},{\"id\":\"JW25WIQT0mOjceoAuBtf3\",\"autoWrap\":false,\"children\":[{\"id\":\"mP1u6i8N6x_gxMd6Bmno3\",\"children\":[{\"text\":\"public void OnEvent(ITMGContext.ITMG_MAIN_EVENT_TYPE type, Intent data) {\"}],\"type\":\"code-line\"},{\"id\":\"0ZZsO4AhCIyuLp2uObyjL\",\"children\":[{\"text\":\" if(ITMGContext.ITMG_MAIN_EVNET_TYPE_PTT_DOWNLOAD_COMPLETE== type)\"}],\"type\":\"code-line\"},{\"id\":\"qY0xyeAxB1tNo_xpWUPwO\",\"children\":[{\"text\":\" {\"}],\"type\":\"code-line\"},{\"id\":\"iY3CzIDsUUMWOoYU1XYha\",\"children\":[{\"text\":\" //Download succeeded \"}],\"type\":\"code-line\"},{\"id\":\"n99OH_sYM6j5N07YbALOq\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"w0TC52glh1hKhz4cWRih0\",\"children\":[{\"text\":\"}\"}],\"type\":\"code-line\"}],\"language\":\"java\",\"type\":\"code-block\"},{\"id\":\"OMmUTRyKgCJfqmirc_CUK\",\"children\":[{\"text\":\"Speech-to-Text Service\"}],\"nodeId\":\".E8.AF.AD.E9.9F.B3.E8.BD.AC.E6.96.87.E5.AD.97.E6.9C.8D.E5.8A.A1\",\"type\":\"h2\"},{\"id\":\"avnb2QBgKw-5GKjbDwEE_\",\"children\":[{\"text\":\"Converting audio file to text\"}],\"nodeId\":\".E5.B0.86.E6.8C.87.E5.AE.9A.E7.9A.84.E8.AF.AD.E9.9F.B3.E6.96.87.E4.BB.B6.E8.AF.86.E5.88.AB.E6.88.90.E6.96.87.E5.AD.97\",\"type\":\"h3\"},{\"id\":\"W6IScn0ej9usywmX4U6Dh\",\"children\":[{\"text\":\"This API is used to convert a specified audio file to text.\"}],\"type\":\"p\"},{\"id\":\"RHxvMtn7-ZxC0e4nC7pBT\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\".E5.87.BD.E6.95.B0.E5.8E.9F.E5.9E.8B29\",\"type\":\"h4\"},{\"id\":\"dsBBVirbUKZIDoAJVbbNB\",\"autoWrap\":false,\"children\":[{\"id\":\"O1PF9OnYEuDi7yrhds1KZ\",\"children\":[{\"text\":\"public abstract int SpeechToText(String fileID);\"}],\"type\":\"code-line\"}],\"language\":\"java\",\"type\":\"code-block\"},{\"id\":\"Ebe8QpLqdYsQLi2i-XoRx\",\"children\":[{\"id\":\"xYEgdSkun5lAOTzl5VdEE\",\"children\":[{\"id\":\"Ybyk-W0yDKEoDijHmuPsH\",\"children\":[{\"id\":\"t73oXgp0O7D1Av7Y9phly\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"TsOx-FFX-W_jGnkMAndfu\",\"children\":[{\"id\":\"IlIdOFrOdjd9Uk4g3vykv\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"uG1kgw9qKpdqL3ys0SZ1R\",\"children\":[{\"id\":\"pwBQEskKQL_1I8JzEGkZ9\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"4iOxXPWNRCTNnyTRZt2s-\",\"children\":[{\"id\":\"hnFYD2-1iEdA13bNjYqFg\",\"children\":[{\"id\":\"T0ZD64uWlmrTqdnicG6P8\",\"children\":[{\"id\":\"_l5NTTIalxmbgdYNLWpNn\",\"children\":[{\"text\":\"fileID\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"xW6lMD_oKhIVoeIYflzp7\",\"children\":[{\"id\":\"WXZTjDYy7YUCm9zXS325p\",\"children\":[{\"id\":\"mn930IWsymCA6N7_-pn6q\",\"children\":[{\"text\":\"String\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"6L9kBk2_Vmvsx3TjF714P\",\"children\":[{\"id\":\"qyiGa9-2uS9C9LH_BZ1JD\",\"children\":[{\"id\":\"VQaqEFnAIK66X_gzWljB5\",\"children\":[{\"text\":\"Audio file URL\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[33,23,44],\"widthMode\":\"percentage\"},{\"id\":\"UR4oGhx608hovod2rMXeV\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.8132\",\"type\":\"h4\"},{\"id\":\"BJ9bP9IOtoc2Yv_TtvCyj\",\"autoWrap\":false,\"children\":[{\"id\":\"1MKKVivxyUNtzSZuO5SGQ\",\"children\":[{\"text\":\"ITMGContext.GetInstance(this).GetPTT().SpeechToText(fileID);\"}],\"type\":\"code-line\"}],\"language\":\"java\",\"type\":\"code-block\"},{\"id\":\"hxbQOthGsi0rDoPpnMTUu\",\"children\":[{\"text\":\"Translating audio file into text in specified language\"}],\"nodeId\":\".E5.B0.86.E6.8C.87.E5.AE.9A.E7.9A.84.E8.AF.AD.E9.9F.B3.E6.96.87.E4.BB.B6.E7.BF.BB.E8.AF.91.E6.88.90.E6.96.87.E5.AD.97.EF.BC.88.E6.8C.87.E5.AE.9A.E8.AF.AD.E8.A8.80.EF.BC.89\",\"type\":\"h3\"},{\"id\":\"uok0kL1P2A86MSfnUhVNE\",\"children\":[{\"text\":\"This API can specify a language for recognition or translate the information recognized in speech into a specified language and return the translation.\"}],\"type\":\"p\"},{\"id\":\"YaO30A-_03wfVl92r7r-v\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\".E5.87.BD.E6.95.B0.E5.8E.9F.E5.9E.8B30\",\"type\":\"h4\"},{\"id\":\"q0oc5jJh43Ls_4o7JLbyD\",\"autoWrap\":false,\"children\":[{\"id\":\"xRpCu2kdhhae5Yt3jpCrk\",\"children\":[{\"text\":\"public abstract int SpeechToText(String fileID, String speechLanguage,String translatelanguage);\"}],\"type\":\"code-line\"}],\"language\":\"java\",\"type\":\"code-block\"},{\"id\":\"1ZlhR_VHDf2XztB7I3NQD\",\"children\":[{\"id\":\"bYfL5PNQMs05wkBKb01TA\",\"children\":[{\"id\":\"hbiWuks1t1hjGMHGSYIbs\",\"children\":[{\"id\":\"vt7GoXiAo3DgMr-Ha5EwA\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"u_k9248qVibttaGcfWehE\",\"children\":[{\"id\":\"H41LNWDmZvXb8dLCxkz41\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"uqUs7FNIKw8_x_djJsXSE\",\"children\":[{\"id\":\"EdRlMJ--H9cmyYz_Dy9fY\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"tEFrb4cJUlTcGL6zfM13X\",\"children\":[{\"id\":\"lkZyyBy5cgnJbeL3rphfr\",\"children\":[{\"id\":\"mQwc-W2hA3qNHnJ6RGINu\",\"children\":[{\"id\":\"23NjuSOnP94CrTlPNT5QJ\",\"children\":[{\"text\":\"fileID\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"YDqp_WQcw8d_Ldpa1_3Cg\",\"children\":[{\"id\":\"UsrAiejODLeTa4S1P2YII\",\"children\":[{\"id\":\"PrUTkH2z7QN3AWt2yMt9M\",\"children\":[{\"text\":\"String\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"0NJs0sDAX9oJSM6yfLeXr\",\"children\":[{\"id\":\"Q2nMVHP2HvtokOEqz3qjs\",\"children\":[{\"id\":\"lF3euiDWBqaBDZylOK6X0\",\"children\":[{\"text\":\"URL of the audio file, which will be retained on the server for 90 days.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"m6z_MIfoJJi5M8UgFgnkR\",\"children\":[{\"id\":\"RFev8APnqbVTE6_0p_fWK\",\"children\":[{\"id\":\"0llRqdNck6zbIC6Jxv0DJ\",\"children\":[{\"id\":\"87LAtWGzkDft2r4TuXW_O\",\"children\":[{\"text\":\"speechLanguage\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"9qHclrMZJb-F_13-Ly3go\",\"children\":[{\"id\":\"guZUNl1hoorrMgU0w5tm8\",\"children\":[{\"id\":\"hiRhhVCZiRupJ4zh0BRO9\",\"children\":[{\"text\":\"String\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Cww3E1qP9AxaAZM4OqyFg\",\"children\":[{\"id\":\"KZm8KBB9iTQcjVHAaR2eS\",\"children\":[{\"id\":\"LmMrhX_pbemTQAKwPZJh3\",\"children\":[{\"text\":\"The language in which the audio file is to be converted into text. For parameters, see \"},{\"id\":\"L4bPr55WzCYSzSQ1ICz_0\",\"children\":[{\"text\":\"Language Parameter Reference List\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://www.tencentcloud.com/document/product/607/30260\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/30260\"},\"type\":\"ref\"},{\"text\":\".\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"7fSMJlI8ivX4M7-0_m-3r\",\"children\":[{\"id\":\"r0Byk8VMflM8wNvqHAiMA\",\"children\":[{\"id\":\"6BxuHv3diBCDl8lYGATKO\",\"children\":[{\"id\":\"tg_BIdJ0j_a2u2eGAub7N\",\"children\":[{\"text\":\"translatelanguage\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"8dQ9WYb5voTrU3nYW0sCP\",\"children\":[{\"id\":\"3Mtzd3AEnZ1zDbm1HtabA\",\"children\":[{\"id\":\"Qi3XrZpFmKp0MQzc4ka_H\",\"children\":[{\"text\":\"String\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"wQLDP-GBxswNDzwrh4Jm-\",\"children\":[{\"id\":\"FlyvFs5_5FgGeNydGyYIX\",\"children\":[{\"id\":\"ZtVX_uzMs8IRKkwqI33O0\",\"children\":[{\"text\":\"The language into which the audio file is to be translated into text. For parameters, see \"},{\"id\":\"tnGhzMaKoz2Lxd3Rj7bhL\",\"children\":[{\"text\":\"Language Parameter Reference List\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://www.tencentcloud.com/document/product/607/30260\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/30260\"},\"type\":\"ref\"},{\"text\":\". (This parameter is currently unavailable. Enter the same value as that of \"},{\"code\":1,\"text\":\"speechLanguage\"},{\"text\":\".)\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[17,12,71],\"widthMode\":\"percentage\"},{\"id\":\"tZvRk_4qV6vApTO7DI4bu\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.8133\",\"type\":\"h4\"},{\"id\":\"O3U6nxhsR13AlZ4JI16ED\",\"autoWrap\":false,\"children\":[{\"id\":\"4b0ly45xP9KADm9QzvbMY\",\"children\":[{\"text\":\"ITMGContext.GetInstance(this).GetPTT().SpeechToText(fileID,\\\"cmn-Hans-CN\\\",\\\"cmn-Hans-CN\\\");\"}],\"type\":\"code-line\"}],\"language\":\"java\",\"type\":\"code-block\"},{\"id\":\"ECIjbH8LYC8bYgexsFl64\",\"children\":[{\"text\":\"Callback for recognition\"}],\"nodeId\":\".E8.AF.86.E5.88.AB.E5.9B.9E.E8.B0.83\",\"type\":\"h3\"},{\"id\":\"vTQcqJZ0cRUt-XZa1nQ1u\",\"children\":[{\"text\":\"After the specified audio file is converted to text, the event message ITMG_MAIN_EVNET_TYPE_PTT_SPEECH2TEXT_COMPLETE will be returned, which will be identified in the \"},{\"code\":1,\"text\":\"OnEvent\"},{\"text\":\" function.\\nThe passed parameters include \"},{\"code\":1,\"text\":\"result\"},{\"text\":\", \"},{\"code\":1,\"text\":\"file_path\"},{\"text\":\" and \"},{\"code\":1,\"text\":\"text\"},{\"text\":\" (recognized text).\"}],\"type\":\"p\"},{\"id\":\"shJITVddohpQYqTO7gJFN\",\"children\":[{\"text\":\"Error codes\"}],\"nodeId\":\".E9.94.99.E8.AF.AF.E7.A0.817\",\"type\":\"h4\"},{\"id\":\"Fl8gNiwLuB8ZW2TVi9KWy\",\"children\":[{\"id\":\"cytjR2hO6noMX9C25icOl\",\"children\":[{\"id\":\"mUUFCa1o1v8JiPzJqaYEb\",\"children\":[{\"id\":\"2JgNOk5xvM1HvdVydFodD\",\"children\":[{\"text\":\"Error Code\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"7M_7vDFaL2bsBN6IktTkE\",\"children\":[{\"id\":\"L79oeF_bolk03Qxk_JKbT\",\"children\":[{\"text\":\"Reasons\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"nANjgeSOcbpxDGJjlmNpD\",\"children\":[{\"id\":\"OSmHEBZt3tEWRT0w_BZb3\",\"children\":[{\"text\":\"Suggested Solution\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"qu34al55rFU-61J8HQoF-\",\"children\":[{\"id\":\"rPEQFQJQN2IB8LNJceQUU\",\"children\":[{\"id\":\"aSY5Aa2oM4tFyL_7nVBpg\",\"children\":[{\"id\":\"w6Mce7NqyL8EV2h-u9GVk\",\"children\":[{\"text\":\"32769\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"NlTC-DxdIihcl9H8hjuyb\",\"children\":[{\"id\":\"Qm84b2Cn0TJJlav-jhMtq\",\"children\":[{\"id\":\"FFOJvxDeuu-B6aQfYEzMe\",\"children\":[{\"text\":\"An internal error occurred.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"yTYxmTzVBL4Ydemf85KSV\",\"children\":[{\"id\":\"JLuZfYJsZFZRmM_HrhpMY\",\"children\":[{\"id\":\"Fy2ID55Jj6QLl_TvaWHT1\",\"children\":[{\"text\":\"Analyze logs, get the actual error code returned from the backend to the client, and ask backend personnel for assistance.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"pdwSZif4hPLGXiN_VJnsx\",\"children\":[{\"id\":\"ENCYg5N83JIhqJ49wY8w1\",\"children\":[{\"id\":\"KumkOk-34BLNZRmyqtYrU\",\"children\":[{\"id\":\"si8g6EpR8yYhLGyIYn3_P\",\"children\":[{\"text\":\"32770\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"5TSZvxqBdu-Q_6UCdwhnM\",\"children\":[{\"id\":\"Y4RLkoLxKWcjNyihLVGoJ\",\"children\":[{\"id\":\"g0UNfIbveD3OQKJ9IaJLI\",\"children\":[{\"text\":\"Network connection failed.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"8rRJrJaLv-4RrOW5CYzDb\",\"children\":[{\"id\":\"8otOGJnRQ8ZeFAcMN10NH\",\"children\":[{\"id\":\"RClWibHFIJUIRNOxoyZon\",\"children\":[{\"text\":\"Check whether the device can access the internet.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"JUPrzKBT-ksOejHuSXfcd\",\"children\":[{\"id\":\"zg7dS4dnqRNVcb4jjoJpM\",\"children\":[{\"id\":\"kVI2kNagb1O-MKsOaaXMD\",\"children\":[{\"id\":\"ZXEDHTtFt8Nj6BMQyHViR\",\"children\":[{\"text\":\"32772\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Z3dZhxFy39VA7ytTluj_w\",\"children\":[{\"id\":\"xyk9t9tyrcDAduBeHaJsG\",\"children\":[{\"id\":\"5sIKYctjz9QdeOc8W_XNf\",\"children\":[{\"text\":\"Failed to decode the returned packet.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"XNU5Sfu8QQePnPwpyNNLG\",\"children\":[{\"id\":\"GtL5OxyruCL_vDK-p5Cy4\",\"children\":[{\"id\":\"CKcMGreuOP3tvouhLmQV0\",\"children\":[{\"text\":\"Analyze logs, get the actual error code returned from the backend to the client, and ask backend personnel for assistance.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"H5LT8ZHxVwp6FSgd2k7nG\",\"children\":[{\"id\":\"qiUng16sEUxQpu0Y1nD3x\",\"children\":[{\"id\":\"nG3XoUUlzCkZds192NJdf\",\"children\":[{\"id\":\"0khRX04m4zlGIpCQ0SZki\",\"children\":[{\"text\":\"32774\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"_fk7WwyvQv0isG5Gvq7GJ\",\"children\":[{\"id\":\"Tz58kxqVrEXBZbJvNoSRK\",\"children\":[{\"id\":\"B5TL29oAB37ajC2hAXVVw\",\"children\":[{\"code\":1,\"text\":\"appinfo\"},{\"text\":\" is not set.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"3v8ljz0f_9r2Tv1W2STFk\",\"children\":[{\"id\":\"LL-S-i6tkuH6t1ZpXxabn\",\"children\":[{\"id\":\"EH0LTUzWvAiQquiDGQ6aU\",\"children\":[{\"text\":\"Check whether the authentication key is correct and whether the voice messaging and speech-to-text feature is initialized.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"MRubf9OU7uJZn0HoVjHw7\",\"children\":[{\"id\":\"hlBhzwztyKzR1K0nTiSN9\",\"children\":[{\"id\":\"b8h1Wuy7igM2SjPVpFODr\",\"children\":[{\"id\":\"YVm9Ov_ZVGe_aguqQCgaV\",\"children\":[{\"text\":\"32776\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Npi_woHo5FaJCu-CeEO7b\",\"children\":[{\"id\":\"9KUyS7w8xo3hJLHqjxyH5\",\"children\":[{\"id\":\"1i7lsEktWjQ3K1XUnP3jP\",\"children\":[{\"code\":1,\"text\":\"authbuffer\"},{\"text\":\" check failed.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"s9T9OJ74N_x_MpX8nx_VK\",\"children\":[{\"id\":\"ADhdwWbNZaEEYBIq7SOwj\",\"children\":[{\"id\":\"Bx0WR-ST0GIcO0xXjEJzm\",\"children\":[{\"text\":\"Check whether \"},{\"code\":1,\"text\":\"authbuffer\"},{\"text\":\" is correct.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"dKOo_5aZjTZ_AVl-x43J_\",\"children\":[{\"id\":\"JEVHmuWOgVvya0kAGlnrc\",\"children\":[{\"id\":\"SyvR7IGuQLa_qB9Dedp0q\",\"children\":[{\"id\":\"3SUaZF78SXdabERYBYXte\",\"children\":[{\"text\":\"32784\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"NdcKNfgACxCtPO-xWUshD\",\"children\":[{\"id\":\"jNkkH5Mp2oKUh4yXImr7J\",\"children\":[{\"id\":\"fEKv3VZ0OZxKG3lvG58uG\",\"children\":[{\"text\":\"The speech-to-text conversion parameter is incorrect.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"GKh_OWT0cmaqZ7U6uBiQ-\",\"children\":[{\"id\":\"5F-1AhN_b_P85EL8dXlEv\",\"children\":[{\"id\":\"zWhDlU_1-lGQXESO18GRA\",\"children\":[{\"text\":\"Check whether the API parameter \"},{\"code\":1,\"text\":\"fileid\"},{\"text\":\" in the code is empty.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"GwBA2ZPlAPNnkS2CEC73q\",\"children\":[{\"id\":\"ym8InoXcbWjK5G5eMl5-M\",\"children\":[{\"id\":\"DdkYawKMFFbaU1rOpZ1fn\",\"children\":[{\"id\":\"UHhuXukwD9scfwLpmfnsT\",\"children\":[{\"text\":\"32785\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"nb5_76qM4Yt9_ipYgJIQX\",\"children\":[{\"id\":\"nebMtkacnj9-k32bxKtqE\",\"children\":[{\"id\":\"GWV0ZRVD-tjU3GGV4hIah\",\"children\":[{\"text\":\"A speech-to-text translation error occurred.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Gfs3rgr_afW49aBRqnaPh\",\"children\":[{\"id\":\"wquxKAS4kXBGxRptpEvCX\",\"children\":[{\"id\":\"gL6D2tXhHgpdZxyVJBbda\",\"children\":[{\"text\":\"An error occurred in the voice messaging and speech-to-text feature on the backend. Analyze logs, get the actual error code returned from the backend to the client, and ask backend personnel for assistance.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[12,25,63],\"widthMode\":\"percentage\"},{\"id\":\"iOPp-foVL4QH6McYQO7HO\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.8134\",\"type\":\"h4\"},{\"id\":\"WNcHMZ2X4xSqzj7RdaVEe\",\"autoWrap\":false,\"children\":[{\"id\":\"xV0hTydNGtbX9hMmaGU0A\",\"children\":[{\"text\":\"public void OnEvent(ITMGContext.ITMG_MAIN_EVENT_TYPE type, Intent data) {\"}],\"type\":\"code-line\"},{\"id\":\"-TO3WzuWOfDMAKVKq2k1p\",\"children\":[{\"text\":\" if(ITMGContext.ITMG_MAIN_EVNET_TYPE_PTT_SPEECH2TEXT_COMPLETE == type)\"}],\"type\":\"code-line\"},{\"id\":\"QNPR8cbRiF1T1Aqyi9AOw\",\"children\":[{\"text\":\" {\"}],\"type\":\"code-line\"},{\"id\":\"1gRyJdvhvQBp0fXU1qt_p\",\"children\":[{\"text\":\" //Recognized audio file successfully \"}],\"type\":\"code-line\"},{\"id\":\"IMgQywS-Hulkg6vs6Dx6u\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"St2KCRYhSofqiIoCLKXZj\",\"children\":[{\"text\":\"}\"}],\"type\":\"code-line\"}],\"language\":\"java\",\"type\":\"code-block\"},{\"id\":\"6wCZ-98qsquPT6zfXJLX5\",\"children\":[{\"text\":\"Advanced APIs\"}],\"nodeId\":\".E9.AB.98.E7.BA.A7-api\",\"type\":\"h2\"},{\"id\":\"V68IloRI_Ypl1DxC_2flx\",\"children\":[{\"text\":\"Getting version number\"}],\"nodeId\":\".E8.8E.B7.E5.8F.96.E7.89.88.E6.9C.AC.E5.8F.B7\",\"type\":\"h3\"},{\"id\":\"HNDOdzXuBvytqzbtq8HHs\",\"children\":[{\"text\":\"This API is used to get the SDK version number for analysis.\"}],\"type\":\"p\"},{\"id\":\"7MLr6ZfSJ46IbPJ4QaHTF\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\".E5.87.BD.E6.95.B0.E5.8E.9F.E5.9E.8B31\",\"type\":\"h4\"},{\"id\":\"lvpc8cO5UHiJ1wyQ2wjPC\",\"autoWrap\":false,\"children\":[{\"id\":\"ZkIKxoTiNnXsZzkywiP2-\",\"children\":[{\"text\":\"public abstract String GetSDKVersion();\"}],\"type\":\"code-line\"}],\"language\":\"java\",\"type\":\"code-block\"},{\"id\":\"R_My-bM4Da-YUb27685Qe\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.8135\",\"type\":\"h4\"},{\"id\":\"Dv-jRiHcpIaI3ouUwFrkh\",\"autoWrap\":false,\"children\":[{\"id\":\"dy2j_gcPAZHomW8OdS6nu\",\"children\":[{\"text\":\"ITMGContext.GetInstance(this).GetSDKVersion();\"}],\"type\":\"code-line\"}],\"language\":\"java\",\"type\":\"code-block\"},{\"id\":\"S9FFHHLTH6bbj5RZxeAKX\",\"children\":[{\"text\":\"Checking mic permission\"}],\"nodeId\":\".E6.A3.80.E6.9F.A5.E9.BA.A6.E5.85.8B.E9.A3.8E.E6.9D.83.E9.99.90\",\"type\":\"h3\"},{\"id\":\"d_vitQ7Rxf6hQGkZKi4lA\",\"children\":[{\"text\":\"This API is used to return the mic permission status.\"}],\"type\":\"p\"},{\"id\":\"DhApinj7I_vQgX372y1Zv\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\".E5.87.BD.E6.95.B0.E5.8E.9F.E5.9E.8B32\",\"type\":\"h4\"},{\"id\":\"vMuDFvJ7WiZCj--Rgc7OF\",\"autoWrap\":false,\"children\":[{\"id\":\"DUfufY-31oNGE8KU29hf7\",\"children\":[{\"text\":\"public abstract ITMG_RECORD_PERMISSION CheckMicPermission();\"}],\"type\":\"code-line\"}],\"language\":\"java\",\"type\":\"code-block\"},{\"id\":\"4yL7Njn2qc65KVk4WS34z\",\"children\":[{\"text\":\"Parameter description\"}],\"nodeId\":\".E5.8F.82.E6.95.B0.E5.90.AB.E4.B9.89\",\"type\":\"h4\"},{\"id\":\"O3WzyiesVp8mGTz2zkyhH\",\"children\":[{\"id\":\"PUh-oLA0bBUIBKOwhSA8I\",\"children\":[{\"id\":\"15A3vvBMRsiX3Ih5cekKR\",\"children\":[{\"id\":\"jGfUL8eh-t_WJ8V_XtVAu\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"t5Ppcxin3HcbciXckEXMR\",\"children\":[{\"id\":\"alnmP6ROXrQqNvhw1SVXP\",\"children\":[{\"text\":\"Value\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"NytDLc7y1REowIMZKpu2I\",\"children\":[{\"id\":\"_hBpRa4lN-qQZAMPB7RNf\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"kvHBaN_w9h3uTky0gRDSX\",\"children\":[{\"id\":\"J61pMuj8gxZDB0gqHUU5j\",\"children\":[{\"id\":\"C45KuBslY0cJY3MyM14IW\",\"children\":[{\"id\":\"EaKmHP-5JGtmwTqDv5UQt\",\"children\":[{\"text\":\"ITMG_PERMISSION_GRANTED\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"tDoixHRJ4aHSvcfsXU7Fw\",\"children\":[{\"id\":\"UASWv8KEoQgKLOQGn71SW\",\"children\":[{\"id\":\"n7h4GeHpqvwpTtQMfoqlN\",\"children\":[{\"text\":\"0\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"X241VystvGa-y6oSZvXjj\",\"children\":[{\"id\":\"wVmMF2VTdFwzRrMcWw5GE\",\"children\":[{\"id\":\"OjpFs_al6YpCw5PnkuRc3\",\"children\":[{\"text\":\"The mic permission is granted.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"Hbnmd3GHkrfY2S7XdtuUY\",\"children\":[{\"id\":\"8hHp1T78zpThvcVAsslXE\",\"children\":[{\"id\":\"IqN0y356LuOjFdJUfzwuc\",\"children\":[{\"id\":\"znlHigflJt3XR-pGHwOpm\",\"children\":[{\"text\":\"ITMG_PERMISSION_Denied\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"oMW2gps-XPqosdFLO5VXM\",\"children\":[{\"id\":\"BxwHmRnxlkMfSxhyly3er\",\"children\":[{\"id\":\"uozl2ko0bkVlVgDpDOvmY\",\"children\":[{\"text\":\"1\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"KVjllw5y6kmBvf4L_csdF\",\"children\":[{\"id\":\"qd6UeXcXyZt3FQigCwHcJ\",\"children\":[{\"id\":\"ioJfVNtTPUe0AOkZV5rya\",\"children\":[{\"text\":\"Mic disabled.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"JtEb4-aWsL_s1tzA0LL76\",\"children\":[{\"id\":\"ghWCtaQ9xjQnInLhQZ4w1\",\"children\":[{\"id\":\"2ovKnj_oSamp_vdkxtioH\",\"children\":[{\"id\":\"gnmRJiZAACll1mtR0-BY9\",\"children\":[{\"text\":\"ITMG_PERMISSION_NotDetermined\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"gDiGT148PgAdxoTIQ9-he\",\"children\":[{\"id\":\"YLKi-h7DzWudLCA8nZv1b\",\"children\":[{\"id\":\"4ZYFy0B6gVUveABOZANLS\",\"children\":[{\"text\":\"2\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"rZv4j4itUJkpJDTDpNYh0\",\"children\":[{\"id\":\"oCfAKhxBFOZOXkq6u-T9b\",\"children\":[{\"id\":\"e1gWC8-VKMjOS83xCUWV6\",\"children\":[{\"text\":\"No authorization box has been popped up to request the permission.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"KshDVLJBkytuJPKq2NkJj\",\"children\":[{\"id\":\"mXvouzNNBGY_rC7obKqp9\",\"children\":[{\"id\":\"GvZzvNJkFEu8eGaBW92W7\",\"children\":[{\"id\":\"G5Pl0moVOte7l3QTYfAaf\",\"children\":[{\"text\":\"ITMG_PERMISSION_ERROR\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"cplwDr3R3ktqR1GsLxX2K\",\"children\":[{\"id\":\"aioKfRoN4b57twWqNpyru\",\"children\":[{\"id\":\"RRQFsEVfWLJMP_ZJGiVcz\",\"children\":[{\"text\":\"3\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"DOt7ILdf4NnKSoII64L5P\",\"children\":[{\"id\":\"qxzVdixePq-Q4iTbsKYyE\",\"children\":[{\"id\":\"nrZt13tMt0UMmFw7dTEve\",\"children\":[{\"text\":\"An error occurred while calling the API.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[33,8,59],\"widthMode\":\"percentage\"},{\"id\":\"iana2iUD9chdTT6SVfqr8\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.8136\",\"type\":\"h4\"},{\"id\":\"KD66fAt2byOde3L9mZMsw\",\"autoWrap\":false,\"children\":[{\"id\":\"_hocGMTc15KG9ronzxbKA\",\"children\":[{\"text\":\"ITMGContext.GetInstance(this).CheckMicPermission();\"}],\"type\":\"code-line\"}],\"language\":\"java\",\"type\":\"code-block\"},{\"id\":\"SJYeCsw4uzoj9CZMlvSqo\",\"children\":[{\"text\":\"Setting log printing level\"}],\"nodeId\":\".E8.AE.BE.E7.BD.AE.E6.89.93.E5.8D.B0.E6.97.A5.E5.BF.97.E7.AD.89.E7.BA.A7\",\"type\":\"h3\"},{\"id\":\"uKAxC5CAjud67FNZdeVVz\",\"children\":[{\"text\":\"This API is used to set the level of logs to be printed, and needs to be called before the initialization. It is recommended to keep the default level.\"}],\"type\":\"p\"},{\"id\":\"ZVMWdDEUSySwKVt-ZqSIT\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\".E5.87.BD.E6.95.B0.E5.8E.9F.E5.9E.8B33\",\"type\":\"h4\"},{\"id\":\"0p0bjHgIftdRzEY3NSIoe\",\"autoWrap\":false,\"children\":[{\"id\":\"W1pEefhnBgnq-VOmWUokn\",\"children\":[{\"text\":\"public abstract int SetLogLevel(int levelWrite, int levelPrint);\"}],\"type\":\"code-line\"}],\"language\":\"java\",\"type\":\"code-block\"},{\"id\":\"gYOw69bK_83Qlv9e24xGg\",\"children\":[{\"text\":\"Parameter description\"}],\"nodeId\":\".E5.8F.82.E6.95.B0.E5.90.AB.E4.B9.892\",\"type\":\"h4\"},{\"id\":\"Nzu5XCECXEPqRjHOS4HL5\",\"children\":[{\"id\":\"DsIWDSJ9hA9ljZ3IWMfAS\",\"children\":[{\"id\":\"AnU56SqxVJkqnyCZIJk-s\",\"children\":[{\"id\":\"08ZsxEAHqaKPTByB7H6gv\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"bTLlDoqmnHsBOATsv_t5p\",\"children\":[{\"id\":\"SMcKTgMDOaxQtXr6HFKGV\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"2Xz8uZScHKg67BwK7hKD6\",\"children\":[{\"id\":\"e_WoP4PGdIzETIz7qpRW5\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"MWSyHF8Q9hb4p9PSE4DaC\",\"children\":[{\"id\":\"uGtO4Stlf68lAiNdZTL39\",\"children\":[{\"id\":\"8-IrmKR2p84uHjVv8A21T\",\"children\":[{\"id\":\"tACoc73o199LY18_68koZ\",\"children\":[{\"text\":\"levelWrite\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Lt7B-bhZN5rQzoD_A_tKx\",\"children\":[{\"id\":\"ByH1fzOXvnkZIPGnUsusR\",\"children\":[{\"id\":\"txEnnQM-vOP4SsFw-qO6A\",\"children\":[{\"text\":\"ITMG_LOG_LEVEL\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"DtXQAuOwXgjbOxfKxFt90\",\"children\":[{\"id\":\"-IZMmFfa9gXd6wMamdcn_\",\"children\":[{\"id\":\"7iV2LpCiTaWldbv0ZMHMI\",\"children\":[{\"text\":\"Sets the level of logs to be written. \"},{\"code\":1,\"text\":\"TMG_LOG_LEVEL_NONE\"},{\"text\":\" indicates not to log. Default value: \"},{\"code\":1,\"text\":\"TMG_LOG_LEVEL_INFO\"},{\"text\":\".\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"iYETXdnFoab8z0X4ypKig\",\"children\":[{\"id\":\"tYPsjKStWzEhMnFjlQ1Qb\",\"children\":[{\"id\":\"I7ydNc5Wc0xsOkGbkFVG7\",\"children\":[{\"id\":\"kO3tS5kMhVbSzzlF0tYqD\",\"children\":[{\"text\":\"levelPrint\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"x_OsZOyum9pEk02qa60Dv\",\"children\":[{\"id\":\"p69EfrMYh-MgyBexmsbas\",\"children\":[{\"id\":\"CekpYpiz2VWMxAlwFbD-w\",\"children\":[{\"text\":\"ITMG_LOG_LEVEL\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"61eS_7tzDlmDx3gTSUj0N\",\"children\":[{\"id\":\"S4WU18kcAjsWFCIatOBaB\",\"children\":[{\"id\":\"N_QY86MIX7qVw4cm7zSeD\",\"children\":[{\"text\":\"Sets the level of logs to be printed. \"},{\"code\":1,\"text\":\"TMG_LOG_LEVEL_NONE\"},{\"text\":\" indicates not to print. Default value: \"},{\"code\":1,\"text\":\"TMG_LOG_LEVEL_ERROR\"},{\"text\":\".\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[12,18,70],\"widthMode\":\"percentage\"},{\"id\":\"ZtyNnVz7VroSipXMbA6jd\",\"children\":[{\"text\":\"ITMG_LOG_LEVEL\"}],\"nodeId\":\"itmg_log_level-.E8.AF.B4.E6.98.8E\",\"type\":\"h4\"},{\"id\":\"flAPIQuziP-1B7RtrkBNQ\",\"children\":[{\"id\":\"l2Zz2vY5Lek4vZudSydih\",\"children\":[{\"id\":\"AN5ICvui3f3vuZg0ywQL5\",\"children\":[{\"id\":\"Dfs5doquz4lCI9XkuxptL\",\"children\":[{\"text\":\"ITMG_LOG_LEVEL\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"o3YqRncyC8rD0ULfMyNUy\",\"children\":[{\"id\":\"zTy3GaATLVo6v-8yDA_VY\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"tUUaAlEirNZcFUzR-yPgg\",\"children\":[{\"id\":\"D7I64VIjqr1feTXrtztkC\",\"children\":[{\"id\":\"wpKSROaTjBl0hm1RrZ2rs\",\"children\":[{\"id\":\"eANofoADEvf_rQtxCZ8ch\",\"children\":[{\"text\":\"TMG_LOG_LEVEL_NONE\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"pTvT8H5TCiiOeHagBn6Jp\",\"children\":[{\"id\":\"nevIufyDKVSeMD7vmjUM1\",\"children\":[{\"id\":\"mkwS2O4Vnri4eJtGue-6R\",\"children\":[{\"text\":\"Does not print logs\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"Vl_11kxaOiATdqIL3cpeH\",\"children\":[{\"id\":\"V8un-jkyubKRpMcrtrLky\",\"children\":[{\"id\":\"weKJQxE-mMDCETEW44A3J\",\"children\":[{\"id\":\"nu5hJb_BlbzXk1GUQ-vhb\",\"children\":[{\"text\":\"TMG_LOG_LEVEL_ERROR\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"7HcCSNOopS75dbgmqmR4Z\",\"children\":[{\"id\":\"EgZbTCo62kXtE2ISRIREA\",\"children\":[{\"id\":\"e7LcuZjYrLpUbRpaS1Lq_\",\"children\":[{\"text\":\"Prints error logs (default)\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"NstdzjFzMQ2eyie78ctUe\",\"children\":[{\"id\":\"m2FwNRmIRRn2IqS8k7lCS\",\"children\":[{\"id\":\"mXQEIm2nZAgrYekuXXo-8\",\"children\":[{\"id\":\"OKT0tU9L7PMDcYnPDPCdf\",\"children\":[{\"text\":\"TMG_LOG_LEVEL_INFO\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"H4GPtgHmYLU00vMJEtzYu\",\"children\":[{\"id\":\"4vzYt_LA65_pn3BoXQ7gc\",\"children\":[{\"id\":\"1sLLrbAh8Zrrk2QhNbem6\",\"children\":[{\"text\":\"Prints info logs\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"RG2F288DN63Sm6VDpzGEL\",\"children\":[{\"id\":\"0gbVKbHNNpQS3y7cSVxKu\",\"children\":[{\"id\":\"xenhf7uS7WwcYvTLb9S4q\",\"children\":[{\"id\":\"mPS8FcG-KHjVvBShgsHMY\",\"children\":[{\"text\":\"TMG_LOG_LEVEL_DEBUG\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"JZfzLywvz4xCfzw9d0fPM\",\"children\":[{\"id\":\"-8T6wNpzq9EMDVI-fWdmU\",\"children\":[{\"id\":\"nk94POfQWYzHdR0BHJg1P\",\"children\":[{\"text\":\"Prints debug logs\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"Sg_iKFEdSSIy6VeEMXZz8\",\"children\":[{\"id\":\"n_OhlHqodbLe87zC2pbnJ\",\"children\":[{\"id\":\"vE--Fa58_8AOL38mm7kS3\",\"children\":[{\"id\":\"Qus_t3_lldELszazJ3Phq\",\"children\":[{\"text\":\"TMG_LOG_LEVEL_VERBOSE\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"H6mCGdrJyhFBuMlPZDfKo\",\"children\":[{\"id\":\"GkDplVU0wG3FbtAK3Dxjw\",\"children\":[{\"id\":\"kcCPdU7uoUKdp_c_3FjwQ\",\"children\":[{\"text\":\"Prints verbose logs\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[40,60],\"widthMode\":\"percentage\"},{\"id\":\"amfoJr9Z4-vrYYfSjgcRF\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.8137\",\"type\":\"h4\"},{\"id\":\"wNK1KXqKaBnew9ycFX2Cf\",\"autoWrap\":false,\"children\":[{\"id\":\"E4xFo7mBARPqTDTKoInzD\",\"children\":[{\"text\":\"ITMGContext.GetInstance(this).SetLogLevel(TMG_LOG_LEVEL_INFO,TMG_LOG_LEVEL_INFO);\"}],\"type\":\"code-line\"}],\"language\":\"java\",\"type\":\"code-block\"},{\"id\":\"S_Lb5bno1niihWbFPGz-B\",\"children\":[{\"text\":\"Setting the log printing path\"}],\"nodeId\":\".E8.AE.BE.E7.BD.AE.E6.89.93.E5.8D.B0.E6.97.A5.E5.BF.97.E8.B7.AF.E5.BE.84\",\"type\":\"h3\"},{\"id\":\"OBh9HLaFimCGSo6Ohicqp\",\"children\":[{\"text\":\"This API is used to set the log printing path, which is /sdcard/Android/data/xxx.xxx.xxx/files by default.\"}],\"type\":\"p\"},{\"id\":\"FG1jvooUdbkuc5vkIlKzg\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\".E5.87.BD.E6.95.B0.E5.8E.9F.E5.9E.8B34\",\"type\":\"h4\"},{\"id\":\"rpkM-iQWtxLo4ihoB-yH4\",\"autoWrap\":false,\"children\":[{\"id\":\"4MScsCxCnpGJklauwR0VN\",\"children\":[{\"text\":\"public abstract int SetLogPath(String logDir);\"}],\"type\":\"code-line\"}],\"language\":\"java\",\"type\":\"code-block\"},{\"id\":\"Smd-L39P2kVMV6daW25Zl\",\"children\":[{\"id\":\"ALPlrDaR574eyeA-LiRIm\",\"children\":[{\"id\":\"WG5QWz4CLS0jo59Q5C0vp\",\"children\":[{\"id\":\"7KLMLdzZkPWIR87hHX4nw\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"O6WUHIxLlk10ECJlb3uBf\",\"children\":[{\"id\":\"1c8zxqPS2nRWx9JB6E0fh\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"owjZcFFPgDQjR9slk_ZX5\",\"children\":[{\"id\":\"vu66N5OuBPTktOTzY52Oq\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"IoDh3EPuaENrUM8hImDrN\",\"children\":[{\"id\":\"Z7DtIR06I9PnKEZtiQW9T\",\"children\":[{\"id\":\"VznI8HLAulzJ5b66J_TMO\",\"children\":[{\"id\":\"rRT79OSwn92EVvB2e03lV\",\"children\":[{\"text\":\"logDir\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"cmvncxaHQWjtlZ7PkJvrO\",\"children\":[{\"id\":\"Vzyq8BdgRnKcweyp-YTpG\",\"children\":[{\"id\":\"xxLaSv-PTy5HtLK3qj9Ei\",\"children\":[{\"text\":\"String\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"NgVFGnMqgvhVqdxIoo3Sv\",\"children\":[{\"id\":\"H6BtY0hrWcw3zktigno6S\",\"children\":[{\"id\":\"fCwtXQ_J9AoJ9FDBvTrJh\",\"children\":[{\"text\":\"Path\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[36,25,39],\"widthMode\":\"percentage\"},{\"id\":\"rL9D__Rrvrvi9ZISoZFV9\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.8138\",\"type\":\"h4\"},{\"id\":\"Cmt34oWe8bKJwzxI9dsZg\",\"autoWrap\":false,\"children\":[{\"id\":\"A8jE1rwO3dYpMa93GsVf8\",\"children\":[{\"text\":\"ITMGContext.GetInstance(this).SetLogPath(path);\"}],\"type\":\"code-line\"}],\"language\":\"java\",\"type\":\"code-block\"},{\"id\":\"xbA8UvE1aJCmoDZtlaGlH\",\"children\":[{\"text\":\"Callback Messages\"}],\"nodeId\":\".E5.9B.9E.E8.B0.83.E6.B6.88.E6.81.AF\",\"type\":\"h2\"},{\"id\":\"Xzi5vJE2c8g0pH0hiBdtn\",\"children\":[{\"text\":\"Message list\"}],\"nodeId\":\".E6.B6.88.E6.81.AF.E5.88.97.E8.A1.A8\",\"type\":\"h3\"},{\"id\":\"3NuWN6OuHmvt4swO8lha6\",\"children\":[{\"id\":\"def3HoZ5C9LAh1QYyjlDW\",\"children\":[{\"id\":\"6JeJFr_dMu3AaGcmRjOgj\",\"children\":[{\"id\":\"zS2WAfiaqyoujWA0Dkiis\",\"children\":[{\"text\":\"Message\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"CVBXYCCla859oW95qbPUp\",\"children\":[{\"id\":\"5xa954T_Q5XrFjUj1mH-q\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"sNbBJRmQsUyov-2cwWmWC\",\"children\":[{\"id\":\"xMMEwQMBYxjA-ybrA6QoQ\",\"children\":[{\"id\":\"izVpwqgIvA_xZf1BnymGH\",\"children\":[{\"id\":\"eB4PAFz0iMgRZKimaSa_Z\",\"children\":[{\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_RECORD_COMPLETE\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"KnX79YJYaKYU_48U6zDWV\",\"children\":[{\"id\":\"YThcu69277Uo8gmJjuS2J\",\"children\":[{\"id\":\"x0ZfoW21kG2CgnYIBRiEV\",\"children\":[{\"text\":\"PTT recording is completed.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"DB8HyKnxvwN332mYFFIiQ\",\"children\":[{\"id\":\"3Yg5Tr468SCqd_z8QZhSE\",\"children\":[{\"id\":\"syae1GRP10Gi8Td8TrQQ4\",\"children\":[{\"id\":\"5O0mIo1KsRGHW1Q7Z0wl_\",\"children\":[{\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_UPLOAD_COMPLETE\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"BhQ1HzaRHlNuh-wQQC-e6\",\"children\":[{\"id\":\"Xqj5vCA7Csy3UUfto-gG-\",\"children\":[{\"id\":\"5NRfwYBAkek4rLT23KbjR\",\"children\":[{\"text\":\"PTT upload is completed.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"qp57-fnkb3LzJOPrYTXzy\",\"children\":[{\"id\":\"qgGhPVcOidICBzREc7ePY\",\"children\":[{\"id\":\"2bgIczGtkcHTmJalQ4BTm\",\"children\":[{\"id\":\"wSBHKcIfXj4Wi3JLn6A2v\",\"children\":[{\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_DOWNLOAD_COMPLETE\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"YuiOTXa5ckgC8h5py5dia\",\"children\":[{\"id\":\"Au1aqkKNWpvG1rmseWsgK\",\"children\":[{\"id\":\"K3PhVp5GClSh1-IE3JXLH\",\"children\":[{\"text\":\"PTT download is completed.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"VWqN6520xLhhiZTSOAt1E\",\"children\":[{\"id\":\"tS6zJYJQKmp5rN0LeRgh7\",\"children\":[{\"id\":\"mQpgS_5i7ff8vKO9spqPm\",\"children\":[{\"id\":\"MAU8z4XoP1VLTxCUgjz-j\",\"children\":[{\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_PLAY_COMPLETE\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"J2BbNrr6mNd97_6yuoSoB\",\"children\":[{\"id\":\"y8jJ77tn6vKcnscP9s7yT\",\"children\":[{\"id\":\"oJ0_qkDs7__g-SLZtwwfU\",\"children\":[{\"text\":\"PTT playback is completed.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"MPyluIQ0tjopL8fRZ0a_5\",\"children\":[{\"id\":\"lEmGiZLACZeR7jIQe2zQh\",\"children\":[{\"id\":\"1Pr4sQlvm5jEizzpSd9nl\",\"children\":[{\"id\":\"T_PHwdANgWSe-iKLCtCT-\",\"children\":[{\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_SPEECH2TEXT_COMPLETE\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"l42dXnxgA1wUZptQD-LmY\",\"children\":[{\"id\":\"X6CCYp_BXhKpHz5UmZ7-f\",\"children\":[{\"id\":\"QrLKYXgH9UoqpxhdSCnDr\",\"children\":[{\"text\":\"Speech-to-text conversion is completed.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[60,40],\"widthMode\":\"percentage\"},{\"id\":\"U9NeURCU0R4BoXuww9Fnf\",\"children\":[{\"text\":\"Data list\"}],\"nodeId\":\"data-.E5.88.97.E8.A1.A8\",\"type\":\"h3\"},{\"id\":\"GhOZ0w6bxF3cHDhv_BFpJ\",\"children\":[{\"id\":\"9D-gekv8kFumn1mgDpIrr\",\"children\":[{\"id\":\"xLGhiocBQJeOVBZoIbvDJ\",\"children\":[{\"id\":\"tcmy8Dwx0J_QNOf85pfzC\",\"children\":[{\"text\":\"Message\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"sUkVCXaHCX8cd-PPx9M3h\",\"children\":[{\"id\":\"Gm-S-_AUyCDERNB0jJux9\",\"children\":[{\"text\":\"Data\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"QTd5WTPhTnDVE4aXSZ0Ls\",\"children\":[{\"id\":\"-35rozWFdDxY1FXshIoKc\",\"children\":[{\"text\":\"Example\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"wl3VM3feJvf4ulH-BjzvD\",\"children\":[{\"id\":\"AgtSs3x6vzWjxY27iYJD2\",\"children\":[{\"id\":\"-Q-XkPRkcglOfYkT2eJKP\",\"children\":[{\"id\":\"uPCcqjigP2j4IERH5KWE-\",\"children\":[{\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_RECORD_COMPLETE\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"PKBxwL9FsR6jM7IdCFm8M\",\"children\":[{\"id\":\"XO2r4R0ReKuWkg6AsDEPm\",\"children\":[{\"id\":\"1dMsV32C-eBYVVQTRP_oR\",\"children\":[{\"text\":\"result; file_path\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"5dEkhggtuR9DUNKmYmgAl\",\"children\":[{\"id\":\"6jE64Vwq6p08UCmKdT6QH\",\"children\":[{\"id\":\"P-DEWCpuAWH6PJnOGvIpT\",\"children\":[{\"text\":\"{\\\"file_path\\\":\\\"\\\",\\\"result\\\":0}\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"MBjj-UHGltSYUCX3SCwc-\",\"children\":[{\"id\":\"PS9tuaIcZIukUuyOg3jhb\",\"children\":[{\"id\":\"KWf3ehTtYSjI96DDvI5sn\",\"children\":[{\"id\":\"8BPLu2K1Lp4cyaBfv_mBv\",\"children\":[{\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_UPLOAD_COMPLETE\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"TABSBdDVAN1qRepMB_adQ\",\"children\":[{\"id\":\"4fwrg2JC-W93QVK3ygNPW\",\"children\":[{\"id\":\"pC5XiRk7L8ZpNx35vtUeE\",\"children\":[{\"text\":\"result; file_path;file_id\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ayNjwlUZbhX8OLcAbhth0\",\"children\":[{\"id\":\"W_eSeX30mgEDk2G84bvZc\",\"children\":[{\"id\":\"2QHHbmmtUYahyWvQkOOlR\",\"children\":[{\"text\":\"{\\\"file_id\\\":\\\"\\\",\\\"file_path\\\":\\\"\\\",\\\"result\\\":0}\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"1BCYQYXUqynoy-QT2O7-Y\",\"children\":[{\"id\":\"_F_XeIXlVO3x8GALlrZdl\",\"children\":[{\"id\":\"aTjPh6t1eM9Id2uDOqtUY\",\"children\":[{\"id\":\"zNjd_CmaJRrT5pirzZSMe\",\"children\":[{\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_DOWNLOAD_COMPLETE\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"uEzCzgyEyD9Gdab--BExW\",\"children\":[{\"id\":\"Jcd8s7OyJIhTRCkNKpBJu\",\"children\":[{\"id\":\"XoTJDsI117CVWK71zBVXj\",\"children\":[{\"text\":\"result; file_path;file_id\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"3DfUGK-gKagg665sl0vGI\",\"children\":[{\"id\":\"5MQNcoAQGL8g4w4ilNqUO\",\"children\":[{\"id\":\"AUBtI6nMTxYVhuNsgL9Wx\",\"children\":[{\"text\":\"{\\\"file_id\\\":\\\"\\\",\\\"file_path\\\":\\\"\\\",\\\"result\\\":0}\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"1BIsJSO_llanyJpYleaMr\",\"children\":[{\"id\":\"9SG3SrsyqojhHUx9J_oeS\",\"children\":[{\"id\":\"iRVybBwUh9xzEQaEdwAFz\",\"children\":[{\"id\":\"ChT3VKm8pPBTDShaXzP46\",\"children\":[{\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_PLAY_COMPLETE\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Ts65ajHB2CIGcej7XGBnr\",\"children\":[{\"id\":\"EyixqZtG3lTDR8EMGtf2A\",\"children\":[{\"id\":\"0wfTpEyFQ3THFCWNa1hbi\",\"children\":[{\"text\":\"result; file_path\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"uElRQF5wghi-AEk70siel\",\"children\":[{\"id\":\"442tYP1xNGig0YCbVGS4o\",\"children\":[{\"id\":\"hFKGlVL06PjN2pVGtIyU2\",\"children\":[{\"text\":\"{\\\"file_path\\\":\\\"\\\",\\\"result\\\":0}\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"DI39Zykid3glzCP8EmdG5\",\"children\":[{\"id\":\"Blqe-v9CXww9WPzuyPm5v\",\"children\":[{\"id\":\"O8KEYJrhCmYsPc155xb-m\",\"children\":[{\"id\":\"lTMSucZGHLtplolYa9YGI\",\"children\":[{\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_SPEECH2TEXT_COMPLETE\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"fT81FYpkcKpa8ZFJmKxTM\",\"children\":[{\"id\":\"IKkxtZ5oN9oYpgHVhhkJI\",\"children\":[{\"id\":\"mJbxizbpQmembmqtu0gph\",\"children\":[{\"text\":\"result; text;file_id\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"X1vOkRm8zAU-_kr3dL51k\",\"children\":[{\"id\":\"r4kqZUruSK-gUCUuD1_E5\",\"children\":[{\"id\":\"YuTWfox9OjvI3_-FkykLV\",\"children\":[{\"text\":\"{\\\"file_id\\\":\\\"\\\",\\\"text\\\":\\\"\\\",\\\"result\\\":0}\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"bmAQtf5LKkvsQ-c6i2lF5\",\"children\":[{\"id\":\"ZHNu0iiFF2S9iNsHPTi3f\",\"children\":[{\"id\":\"WuM-mbCT6no7MhMkktU7O\",\"children\":[{\"id\":\"A-EH_O_VUYbPOImIgX1tU\",\"children\":[{\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRECOGNITION_COMPLETE\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Bwffmdph0etL_XxW4LF4_\",\"children\":[{\"id\":\"nYCyHR0WylWjRrWwzBy56\",\"children\":[{\"id\":\"rN7184jWXZFE1NAN5CYDM\",\"children\":[{\"text\":\"result; file_path; text;file_id\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"9o4ttP_BbUiDrBQCkCh9_\",\"children\":[{\"id\":\"n-ONW-j7Ek_fyALxkzi0r\",\"children\":[{\"id\":\"YwDuCgTbPIIZfFseFV97N\",\"children\":[{\"text\":\"{\\\"file_id\\\":\\\"\\\",\\\"file_path\\\":\\\",\\\"text\\\":\\\"\\\",\\\"result\\\":0}\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[51,19,30],\"widthMode\":\"percentage\"},{\"type\":\"p\",\"children\":[{\"text\":\"\"}],\"id\":\"u8qTPHTllSPo5f9y6wMD2\"}]"}},"40862":{"categoryId":607,"weight":140,"type":"page","extension":"","pid":15176,"id":40862,"lang":"en","title":"Project Export","pdfUrl":"","docType":"default","children":[],"firstReleaseTime":"2021-06-22 23:05:08","recentReleaseTime":"2021-06-22 23:05:08","content":{"title":"Project Export","body":"
This document mainly describes the notes on exporting the Android project so that the Android developers can easily debug and integrate the APIs for Game Multimedia Engine (GME).

Project Export

The GME SDK provides lib files for v7a, v8a, x86, and x86_64 by default. Please delete unnecessary files as needed.
Warning
If the .so file of the corresponding architecture is missing during the running of the Android system device, the system will crash.

Configuring Permissions

Required permissions

Add the following permissions in the AndroidManifest.xml file of the project:
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />

Adding permissions as needed

Add the following permissions in the AndroidManifest.xml file of the project as needed:
Read/Write
The read/write permission is not required. Determine whether to add it according to the following rules:
If you use the default log path (/sdcard/Android/data/xxx.xxx.xxx/files), it means that you do not call SetLogPath and do not need the WRITE_EXTERNAL_STORAGE permission.
If you call the SetLogPath API to set the log path to an external storage device, and the storage path of the voice message recording is an external storage device, you need to apply for the WRITE_EXTERNAL_STORAGE permission to the user and get the user's approval.
You don't need to add this permission for devices on Android 6 or later.
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
Bluetooth permission
Add the Bluetooth permission according to the following rules:
If targetSDKVersion in the project is v30 or earlier:
<uses-permission android:name="android.permission.BLUETOOTH"/>
If targetSDKVersion in the project is v31 or later and GME is earlier than v2.9.6:
<uses-permission android:name="android.permission.BLUETOOTH" android:maxSdkVersion="30" />
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />

App obfuscation

If you want to obfuscate the code, configure the following:
-dontwarn com.tencent.**
-keep class com.tencent.** { *;}
-keepclassmembers class com.tencent.**{*;}
Note that after v2.9.0, obfuscation is required with the following configurations.
-dontwarn com.gme.**
-keep class com.gme.** { *;}
-keepclassmembers class com.gme.**{*;}

Advanced Android Configuration

According to Behavior changes: all apps for Android 9 on the Android Developers platform, Android 9 limits background apps' access to user inputs and sensor data, that is, apps running in the background cannot access the mic or camera.
If Android 9 users need to continue capturing audio or video after locking the screen, a service can be initiated before the screen is locked or the app is brought to the background and terminated before the screen is unlocked or the app is brought to the foreground.

Android Project Export FAQs

Project problems occurred during or after the export of the executable files:

","recentReleaseTime":"2024-01-18 15:13:51","slate":"[{\"id\":\"DfbdOlCGbvgxvRe93n_Ee\",\"children\":[{\"text\":\"This document mainly describes the notes on exporting the Android project so that the Android developers can easily debug and integrate the APIs for Game Multimedia Engine (GME).\"}],\"type\":\"p\"},{\"id\":\"VXg_bz-QbeCB0l-e_4WGb\",\"children\":[{\"text\":\"Project Export\"}],\"nodeId\":\".E5.AF.BC.E5.87.BA.E5.B7.A5.E7.A8.8B\",\"type\":\"h2\"},{\"id\":\"Czh3DfyDMw_h_NiXEY_1z\",\"children\":[{\"text\":\"The GME SDK provides lib files for v7a, v8a, x86, and x86_64 by default. Please delete unnecessary files as needed.\"}],\"type\":\"p\"},{\"id\":\"ygoJsk1cxUO5Oqo4byQ7D\",\"children\":[{\"id\":\"yBfyqGUN__J8jhR1bakyS\",\"children\":[{\"b\":1,\"text\":\"Warning\"}],\"type\":\"p\"},{\"id\":\"vySt29QothOWJdNt7ADAh\",\"children\":[{\"text\":\"If the .so file of the corresponding architecture is missing during the running of the Android system device, the system will crash.\"}],\"type\":\"p\"}],\"hintType\":\"warn\",\"type\":\"hint\"},{\"id\":\"XwA6Ewt2g-hg2vUnypydp\",\"children\":[{\"text\":\"Configuring Permissions\"}],\"nodeId\":\".E9.85.8D.E7.BD.AE-app-.E6.9D.83.E9.99.90\",\"type\":\"h2\"},{\"id\":\"covOK2rRdPdvqEr9NJ2Wb\",\"children\":[{\"text\":\"Required permissions\"}],\"nodeId\":\".E5.BF.85.E8.A6.81.E6.9D.83.E9.99.90\",\"type\":\"h3\"},{\"id\":\"oKIJ2VB01Ixzo2oEJ8ITV\",\"children\":[{\"text\":\"Add the following permissions in the \"},{\"code\":1,\"text\":\"AndroidManifest.xml\"},{\"text\":\" file of the project:\"}],\"type\":\"p\"},{\"id\":\"Lu0z1hH4hJqfjgXi-sUcW\",\"autoWrap\":false,\"children\":[{\"id\":\"MH0gH_ZYwXTlcDmaqUppF\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"},{\"id\":\"MYqGk_YcdHfuZim-m8q7y\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"},{\"id\":\"g3mLE4b4oAyQkuwtyND9Q\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"},{\"id\":\"u4671v-_ynLVyXjkm9XOV\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"},{\"id\":\"8752Vk-xQ56AoVIcXMDnE\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"aqpNA0WxzPNSXG1ZBeIeX\",\"children\":[{\"text\":\"Adding permissions as needed\"}],\"nodeId\":\".E6.A0.B9.E6.8D.AE.E9.9C.80.E6.B1.82.E6.B7.BB.E5.8A.A0.E6.9D.83.E9.99.90\",\"type\":\"h3\"},{\"id\":\"zlegWz_sc0u1AH26_2-w4\",\"children\":[{\"text\":\"Add the following permissions in the \"},{\"code\":1,\"text\":\"AndroidManifest.xml\"},{\"text\":\" file of the project as needed:\"}],\"type\":\"p\"},{\"id\":\"4qhfpRbNbqt9K-lErehSc\",\"children\":[{\"children\":[{\"id\":\"qyrnfEIRh4n2LJT31cfSe\",\"children\":[{\"text\":\"The read/write permission is not required. Determine whether to add it according to the following rules:\"}],\"type\":\"p\"},{\"id\":\"zdxKZvm3cWoI6kni__ZYv\",\"children\":[{\"text\":\"If you use the default log path (\"},{\"code\":1,\"text\":\"/sdcard/Android/data/xxx.xxx.xxx/files\"},{\"text\":\"), it means that you do not call \"},{\"code\":1,\"text\":\"SetLogPath\"},{\"text\":\" and do not need the \"},{\"code\":1,\"text\":\"WRITE_EXTERNAL_STORAGE\"},{\"text\":\" permission.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"cbRwmDuSX0dB328mBMJEs\",\"children\":[{\"text\":\"If you call the \"},{\"code\":1,\"text\":\"SetLogPath\"},{\"text\":\" API to set the log path to an external storage device, and the storage path of the voice message recording is an external storage device, you need to apply for the \"},{\"code\":1,\"text\":\"WRITE_EXTERNAL_STORAGE\"},{\"text\":\" permission to the user and get the user's approval.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"Hx9INRdbo0ir199AySKFR\",\"children\":[{\"text\":\"You don't need to add this permission for devices on Android 6 or later.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"3CTJRkQEcVUOJXADvVYbw\",\"autoWrap\":false,\"children\":[{\"id\":\"3DMPdVlKEeWWVOvWZlUCl\",\"children\":[{\"text\":\" \"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"}],\"id\":\"864\",\"name\":\"Read/Write\",\"type\":\"tab\"},{\"children\":[{\"id\":\"e7rLkndefBLhvbW4PVNPC\",\"children\":[{\"text\":\"Add the Bluetooth permission according to the following rules:\"}],\"type\":\"p\"},{\"id\":\"UB1c-nadNR4LVcA1SRaQl\",\"children\":[{\"text\":\"If \"},{\"code\":1,\"text\":\"targetSDKVersion\"},{\"text\":\" in the project is v30 or earlier:\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"20jnC3EjOoIx1GyiiEDKE\",\"autoWrap\":false,\"children\":[{\"id\":\"8ETGO7oREgesZY8weSJYF\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"indent\":1,\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"xYz_Os0a0637bd9LJUCj2\",\"children\":[{\"text\":\"If \"},{\"code\":1,\"text\":\"targetSDKVersion\"},{\"text\":\" in the project is v31 or later and GME is earlier than v2.9.6:\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"qhS4JBP0PmxpyM8rGkefK\",\"autoWrap\":false,\"children\":[{\"id\":\"L2duys_hy0XKDEe9aWNwq\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"},{\"id\":\"0RAYy0m0mkuL_vR8G4NI4\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"indent\":1,\"language\":\"bash\",\"type\":\"code-block\"}],\"id\":\"865\",\"name\":\"Bluetooth permission\",\"type\":\"tab\"}],\"type\":\"tabs\"},{\"id\":\"_TiluXsrp7iStEJ8Xi4kG\",\"children\":[{\"text\":\"App obfuscation\"}],\"nodeId\":\"app-.E6.B7.B7.E6.B7.86.E7.9B.B8.E5.85.B3\",\"type\":\"h2\"},{\"id\":\"GREi1GTLwSKBBC2_Bxe7R\",\"children\":[{\"text\":\"If you want to obfuscate the code, configure the following:\"}],\"type\":\"p\"},{\"id\":\"Ibd8r-7Zme-uqgz6262OK\",\"autoWrap\":false,\"children\":[{\"id\":\"BIKuTbKDnkS0Lh1ke56ZR\",\"children\":[{\"text\":\"-dontwarn com.tencent.**\"}],\"type\":\"code-line\"},{\"id\":\"YW5qsxregHZ5Qb6OFZHwA\",\"children\":[{\"text\":\"-keep class com.tencent.** { *;}\"}],\"type\":\"code-line\"},{\"id\":\"Y3Hqr6u0bsF8eA8N2JPyU\",\"children\":[{\"text\":\"-keepclassmembers class com.tencent.**{*;}\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"2P4qKF16VVh6eCdlKZW0Z\",\"children\":[{\"text\":\"Note that after \"},{\"b\":1,\"text\":\"v2.9.0\"},{\"text\":\", obfuscation is required with the following configurations.\"}],\"type\":\"p\"},{\"id\":\"GsbV3ldswfI7HirgtWIRY\",\"autoWrap\":false,\"children\":[{\"id\":\"5dsFG15EQDVUIsmGDV7Pv\",\"children\":[{\"text\":\"-dontwarn com.gme.**\"}],\"type\":\"code-line\"},{\"id\":\"3goWL9sebCnNLwlhTIe4H\",\"children\":[{\"text\":\"-keep class com.gme.** { *;}\"}],\"type\":\"code-line\"},{\"id\":\"Nb1UATgMBTqo0Gejpyt2B\",\"children\":[{\"text\":\"-keepclassmembers class com.gme.**{*;}\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"WXLe3zLsC5-blQxU8mZTw\",\"children\":[{\"text\":\"Advanced Android Configuration\"}],\"nodeId\":\"android-.E9.AB.98.E7.89.88.E6.9C.AC.E9.85.8D.E7.BD.AE\",\"type\":\"h2\"},{\"id\":\"xr_PJPv_YH7P6IpfjFuK5\",\"children\":[{\"text\":\"According to \"},{\"id\":\"AZfr3pet2EFwwleoyi2nS\",\"children\":[{\"text\":\"Behavior changes: all apps\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://developer.android.com/about/versions/pie/android-9.0-changes-all\",\"props\":{\"type\":\"link\",\"url\":\"https://developer.android.com/about/versions/pie/android-9.0-changes-all\"},\"type\":\"ref\"},{\"text\":\" for Android 9 on the Android Developers platform, Android 9 limits background apps' access to user inputs and sensor data, that is, apps running in the background cannot access the mic or camera.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"iYCsNHElN4dFUKIx6_cUq\",\"children\":[{\"text\":\"If Android 9 users need to continue capturing audio or video after locking the screen, a service can be initiated before the screen is locked or the app is brought to the background and terminated before the screen is unlocked or the app is brought to the foreground.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"ozywD8rnYafCUWSYUtfto\",\"children\":[{\"text\":\"Android Project Export FAQs\"}],\"nodeId\":\"android-.E5.B7.A5.E7.A8.8B.E5.AF.BC.E5.87.BA.E9.97.AE.E9.A2.98\",\"type\":\"h2\"},{\"id\":\"lhGw6HcrIsZWFWUqvrS0v\",\"children\":[{\"id\":\"7ncx_ZM4blBlTPD_lXoAf\",\"children\":[{\"b\":1,\"text\":\"Project problems occurred during or after the export of the executable files:\"}],\"type\":\"p\"},{\"id\":\"qZPZuKYPqBxh7atqdPBDy\",\"children\":[{\"id\":\"jVBYhTc2y1ihI1R86lCVo\",\"children\":[{\"text\":\"After the application is exported to an Android phone, when I open the application, an error message pops up indicating that the application is not supported by the device. What should I do?\"}],\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/39522\"},\"type\":\"ref\"}],\"start\":true,\"type\":\"uli\"},{\"id\":\"566zZ7SsP7GfhUkbFIPIo\",\"children\":[{\"id\":\"wyvimxOoeL69gItDbjXV1\",\"children\":[{\"text\":\"What should I do if the screen goes black when I try to open an application after integrating the GME SDK and exporting an APK file?\"}],\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/39522\"},\"type\":\"ref\"}],\"type\":\"uli\"}],\"hintType\":\"info\",\"type\":\"hint\"},{\"id\":\"pT6vVSOoNJl8vg2iD6QtH\",\"children\":[{\"text\":\"\"}],\"type\":\"p\"}]"}},"41633":{"categoryId":607,"weight":160,"type":"page","extension":"","pid":15179,"id":41633,"lang":"en","title":"Speech-to-Text Service","pdfUrl":"","docType":"default","children":[],"firstReleaseTime":"2021-08-11 18:48:18","recentReleaseTime":"2021-08-11 18:48:18","content":{"title":"Speech-to-Text Service","body":"
This document describes how to integrate with and debug the GME APIs for iOS.
Note:
This document applies to GME SDK version 2.9.

Key Considerations for Using GME

GME provides two services: Voice chat service and voice messaging and speech-to-text service, both of which rely on key APIs such as Init and Poll.
Note:
There is a default call rate limit for speech-to-text APIs. For more information on how calls are billed within the limit, see Purchase Guide. If you want to increase the limit or learn more about how excessive calls are billed, submit a ticket.
Non-streaming speech-to-text API SpeechToText(): There can be up to 10 concurrent requests per account.
Streaming speech-to-text API StartRecordingWithStreamingRecognition(): There can be up to 50 concurrent requests per account.
Real-time streaming speech-to-text API StartRealTimeASR(): There can be up to 50 concurrent requests per account.
Note on Init API
If you need to use voice chat and voice message services at the same time, you only need to call Init API once.\nThe billing will not start after initialization. Receiving or sending a voice message in speech-to-text service is counted as a voice message DAU.

\"image\"



Directions

Important notes

Configure your project before using GME; otherwise, the SDK will not take effect.
After a GME API is called successfully, QAVError.OK will be returned with the value being 0.
GME APIs should be called in the same thread.
The Poll API should be called periodically for GME to trigger event callbacks.
For detailed error code, see Error Codes.

Core APIs

Before the initialization, the SDK is in the uninitialized status, and you need to initialize it through the Init API before you can use the voice chat and speech-to-text services.
Call the Init API before calling any APIs of GME.
If you have any questions when using the service, see General.
API
Description
InitEngine
Initializes GME
Poll
Triggers event callback
Pause
Pauses the system
Resume
Resumes the system
Uninit
Uninitializes GME
SetDefaultAudienceAudioCategory
Sets audio playback in background on device

Imported header files

#import "GMESDK/TMGEngine.h"
#import "GMESDK/QAVAuthBuffer.h"

Getting singleton

To use the voice feature, get the ITMGContext object first.
+ (ITMGContext*) GetInstance;

Sample code

//TMGSampleViewController.m
ITMGContext* _context = [ITMGContext GetInstance];

Setting callbacks

The API class uses the Delegate method to send callback notifications to the application. Register the callback function to the SDK for receiving callback messages.

Sample code

ITMGDelegate is used for declaration.
@interface TMGDemoViewController ()<ITMGDelegate>{}
ITMGDelegate < NSObject >

//TMGSampleViewController.m
ITMGContext* _context = [ITMGContext GetInstance];
_context.TMGDelegate = [DispatchCenter getInstance];
The API callback messages is processed in OnEvent. For the message type, see ITMG_MAIN_EVENT_TYPE. The message content is a dictionary for parsing the API callback contents.

Function prototype

- (void)OnEvent:(ITMG_MAIN_EVENT_TYPE)eventType data:(NSDictionary*)data;

Sample code

//TMGRealTimeViewController.m
TMGRealTimeViewController ()< ITMGDelegate >


- (void)OnEvent:(ITMG_MAIN_EVENT_TYPE)eventType data:(NSDictionary *)data {
NSString *log = [NSString stringWithFormat:@"OnEvent:%d,data:%@", (int)eventType, data];
[self showLog:log];
NSLog(@"====%@====", log);
switch (eventType) {
// Step 6/11 : Perform the enter room event
case ITMG_MAIN_EVENT_TYPE_ENTER_ROOM: {
int result = ((NSNumber *)[data objectForKey:@"result"]).intValue;
NSString *error_info = [data objectForKey:@"error_info"];

[self showLog:[NSString stringWithFormat:@"OnEnterRoomComplete:%d msg:(%@)", result, error_info]];

if (result == 0) {
[self updateStatusEnterRoom:YES];
}
}
break;
}
}

// Refer to DispatchCenter.h and DispatchCenter.m

Initializing SDK

This API is used to initialize the GME service. It is recommended to call it when initializing the application. No fee is incurred for calling this API.
For more information on how to get the sdkAppID parameter, see Activating Services.
The openID uniquely identifies a user with the rules stipulated by the application developer and unique in the application (currently, only INT64 is supported).
Note:
The Init API must be called in the same thread with other APIs. It is recommended to call all APIs in the main thread.

Function prototype

-(int)InitEngine:(NSString*)sdkAppID openID:(NSString*)openID;
Parameter
Type
Description
sdkAppId
String
AppId provided by the GME service from the Tencent Cloud console
OpenId
String
OpenId can only be in Int64 type, which is passed after being converted to a string.
Returned Value
Description
QAV_OK= 0
Initialized SDK successfully.
QAV_ERR_SDK_NOT_FULL_UPDATE= 7015
Checks whether the SDK file is complete. It is recommended to delete it and then import the SDK again.
The returned value AV_ERR_SDK_NOT_FULL_UPDATE is only a reminder but will not cause an initialization failure.
If this error is reported during integration, please check the integrity and version of the SDK file as prompted.
If this error is returned after executable file export, please ignore it and try to avoid displaying it in the UI.

Sample code

_openId = _userIdText.text;
_appId = _appIdText.text;
[[ITMGContext GetInstance] InitEngine:SDKAPPID openID:_openId];

Triggering event callback

Event callbacks can be triggered by periodically calling the Poll API in update. The Poll API should be called periodically for GME to trigger event callbacks; otherwise, the entire SDK service will run exceptionally.\nRefer to the EnginePollHelper.m file in Demo.
Note:
The Poll API must be called periodically and in the main thread to avoid abnormal API callbacks.

Function prototype

-(void)Poll;


Sample code

[[ITMGContext GetInstance] Poll];


Pausing the system

When a Pause event occurs in the system, the engine should also be notified for pause.\nIf you need to pause the audio when switching to the background, you can call the Pause API in the listening code used to switch to the background, and call the Resume API in the listening event used to resume the foreground.

Function prototype

-(QAVResult)Pause;


Resuming the system

When a Resume event occurs in the system, the engine should also be notified for resumption. The Resume API only supports resuming voice chat.

Function prototype

-(QAVResult)Resume;


Uninitializing SDK

This API is used to uninitialize the SDK to make it uninitialized. Switching accounts requires uninitialization.

Function prototype

-(int)Uninit;


Sample code

[[ITMGContext GetInstance] Uninit];


Audio settings for iOS device

This API is used to set the audio playback in the background, and the GME audio not to be affected by the mute switch or lock screen. For example, when the notification center or control center is opened, you can still receive and play back the GME audio. You need to call this API before room entry.\nMeanwhile, you should pay attention to the following two points in the application:
Audio engine capture and playback are not paused when the application is switched to the background (i.e., PauseAudio).
You need to add at least key:Required background modes and string:App plays audio or streams audio/video using AirPlay to the Info.plist of the application.
Note:
It is recommended that developers call this API to set the audio.

Function prototype

-(QAVResult)SetDefaultAudienceAudioCategory:(ITMG_AUDIO_CATEGORY)audioCategory;

Type
Parameter
Description
ITMG_CATEGORY_AMBIENT
0
Audio is not played back in the background (default value)
ITMG_CATEGORY_PLAYBACK
1
Audio is played back in the background
This can be achieved by modifying kAudioSessionProperty_AudioCategory. For more information, see Apple official documentation.

Sample code

[[ITMGContext GetInstance]SetDefaultAudienceAudioCategory:ITMG_CATEGORY_AMBIENT];


Speech-to-Text

Voice messaging refers to recording and sending a voice message. At the same time, the voice message can be converted to text and translated, as shown below:

\"\"


Note:
It is recommended to use the streaming speech-to-text service.
You do not need to enter a voice chat room when using the voice messaging service.

Voice message and speech-to-text conversion flowchart


\"\"



Integrating Voice Messaging and Speech-to-Text Service

Voice messaging and speech-to-text APIs

API
Description
ApplyPTTAuthbuffer
Initializes authentication
SetMaxMessageLength
Specifies the maximum length of voice message
StartRecording
Starts recording
StartRecordingWithStreamingRecognition
Starts streaming recording
PauseRecording
Pauses recording
ResumeRecording
Resumes recording
StopRecording
Stops recording
CancelRecording
Cancels recording
GetMicLevel
Gets the real-time mic volume
SetMicVolume
Sets the recording volume
GetMicVolume
Gets the recording volume
GetSpeakerLevel
Gets the real-time speaker volume
SetSpeakerVolume
Sets the playback volume
GetSpeakerVolume
Gets the playback volume
UploadRecordedFile
Uploads the audio file
DownloadRecordedFile
Downloads the audio file
PlayRecordedFile
Plays back audio
StopPlayFile
Stops playing back audio
GetFileSize
Gets the audio file size
GetVoiceFileDuration
Gets the audio file duration
SpeechToText
Converts speech to text
Maximum recording duration
The maximum recording duration of a voice message is 58 seconds by default, and the minimum recording duration cannot be less than 1 second. If you want to customize the recording duration, for example, to modify the maximum recording duration to 10 seconds, please call the SetMaxMessageLength API to set it after initialization.

Initializing the SDK

Before the initialization, the SDK is in the uninitialized status, and you need to initialize it through the Init API before you can use the voice chat and voice message services.
If you have any questions when using the service, see Speech-to-text Conversion.

Authentication information

Generate AuthBuffer for encryption and authentication of relevant features. For release in the production environment, use the backend deployment key as detailed in Authentication Key.
To get authentication for voice message and speech-to-text, the room ID parameter must be set to null.

Function prototype

@interface QAVAuthBuffer : NSObject
+ (NSData*) GenAuthBuffer:(unsigned int)appId roomId:(NSString*)roomId openID:(NSString*)openID key:(NSString*)key;
+ @end

Parameter
Type
Description
appId
int
AppId from the Tencent Cloud console.
roomId
NSString
Enter null.
openID
NSString
User ID, which is the same as openID during initialization.
key
NSString
Permission key from the Tencent Cloud console.

Sample code

#import "GMESDK/QAVAuthBuffer.h"
NSData* authBuffer = [QAVAuthBuffer GenAuthBuffer:SDKAPPID3RD.intValue roomId:_roomId openID:_openId key:AUTHKEY];


Initializing authentication

Call authentication initialization after initializing the SDK. For more information on how to get the authBuffer, please see genAuthBuffer (the voice chat authentication information API).

Function prototype

public abstract int ApplyPTTAuthbuffer(byte[] authBuffer);

Parameter
Type
Description
authBuffer
NSData*
Authentication

Sample code

[[[ITMGContext GetInstance]GetPTT]ApplyPTTAuthbuffer:(NSData *)authBuffer];


Streaming Speech Recognition

Starting streaming speech recognition

This API is used to start streaming speech recognition. Text obtained from speech-to-text conversion will be returned in real time in its callback. It can specify a language for recognition or translate the information recognized in speech into a specified language and return the translation. To stop recording, call StopRecording. The callback will be returned after the recording is stopped.

Function prototype

-(int)StartRecordingWithStreamingRecognition:(NSString *)filePath;
-(int)StartRecordingWithStreamingRecognition:(NSString *)filePath language:(NSString*)speechLanguage translatelanguage:(NSString*)translateLanguage;

Parameter
Type
Description
filePath
String
Path of stored audio file
speechLanguage
String
The language in which the audio file is to be converted to text. For parameters, please see Language Parameter Reference List
translateLanguage
String
The language into which the audio file will be translated. For parameters, please see Language Parameter Reference List (This parameter is currently unavailable. Enter the same value as that of speechLanguage)

Sample code

recordfilePath = [docDir stringByAppendingFormat:@"/test_%d.ptt",index++];
[[[ITMGContext GetInstance] GetPTT] StartRecordingWithStreamingRecognition:recordfilePath language:@"cmn-Hans-CN"];


Callback for streaming speech recognition

After streaming speech recognition is started, you need to listen for callback messages in the callback function onEvent. Event messages are divided into:
ITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRECOGNITION_COMPLETE returns text after the recording is stopped and the recognition is completed, which is equivalent to returning the recognized text after a paragraph of speech.
ITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRECOGNITION_IS_RUNNING returns the recognized text in real-time during the recording, which is equivalent to returning the recognized text while speaking.
The event message will be identified in the OnEvent function based on the actual needs. The passed parameters include the following four messages.
Message Name
Description
result
A return code for judging whether the streaming speech recognition is successful.
text
Text converted from speech
file_path
Local path of stored recording file
file_id
Backend URL address of recording file, which will be retained for 90 days. fileid is fixed at http://gme-v2-
Note:
The file_id is empty when the 'ITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRecognition_IS_RUNNING' message is listened.

Error codes

Error Code
Description
Suggested Solution
32775
Streaming speech-to-text conversion failed, but recording succeeded.
Call the UploadRecordedFile API to upload the recording file and then call the SpeechToText API to perform speech-to-text conversion.
32777
Streaming speech-to-text conversion failed, but recording and upload succeeded.
The message returned contains a backend URL after successful upload. Call the SpeechToText API to perform speech-to-text conversion.
32786
Streaming speech-to-text conversion failed.
During streaming recording, wait for the execution result of the streaming recording API to return.

Sample code

- (void)OnEvent:(ITMG_MAIN_EVENT_TYPE)eventType data:(NSDictionary*)data
{
NSNumber *number = [data objectForKey:@"result"];
switch (eventType)
{
case ITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRECOGNITION_COMPLETE:
{
if (data != NULL &&[[data objectForKey:@"result"] intValue]== 0)
{
donwLoadUrlPath = data[@"file_id"];

recordfilePath = [data objectForKey:@"file_path"];
_localFileField.text = recordfilePath;

_donwloadUrlField.text = [data objectForKey:@"file_id"] ;

UITextField *_audiotoTextField =(UITextField*)objc_getAssociatedObject(self, [PTT_AUDIO_TO_TEXT UTF8String]);
_audiotoTextField.text = [data objectForKey:@"text"] ;
}

}
break;
}
}\t


Voice Message Recording

The recording process is as follows: start recording -> stop recording -> return recording callback -> start the next recording.

Specifying the maximum duration of voice message

This API is used to specify the maximum duration of a voice message, which can be up to 58 seconds.

Function prototype

-(QAVResult)SetMaxMessageLength:(int)msTime

Parameter
Type
Description
msTime
int
Audio duration in ms. Value range: 1000 < msTime <= 58000

Sample code

[[[ITMGContext GetInstance]GetPTT]SetMaxMessageLength:(int)msTime];


Starting recording

This API is used to start recording. The recording file must be uploaded first before you can perform operations such as speech-to-text conversion. To stop recording, call StopRecording.

Function prototype

-(int)StartRecording:(NSString*)filePath;

Parameter
Type
Description
filePath
NSString
Path of stored audio file

Sample code

recordfilePath =[docDir stringByAppendingFormat:@"/test_%d.ptt",index++];
[[[ITMGContext GetInstance]GetPTT]StartRecording:recordfilePath];


Stopping recording

This API is used to stop recording. It is async, and a callback for recording completion will be returned after recording stops. A recording file will be available only after recording succeeds.

Function prototype

-(QAVResult)StopRecording;


Sample code

[[[ITMGContext GetInstance]GetPTT]StopRecording];


Callback for recording start

A callback will be executed through a delegate function to pass a message when recording is completed.
To stop recording, call StopRecording. The callback for recording start will be returned after the recording is stopped.
The callback function OnEvent will be called after recording is started. The event message ITMG_MAIN_EVNET_TYPE_PTT_RECORD_COMPLETE will be returned, which will be identified in the OnEvent function.\nThe passed parameter includes result and file_path.

Error codes

Error Code Value
Cause
Suggested Solution
4097
Parameter is empty.
Check whether the API parameters in the code are correct.
4098
Initialization error.
Check whether the device is being used, whether the permissions are normal, and whether the initialization is normal.
4099
Recording is in progress.
Ensure that the SDK recording feature is used at the right time.
4100
Audio data is not captured.
Check whether the mic is working properly.
4101
An error occurred while accessing the file during recording.
Ensure the existence of the file and the validity of the file path.
4102
The mic is not authorized.
Mic permission is required for using the SDK. To add the permission, please see the SDK project configuration document for the corresponding engine or platform.
4103
The recording duration is too short.
The recording duration should be in ms and longer than 1,000 ms.
4104
No recording operation is started.
Check whether the recording starting API has been called.

Sample code

-(void)OnEvent:(ITMG_MAIN_EVENT_TYPE)eventType data:(NSDictionary *)data{
NSLog(@"OnEvent:%lu,data:%@",(unsigned long)eventType,data);
switch (eventType) {
case ITMG_MAIN_EVNET_TYPE_PTT_RECORD_COMPLETE:
{
//Recording callback
}
break;
}
}


Pausing recording

This API is used to pause recording. If you want to resume recording, please call the ResumeRecording API.

Function prototype

-(int)PauseRecording;


Sample code

[[[ITMGContext GetInstance]GetPTT]PauseRecording];


Resuming recording

This API is used to resume recording.

Function prototype

-(int)ResumeRecording;


Sample code

[[[ITMGContext GetInstance]GetPTT]ResumeRecording];


Canceling recording

This API is used to cancel recording. There is no callback after cancellation.

Function prototype

-(QAVResult)CancelRecording;


Sample code

[[[ITMGContext GetInstance]GetPTT]CancelRecording];


Getting the real-time mic volume of voice message

This API is used to get the real-time mic volume. An int-type value will be returned. Value range: 0-200.
Note:
This API is different from the voice chat API and is in ITMGPTT.

Function prototype

-(QAVResult)GetMicLevel;


Sample code

[[[ITMGContext GetInstance]GetPTT]GetMicLevel];


Setting the recording volume of voice message

This API is used to set the recording volume of voice message. Value range: 0-200.
Note:
This API is different from the voice chat API and is in ITMGPTT.

Function prototype

-(QAVResult)SetMicVolume:(int) volume;


Sample code

[[[ITMGContext GetInstance]GetPTT]SetMicVolume:100];


Getting the recording volume of voice message

This API is used to get the recording volume of voice message. An int-type value will be returned. Value range: 0-200.
Note:
This API is different from the voice chat API and is in ITMGPTT.

Function prototype

-(int)GetMicVolume;


Sample code

[[[ITMGContext GetInstance]GetPTT]GetMicVolume];


Getting the real-time speaker volume of voice message

This API is used to get the real-time speaker volume. An int-type value will be returned. Value range: 0-200.
Note:
This API is different from the voice chat API and is in ITMGPTT.

Function prototype

-(QAVResult)GetSpeakerLevel;


Sample code

[[[ITMGContext GetInstance]GetPTT]GetSpeakerLevel];


Setting the playback volume of voice message

This API is used to set the playback volume of voice messaging. Value range: 0-200.
Note:
This API is different from the voice chat API and is in ITMGPTT.

Function prototype

-(QAVResult)SetSpeakerVolume:(int)volume;


Sample code

[[[ITMGContext GetInstance]GetPTT]SetSpeakerVolume:100];


Getting the playback volume of voice message

This API is used to get the playback volume of voice messaging. An int-type value will be returned. Value range: 0-200.
Note:
This API is different from the voice chat API and is in ITMGPTT.

Function prototype

-(int)GetSpeakerVolume;


Sample code

[[[ITMGContext GetInstance]GetPTT]GetSpeakerVolume];


Voice Message Playback

Playing back audio

This API is used to play back audio.

Function prototype

-(int)PlayRecordedFile:(NSString*)filePath;
-(int)PlayRecordedFile:(NSString*)filePath VoiceType:(ITMG_VOICE_TYPE) type;

Parameter
Type
Description
downloadFilePath
NSString
Local audio file path
type
ITMG_VOICE_TYPE
Voice changer type. For more information, see Voice Changing Effects.

Error codes

Error Code Value
Cause
Suggested Solution
20485
Playback is not started.
Ensure the existence of the file and the validity of the file path.

Sample code

[[[ITMGContext GetInstance]GetPTT]PlayRecordedFile:path];


Callback for audio playback

After the audio is played back, the event message ITMG_MAIN_EVNET_TYPE_PTT_PLAY_COMPLETE will be returned, which will be identified in the OnEvent function.\nThe passed parameter includes result and file_path.

Error codes

Error Code Value
Cause
Suggested Solution
20481
Initialization error.
Check whether the device is being used, whether the permissions are normal, and whether the initialization is normal.
20482
During playback, the client tried to interrupt and play back the next one but failed (which should succeed normally).
Check whether the code logic is correct.
20483
Parameter is empty.
Check whether the API parameters in the code are correct.
20484
Internal error.
An error occurred while initializing the player. This error code is generally caused by failure in decoding, and the error should be located with the aid of logs.

Sample code

-(void)OnEvent:(ITMG_MAIN_EVENT_TYPE)eventType data:(NSDictionary *)data{
NSLog(@"OnEvent:%lu,data:%@",(unsigned long)eventType,data);
switch (eventType) {
case ITMG_MAIN_EVNET_TYPE_PTT_PLAY_COMPLETE:
{
// Callback for audio playback
}
break;
}
}


Stopping audio playback

This API is used to stop audio playback. There will be a callback for playback completion when the playback stops.

Function prototype

-(int)StopPlayFile;


Sample code

[[[ITMGContext GetInstance]GetPTT]StopPlayFile];


Getting audio file size

This API is used to get the size of an audio file.

Function prototype

-(int)GetFileSize:(NSString*)filePath;

Parameter
Type
Description
filePath
NSString
Path of audio file, which is a local path.

Sample code

[[[ITMGContext GetInstance]GetPTT]GetFileSize:path];


Getting audio file duration

This API is used to get the duration of an audio file in milliseconds.

Function prototype

-(int)GetVoiceFileDuration:(NSString*)filePath;

Parameter
Type
Description
filePath
NSString
Path of audio file, which is a local path.

Sample code

[[[ITMGContext GetInstance]GetPTT]GetVoiceFileDuration:path];


Voice Message Upload and Download

Uploading an audio file

This API is used to upload an audio file.

Function prototype

-(void)UploadRecordedFile:(NSString*)filePath;

Parameter
Type
Description
filePath
NSString
Path of uploaded audio file, which is a local path.

Sample code

[[[ITMGContext GetInstance]GetPTT]UploadRecordedFile:path];


Callback for audio file upload completion

After the audio file is uploaded, the event message ITMG_MAIN_EVNET_TYPE_PTT_UPLOAD_COMPLETE will be returned, which will be identified in the OnEvent function.\nThe passed parameters include result, file_path, and file_id.

Error codes

Error Code Value
Cause
Suggested Solution
8193
An error occurred while accessing the file during upload.
Ensure the existence of the file and the validity of the file path.
8194
Signature verification failed.
Check whether the authentication key is correct and whether the voice message and speech-to-text feature is initialized.
8195
A network error occurred.
Check whether the device can access the internet.
8196
The network failed while getting the upload parameters.
Check whether the authentication is correct and whether the device can access the internet.
8197
The packet returned during the process of getting the upload parameters is empty.
Check whether the authentication is correct and whether the device network can normally access the internet.
8198
Failed to decode the packet returned during the process of getting the upload parameters.
Check whether the authentication is correct and whether the device can access the internet.
8200
No appinfo is set.
Check whether the apply API is called or whether the input parameters are empty.

Sample code

-(void)OnEvent:(ITMG_MAIN_EVENT_TYPE)eventType data:(NSDictionary *)data{
NSLog(@"OnEvent:%lu,data:%@",(unsigned long)eventType,data);
switch (eventType) {
case ITMG_MAIN_EVNET_TYPE_PTT_UPLOAD_COMPLETE:
{
if (data != NULL &&[[data objectForKey:@"result"] intValue]== 0)
{
_donwloadUrlField.text = [data objectForKey:@"file_id"] ;
donwLoadUrlPath = [data objectForKey:@"file_id"] ;
}
}
break;
}
}


Downloading the audio file

This API is used to download an audio file.

Function prototype

-(void)DownloadRecordedFile:(NSString*)fileId downloadFilePath:(NSString*)downloadFilePath

Parameter
Type
Description
fileID
NSString
File URL path
downloadFilePath
NSString
Local path of saved file

Sample code

[[[ITMGContext GetInstance]GetPTT]DownloadRecordedFile:fileIdpath downloadFilePath:path];


Callback for audio file download completion

After the audio file is downloaded, the event message ITMG_MAIN_EVNET_TYPE_PTT_DOWNLOAD_COMPLETE will be returned, which will be identified in the OnEvent function.\nThe passed parameters include result, file_path, and file_id.

Error codes

Error Code Value
Cause
Suggested Solution
12289
An error occurred while accessing the file during download.
Check whether the file path is valid.
12290
Signature verification failed.
Check whether the authentication key is correct and whether the voice message and speech-to-text feature is initialized.
12291
Network storage system exception
The server failed to get the audio file. Check whether the API parameter fileid is correct, whether the network is normal, and whether the file exists in COS.
12292
Server file system error.
Check whether the device can access the internet and whether the file exists on the server.
12293
The HTTP network failed during the process of getting the download parameters.
Check whether the device can access the internet.
12294
The packet returned during the process of getting the download parameters is empty.
Check whether the device can access the internet.
12295
Failed to decode the packet returned during the process of getting the download parameters.
Check whether the device can access the internet.
12297
No appinfo is set.
Check whether the authentication key is correct and whether the voice message and speech-to-text feature is initialized.

Sample code

-(void)OnEvent:(ITMG_MAIN_EVENT_TYPE)eventType data:(NSDictionary *)data{
NSLog(@"OnEvent:%lu,data:%@",(unsigned long)eventType,data);
switch (eventType) {
case ITMG_MAIN_EVNET_TYPE_PTT_DOWNLOAD_COMPLETE:
{
if (data != NULL &&[[data objectForKey:@"result"] intValue]== 0)
{
_audiofileToPlayField.text = [data objectForKey:@"file_path"] ;
donwLoadLocalPath = [data objectForKey:@"file_path"];
}
else
{
donwLoadLocalPath = NULL;
}
}
break;
}
}


Speech-to-Text Service

Converting audio file to text

This API is used to convert a specified audio file to text.

Function prototype

-(void)SpeechToText:(NSString*)fileID;

Parameter
Type
Description
fileID
NSString
URL of audio file

Sample code

[[[ITMGContext GetInstance]GetPTT]SpeechToText:fileID];


Translating audio file into text in specified language

This API can specify a language for recognition or translate the information recognized in speech into a specified language and return the translation.

Function prototype

-(void)SpeechToText:(NSString*)fileID (NSString*)speechLanguage (NSString*)translateLanguage;

Parameter
Type
Description
fileID
NSString*
URL of audio file, which will be retained on the server for 90 days
speechLanguage
NSString*
The language in which the audio file is to be converted to text. For parameters, please see Language Parameter Reference List.
translateLanguage
NSString*
The language into which the audio file will be translated. For parameters, please see Language Parameter Reference List. This parameter is currently unavailable. Enter the same value as that of speechLanguage.

Sample code

[[[ITMGContext GetInstance]GetPTT]SpeechToText:fileID speechLanguage:"cmn-Hans-CN" translateLanguage:"cmn-Hans-CN"];


Callback for recognition

After the specified audio file is converted to text, the event message ITMG_MAIN_EVNET_TYPE_PTT_SPEECH2TEXT_COMPLETE will be returned, which will be identified in the OnEvent function.\nThe passed parameters include result, file_path and text (recognized text).

Error codes

Error Code Value
Cause
Suggested Solution
32769
An internal error occurred.
Analyze logs, get the actual error code returned from the backend to the client, and ask backend personnel for assistance.
32770
Network failed.
Check whether the device can access the internet.
32772
Failed to decode the returned packet.
Analyze logs, get the actual error code returned from the backend to the client, and ask backend personnel for assistance.
32774
No appinfo is set.
Check whether the authentication key is correct and whether the voice message and speech-to-text feature is initialized.
32776
authbuffer check failed.
Check whether authbuffer is correct.
32784
Incorrect speech-to-text conversion parameter.
Check whether the API parameter fileid in the code is empty.
32785
Speech-to-text translation returned an error.
Error with the backend of voice message and speech-to-text feature. Analyze logs, get the actual error code returned from the backend to the client, and ask backend personnel for assistance.

Sample code

-(void)OnEvent:(ITMG_MAIN_EVENT_TYPE)eventType data:(NSDictionary *)data{
NSLog(@"OnEvent:%lu,data:%@",(unsigned long)eventType,data);
switch (eventType) {
case ITMG_MAIN_EVNET_TYPE_PTT_SPEECH2TEXT_COMPLETE:
{
if (data != NULL &&[[data objectForKey:@"result"] intValue]== 0)
{
UITextField *_audiotoTextField =(UITextField*)objc_getAssociatedObject(self, [PTT_AUDIO_TO_TEXT UTF8String]);
_audiotoTextField.text = [data objectForKey:@"text"] ;
}
}
break;
}
}


Advanced APIs

Getting version number

This API is used to get the SDK version number for analysis.

Function prototype

-(NSString*)GetSDKVersion;


Sample code

[[ITMGContext GetInstance] GetSDKVersion];


Checking mic permission

This API is used to return the mic permission status.

Function prototype

-(ITMG_RECORD_PERMISSION)CheckMicPermission;


Parameter description

Parameter
Value
Description
ITMG_PERMISSION_GRANTED
0
Mic permission is granted.
ITMG_PERMISSION_Denied
1
Mic is disabled.
ITMG_PERMISSION_NotDetermined
2
No authorization box has been popped up to request the permission.
ITMG_PERMISSION_ERROR
3
An error occurred while calling the API.

Sample code

[[ITMGContext GetInstance] CheckMicPermission];


Setting log printing level

This API is used to set the level of logs to be printed, and needs to be called before the initialization. It is recommended to keep the default level.

Function prototype

-(void)SetLogLevel:(ITMG_LOG_LEVEL)levelWrite (ITMG_LOG_LEVEL)levelPrint;


Parameter description

Parameter
Type
Description
levelWrite
ITMG_LOG_LEVEL
Sets the level of logs to be written. TMG_LOG_LEVEL_NONE indicates not to write. Default value: TMG_LOG_LEVEL_INFO
levelPrint
ITMG_LOG_LEVEL
Sets the level of logs to be printed. TMG_LOG_LEVEL_NONE indicates not to print. Default value: TMG_LOG_LEVEL_ERROR

ITMG_LOG_LEVEL

ITMG_LOG_LEVEL
Description
TMG_LOG_LEVEL_NONE
Does not print logs
TMG_LOG_LEVEL_ERROR
Prints error logs (default)
TMG_LOG_LEVEL_INFO
Prints info logs
TMG_LOG_LEVEL_DEBUG
Prints debug logs
TMG_LOG_LEVEL_VERBOSE
Prints verbose logs

Sample code

[[ITMGContext GetInstance] SetLogLevel:TMG_LOG_LEVEL_INFO TMG_LOG_LEVEL_INFO];


Setting the log printing path

This API is used to set the log printing path, and needs to be called before initialization. The default path is Application/********-****-****-************/Documents.

Function prototype

-(void)SetLogPath:(NSString*)logDir;

Parameter
Type
Description
logDir
NSString
Path

Sample code

[[ITMGContext GetInstance] SetLogPath:Path];


Callback Messages

Message list

Message
Description
ITMG_MAIN_EVNET_TYPE_PTT_RECORD_COMPLETE
Indicates that PTT recording is completed.
ITMG_MAIN_EVNET_TYPE_PTT_UPLOAD_COMPLETE
Indicates that PTT upload is completed.
ITMG_MAIN_EVNET_TYPE_PTT_DOWNLOAD_COMPLETE
Indicates that PTT download is completed.
ITMG_MAIN_EVNET_TYPE_PTT_PLAY_COMPLETE
Indicates that PTT playback is completed.
ITMG_MAIN_EVNET_TYPE_PTT_SPEECH2TEXT_COMPLETE
Indicates that speech-to-text conversion is completed.

Data list

Message
Data
Sample
ITMG_MAIN_EVNET_TYPE_PTT_RECORD_COMPLETE
result; file_path
{"file_path":"","result":0}
ITMG_MAIN_EVNET_TYPE_PTT_UPLOAD_COMPLETE
result; file_path;file_id
{"file_id":"","file_path":"","result":0}
ITMG_MAIN_EVNET_TYPE_PTT_DOWNLOAD_COMPLETE
result; file_path;file_id
{"file_id":"","file_path":"","result":0}
ITMG_MAIN_EVNET_TYPE_PTT_PLAY_COMPLETE
result; file_path
{"file_path":"","result":0}
ITMG_MAIN_EVNET_TYPE_PTT_SPEECH2TEXT_COMPLETE
result; text;file_id
{"file_id":"","text":"","result":0}
ITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRECOGNITION_COMPLETE
result; file_path; text;file_id
{"file_id":"","file_path":","text":"","result":0}

","recentReleaseTime":"2024-01-18 15:11:45","slate":"[{\"id\":\"CRKYXHbVDyj_GHbz3F1p3\",\"children\":[{\"text\":\"This document describes how to integrate with and debug the GME APIs for iOS.\"}],\"type\":\"p\"},{\"id\":\"lQe7lsMl0pY8EvBG6XPD_\",\"children\":[{\"id\":\"2q-a11otNnS9aLiSYa7Oy\",\"children\":[{\"b\":1,\"color\":\"inherit\",\"text\":\"Note: \"}],\"type\":\"p\"},{\"id\":\"HnVy8WqbMhETGS563_5LI\",\"children\":[{\"text\":\"This document applies to GME SDK version 2.9.\"}],\"type\":\"p\"}],\"hintType\":\"info\",\"type\":\"hint\"},{\"id\":\"R_T2r6ViAecFUJpQhbRL1\",\"children\":[{\"text\":\"Key Considerations for Using GME\"}],\"nodeId\":\"key-considerations-for-using-gme\",\"type\":\"h2\"},{\"id\":\"5cIowQITc9neTBPPyjV3S\",\"children\":[{\"text\":\"GME provides two services: Voice chat service and voice messaging and speech-to-text service, both of which rely on key APIs such as Init and Poll.\"}],\"type\":\"p\"},{\"id\":\"aQrswQf1QlYHdJUM9z_BS\",\"children\":[{\"id\":\"5HPlP5kCX83tvI0KBzpEq\",\"children\":[{\"b\":1,\"color\":\"#04C8DC\",\"text\":\"Note: \"}],\"type\":\"p\"},{\"id\":\"26EB6VcwKk3DSgPzTcUJI\",\"children\":[{\"text\":\"There is a default call rate limit for speech-to-text APIs. For more information on how calls are billed within the limit, see \"},{\"id\":\"65Pl8wAuaZo3ftodfB38b\",\"children\":[{\"text\":\"Purchase Guide\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://intl.cloud.tencent.com/document/product/607/50009\",\"props\":{\"type\":\"link\",\"url\":\"https://intl.cloud.tencent.com/document/product/607/50009\"},\"type\":\"ref\"},{\"text\":\". If you want to increase the limit or learn more about how excessive calls are billed, \"},{\"id\":\"pbu37WjdXR88NkbuI7sBj\",\"children\":[{\"text\":\"submit a ticket\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://console.tencentcloud.com/workorder/category?level1_id=438&level2_id=445&source=0&data_title=%E6%B8%B8%E6%88%8F%E5%A4%9A%E5%AA%92%E4%BD%93%E5%BC%95%E6%93%8EGME&step=1\",\"props\":{\"type\":\"link\",\"url\":\"https://console.tencentcloud.com/workorder/category?level1_id=438&level2_id=445&source=0&data_title=%E6%B8%B8%E6%88%8F%E5%A4%9A%E5%AA%92%E4%BD%93%E5%BC%95%E6%93%8EGME&step=1\"},\"type\":\"ref\"},{\"text\":\".\"}],\"type\":\"p\"},{\"id\":\"IPZqTI_TmZ7swt2ja5GJC\",\"children\":[{\"text\":\"Non-streaming speech-to-text API \"},{\"b\":1,\"i\":1,\"text\":\"SpeechToText()\"},{\"text\":\": There can be up to 10 concurrent requests per account.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"A_fSklnG2pXZmscfPWqfF\",\"children\":[{\"text\":\"Streaming speech-to-text API \"},{\"b\":1,\"i\":1,\"text\":\"StartRecordingWithStreamingRecognition()\"},{\"text\":\": There can be up to 50 concurrent requests per account.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"SFh-6NPDu0SNfvrHB0pwU\",\"children\":[{\"text\":\"Real-time streaming speech-to-text API \"},{\"b\":1,\"i\":1,\"text\":\"StartRealTimeASR()\"},{\"text\":\": There can be up to 50 concurrent requests per account.\"}],\"start\":false,\"type\":\"uli\"}],\"hintType\":\"alert\",\"type\":\"hint\"},{\"id\":\"lVZrfC1q1gHCfy5mxOt8W\",\"children\":[{\"id\":\"F0Hz8FKLJNvyz5jKJ28NX\",\"children\":[{\"b\":1,\"color\":\"#04C8DC\",\"text\":\"Note on Init API\"}],\"type\":\"p\"},{\"id\":\"iI8v58J7_4Sk0oBbclNPL\",\"children\":[{\"text\":\"If you need to use voice chat and voice message services at the same time, \"},{\"b\":1,\"text\":\"you only need to call \"},{\"b\":1,\"code\":1,\"text\":\"Init\"},{\"b\":1,\"text\":\" API once\"},{\"text\":\".\\nThe billing will not start after initialization. Receiving or sending a voice message in speech-to-text service is counted as a voice message DAU.\"}],\"type\":\"p\"}],\"hintType\":\"alert\",\"type\":\"hint\"},{\"type\":\"p\",\"children\":[{\"text\":\"\"},{\"id\":\"HXCzOHy4cjXPR_P3Zxidj\",\"alt\":\"image\",\"children\":[{\"text\":\"\"}],\"inline\":true,\"type\":\"image\",\"url\":\"https://cloudcache.intl.tencent-cloud.com/cms/backend-cms/5069068cb37111eeb2a1525400170219.png\",\"naturalSize\":[674,427],\"size\":[674,427]},{\"text\":\"\"}],\"id\":\"y1lVqB7q-PxLrQi7rh8az\"},{\"id\":\"3PQBvnbkRARuOPDB1E95M\",\"children\":[{\"text\":\"Directions\"}],\"nodeId\":\"directions\",\"type\":\"h3\"},{\"type\":\"oli\",\"children\":[{\"text\":\"\"},{\"type\":\"ref\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/41633?!editLang=en&!preview#Init\"},\"linkTarget\":\"self\",\"children\":[{\"text\":\"Initializing GMEAPI: Init\"}],\"id\":\"7_hDDzXWcNI0k32lC-urY\"},{\"text\":\"\"}],\"id\":\"1vCZ07gWViHRTgI29xW0y\"},{\"type\":\"oli\",\"children\":[{\"text\":\"\"},{\"type\":\"ref\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/41633?!editLang=en&!preview#Poll\"},\"linkTarget\":\"self\",\"children\":[{\"text\":\"Calling Poll periodically to trigger event callbacksAPI: Poll\"}],\"id\":\"GPaB0a_Y0xKZlLwpXqJeS\"},{\"text\":\"\"}],\"id\":\"ivU00wAdigBuE-5ZeMoxu\"},{\"type\":\"oli\",\"children\":[{\"text\":\"\"},{\"type\":\"ref\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/41633?!editLang=en&!preview#ApplyPtt\"},\"linkTarget\":\"self\",\"children\":[{\"text\":\"Initializing authenticationAPI: ApplyPTTAuthbuffer\"}],\"id\":\"C9iTwpuBGFZHmlgcSPc1-\"},{\"text\":\"\"}],\"id\":\"-vj7MtbKEgQQvjfGRxWqW\"},{\"type\":\"oli\",\"children\":[{\"text\":\"\"},{\"type\":\"ref\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/41633?!editLang=en&!preview#StartRWSR\"},\"linkTarget\":\"self\",\"children\":[{\"text\":\"Starting streaming speech recognitionAPI: StartRecordingWithStreamingRecognition\"}],\"id\":\"dVa645fpuks7ctNocexWq\"},{\"text\":\"\"}],\"id\":\"1v0wcP7iNlGjZSa-bp_Jd\"},{\"type\":\"oli\",\"children\":[{\"text\":\"\"},{\"type\":\"ref\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/41633?!editLang=en&!preview#Stop\"},\"linkTarget\":\"self\",\"children\":[{\"text\":\"Stop recordingAPI: StopRecording\"}],\"id\":\"oN7Ab8_Vhb_PBcM5bykdd\"},{\"text\":\"\"}],\"id\":\"h53F-3QpzLBh7M0-w9f74\"},{\"type\":\"oli\",\"children\":[{\"text\":\"\"},{\"type\":\"ref\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/41633?!editLang=en&!preview#UnInit\"},\"linkTarget\":\"self\",\"children\":[{\"text\":\"Uninitializing GMEAPI: UnInit\"}],\"id\":\"CEvEOLHaOnt-B4A4oPPUR\"},{\"text\":\"\"}],\"id\":\"eJvX7OnAg6NHLzB_C14bc\"},{\"id\":\"dIo3Y4FeLI-bxMzidLLUS\",\"children\":[{\"text\":\"Important notes\"}],\"nodeId\":\"important-notes\",\"type\":\"h3\"},{\"id\":\"SocbDKqoQ_5sUlDdnVvsM\",\"children\":[{\"text\":\"Configure your project before using GME; otherwise, the SDK will not take effect.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"Bb1RdIG6qrYONAHA-XzGw\",\"children\":[{\"text\":\"After a GME API is called successfully, \"},{\"code\":1,\"text\":\"QAVError.OK\"},{\"text\":\" will be returned with the value being 0.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"ERotdASA6Awh-wEa6ttku\",\"children\":[{\"text\":\"GME APIs should be called in the same thread.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"QU4tD98r2RV3aHbgbl29G\",\"children\":[{\"text\":\"The \"},{\"code\":1,\"text\":\"Poll\"},{\"text\":\" API should be called periodically for GME to trigger event callbacks.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"3cPKRdLbZNSqvmVV4E2ZN\",\"children\":[{\"text\":\"For detailed error code, see \"},{\"type\":\"ref\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/33223\"},\"children\":[{\"text\":\"Error Codes\"}],\"id\":\"9kmIl5AegqjJT70fc4l84\"},{\"text\":\".\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"X8e_XFD1goU0ycJ9JUicm\",\"children\":[{\"text\":\"Core APIs\"}],\"nodeId\":\"core-apis\",\"type\":\"h2\"},{\"id\":\"tZldKxpJP1iB3rFYHUvCe\",\"children\":[{\"text\":\"Before the initialization, the SDK is in the uninitialized status, and \"},{\"b\":1,\"text\":\"you need to initialize it through the \"},{\"b\":1,\"code\":1,\"text\":\"Init\"},{\"b\":1,\"text\":\" API\"},{\"text\":\" before you can use the voice chat and speech-to-text services.\"}],\"type\":\"p\"},{\"id\":\"oYiAU_Y5mCWIAvGXfx3Pm\",\"children\":[{\"b\":1,\"text\":\"Call the \"},{\"b\":1,\"code\":1,\"text\":\"Init\"},{\"b\":1,\"text\":\" API before calling any APIs of GME.\"}],\"type\":\"p\"},{\"id\":\"ZjqMNuUjnjpFYQ-ZdNao4\",\"children\":[{\"text\":\"If you have any questions when using the service, see \"},{\"id\":\"-jST5hF0hHv9x2zv6YNSz\",\"children\":[{\"text\":\"General\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://intl.cloud.tencent.com/document/product/607/30254\",\"props\":{\"type\":\"link\",\"url\":\"https://intl.cloud.tencent.com/document/product/607/30254\"},\"type\":\"ref\"},{\"text\":\".\"}],\"type\":\"p\"},{\"id\":\"acwfvFoXf-c2upM-WNrPj\",\"children\":[{\"id\":\"g3vNgS3RBPa8J2Mg9YxCq\",\"children\":[{\"id\":\"vJWMVlZucmzGRasqhS7Do\",\"children\":[{\"id\":\"A6YJU8h4HbEkzg5NoSSxB\",\"children\":[{\"text\":\"API\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"jYSH2EdfORxmjQGODrZHw\",\"children\":[{\"id\":\"B5GqLPRRBDQYcKG6cdqLU\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"jfyv5Z5ww_Aav-Go8VL5i\",\"children\":[{\"id\":\"erTmgBAVdgDFEWKKACzsn\",\"children\":[{\"id\":\"YJr1Q46klNoKU08JF5liF\",\"children\":[{\"id\":\"IiEbnwZAlpF33tFT8Q7Zn\",\"children\":[{\"text\":\"InitEngine\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"166XP7IZc_vqdbOz2Pvnf\",\"children\":[{\"id\":\"vAY7V_g4_o7A7EWGriOen\",\"children\":[{\"id\":\"g0Na4csi0P1DXCew64FHp\",\"children\":[{\"text\":\"Initializes GME\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"LseZXbDgTUVnjID1NYylk\",\"children\":[{\"id\":\"EotvA5uBMkRfotJoJlRX0\",\"children\":[{\"id\":\"cx-_a3jxXJqWkz8nvwy9S\",\"children\":[{\"id\":\"edYkXWY2gT2n3K6RVJuup\",\"children\":[{\"text\":\"Poll\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Wt3bguKbahGLeWO7PTBue\",\"children\":[{\"id\":\"uYoR7uzUjyzfVhkWtFyyC\",\"children\":[{\"id\":\"nhIEjOHlY9F1ahzR2aZLv\",\"children\":[{\"text\":\"Triggers event callback\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"3IQIxycKw-c3jNtxynron\",\"children\":[{\"id\":\"lTI0z2l_nJrDaO6DjGjRJ\",\"children\":[{\"id\":\"vdIALe_zkj968Z9xrpbtB\",\"children\":[{\"id\":\"bxsTS1NuaYHGCQ08XQvwa\",\"children\":[{\"text\":\"Pause\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"mAiW0sMh89egwt74Q1wuc\",\"children\":[{\"id\":\"23q7gWECLBQiSdxzkZXNi\",\"children\":[{\"id\":\"wl0Pk4TybjKed6eYdTWIq\",\"children\":[{\"text\":\"Pauses the system\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"p2xiPpZZJ4U1gbImdvALZ\",\"children\":[{\"id\":\"2bpAQDr7dUbFeqU7jQ1Mk\",\"children\":[{\"id\":\"UkKEgQP2XUcGDRWBCFzHx\",\"children\":[{\"id\":\"CiQxJungn_YyrCifCyI5_\",\"children\":[{\"text\":\"Resume\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"3t4vH5mWxGR-I0FRX_6MP\",\"children\":[{\"id\":\"t6j6paqxhvDQOly6fOo9J\",\"children\":[{\"id\":\"KwtArqCPXZIf0Ivenn4cg\",\"children\":[{\"text\":\"Resumes the system\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"NcyZT-cZGSLg9wTqDJ6OU\",\"children\":[{\"id\":\"3VomCy-fOIQoVqEpecHE6\",\"children\":[{\"id\":\"8_1AXo_WY4xwz17o8vGfs\",\"children\":[{\"id\":\"P1VgmaQsBTipbut8CwPzc\",\"children\":[{\"text\":\"Uninit\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"LldxCwU1hMfhZF3qsC3eh\",\"children\":[{\"id\":\"5_REcPc7Nm9p8tb_paIVo\",\"children\":[{\"id\":\"1jlCZ8m6Dq7xm6OkZwmwa\",\"children\":[{\"text\":\"Uninitializes GME\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"bPYchxTOwxVeyHKVN_nOY\",\"children\":[{\"id\":\"bkdhgZNzf9cyajR7wnWKA\",\"children\":[{\"id\":\"SmOH644t83C1qrjYVXvE5\",\"children\":[{\"id\":\"OAx3TGV3vqMcVWhtcSj2a\",\"children\":[{\"text\":\"SetDefaultAudienceAudioCategory\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"OrVh-GWO21Cjqngjtc3Vd\",\"children\":[{\"id\":\"ILqOZg3jbrXNOi_-Rbx24\",\"children\":[{\"id\":\"cMj7NQxzwCRBD6IN0zYMp\",\"children\":[{\"text\":\"Sets audio playback in background on device\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[44,56],\"widthMode\":\"percentage\"},{\"id\":\"wOGLhGX0koKPOGpiEB8BN\",\"children\":[{\"text\":\"Imported header files\"}],\"nodeId\":\"imported-header-files\",\"type\":\"h3\"},{\"id\":\"lpSRmK-FCrnyZIYLcKmvO\",\"children\":[{\"id\":\"tC4_UxZD-3H-Yl3pgvMF9\",\"children\":[{\"text\":\"#import \\\"GMESDK/TMGEngine.h\\\"\"}],\"type\":\"code-line\"},{\"id\":\"0YC9aG8kLfgVKnnfQL1Dv\",\"children\":[{\"text\":\"#import \\\"GMESDK/QAVAuthBuffer.h\\\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"VdxB2cJHo9e7y39hblcNy\",\"children\":[{\"text\":\"Getting singleton\"}],\"nodeId\":\"getting-singleton\",\"type\":\"h3\"},{\"id\":\"_f7H7tqpmbGX4n8TDXhGF\",\"children\":[{\"text\":\"To use the voice feature, get the \"},{\"code\":1,\"text\":\"ITMGContext\"},{\"text\":\" object first.\"}],\"type\":\"p\"},{\"id\":\"DXdh98f4BXXkKkjFn0Wxe\",\"children\":[{\"id\":\"E7XNS4Ts7ZCo2svDF2qS8\",\"children\":[{\"text\":\"+ (ITMGContext*) GetInstance;\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"uSC0nuYBIDJGuPRA1NOtt\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code\",\"type\":\"h4\"},{\"id\":\"BQjYNvqWDKXAalPTfJqeq\",\"children\":[{\"id\":\"vTxN_cvG0Bzeu1HjODkl2\",\"children\":[{\"text\":\"//TMGSampleViewController.m\"}],\"type\":\"code-line\"},{\"id\":\"Ehn4STGk4HyWqlsl4J5Qu\",\"children\":[{\"text\":\"ITMGContext* _context = [ITMGContext GetInstance];\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"Qx4nM919pY21x0Xcs2Csl\",\"children\":[{\"text\":\"Setting callbacks\"}],\"nodeId\":\"setting-callbacks\",\"type\":\"h3\"},{\"id\":\"6EY4wgn4YQTJihxtYHlLc\",\"children\":[{\"text\":\"The API class uses the \"},{\"code\":1,\"text\":\"Delegate\"},{\"text\":\" method to send callback notifications to the application. Register the callback function to the SDK for receiving callback messages.\"}],\"type\":\"p\"},{\"id\":\"tF3De-RNu32fEsfVbtia0\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code2\",\"type\":\"h4\"},{\"id\":\"hL7LDDglF3zmJTxIl3q4h\",\"children\":[{\"code\":1,\"text\":\"ITMGDelegate\"},{\"text\":\" is used for declaration.\"}],\"type\":\"p\"},{\"id\":\"zoMzX_WYRwnp9qHXXFRce\",\"children\":[{\"id\":\"63fxuxpV9iRn74MPHwYtv\",\"children\":[{\"text\":\"@interface TMGDemoViewController (){}\"}],\"type\":\"code-line\"},{\"id\":\"db3Du3wv8D-I82GKs11-m\",\"children\":[{\"text\":\"ITMGDelegate < NSObject >\"}],\"type\":\"code-line\"},{\"id\":\"CJu28f-Zh9AgralOYElLa\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"},{\"id\":\"gq1EP2vnLBYdHb8ardTLn\",\"children\":[{\"text\":\"//TMGSampleViewController.m\"}],\"type\":\"code-line\"},{\"id\":\"QDRhSpUjHE8JE4v7ElpgV\",\"children\":[{\"text\":\"ITMGContext* _context = [ITMGContext GetInstance];\"}],\"type\":\"code-line\"},{\"id\":\"q5L_xvDdyfFJAuGPL1rU4\",\"children\":[{\"text\":\"_context.TMGDelegate = [DispatchCenter getInstance];\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"UA9MU27tSPSa4_Vor7sJr\",\"children\":[{\"text\":\"The API callback messages is processed in \"},{\"code\":1,\"text\":\"OnEvent\"},{\"text\":\". For the message type, see \"},{\"code\":1,\"text\":\"ITMG_MAIN_EVENT_TYPE\"},{\"text\":\". The message content is a dictionary for parsing the API callback contents.\"}],\"type\":\"p\"},{\"id\":\"qoPYD-TyhSWPWWhpaR0dS\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\"function-prototype\",\"type\":\"h4\"},{\"id\":\"7P8nyvt6npcHDav1U3pKp\",\"children\":[{\"id\":\"lmq22zUoadFOeAIOfEWfc\",\"children\":[{\"text\":\"- (void)OnEvent:(ITMG_MAIN_EVENT_TYPE)eventType data:(NSDictionary*)data;\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"PgHOfd1sKGfVL59gV4Uvb\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code3\",\"type\":\"h4\"},{\"id\":\"u4q7MiI1l4PWnCfZ9ImzY\",\"children\":[{\"id\":\"D5XEt5FpXtxH3RMnUfASZ\",\"children\":[{\"text\":\"//TMGRealTimeViewController.m\"}],\"type\":\"code-line\"},{\"id\":\"cMq-Fm0qi8qm_kHtVODaJ\",\"children\":[{\"text\":\"TMGRealTimeViewController ()< ITMGDelegate >\"}],\"type\":\"code-line\"},{\"id\":\"sV5Ag5OCb-3769HkzD___\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"},{\"id\":\"SwJ2eC7R6KBpfUNe-jfvf\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"},{\"id\":\"lRnNHZEArueZ65XrVerV6\",\"children\":[{\"text\":\"- (void)OnEvent:(ITMG_MAIN_EVENT_TYPE)eventType data:(NSDictionary *)data {\"}],\"type\":\"code-line\"},{\"id\":\"o_vKFFtvu6PtOlEdjy7AD\",\"children\":[{\"text\":\" NSString *log = [NSString stringWithFormat:@\\\"OnEvent:%d,data:%@\\\", (int)eventType, data];\"}],\"type\":\"code-line\"},{\"id\":\"5kKtgyYBf1Q03A2dXqfgN\",\"children\":[{\"text\":\" [self showLog:log];\"}],\"type\":\"code-line\"},{\"id\":\"zI5lQbeFtv1qFXhz37ROG\",\"children\":[{\"text\":\" NSLog(@\\\"====%@====\\\", log);\"}],\"type\":\"code-line\"},{\"id\":\"WhUOR-fM1B1A1xkIO3yz1\",\"children\":[{\"text\":\" switch (eventType) {\"}],\"type\":\"code-line\"},{\"id\":\"l6QaR48mVvm0NHIpj902N\",\"children\":[{\"text\":\" // Step 6/11 : Perform the enter room event\"}],\"type\":\"code-line\"},{\"id\":\"XvsZRqoWvZlzOlJRdTwh9\",\"children\":[{\"text\":\" case ITMG_MAIN_EVENT_TYPE_ENTER_ROOM: {\"}],\"type\":\"code-line\"},{\"id\":\"YNYuVWlqlJgUC2Trco2kb\",\"children\":[{\"text\":\" int result = ((NSNumber *)[data objectForKey:@\\\"result\\\"]).intValue;\"}],\"type\":\"code-line\"},{\"id\":\"fKG4WJFKIk4zlw4xeZ_zS\",\"children\":[{\"text\":\" NSString *error_info = [data objectForKey:@\\\"error_info\\\"];\"}],\"type\":\"code-line\"},{\"id\":\"kc6KwvJTfTcdMZRt093hu\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"},{\"id\":\"jj-3zACtPJ9Xf-h2Pqx0Z\",\"children\":[{\"text\":\" [self showLog:[NSString stringWithFormat:@\\\"OnEnterRoomComplete:%d msg:(%@)\\\", result, error_info]];\"}],\"type\":\"code-line\"},{\"id\":\"GOQGFAics7D0wnOknr_iF\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"},{\"id\":\"5fK9NeL73RZoXPgNVFn_y\",\"children\":[{\"text\":\" if (result == 0) {\"}],\"type\":\"code-line\"},{\"id\":\"YeqLNHevkyCgyrz0-Lbsn\",\"children\":[{\"text\":\" [self updateStatusEnterRoom:YES];\"}],\"type\":\"code-line\"},{\"id\":\"Wrsh-3kcfX0DRPCCNaBEX\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"mmsi7GJsavscJctIHzQRs\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"E3RQkJzvmKxiSn76lDgLq\",\"children\":[{\"text\":\" break;\"}],\"type\":\"code-line\"},{\"id\":\"3U1lrhgc5bp3z3n98a7FG\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"eF7nHmL_V-ZkGZznH8mBJ\",\"children\":[{\"text\":\"}\"}],\"type\":\"code-line\"},{\"id\":\"Eju9TuSOJ5E0iRJ0auaat\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"},{\"id\":\"WSC7EXQsLY3M2I_Mvp04w\",\"children\":[{\"text\":\"// Refer to DispatchCenter.h and DispatchCenter.m\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"p0pMoGn3NH71Dm1eebAZE\",\"children\":[{\"id\":\"9JCFi3cptcFZavo-i2r34\",\"children\":[{\"text\":\"Initializing SDK\"}],\"nodeId\":\"Init\",\"type\":\"p\"}],\"nodeId\":\".3Ca-id.3D.22init.22.3Einitializing-sdk.3C.2Fa.3E\",\"type\":\"h3\"},{\"id\":\"47FdV4gT1p8EJJz2OIHG4\",\"children\":[{\"text\":\"This API is used to initialize the GME service. It is recommended to call it when initializing the application. No fee is incurred for calling this API.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"APbNlclg8U0Mvy8w1T62b\",\"children\":[{\"b\":1,\"text\":\"For more information on how to get the \"},{\"b\":1,\"code\":1,\"text\":\"sdkAppID\"},{\"b\":1,\"text\":\" parameter, see \"},{\"id\":\"bJlCwxZxA834xst-aDMq4\",\"children\":[{\"text\":\"Activating Services\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://intl.cloud.tencent.com/document/product/607/10782\",\"props\":{\"type\":\"link\",\"url\":\"https://intl.cloud.tencent.com/document/product/607/10782\"},\"type\":\"ref\"},{\"text\":\".\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"-GMk5QWYIlXYUb7mLIxno\",\"children\":[{\"b\":1,\"text\":\"The openID uniquely identifies a user with the rules stipulated by the application developer and unique in the application (currently, only INT64 is supported)\"},{\"text\":\".\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"YxQIGS0kom0pPZ_FbovR9\",\"children\":[{\"id\":\"VYqnlIJgM4e6IevOTV-9c\",\"children\":[{\"b\":1,\"color\":\"#04C8DC\",\"text\":\"Note: \"}],\"type\":\"p\"},{\"id\":\"Wn9ogR7R8Mwrkb20kNCGB\",\"children\":[{\"text\":\"The Init API must be called in the same thread with other APIs. It is recommended to call all APIs in the main thread.\"}],\"type\":\"p\"}],\"hintType\":\"alert\",\"type\":\"hint\"},{\"id\":\"9XFZ4EhFcpNQrVfEwGmhN\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\"function-prototype2\",\"type\":\"h4\"},{\"id\":\"AP49mf0fkM-anTRuvPPp8\",\"children\":[{\"id\":\"yxLo4-wWoXQQoKJQs6uRp\",\"children\":[{\"text\":\"-(int)InitEngine:(NSString*)sdkAppID openID:(NSString*)openID;\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"mhniVQOKZOypr_T4_F1qx\",\"children\":[{\"id\":\"7xNEmlSoDJZ2mFAW-l7rE\",\"children\":[{\"id\":\"KkK9y8k3z44ToglI4I8F6\",\"children\":[{\"id\":\"dNMoXgd3lXQOd1Z8CXMBp\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"6AteIoLcRqGbZrmkXfGB1\",\"children\":[{\"id\":\"7fXfNxOc_YGU4KrR4nMFr\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"t98betNZOD236TYOF8xNy\",\"children\":[{\"id\":\"R22qYLwdUMmBA_jIxQ4tU\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"7JvPBE6QpHaKO3PPcjvPz\",\"children\":[{\"id\":\"uFB2o0c8ufSbrIUdnNos_\",\"children\":[{\"id\":\"30zcIOfw5dU_YTJGiwarp\",\"children\":[{\"id\":\"AG8rqv565g_X7HvkKW_4w\",\"children\":[{\"text\":\"sdkAppId\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"lHLt3tPUC0XHx8aaxfRPN\",\"children\":[{\"id\":\"MkUbVI1PhZCTz1gT04t3V\",\"children\":[{\"id\":\"lUOPuJHhsPVteV-_cfRDy\",\"children\":[{\"text\":\"String\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"4gxonFuzjbieMV1LLfUs1\",\"children\":[{\"id\":\"9zin-ssmxKljA5tSh4QYX\",\"children\":[{\"id\":\"mPuTInDnU0RhdDNKpqhhe\",\"children\":[{\"code\":1,\"text\":\"AppId\"},{\"text\":\" provided by the GME service from the \"},{\"id\":\"cX6RlT95THiTuG6NPV6Yz\",\"children\":[{\"text\":\"Tencent Cloud console\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://console.tencentcloud.com/gamegme\",\"props\":{\"type\":\"link\",\"url\":\"https://console.tencentcloud.com/gamegme\"},\"type\":\"ref\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"D7T2IRiVGXXA-AUhGFdUn\",\"children\":[{\"id\":\"FU54T4kT_fYBYI8YcDg-1\",\"children\":[{\"id\":\"bMKP_ma1q70bSUbtsqSzI\",\"children\":[{\"id\":\"S5u29ufUuvBdTLyx6XSUM\",\"children\":[{\"text\":\"OpenId\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"h0Q30ENwEsObap-1tTEdO\",\"children\":[{\"id\":\"wQR_DhV3d9BzzqIeKzqTB\",\"children\":[{\"id\":\"6DPFR__2yNXofaFTS4SLW\",\"children\":[{\"text\":\"String\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"FNmcbc3LjUhmKpDIvHTjd\",\"children\":[{\"id\":\"LQ1yqJ9c_LezrsS-7gTHP\",\"children\":[{\"id\":\"20pdVcSgGxhqIdcdUn-Pk\",\"children\":[{\"code\":1,\"text\":\"OpenId\"},{\"text\":\" can only be in Int64 type, which is passed after being converted to a string.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[13,9,78],\"widthMode\":\"percentage\"},{\"id\":\"RKj14WwGnsSX1lWUJKx3d\",\"children\":[{\"id\":\"1uPYSd5W0hC0BqTL6oVrB\",\"children\":[{\"id\":\"9MlugDZo6vM9bplJRU3QD\",\"children\":[{\"id\":\"t9QEd9AvGeTAXf6-ZoM6-\",\"children\":[{\"text\":\"Returned Value\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"i66xttHLW-4qYWPtDSUfB\",\"children\":[{\"id\":\"exddNdRZnwg-rnWJfy7Qp\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"AKHPJwPev_ggbLtgQw7fx\",\"children\":[{\"id\":\"zEJ1h8izgf8cVGnwyWbrB\",\"children\":[{\"id\":\"EzRNXXFg3rCTHjYtyVv-F\",\"children\":[{\"id\":\"6tlJjCr0D7Q12sOUKn0yR\",\"children\":[{\"text\":\"QAV_OK= 0\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"eJsISYNVqWaSxa6-1mbPY\",\"children\":[{\"id\":\"ON6Hou9q78LAcmCbOGyfO\",\"children\":[{\"id\":\"XyEpjTxDJqDE6-0RHHxPg\",\"children\":[{\"text\":\"Initialized SDK successfully.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"6XuRfcavxj44DmH6ny2m6\",\"children\":[{\"id\":\"_6pxOpQfoUOC8J0_1pSOo\",\"children\":[{\"id\":\"zMkihdYCj3jam5xE12Gq7\",\"children\":[{\"id\":\"fbnvpBPSadaX-YLIJlOVJ\",\"children\":[{\"text\":\"QAV_ERR_SDK_NOT_FULL_UPDATE= 7015\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"UI_lnXO4wQWTGUilFsR4d\",\"children\":[{\"id\":\"XW0qNW5wTf2itpomE0EOY\",\"children\":[{\"id\":\"9j4ZNFEEB1N5b4gqqrRqp\",\"children\":[{\"text\":\"Checks whether the SDK file is complete. It is recommended to delete it and then import the SDK again.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[36,64],\"widthMode\":\"percentage\"},{\"id\":\"96jwKJKDPxWASMCogqx2b\",\"children\":[{\"text\":\"The returned value \"},{\"code\":1,\"text\":\"AV_ERR_SDK_NOT_FULL_UPDATE\"},{\"text\":\" is only a reminder but will not cause an initialization failure.\"}],\"type\":\"p\"},{\"id\":\"U4rTCdynuIOGvh9TIdaTB\",\"children\":[{\"text\":\"If this error is reported during integration, please check the integrity and version of the SDK file as prompted.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"4_xbkjzQBaVv2x4rXGkQ-\",\"children\":[{\"text\":\"If this error is returned after executable file export, please ignore it and try to avoid displaying it in the UI.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"zkoiqM9m9BWorEYnh_TtV\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code4\",\"type\":\"h4\"},{\"id\":\"OO2k9RULzp-SwOlAOLFz1\",\"children\":[{\"id\":\"wWbpedL018Snr6-nlmtaw\",\"children\":[{\"text\":\"_openId = _userIdText.text;\"}],\"type\":\"code-line\"},{\"id\":\"j7aTVWxZcxLlWkL2Mj1Va\",\"children\":[{\"text\":\"_appId = _appIdText.text;\"}],\"type\":\"code-line\"},{\"id\":\"Hu-DdzHyuthDZZLadaJ4p\",\"children\":[{\"text\":\"[[ITMGContext GetInstance] InitEngine:SDKAPPID openID:_openId];\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"OnrCXe_1_E73awadNzfEQ\",\"children\":[{\"id\":\"uMjBfGyBPyDW4qxl2hG2Y\",\"children\":[{\"text\":\"Triggering event callback\"}],\"nodeId\":\"Poll\",\"type\":\"p\"}],\"nodeId\":\".3Ca-id.3D.22poll.22.3Etriggering-event-callback.3C.2Fa.3E\",\"type\":\"h3\"},{\"id\":\"fa6Uo4_UU-D5e3s9KF0_n\",\"children\":[{\"text\":\"Event callbacks can be triggered by periodically calling the \"},{\"code\":1,\"text\":\"Poll\"},{\"text\":\" API in \"},{\"code\":1,\"text\":\"update\"},{\"text\":\". The \"},{\"code\":1,\"text\":\"Poll\"},{\"text\":\" API should be called periodically for GME to trigger event callbacks; otherwise, the entire SDK service will run exceptionally.\\nRefer to the EnginePollHelper.m file in \"},{\"id\":\"Am7MpNAcLbPBPZfo3vXFF\",\"children\":[{\"text\":\"Demo\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://intl.cloud.tencent.com/document/product/607/18521\",\"props\":{\"type\":\"link\",\"url\":\"https://intl.cloud.tencent.com/document/product/607/18521\"},\"type\":\"ref\"},{\"text\":\".\"}],\"type\":\"p\"},{\"id\":\"VbJuXgUfYLt9B9Obmaynv\",\"children\":[{\"id\":\"DztnORhbDaGCDzpQCsj0R\",\"children\":[{\"b\":1,\"color\":\"#04C8DC\",\"text\":\"Note: \"}],\"type\":\"p\"},{\"id\":\"3iO5rrXtlPUUn_KJ-7JMF\",\"children\":[{\"text\":\"The \"},{\"code\":1,\"text\":\"Poll\"},{\"text\":\" API must be called periodically and in the main thread to avoid abnormal API callbacks.\"}],\"type\":\"p\"}],\"hintType\":\"alert\",\"type\":\"hint\"},{\"id\":\"41pEzTJTShivfGne6IdlS\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\"function-prototype3\",\"type\":\"h4\"},{\"id\":\"03GuAi8xapY8xC-Ysf_rL\",\"children\":[{\"id\":\"wgrevZRc5mbZ1TAaKBnDe\",\"children\":[{\"text\":\"-(void)Poll;\"}],\"type\":\"code-line\"},{\"id\":\"8vSCjfNZzdmnjzuq5lGtR\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"PCqLLUkdnl8we7YNHiJ1N\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code5\",\"type\":\"h4\"},{\"id\":\"oR8LH5oIhm2fM--M4cUuG\",\"children\":[{\"id\":\"GNFD40vNUHikHm3V1h8td\",\"children\":[{\"text\":\"[[ITMGContext GetInstance] Poll];\"}],\"type\":\"code-line\"},{\"id\":\"pMEORJ0wBglsXJsdpoxvg\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"AxUW05vPcOMbN50UM3IyL\",\"children\":[{\"text\":\"Pausing the system\"}],\"nodeId\":\"pausing-the-system\",\"type\":\"h3\"},{\"id\":\"1T3eyhYXAJYHOYNG_H87Q\",\"children\":[{\"text\":\"When a \"},{\"code\":1,\"text\":\"Pause\"},{\"text\":\" event occurs in the system, the engine should also be notified for pause.\\nIf you need to pause the audio when switching to the background, you can call the \"},{\"code\":1,\"text\":\"Pause\"},{\"text\":\" API in the listening code used to switch to the background, and call the \"},{\"code\":1,\"text\":\"Resume\"},{\"text\":\" API in the listening event used to resume the foreground.\"}],\"type\":\"p\"},{\"id\":\"UaOUE0ZNKJ12RbC8KGr-m\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\"function-prototype4\",\"type\":\"h4\"},{\"id\":\"_l9zQnn-MIIrhBxAEjXqf\",\"children\":[{\"id\":\"1QvzAqYGvoIfx6W2oB7j0\",\"children\":[{\"text\":\"-(QAVResult)Pause;\"}],\"type\":\"code-line\"},{\"id\":\"1xR9cPxqiJCeoJwXjQlMT\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"CDyQMgLjwoUnVrVrxYGJx\",\"children\":[{\"text\":\"Resuming the system\"}],\"nodeId\":\"resuming-the-system\",\"type\":\"h3\"},{\"id\":\"O9-XqO92aQh-dYpUvVvX4\",\"children\":[{\"text\":\"When a \"},{\"code\":1,\"text\":\"Resume\"},{\"text\":\" event occurs in the system, the engine should also be notified for resumption. The \"},{\"code\":1,\"text\":\"Resume\"},{\"text\":\" API only supports resuming voice chat.\"}],\"type\":\"p\"},{\"id\":\"1aqoHV6CCoboT_W-eZ455\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\"function-prototype5\",\"type\":\"h4\"},{\"id\":\"XvpJJjwfXAsNxCozDIXeO\",\"children\":[{\"id\":\"JEhYeRp9efOZarwBc2QcN\",\"children\":[{\"text\":\"-(QAVResult)Resume;\"}],\"type\":\"code-line\"},{\"id\":\"yfyw8h7fKsCblm2cRrIbb\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"xEy9k_tq4ExWyO10FFpzy\",\"children\":[{\"id\":\"u6B8nzzeUZDDBjWTC7DVx\",\"children\":[{\"text\":\"Uninitializing SDK\"}],\"nodeId\":\"UnInit\",\"type\":\"p\"}],\"nodeId\":\".3Ca-id.3D.22uninit.22.3Euninitializing-sdk.3C.2Fa.3E\",\"type\":\"h3\"},{\"id\":\"i701z2wiSEAX5H0WPZYBR\",\"children\":[{\"text\":\"This API is used to uninitialize the SDK to make it uninitialized. \"},{\"b\":1,\"text\":\"Switching accounts requires uninitialization\"},{\"text\":\".\"}],\"type\":\"p\"},{\"id\":\"GmloqnfhKbZJLd-MrnhFV\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\"function-prototype6\",\"type\":\"h4\"},{\"id\":\"Or1nXa4R5UHQ73sKPHTPH\",\"children\":[{\"id\":\"yr4avtJqqp02e7le-TdHa\",\"children\":[{\"text\":\"-(int)Uninit;\"}],\"type\":\"code-line\"},{\"id\":\"C6f-tw9ZMhItZCv9Ut-Pp\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"V4omVVEgc-U-k40P_0Ta7\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code6\",\"type\":\"h4\"},{\"id\":\"OqZamV9VPZneuSd8hMO5u\",\"children\":[{\"id\":\"ux3OidzCMsjXyJ-UG53aI\",\"children\":[{\"text\":\"[[ITMGContext GetInstance] Uninit];\"}],\"type\":\"code-line\"},{\"id\":\"OoBfz7EFxeVewCtOzEPXb\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"lRH9GITJ8rvLlXahLvTDt\",\"children\":[{\"text\":\"Audio settings for iOS device\"}],\"nodeId\":\"audio-settings-for-ios-device\",\"type\":\"h3\"},{\"id\":\"dt1mqIFGK_sqi49hpmgHQ\",\"children\":[{\"text\":\"This API is used to set the audio playback in the background, and the GME audio not to be affected by the mute switch or lock screen. For example, when the notification center or control center is opened, you can still receive and play back the GME audio. You need to call this API before room entry.\\nMeanwhile, you should pay attention to the following two points in the application:\"}],\"type\":\"p\"},{\"id\":\"LkYmMR7Rzzr9eyYu8FeWY\",\"children\":[{\"text\":\"Audio engine capture and playback are not paused when the application is switched to the background (i.e., \"},{\"code\":1,\"text\":\"PauseAudio\"},{\"text\":\").\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"e7oo2_rKKNgEQ-2fP1ekl\",\"children\":[{\"text\":\"You need to add at least \"},{\"code\":1,\"text\":\"key:Required background modes\"},{\"text\":\" and \"},{\"code\":1,\"text\":\"string:App plays audio or streams audio/video using AirPlay\"},{\"text\":\" to the \"},{\"code\":1,\"text\":\"Info.plist\"},{\"text\":\" of the application.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"Tw7fS2-_Intuz6gpFyf0s\",\"children\":[{\"id\":\"GxdGw0q6EXj3kKAMlqbXx\",\"children\":[{\"b\":1,\"color\":\"#04C8DC\",\"text\":\"Note: \"}],\"type\":\"p\"},{\"id\":\"r0BpiEZXiYxQtVclR-pdI\",\"children\":[{\"text\":\"It is recommended that developers call this API to set the audio.\"}],\"type\":\"p\"}],\"hintType\":\"alert\",\"type\":\"hint\"},{\"id\":\"AxQogg74bLTSPRzJXOuuz\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\"function-prototype7\",\"type\":\"h4\"},{\"id\":\"nk0ZXKX-GWmx60B-dDgul\",\"children\":[{\"id\":\"mII_2EzammlO8au015KUI\",\"children\":[{\"text\":\"-(QAVResult)SetDefaultAudienceAudioCategory:(ITMG_AUDIO_CATEGORY)audioCategory;\"}],\"type\":\"code-line\"},{\"id\":\"iTEylY6yL5ECfkU6cRI2Q\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"x-BLYJk3A66MkPKRgUXjv\",\"children\":[{\"id\":\"QgKGdo48MT24Yqk2E1_ZA\",\"children\":[{\"id\":\"eRFrKP5zV2_sjvWS29CYR\",\"children\":[{\"id\":\"lrSehQsfYqygdDXBVC9LR\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"lhGvybHiiEI8m7ghorN1A\",\"children\":[{\"id\":\"4FHAQjoo3vWsQwgLsr8TS\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"_9Y4xRA4VJlbZgfeYME8B\",\"children\":[{\"id\":\"oUCmtVKIwEjvx_IP2PtSI\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"QyD27JJg8TmcOAEobhouY\",\"children\":[{\"id\":\"JWEkNtPuhNXC7QfjYkxh_\",\"children\":[{\"id\":\"Rr7JsFWCMqf_V_6EhNSFX\",\"children\":[{\"id\":\"FKj0jGBINhUMc9J9rJ2vW\",\"children\":[{\"text\":\"ITMG_CATEGORY_AMBIENT\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Al1V8PQ2O650AL4gD4HMY\",\"children\":[{\"id\":\"vF3AAv5LOCc70Jtz09Lcs\",\"children\":[{\"id\":\"q68DzHYHGpnPWTxJLdd4h\",\"children\":[{\"text\":\"0\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"dfKXxuK_YCYsxf5KjVrbU\",\"children\":[{\"id\":\"vNxtoFoAWe07xw15jmaMP\",\"children\":[{\"id\":\"M6N1zmztcV9BUcbAJS7cD\",\"children\":[{\"text\":\"Audio is not played back in the background (default value)\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"-bO6QB7pWTcLne3RXANav\",\"children\":[{\"id\":\"GGDPsXvB_yv1o9AY7C7r7\",\"children\":[{\"id\":\"OrqHDpFiTp3TsNaXXJ8eb\",\"children\":[{\"id\":\"7cTaqbRRCzaTBSlduYiEn\",\"children\":[{\"text\":\"ITMG_CATEGORY_PLAYBACK\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"BE5AzDmPYCp5wzF0iD9Ec\",\"children\":[{\"id\":\"uCIbxN1mWQJ_viaaqFWcw\",\"children\":[{\"id\":\"Ij5tEH156smbT3ydLS0ER\",\"children\":[{\"text\":\"1\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"JsVQSmmaPOmMBDmpCZIiX\",\"children\":[{\"id\":\"ALDSyWy0EYnyE7f9jgzV3\",\"children\":[{\"id\":\"7Y4b6ObfAH1n_Sagrzdjq\",\"children\":[{\"text\":\"Audio is played back in the background\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[32,13,55],\"widthMode\":\"percentage\"},{\"id\":\"3E8QAdAqZjaBH1irZtJP4\",\"children\":[{\"text\":\"This can be achieved by modifying kAudioSessionProperty_AudioCategory. For more information, see \"},{\"id\":\"huIxNy2BZH2ySZGv2Tnz2\",\"children\":[{\"text\":\"Apple official documentation\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://developer.apple.com/documentation/audiotoolbox/1618427-audio_session_categories?language=objc\",\"props\":{\"type\":\"link\",\"url\":\"https://developer.apple.com/documentation/audiotoolbox/1618427-audio_session_categories?language=objc\"},\"type\":\"ref\"},{\"text\":\".\"}],\"type\":\"p\"},{\"id\":\"nJnoMVoXWCpxZQ9NbO_qI\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code7\",\"type\":\"h4\"},{\"id\":\"2LVyYX2pK5YPNoNMJ3tsq\",\"children\":[{\"id\":\"Ix1HMyzn_3YB72EbwGGHR\",\"children\":[{\"text\":\"[[ITMGContext GetInstance]SetDefaultAudienceAudioCategory:ITMG_CATEGORY_AMBIENT];\"}],\"type\":\"code-line\"},{\"id\":\"QhsmuoB9F9A-_IHfS7i8r\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"BHm9bhQsaoHE4AIkoDBiY\",\"children\":[{\"text\":\"Speech-to-Text\"}],\"nodeId\":\"speech-to-text\",\"type\":\"h2\"},{\"id\":\"6nkPf2WhoTUKZTscq1WaP\",\"children\":[{\"text\":\"Voice messaging refers to recording and sending a voice message. At the same time, the voice message can be converted to text and translated, as shown below:\"}],\"type\":\"p\"},{\"type\":\"p\",\"children\":[{\"text\":\"\"},{\"type\":\"image\",\"url\":\"https://cloudcache.intl.tencent-cloud.com/cms/backend-cms/97b6f432b37111eeae9a525400c26da5.gif\",\"inline\":true,\"alt\":\"\",\"children\":[{\"text\":\"\"}],\"id\":\"ws6ruHWmWNI2EDYmU6g6J\",\"naturalSize\":[960,444],\"size\":[600,277]},{\"text\":\"\"}],\"id\":\"l37zmOE-EFqYnA84he3os\"},{\"id\":\"iZx1oU6kecdkGPPrPmUKf\",\"children\":[{\"id\":\"PuAOigPMxsPKDc5airhnB\",\"children\":[{\"b\":1,\"color\":\"inherit\",\"text\":\"Note: \"}],\"type\":\"p\"},{\"id\":\"ZKhAS3_ozC4RbWKk-y-X5\",\"children\":[{\"text\":\"It is recommended to use the streaming speech-to-text service.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"-ruU_AF5tR6UoEXt8Q-Iw\",\"children\":[{\"text\":\"You do not need to enter a voice chat room when using the voice messaging service.\"}],\"start\":false,\"type\":\"uli\"}],\"hintType\":\"info\",\"type\":\"hint\"},{\"id\":\"tVMgQlH8xp6ytHgX3hx-7\",\"children\":[{\"text\":\"Voice message and speech-to-text conversion flowchart\"}],\"nodeId\":\"voice-message-and-speech-to-text-conversion-flowchart\",\"type\":\"h4\"},{\"type\":\"p\",\"children\":[{\"text\":\"\"},{\"id\":\"HppI3fN4VrCgftKOjL0ll\",\"alt\":\"\",\"children\":[{\"text\":\"\"}],\"inline\":true,\"type\":\"image\",\"url\":\"https://cloudcache.intl.tencent-cloud.com/cms/backend-cms/5061db5db37111eeae9a525400c26da5.png\",\"naturalSize\":[878,828],\"size\":[798,752]},{\"text\":\"\"}],\"id\":\"Gl4vxqil4-39U4t9CcMGU\"},{\"id\":\"qutrL3Pycpl0x3BL5KVT0\",\"children\":[{\"text\":\"Integrating Voice Messaging and Speech-to-Text Service\"}],\"nodeId\":\"integrating-voice-messaging-and-speech-to-text-service\",\"type\":\"h2\"},{\"id\":\"mCH_odiqhVcLQTQZwbpoH\",\"children\":[{\"text\":\"Voice messaging and speech-to-text APIs\"}],\"nodeId\":\"voice-messaging-and-speech-to-text-apis\",\"type\":\"h3\"},{\"id\":\"vKBlGXLU3MvZD45yizkCS\",\"children\":[{\"id\":\"1ldCykGaAinDTj8pKyh9l\",\"children\":[{\"id\":\"pi4FJBV0lYa-62Pexmeig\",\"children\":[{\"id\":\"RZaRDAgNQt_NNql1nD443\",\"children\":[{\"text\":\"API\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"RvJ--BOPNMhriqYwkIgxN\",\"children\":[{\"id\":\"GIwZqh2jKrP_C6qpgrs-e\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"fVmBdegvP4t6aJtZYSmzF\",\"children\":[{\"id\":\"qlaHD-8qKx7PpX3BIw5vg\",\"children\":[{\"id\":\"ca-LvlPj56prVt8eiZzPp\",\"children\":[{\"id\":\"SyxTqa2MWv8BVf_fpSAgp\",\"children\":[{\"text\":\"ApplyPTTAuthbuffer\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"1SMe8uTO3fq15F-FwD0pj\",\"children\":[{\"id\":\"uIPUrCrFLEuDSUd00zj2i\",\"children\":[{\"id\":\"LlG3n4iirlwi3OTT7TuRs\",\"children\":[{\"text\":\"Initializes authentication\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"yObwA5qoMsK0uYAyXwZ0z\",\"children\":[{\"id\":\"sW3PIzCNBMO1qX3-fhhOz\",\"children\":[{\"id\":\"qIJdhP95Plc9l13zVN34j\",\"children\":[{\"id\":\"l_89IM5X07WSFIhqUSbFw\",\"children\":[{\"text\":\"SetMaxMessageLength\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"1LElPgxWCrfYKTWBAXj4E\",\"children\":[{\"id\":\"1dpBUSdr9zayTQ5cNvGdN\",\"children\":[{\"id\":\"ZPP3aTQAl5qpvdlD9MmTD\",\"children\":[{\"text\":\"Specifies the maximum length of voice message\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"KkkmfEsvrpRk-AFbtFhDh\",\"children\":[{\"id\":\"eOfRsLZhngYaClDCeb7Ss\",\"children\":[{\"id\":\"12HfnKel3JZpjM0CSGZfm\",\"children\":[{\"id\":\"5CWiMptL7iSTfKjbz0Tvx\",\"children\":[{\"text\":\"StartRecording\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"btdik_uLCdUQnKRL_-ELI\",\"children\":[{\"id\":\"tRzcMHaeMSMa9-DR-3qNG\",\"children\":[{\"id\":\"Bbrf3gGXF9wzll9YVKA5O\",\"children\":[{\"text\":\"Starts recording\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"RhfJpIP8jRo3Ej8JgAUCw\",\"children\":[{\"id\":\"l2kOhiWaL_ii915kylq-8\",\"children\":[{\"id\":\"TWKjQ4Yar19Bcw8RbdZPl\",\"children\":[{\"id\":\"1w_JNe2ZNUf0uxTJbsev0\",\"children\":[{\"text\":\"StartRecordingWithStreamingRecognition\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"GT3NJWLtsLJ37QOsWX_VP\",\"children\":[{\"id\":\"tcZ-ZxRaHzSHtia0gJXhv\",\"children\":[{\"id\":\"wS4h66b_6vVSC1e7Orjfd\",\"children\":[{\"text\":\"Starts streaming recording\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"4P7oYNh2qhMohXPZXoGH1\",\"children\":[{\"id\":\"EBFewiHXVepf0lRUPcea2\",\"children\":[{\"id\":\"4SHDv3uMh_BPooaQYI49v\",\"children\":[{\"id\":\"gox6ZvspICk1FLn_yEOre\",\"children\":[{\"text\":\"PauseRecording\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"HtF2smDe56-zXC3iBmA_Q\",\"children\":[{\"id\":\"sP7KTGse-eSnyfqYA_7hD\",\"children\":[{\"id\":\"AGbSFtDXxeygJGrtJFjUQ\",\"children\":[{\"text\":\"Pauses recording\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"q250vDVyuXN49t6nhty8D\",\"children\":[{\"id\":\"5YLsS5M7fN_RcM1vUsEmH\",\"children\":[{\"id\":\"ortw7rwdHITbMMD0uRgit\",\"children\":[{\"id\":\"uN-V0CIgw2esKa0QO82oq\",\"children\":[{\"text\":\"ResumeRecording\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Ob5rmv87jBjKBfcpGapjd\",\"children\":[{\"id\":\"1qKBvDw71NeFk_K7cWBkx\",\"children\":[{\"id\":\"ShwBzTErTB_YuBPcv2Ynb\",\"children\":[{\"text\":\"Resumes recording\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"S6mj1yn7lA406p9jUQLLj\",\"children\":[{\"id\":\"c2e5s8hjBEqUP-_qEEEy6\",\"children\":[{\"id\":\"oWDJ79MjQhpNb6WqeQ11A\",\"children\":[{\"id\":\"oOwL1bLa2L7w-sJKfBJsN\",\"children\":[{\"text\":\"StopRecording\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"7pTfsGGgvNrN2VsrJreAJ\",\"children\":[{\"id\":\"tIUBlUfEbWQab4nACukDz\",\"children\":[{\"id\":\"zxqazVjkB_LqIT1t_23A2\",\"children\":[{\"text\":\"Stops recording\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"ZXouKHY48mdOQMu-YEi8-\",\"children\":[{\"id\":\"yOkxFtfEtzFlpe8p1emij\",\"children\":[{\"id\":\"yrbJl_ajueKSu_jK1tWR3\",\"children\":[{\"id\":\"0wtFsSvhqs5jiD2V6yrmd\",\"children\":[{\"text\":\"CancelRecording\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"L2m9ZPE6AWsyA2NZ-VMkG\",\"children\":[{\"id\":\"XznH7XtjFYJ6i8160XHWn\",\"children\":[{\"id\":\"lMw4ylPsJazdh39Zkj0Yk\",\"children\":[{\"text\":\"Cancels recording\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"rgx5oNZrTjb0wBT1gqAb9\",\"children\":[{\"id\":\"2yU8sud6KjF2Rh8hdpPbz\",\"children\":[{\"id\":\"W8eO_X77S-tQALi_Z2RXZ\",\"children\":[{\"id\":\"MNlGObnbLGla62-n59ob0\",\"children\":[{\"text\":\"GetMicLevel\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"FBQdjEy2kGwZWIOX2nawL\",\"children\":[{\"id\":\"iqxrjFicYSdOQafo5q_2A\",\"children\":[{\"id\":\"EWz0ziBUiGRt3f8rZb-yo\",\"children\":[{\"text\":\"Gets the real-time mic volume\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"eiXSNR9xLv7tkm6_0dW6n\",\"children\":[{\"id\":\"3Dov2-LPeTIHso2V0Vltm\",\"children\":[{\"id\":\"DRNNmhUU4YcviJ4ZJJQNb\",\"children\":[{\"id\":\"6RWYSPV9TfBSikXSEunus\",\"children\":[{\"text\":\"SetMicVolume\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"d6Y_O8YoXxNBU5jRE-BIe\",\"children\":[{\"id\":\"AqFnz8y2-ENwJHZKBdh2j\",\"children\":[{\"id\":\"HtLqCIiokdbbtxaVm0E7s\",\"children\":[{\"text\":\"Sets the recording volume\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"tMoDPN5K8ksOL1m4uQrrR\",\"children\":[{\"id\":\"clVxiqGNTBJ-Rc_GUJ8XC\",\"children\":[{\"id\":\"j25NsgAI_4txGUExh2Bac\",\"children\":[{\"id\":\"Hp9M5v1R_g3lE_ulcAJN_\",\"children\":[{\"text\":\"GetMicVolume\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"KcpJLh3dFIEx-W929n5AY\",\"children\":[{\"id\":\"ZbM5L7O2ZLBcZuDUkLoQI\",\"children\":[{\"id\":\"ufyziMItX916cSdbGJXk6\",\"children\":[{\"text\":\"Gets the recording volume\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"nF03Mmz6UAuB7Iiu7gKld\",\"children\":[{\"id\":\"6yszxFLBJHMhs-LXy87f_\",\"children\":[{\"id\":\"VwZAI7TePPahJksrZKhq5\",\"children\":[{\"id\":\"TuG8n7g3lbOVHcdS7jGKW\",\"children\":[{\"text\":\"GetSpeakerLevel\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"WCJVkZvet4N9HxO2066Ck\",\"children\":[{\"id\":\"QjiDQR7tGDqThPcwzJjUy\",\"children\":[{\"id\":\"PiteVE0qQhZ41xY0JnR6U\",\"children\":[{\"text\":\"Gets the real-time speaker volume\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"Fu5oCotvyRKyTa81Qt-W9\",\"children\":[{\"id\":\"xdBAoGeSVQgCmDt3kHzCm\",\"children\":[{\"id\":\"CRXscMMc66-czAHl7rOtl\",\"children\":[{\"id\":\"L5SdJGGByNlaYAhjpJvJs\",\"children\":[{\"text\":\"SetSpeakerVolume\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"cLWQRp4wITmEZnis-2oTn\",\"children\":[{\"id\":\"d1eNG1Mi8oIvnBLvRXZV_\",\"children\":[{\"id\":\"iPzHVCp_ySVrvRhVeTn0M\",\"children\":[{\"text\":\"Sets the playback volume\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"8Ifb1Y7MOPM90vBdSLydy\",\"children\":[{\"id\":\"ddDKAJB7GLQZn2sNblmWh\",\"children\":[{\"id\":\"e-n_Fco5nvoi7byK-8Wnp\",\"children\":[{\"id\":\"VEazOP5vr8nIVHmlC2Pav\",\"children\":[{\"text\":\"GetSpeakerVolume\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"u0UzBZ9z9Z60iYs3OYjHY\",\"children\":[{\"id\":\"Wyt76FLig4m-kDmSi_s3u\",\"children\":[{\"id\":\"4dQAnnlYljmOk-AWZhHvA\",\"children\":[{\"text\":\"Gets the playback volume\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"cqBg5EZK6QZGUQbTFvSPk\",\"children\":[{\"id\":\"c1lYugEYSox8YoVrrdI3B\",\"children\":[{\"id\":\"zttJTXPCgrB_E-0CvtavE\",\"children\":[{\"id\":\"18c-vLbne6_ERhsa--24d\",\"children\":[{\"text\":\"UploadRecordedFile\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"9dio0H5MItDBmKebuuhax\",\"children\":[{\"id\":\"z-GhgPi1D2uxhkQuwjphR\",\"children\":[{\"id\":\"MeEPtVTfNWZF6RCOrtmyS\",\"children\":[{\"text\":\"Uploads the audio file\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"b2Rb3MC4_zRiObN9jVwa2\",\"children\":[{\"id\":\"SJciyjI2sW2bK2wGKSyx1\",\"children\":[{\"id\":\"5UhKX2agXywbC41Wh_Xrx\",\"children\":[{\"id\":\"FwExPYIc_h2H3zkNksMLt\",\"children\":[{\"text\":\"DownloadRecordedFile\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"RgccQ9MHn_DssVY_zcX3S\",\"children\":[{\"id\":\"JFY8jXpAeeCqDRgbMLoh8\",\"children\":[{\"id\":\"EfhSTAtxLFEAD83HfT06o\",\"children\":[{\"text\":\"Downloads the audio file\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"P2OjuYNz1pJKAx03UKa0b\",\"children\":[{\"id\":\"LZQIHqYY_yfRKqB2Q-3A8\",\"children\":[{\"id\":\"Ysa669usbhKkyoxuXff4L\",\"children\":[{\"id\":\"1S9HtSztRvAYJNYFToZve\",\"children\":[{\"text\":\"PlayRecordedFile\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"hZdgNnatZbeGLpt03O7mh\",\"children\":[{\"id\":\"Qh2pqVO7ECkHHXTob6vpO\",\"children\":[{\"id\":\"M1IGy1lcUQKVasv_ERlAE\",\"children\":[{\"text\":\"Plays back audio\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"tNPoxbAtddAMFTdTs1B7C\",\"children\":[{\"id\":\"fS9IKeOvdm2JEkocrZCAF\",\"children\":[{\"id\":\"D_KQkKkI_qBXLl1TmKUqW\",\"children\":[{\"id\":\"ja_46OtGZp1NPnrX-M-DQ\",\"children\":[{\"text\":\"StopPlayFile\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"EAjpJ5sUFeQ20yFSQQCpH\",\"children\":[{\"id\":\"Wo9oVkSrDQK35eUpKXjBw\",\"children\":[{\"id\":\"VS7zkzoh9xFcF1-elNx89\",\"children\":[{\"text\":\"Stops playing back audio\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"dZw8UsavXWgZ8JSUw24_y\",\"children\":[{\"id\":\"eFhaV56v6DGJlxQ56PSBf\",\"children\":[{\"id\":\"YktplC4U7lyb1-20IVDh4\",\"children\":[{\"id\":\"GiC5S6d6CGr_6uskbVlJI\",\"children\":[{\"text\":\"GetFileSize\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"FqCu-CliWqAWiI2alVo74\",\"children\":[{\"id\":\"qhlK-jLCS1R76QGLCu_P5\",\"children\":[{\"id\":\"wd43TfZmqk2KtJuc9evC6\",\"children\":[{\"text\":\"Gets the audio file size\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"-Iz16pEghhFrjVyKRJQNQ\",\"children\":[{\"id\":\"hNenLFaWYOcL7nGgUwirb\",\"children\":[{\"id\":\"-_TB5i5ezG2q5TbRi09Nl\",\"children\":[{\"id\":\"JESVNfwk1CCXX2na2yYQL\",\"children\":[{\"text\":\"GetVoiceFileDuration\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"8wAPRK_wLh5NefNd5JdA-\",\"children\":[{\"id\":\"OAKufkeXSJVitV30z7IL_\",\"children\":[{\"id\":\"F1Z2g_hppUC32lDMlo4TE\",\"children\":[{\"text\":\"Gets the audio file duration\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"6_z2Ptwq7hU6RGS6JKIiM\",\"children\":[{\"id\":\"sUMwqSqrhw8aRi1GYjvkM\",\"children\":[{\"id\":\"HnTPoqaG73Jgucqvk7rKa\",\"children\":[{\"id\":\"x-BeciUvr9HzDx7mfvxCC\",\"children\":[{\"text\":\"SpeechToText\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"tqQbzLipW3Y8cI1B3Ld4N\",\"children\":[{\"id\":\"An9m74GHLjL4-mQ0On4xt\",\"children\":[{\"id\":\"xXHhvIFHKBrcjmItuYf7P\",\"children\":[{\"text\":\"Converts speech to text\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[46,54],\"widthMode\":\"percentage\"},{\"id\":\"PuZXljgEZKWJtWLYcoSlZ\",\"children\":[{\"id\":\"8qGGCmHT6h6aH_KD5prAB\",\"children\":[{\"b\":1,\"color\":\"#FF7800\",\"text\":\"Maximum recording duration\"}],\"type\":\"p\"},{\"id\":\"nkOjFSoKqCHD1BCzz1prx\",\"children\":[{\"text\":\"The maximum recording duration of a voice message is 58 seconds by default, and the minimum recording duration cannot be less than 1 second. If you want to customize the recording duration, for example, to modify the maximum recording duration to 10 seconds, please call the \"},{\"code\":1,\"text\":\"SetMaxMessageLength\"},{\"text\":\" API to set it after initialization.\"}],\"type\":\"p\"}],\"hintType\":\"warn\",\"type\":\"hint\"},{\"id\":\"LRL3cobWC_TSDQ44QtJd1\",\"children\":[{\"text\":\"Initializing the SDK\"}],\"nodeId\":\"initializing-the-sdk\",\"type\":\"h3\"},{\"id\":\"vFe-T-W6Gl89qyn6T6o7z\",\"children\":[{\"text\":\"Before the initialization, the SDK is in the uninitialized status, and you need to initialize it through the \"},{\"code\":1,\"text\":\"Init\"},{\"text\":\" API before you can use the voice chat and voice message services.\"}],\"type\":\"p\"},{\"id\":\"NSCMFOpbZAHQQ5Z67mN_b\",\"children\":[{\"text\":\"If you have any questions when using the service, see \"},{\"id\":\"2vxPDVk-G--zDAYFQJ0SC\",\"children\":[{\"text\":\"Speech-to-text Conversion\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://intl.cloud.tencent.com/document/product/607/39716\",\"props\":{\"type\":\"link\",\"url\":\"https://intl.cloud.tencent.com/document/product/607/39716\"},\"type\":\"ref\"},{\"text\":\".\"}],\"type\":\"p\"},{\"id\":\"9vRm2ri4SAR5iNNDjy8rB\",\"children\":[{\"text\":\"Authentication information\"}],\"nodeId\":\"authentication-information\",\"type\":\"h3\"},{\"id\":\"OUtgUyjLeA_FFHQHh7atD\",\"children\":[{\"text\":\"Generate \"},{\"code\":1,\"text\":\"AuthBuffer\"},{\"text\":\" for encryption and authentication of relevant features. For release in the production environment, use the backend deployment key as detailed in \"},{\"id\":\"eXPUUl9wXimDFtm1m9JcL\",\"children\":[{\"text\":\"Authentication Key\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://intl.cloud.tencent.com/document/product/607/12218\",\"props\":{\"type\":\"link\",\"url\":\"https://intl.cloud.tencent.com/document/product/607/12218\"},\"type\":\"ref\"},{\"text\":\". \"}],\"type\":\"p\"},{\"id\":\"sModAHx7QiIAqwH1Qm9-4\",\"children\":[{\"text\":\"To get authentication for voice message and speech-to-text, the room ID parameter must be set to \"},{\"code\":1,\"text\":\"null\"},{\"text\":\".\"}],\"type\":\"p\"},{\"id\":\"HWmbxcQcsTJfhc4TLyDSn\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\"function-prototype8\",\"type\":\"h4\"},{\"id\":\"w9sPtpaZLBqww0kUzyfU0\",\"children\":[{\"id\":\"zgN8eM_Wz2jUKj_YdRE2f\",\"children\":[{\"text\":\"@interface QAVAuthBuffer : NSObject\"}],\"type\":\"code-line\"},{\"id\":\"jK5lpGWWIA07xichobxM7\",\"children\":[{\"text\":\"+ (NSData*) GenAuthBuffer:(unsigned int)appId roomId:(NSString*)roomId openID:(NSString*)openID key:(NSString*)key;\"}],\"type\":\"code-line\"},{\"id\":\"VDjuHJ1wxjMpzWxdD3auA\",\"children\":[{\"text\":\"+ @end\"}],\"type\":\"code-line\"},{\"id\":\"3kodhGeK7da5oDh4BUUOF\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"lh2HdfelKPTUFHRQe0AyH\",\"children\":[{\"id\":\"BFgLtEP2HUNxTiDR6fyF5\",\"children\":[{\"id\":\"er_7ZfraS27uklO8kbPwT\",\"children\":[{\"id\":\"CPxtGVBfg3pUFksz5_lqV\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"4S4Luu3t0Cljyq5lSl2fK\",\"children\":[{\"id\":\"-QV_gZaxyHr-KF586KYRR\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ELKslSKaWIy3ItOfF-Dxr\",\"children\":[{\"id\":\"a9B0TSJfYNpgRYiYsicK7\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"aottqbCykCzOFOgwK3Kr8\",\"children\":[{\"id\":\"ONvXRfLrgMheI4dcDa_pj\",\"children\":[{\"id\":\"_nPZgVzmzJUwbNxW9Ln-R\",\"children\":[{\"id\":\"sOmJlLUJvd3oaLBrcg4NK\",\"children\":[{\"text\":\"appId\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"mJyxgNMXStjLvJmzx-jzp\",\"children\":[{\"id\":\"evPUvfuA89nrYRiv_GrmQ\",\"children\":[{\"id\":\"1OvAgoGHA79hgOUD5FJuT\",\"children\":[{\"text\":\"int\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"NSCUIleiadDa61wBz53hU\",\"children\":[{\"id\":\"sARgnBFU09dBZLCVgY34b\",\"children\":[{\"id\":\"I7OL2FKkgMhNF-FcCXFAI\",\"children\":[{\"code\":1,\"text\":\"AppId\"},{\"text\":\" from the Tencent Cloud console.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"2dBc8YEKzir-IFCYtzHPl\",\"children\":[{\"id\":\"FpIewmLBryqLyUW4tX1rk\",\"children\":[{\"id\":\"Oc8-b8yd8N538r-cl6HE5\",\"children\":[{\"id\":\"cueoEGUTfqRfEC47J9q_z\",\"children\":[{\"text\":\"roomId\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Rm270zPlkuL3EbbwrlnA4\",\"children\":[{\"id\":\"wnWB4NwSP7_Xffw0V5-n-\",\"children\":[{\"id\":\"vwpLIC_HUWnBLK31AsJwf\",\"children\":[{\"text\":\"NSString\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"szzNnGeH_nLQASn72miIK\",\"children\":[{\"id\":\"gxNhrgY0xnRZY4y7qYbsr\",\"children\":[{\"id\":\"NXYf8INPsW8XQkH3J01P1\",\"children\":[{\"text\":\"Enter \"},{\"code\":1,\"text\":\"null\"},{\"text\":\".\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"haDzafsmalhv42SbSiVxN\",\"children\":[{\"id\":\"oVI51h-q-oTvFl1cVVmU7\",\"children\":[{\"id\":\"LgTGI5Hl7oQ2N31UUord-\",\"children\":[{\"id\":\"3YBDI3X_uPLzhMCuJDKBB\",\"children\":[{\"text\":\"openID\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"JGj22XWesficPOkKkSl1v\",\"children\":[{\"id\":\"I_HBtrl9Vn8mVDvEwbmdA\",\"children\":[{\"id\":\"gOuwdg1bMdOV30novDa3I\",\"children\":[{\"text\":\"NSString\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"R-b_eml2idj271zSlRIaL\",\"children\":[{\"id\":\"geBX5KE1nSNsso71zW_Kj\",\"children\":[{\"id\":\"CsXE8NpPQeMoJh4StNsuT\",\"children\":[{\"text\":\"User ID, which is the same as \"},{\"code\":1,\"text\":\"openID\"},{\"text\":\" during initialization.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"PP4HpsC01P0-008y2fk3c\",\"children\":[{\"id\":\"Qrjm3ezfLS_H_k3QWuely\",\"children\":[{\"id\":\"cuEAiuk_NM2FhiSOkchG1\",\"children\":[{\"id\":\"yd3kelgKoWWiZDE-61Vst\",\"children\":[{\"text\":\"key\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"fJCh7hpKyaJ6KxgpRlZqp\",\"children\":[{\"id\":\"XtUR9cVmBpoRuN0M4s_Kv\",\"children\":[{\"id\":\"MFLG8nh91gXHGmYAgN12N\",\"children\":[{\"text\":\"NSString\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"sqT_2lR6FfgxR52bjVaCN\",\"children\":[{\"id\":\"uRZLWH6TQB-hN-08DdTwT\",\"children\":[{\"id\":\"LJ6-lt1GwIQbggIDTXalk\",\"children\":[{\"text\":\"Permission key from the Tencent Cloud \"},{\"id\":\"yXr2ewqy3Smb8jqyE_dxz\",\"children\":[{\"text\":\"console\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://console.tencentcloud.com/gamegme\",\"props\":{\"type\":\"link\",\"url\":\"https://console.tencentcloud.com/gamegme\"},\"type\":\"ref\"},{\"text\":\".\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[16,15,69],\"widthMode\":\"percentage\"},{\"id\":\"1FRD4L9oKmHR-WOxVy5em\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code8\",\"type\":\"h4\"},{\"id\":\"-H5LJkNRf24H6zX9pu64G\",\"children\":[{\"id\":\"HMpBwdFruS8EA-sFtY0Ty\",\"children\":[{\"text\":\"#import \\\"GMESDK/QAVAuthBuffer.h\\\"\"}],\"type\":\"code-line\"},{\"id\":\"jL9R-bm9uDoomt3B7P4r1\",\"children\":[{\"text\":\"NSData* authBuffer = [QAVAuthBuffer GenAuthBuffer:SDKAPPID3RD.intValue roomId:_roomId openID:_openId key:AUTHKEY];\"}],\"type\":\"code-line\"},{\"id\":\"kP_njschfra-TNYbcmwzd\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"pezJEjQZQNAF6DfoQJ_4A\",\"children\":[{\"id\":\"vu6tngZGhQc8XFlmaAjzP\",\"children\":[{\"text\":\"Initializing authentication\"}],\"nodeId\":\"ApplyPtt\",\"type\":\"p\"}],\"nodeId\":\".3Ca-id.3D.22applyptt.22.3Einitializing-authentication.3C.2Fa.3E\",\"type\":\"h3\"},{\"id\":\"AouDCwuXD6BAzkzk_Jc-8\",\"children\":[{\"text\":\"Call authentication initialization after initializing the SDK. For more information on how to get the \"},{\"code\":1,\"text\":\"authBuffer\"},{\"text\":\", please see \"},{\"code\":1,\"text\":\"genAuthBuffer\"},{\"text\":\" (the voice chat authentication information API).\"}],\"type\":\"p\"},{\"id\":\"ymhBYtbALECxWFPlcabtU\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\"function-prototype9\",\"type\":\"h4\"},{\"id\":\"y5APnSea0-jlMU7TeWwKg\",\"children\":[{\"id\":\"oTPRmIq_OLvDB6AC8FZcR\",\"children\":[{\"text\":\"public abstract int ApplyPTTAuthbuffer(byte[] authBuffer);\"}],\"type\":\"code-line\"},{\"id\":\"eDkqM-5LWWSnY6Njk2o40\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"java\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"nF6PIHHjZtbZmHLeNF9Jn\",\"children\":[{\"id\":\"O6fxrS2Gh-y-gHVy2wtAk\",\"children\":[{\"id\":\"15U7I8Fs4R95M9WjRnssJ\",\"children\":[{\"id\":\"Pj-v4Mv_vhBNVQUUJTRTL\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"A6r5CtBgw7lsL4tDZx0o2\",\"children\":[{\"id\":\"43Lqk23fmy6DEMYQyKQTh\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"O8nORrL3Q-QMkH_sobp6m\",\"children\":[{\"id\":\"BNVAwcLJMf9KwTD7aRQqL\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"4coyvbsNgbPgPOSwp3exD\",\"children\":[{\"id\":\"Ml3cqKu1LzWB_jtlg3ulC\",\"children\":[{\"id\":\"7PxihWsrDGW75d1wrrvT7\",\"children\":[{\"id\":\"XfBY_Za_LT-J0HlL9Y3-a\",\"children\":[{\"text\":\"authBuffer\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"9MoioFChQy063aD8ckD5m\",\"children\":[{\"id\":\"qOuTlaKI1nAAiq8JKl-rY\",\"children\":[{\"id\":\"8LmrnfBx-3EQyu44ioFD5\",\"children\":[{\"text\":\"NSData*\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"TJGC3w8QP0FvcbpV9vuA3\",\"children\":[{\"id\":\"rbuk9xHKgMeLURrkEO0Rg\",\"children\":[{\"id\":\"OtvqwTtPWjjDBR-5pRzjQ\",\"children\":[{\"text\":\"Authentication\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[31,28,41],\"widthMode\":\"percentage\"},{\"id\":\"uGqVeDrQVlxDZ0yBg0zEg\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code9\",\"type\":\"h4\"},{\"id\":\"JDT0fXkQdHh3enG2zjxGB\",\"children\":[{\"id\":\"Psd27kF711k0UoOVAGz1R\",\"children\":[{\"text\":\"[[[ITMGContext GetInstance]GetPTT]ApplyPTTAuthbuffer:(NSData *)authBuffer];\"}],\"type\":\"code-line\"},{\"id\":\"9pYwJAxoDk-RbiWXG7_XO\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"2qvtlYH6zx6Zu-9YJljmg\",\"children\":[{\"text\":\"Streaming Speech Recognition\"}],\"nodeId\":\"streaming-speech-recognition\",\"type\":\"h2\"},{\"id\":\"7INNutAN5AeCZF-pEH4ZR\",\"children\":[{\"id\":\"vq-ZYtjLrB2Z3gTE9rEe4\",\"children\":[{\"text\":\"Starting streaming speech recognition\"}],\"nodeId\":\"StartRWSR\",\"type\":\"p\"}],\"nodeId\":\".3Ca-id.3D.22startrwsr.22.3Estarting-streaming-speech-recognition.3C.2Fa.3E\",\"type\":\"h3\"},{\"id\":\"nYKr2yF8ZlrJJSkC0gcr7\",\"children\":[{\"text\":\"This API is used to start streaming speech recognition. Text obtained from speech-to-text conversion will be returned in real time in its callback. It can specify a language for recognition or translate the information recognized in speech into a specified language and return the translation. \"},{\"b\":1,\"text\":\"To stop recording, call \"},{\"b\":1,\"code\":1,\"text\":\"StopRecording\"},{\"text\":\". The callback will be returned after the recording is stopped.\"}],\"type\":\"p\"},{\"id\":\"bNhtQK-gE3ZlqxFMtDpCE\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\"function-prototype10\",\"type\":\"h4\"},{\"id\":\"kaYUSyJD8icz153SALMNI\",\"children\":[{\"id\":\"Wxxfz1mb6AyvwaHTHiHba\",\"children\":[{\"text\":\"-(int)StartRecordingWithStreamingRecognition:(NSString *)filePath;\"}],\"type\":\"code-line\"},{\"id\":\"_Klwj0iyfwRkhmVDDOGK7\",\"children\":[{\"text\":\"-(int)StartRecordingWithStreamingRecognition:(NSString *)filePath language:(NSString*)speechLanguage translatelanguage:(NSString*)translateLanguage;\"}],\"type\":\"code-line\"},{\"id\":\"CP-kS6ss3dbL3bENcpSF0\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"d3GRJitsWIyWAhyCNBBoQ\",\"children\":[{\"id\":\"NlQ4hdnIkIucSz0Kiim8w\",\"children\":[{\"id\":\"qSoae67Z3Qh45g8M5Glu7\",\"children\":[{\"id\":\"hIkMYy_j2ERvCgBr3WFSg\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"6wb9DOkOOuQNZ7Uq8qMww\",\"children\":[{\"id\":\"C_2pit2H2DlqFxU7mROhz\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"QG2rrfkNHKeG-X_hpCWsm\",\"children\":[{\"id\":\"zZppe0DT362pSyvsQ8Khc\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"ei__IDKqsGoa5Ybff9EtU\",\"children\":[{\"id\":\"ajZz_2ujsDDZLpn_RZWpG\",\"children\":[{\"id\":\"jvKqmG2gItjAAApDkR_Ly\",\"children\":[{\"id\":\"SFN3KvlSzjZ3iSKiwVGhC\",\"children\":[{\"text\":\"filePath\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"i95KEPR9_cRpfiLOmAlwx\",\"children\":[{\"id\":\"ajrcjxMytFs4Wv0m0a7li\",\"children\":[{\"id\":\"mp2Lh20ilHTBmvCg_nOo8\",\"children\":[{\"text\":\"String\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"iVBttLsocR29MA7KLcHgY\",\"children\":[{\"id\":\"T-iM4FllU-AwmTpzIiLCS\",\"children\":[{\"id\":\"pIK8rMFR9qZmsGXA4fhL3\",\"children\":[{\"text\":\"Path of stored audio file\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"v6IzGVfntWdiXu-K3W6fy\",\"children\":[{\"id\":\"aXH0-sFJ0fe7vwGwI089m\",\"children\":[{\"id\":\"AisqChPN8LXEH4Fw9-AOW\",\"children\":[{\"id\":\"QRAZ1zo2UpK6yP6e__IFr\",\"children\":[{\"text\":\"speechLanguage\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"uabhbxGAucIii8OLJlHCr\",\"children\":[{\"id\":\"dUku3ImVQNU1tjHuGJFT3\",\"children\":[{\"id\":\"tz3Y_MxPkC2PhqCvm70Y_\",\"children\":[{\"text\":\"String\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"0xE1QMiBFcgSuzMrJtXUp\",\"children\":[{\"id\":\"N1FPR74bPkhJ7SpbEycYb\",\"children\":[{\"id\":\"-EQ2e6GDpgtbCV-k61_0P\",\"children\":[{\"text\":\"The language in which the audio file is to be converted to text. For parameters, please see \"},{\"id\":\"p9QiAFduiYnxRFsViieSL\",\"children\":[{\"text\":\"Language Parameter Reference List\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://intl.cloud.tencent.com/document/product/607/30260\",\"props\":{\"type\":\"link\",\"url\":\"https://intl.cloud.tencent.com/document/product/607/30260\"},\"type\":\"ref\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"s473XcJv__BuMJDqKxcuX\",\"children\":[{\"id\":\"OyHJI7qJ6qjeUbYjuUpuf\",\"children\":[{\"id\":\"sN6xMaWbM0eCaclmOBpl_\",\"children\":[{\"id\":\"UVlDcweZ6eatq3VAvKFZp\",\"children\":[{\"text\":\"translateLanguage\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"5mbEY8Ecqw-amhyn_ZeIM\",\"children\":[{\"id\":\"s6iO71fg_7jmccT5hxMiZ\",\"children\":[{\"id\":\"S02VZqzYfhnYZcFcvlgOn\",\"children\":[{\"text\":\"String\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"GsFfBuTTJ-yAphqNots-4\",\"children\":[{\"id\":\"PpZziJe2VHtuGgg-wnkjI\",\"children\":[{\"id\":\"VSXdSnYRT7mW_ZsSzCiYy\",\"children\":[{\"text\":\"The language into which the audio file will be translated. For parameters, please see \"},{\"id\":\"E_jRCztzqQusd_shWaraU\",\"children\":[{\"text\":\"Language Parameter Reference List\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://intl.cloud.tencent.com/document/product/607/30260\",\"props\":{\"type\":\"link\",\"url\":\"https://intl.cloud.tencent.com/document/product/607/30260\"},\"type\":\"ref\"},{\"text\":\" (This parameter is currently unavailable. Enter the same value as that of \"},{\"code\":1,\"text\":\"speechLanguage\"},{\"text\":\")\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[16,9,75],\"widthMode\":\"percentage\"},{\"id\":\"H9qiyCxnqz6DUHL3q8yYl\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code10\",\"type\":\"h4\"},{\"id\":\"mlpfKg39yCGRK0KF2YuhK\",\"children\":[{\"id\":\"sfMDTdEzZSVam2lA837Np\",\"children\":[{\"text\":\"recordfilePath = [docDir stringByAppendingFormat:@\\\"/test_%d.ptt\\\",index++];\"}],\"type\":\"code-line\"},{\"id\":\"DcgAYR-0niGYeLCHtf-7Y\",\"children\":[{\"text\":\"[[[ITMGContext GetInstance] GetPTT] StartRecordingWithStreamingRecognition:recordfilePath language:@\\\"cmn-Hans-CN\\\"];\"}],\"type\":\"code-line\"},{\"id\":\"nuIm4M-FUXdwUUhLx43fh\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"_6S7OZB2WjUkdvWBUNo5M\",\"children\":[{\"text\":\"Callback for streaming speech recognition\"}],\"nodeId\":\"callback-for-streaming-speech-recognition\",\"type\":\"h3\"},{\"id\":\"Dti2_x6M2wawySJOFUVuB\",\"children\":[{\"text\":\"After streaming speech recognition is started, you need to listen for callback messages in the callback function \"},{\"code\":1,\"text\":\"onEvent\"},{\"text\":\". Event messages are divided into:\"}],\"type\":\"p\"},{\"id\":\"--VUiEIOujXXIHbZK45NV\",\"children\":[{\"code\":1,\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRECOGNITION_COMPLETE\"},{\"text\":\" returns text after the recording is stopped and the recognition is completed, which is equivalent to returning the recognized text after a paragraph of speech.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"InMOl_oCS7nZA05pPL3cr\",\"children\":[{\"code\":1,\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRECOGNITION_IS_RUNNING\"},{\"text\":\" returns the recognized text in real-time during the recording, which is equivalent to returning the recognized text while speaking.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"h7MCKtWS8UnSonDX0kOoW\",\"children\":[{\"text\":\"The event message will be identified in the \"},{\"code\":1,\"text\":\"OnEvent function\"},{\"text\":\" based on the actual needs. The passed parameters include the following four messages.\"}],\"type\":\"p\"},{\"id\":\"4Y5UJajPVfmge5VG7W6oc\",\"children\":[{\"id\":\"LEb7ld0rpc0--ak2cgETy\",\"children\":[{\"id\":\"YguGkvUALhbfjeoF5qhX5\",\"children\":[{\"id\":\"JxIfYMPlZp5dei8GK8bcK\",\"children\":[{\"text\":\"Message Name\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"tnxACz_vRq8jvaONf9Nci\",\"children\":[{\"id\":\"o6wCxpOUC68woaR5PKqUe\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"RcDaT3hkk8eEPowCT4HvF\",\"children\":[{\"id\":\"u5p-7Lcxr2b8p6eq4qz-7\",\"children\":[{\"id\":\"YG_k3I6Stsf0ZiSSyyjOx\",\"children\":[{\"id\":\"QlcsQCKM9SAHiLIpfHV6H\",\"children\":[{\"text\":\"result\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"GOMF6ymCIgPqcHgljLaZi\",\"children\":[{\"id\":\"76NUI7WcGayyvQAGdOx_r\",\"children\":[{\"id\":\"aLaOetz1JfQA3KBk1LqtD\",\"children\":[{\"text\":\"A return code for judging whether the streaming speech recognition is successful.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"Jhc8UqmAo3uL7XVcSMamp\",\"children\":[{\"id\":\"OCVq-f3-F6vhgAzYISV9j\",\"children\":[{\"id\":\"2tW2tDH_ZKqzfHvyp5p8H\",\"children\":[{\"id\":\"aEgfz-Pia5PFuJBpCbTbv\",\"children\":[{\"text\":\"text\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"GmBFpzmQhYx4_NHkzRyT_\",\"children\":[{\"id\":\"zcWYkqGch5b46JRZhaGfq\",\"children\":[{\"id\":\"EhFt1bhLBczHwYsM2ixXG\",\"children\":[{\"text\":\"Text converted from speech\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"ofSFnKHnR6M0yrx5_AXsU\",\"children\":[{\"id\":\"NPydR7FWvIhULuCi1KycH\",\"children\":[{\"id\":\"w2Ka8PQPLV035PmmXz867\",\"children\":[{\"id\":\"6rXbz6dUd9hFfRWdklmr8\",\"children\":[{\"text\":\"file_path\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"BUlZvW3Vvfzp3cD_y2OJM\",\"children\":[{\"id\":\"N98H4yASQ4-WOFWxQhCyD\",\"children\":[{\"id\":\"4VkWiEy4Yyyjp_m-AYHSx\",\"children\":[{\"text\":\"Local path of stored recording file\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"JLh6egs6mbHCYpoHZyuZD\",\"children\":[{\"id\":\"aT1bb38vTNQ_J4IbIlQ78\",\"children\":[{\"id\":\"96ve-r1fMnykxt9OWO5a3\",\"children\":[{\"id\":\"uZF9Z6iOeJbKrsWjYs4Sv\",\"children\":[{\"text\":\"file_id\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"QwV5JapnkLten01ll0irb\",\"children\":[{\"id\":\"mFgfuPf6tsWA9ZasMTo0C\",\"children\":[{\"id\":\"UQ_Z9wU-f_CaWuDmJOuIh\",\"children\":[{\"text\":\"Backend URL address of recording file, which will be retained for 90 days. \"},{\"code\":1,\"text\":\"fileid\"},{\"text\":\" is fixed at \"},{\"code\":1,\"text\":\"http://gme-v2-\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[19,81],\"widthMode\":\"percentage\"},{\"id\":\"3OjVoxJ-LHDZuGAqro_Dk\",\"children\":[{\"id\":\"YnjrBKIXcF3FGACBFwdlr\",\"children\":[{\"b\":1,\"color\":\"#04C8DC\",\"text\":\"Note: \"}],\"type\":\"p\"},{\"id\":\"Zaavuy9iWrJbAKTZL0H8y\",\"children\":[{\"text\":\"The file_id is empty when the 'ITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRecognition_IS_RUNNING' message is listened.\"}],\"type\":\"p\"}],\"hintType\":\"alert\",\"type\":\"hint\"},{\"id\":\"jzErVjSY7669qt7-uDvKz\",\"children\":[{\"text\":\"Error codes\"}],\"nodeId\":\"error-codes\",\"type\":\"h4\"},{\"id\":\"nYb1d6EnpBhRzsI31BN0W\",\"children\":[{\"id\":\"qFJxZGPRtx202W6Qt1Lws\",\"children\":[{\"id\":\"J3Nr75UC7ONuBvJENJwXy\",\"children\":[{\"id\":\"a-iSdVXHbVK5QhM__pxs5\",\"children\":[{\"text\":\"Error Code\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"GROSCDQAIlxCiQ6pfisZh\",\"children\":[{\"id\":\"07bw_-hUvuugix5OggeVf\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"SYjkW1h-cs9aCWVOkk7ox\",\"children\":[{\"id\":\"yxm_oCsw7-3EPclBsEkWY\",\"children\":[{\"text\":\"Suggested Solution\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"FvGkqqsIwMdhCZxzE-bZ1\",\"children\":[{\"id\":\"n2M5BajJ1oUfVgr6VsXPC\",\"children\":[{\"id\":\"3f0pi4zSn66Qo-zGOo2Zi\",\"children\":[{\"id\":\"pBiLvi7of3rZqcqlUBI8z\",\"children\":[{\"text\":\"32775\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"nMRzkLwnIA5_tZMFKt4gy\",\"children\":[{\"id\":\"IKmaLRAUMDpT8cwUsEHHH\",\"children\":[{\"id\":\"wqqNFM1KSvUG9Bj4e43a4\",\"children\":[{\"text\":\"Streaming speech-to-text conversion failed, but recording succeeded.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"DN0OHWuQURtToxWqu_hd6\",\"children\":[{\"id\":\"5iwyhuVM8ZyWEd4y0caz2\",\"children\":[{\"id\":\"30g9A1gEjdJl2kGOKIX6I\",\"children\":[{\"text\":\"Call the \"},{\"code\":1,\"text\":\"UploadRecordedFile\"},{\"text\":\" API to upload the recording file and then call the \"},{\"code\":1,\"text\":\"SpeechToText\"},{\"text\":\" API to perform speech-to-text conversion.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"vqF0Cwl32NPi_CBzGuv3w\",\"children\":[{\"id\":\"Taq00yc9RyaS74_nYDYQ-\",\"children\":[{\"id\":\"qUxn42aoCZdMxanCzlY7y\",\"children\":[{\"id\":\"UZi4Ll1qlZslL2SJPH-vs\",\"children\":[{\"text\":\"32777\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"_9BZnCKBxuTcH71lDfEAB\",\"children\":[{\"id\":\"DnO-a__ogw43Ye5Gv7pHA\",\"children\":[{\"id\":\"y_Pv5pvydEHAgJL03ChQk\",\"children\":[{\"text\":\"Streaming speech-to-text conversion failed, but recording and upload succeeded.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Z1aIm1sypXsx2lAkoY1WJ\",\"children\":[{\"id\":\"BEDNznfkbCV-dLDetHpDZ\",\"children\":[{\"id\":\"hqAVIW_au5CftBY06cEVE\",\"children\":[{\"text\":\"The message returned contains a backend URL after successful upload. Call the \"},{\"code\":1,\"text\":\"SpeechToText\"},{\"text\":\" API to perform speech-to-text conversion.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"LiuayUKEbgj0slWxyiIgP\",\"children\":[{\"id\":\"XcdBLrNR6xC7o352DCRK1\",\"children\":[{\"id\":\"_9P_ybsFCMbchvpYxZ3aq\",\"children\":[{\"id\":\"_B2U-DAF87bFBt4rF33qP\",\"children\":[{\"text\":\"32786\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"tekMlLEG_G7bXsLg1Sjuj\",\"children\":[{\"id\":\"nmFigpJ4ZY3vULXBhEv_r\",\"children\":[{\"id\":\"bLPHK5XbU35a6ZP-4kYr5\",\"children\":[{\"text\":\"Streaming speech-to-text conversion failed.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"hZv8EbergzHpU07uq1QXd\",\"children\":[{\"id\":\"iG3wyb80f2z8Wtw6tTq4D\",\"children\":[{\"id\":\"VbpkDlS5fghmIUx2PJomM\",\"children\":[{\"text\":\"During streaming recording, wait for the execution result of the streaming recording API to return.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[11,34,55],\"widthMode\":\"percentage\"},{\"id\":\"7wvvFVISxROramaHBRZ9N\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code11\",\"type\":\"h4\"},{\"id\":\"EB6aibJzggDKbUl6m5Tl9\",\"children\":[{\"id\":\"zD6ii83pHGSssNfsCsEX1\",\"children\":[{\"text\":\"- (void)OnEvent:(ITMG_MAIN_EVENT_TYPE)eventType data:(NSDictionary*)data\"}],\"type\":\"code-line\"},{\"id\":\"9lC75rJLLvqg9JOiYLiGd\",\"children\":[{\"text\":\"{\"}],\"type\":\"code-line\"},{\"id\":\"Bh3U9QhDkhpahuZ7lr-1z\",\"children\":[{\"text\":\" NSNumber *number = [data objectForKey:@\\\"result\\\"];\"}],\"type\":\"code-line\"},{\"id\":\"2JQszz7FOi5O9TbnRTmJA\",\"children\":[{\"text\":\" switch (eventType)\"}],\"type\":\"code-line\"},{\"id\":\"wDYmRY8voCu0HGIDGVCPo\",\"children\":[{\"text\":\" {\"}],\"type\":\"code-line\"},{\"id\":\"595Y_fFHz-rQdm363MMeu\",\"children\":[{\"text\":\" case ITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRECOGNITION_COMPLETE:\"}],\"type\":\"code-line\"},{\"id\":\"CZWtI5F-HNbGZsER1M3Pl\",\"children\":[{\"text\":\" {\"}],\"type\":\"code-line\"},{\"id\":\"IBN28dAGIyemlRBvzJkxX\",\"children\":[{\"text\":\" if (data != NULL &&[[data objectForKey:@\\\"result\\\"] intValue]== 0)\"}],\"type\":\"code-line\"},{\"id\":\"zPXKb-AAMTdTDxxVFdAw7\",\"children\":[{\"text\":\" {\"}],\"type\":\"code-line\"},{\"id\":\"khcmN2n0mwOYaOxOKuPMJ\",\"children\":[{\"text\":\" donwLoadUrlPath = data[@\\\"file_id\\\"];\"}],\"type\":\"code-line\"},{\"id\":\"lQsxehKEk7WYyv2gm55oj\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"},{\"id\":\"UUuM1le7QR3MpoJ_WstkU\",\"children\":[{\"text\":\" recordfilePath = [data objectForKey:@\\\"file_path\\\"];\"}],\"type\":\"code-line\"},{\"id\":\"Qc1xrcwdaZ0d19prWFQLl\",\"children\":[{\"text\":\" _localFileField.text = recordfilePath;\"}],\"type\":\"code-line\"},{\"id\":\"yK9ir3qfHomZ4cG7ZaMSO\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"},{\"id\":\"9TVMzyKzKSOH3KcSkFzV3\",\"children\":[{\"text\":\" _donwloadUrlField.text = [data objectForKey:@\\\"file_id\\\"] ;\"}],\"type\":\"code-line\"},{\"id\":\"LJDsxYM9BiKlu9R4uyzNy\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"},{\"id\":\"v0L5feTOjf_WKrQgBPeL4\",\"children\":[{\"text\":\" UITextField *_audiotoTextField =(UITextField*)objc_getAssociatedObject(self, [PTT_AUDIO_TO_TEXT UTF8String]);\"}],\"type\":\"code-line\"},{\"id\":\"Y2yM2gTUVbKvOeLHZEfEN\",\"children\":[{\"text\":\" _audiotoTextField.text = [data objectForKey:@\\\"text\\\"] ;\"}],\"type\":\"code-line\"},{\"id\":\"I_1NFBjl5arnnqDs5mb9s\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"j_l2APx6W2KqwNGYNQhZL\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"},{\"id\":\"lVEy3d7HD5p5J5KHafst6\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"ae8xXIKVytW31mRXm-NE_\",\"children\":[{\"text\":\" break;\"}],\"type\":\"code-line\"},{\"id\":\"QP6w01uR_Lmg-CTR5jrRN\",\"children\":[{\"text\":\" } \"}],\"type\":\"code-line\"},{\"id\":\"OJFBQkfC0k7Kl5hLIdoaB\",\"children\":[{\"text\":\"}\\t\"}],\"type\":\"code-line\"},{\"id\":\"I_AM-ut09cihEbWiw4yZo\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"8Rygrplk7iA_BQoQknjeF\",\"children\":[{\"text\":\"Voice Message Recording\"}],\"nodeId\":\"voice-message-recording\",\"type\":\"h2\"},{\"id\":\"9hs6lw_pcHSVp_0YNrs80\",\"children\":[{\"b\":1,\"text\":\"The recording process is as follows: start recording -> stop recording -> return recording callback -> start the next recording.\"}],\"type\":\"p\"},{\"id\":\"LpsDvN6mn7CNn3CTpQ__l\",\"children\":[{\"text\":\"Specifying the maximum duration of voice message\"}],\"nodeId\":\"specifying-the-maximum-duration-of-voice-message\",\"type\":\"h3\"},{\"id\":\"w6DqKLFNfNpEHWvVVOzeW\",\"children\":[{\"text\":\"This API is used to specify the maximum duration of a voice message, which can be up to 58 seconds.\"}],\"type\":\"p\"},{\"id\":\"nwdHjDO3FZ2QnKxt0ERke\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\"function-prototype11\",\"type\":\"h4\"},{\"id\":\"RtIuNE4eeqp-8ZnJb5L8B\",\"children\":[{\"id\":\"dlsLGS26HMwefjigAC1W5\",\"children\":[{\"text\":\"-(QAVResult)SetMaxMessageLength:(int)msTime\"}],\"type\":\"code-line\"},{\"id\":\"E-WOfVIni0YXYVn53Rz7c\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"GdTuGBImK9Rqla5b8oyrT\",\"children\":[{\"id\":\"Ad9CQuhAfDQGu49EyuxoT\",\"children\":[{\"id\":\"-Er6VHr9STWxmm3IK0_zQ\",\"children\":[{\"id\":\"knPdSQa8RiZO0sKUVRUXq\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"2fxHahlKNs4s3ie_t2lg7\",\"children\":[{\"id\":\"kSD5mjqoQ_axyGQfFmLmX\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"R64qdmEy6iqACe_VEH0zk\",\"children\":[{\"id\":\"fKl3a1myCXk075eEnsSkq\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"o1djKn0pYs9oF1XUijNMc\",\"children\":[{\"id\":\"rpKLouRaauzisjE-9jhhm\",\"children\":[{\"id\":\"fs59QGXrbh9RoTZnz6ojN\",\"children\":[{\"id\":\"Nonafa-cx0h7z7S3oy-KD\",\"children\":[{\"text\":\"msTime\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"mo41mT9-0vf7L93czXXKm\",\"children\":[{\"id\":\"oJmzv_PBnDspZHar9ntkC\",\"children\":[{\"id\":\"927GyAN6QkSkFVHZm3Zf6\",\"children\":[{\"text\":\"int\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"enQCm2xPO2Y90Gx5r65Qs\",\"children\":[{\"id\":\"J-F5lV3SkgzWV8tr9oW0g\",\"children\":[{\"id\":\"HLBtKJvalU59INpttuA3u\",\"children\":[{\"text\":\"Audio duration in ms. Value range: 1000 < msTime <= 58000\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[17,11,72],\"widthMode\":\"percentage\"},{\"id\":\"Hmfw3q2CSxjExqopExvxl\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code12\",\"type\":\"h4\"},{\"children\":[{\"id\":\"rmsDxjuzsVbvJYFCFRKoK\",\"children\":[{\"text\":\"[[[ITMGContext GetInstance]GetPTT]SetMaxMessageLength:(int)msTime];\"}],\"type\":\"code-line\"},{\"id\":\"mh5i7C_V5en2WSwmFcxBs\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"id\":\"345\",\"language\":\"bash\",\"name\":\"Java\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"oD3IY0Jb87GNvvuaohE3r\",\"children\":[{\"text\":\"Starting recording\"}],\"nodeId\":\"starting-recording\",\"type\":\"h3\"},{\"id\":\"gwEvQF2xtQnY7f5lRN-di\",\"children\":[{\"text\":\"This API is used to start recording. The recording file must be uploaded first before you can perform operations such as speech-to-text conversion. \"},{\"b\":1,\"text\":\"To stop recording, call \"},{\"b\":1,\"code\":1,\"text\":\"StopRecording\"},{\"text\":\".\"}],\"type\":\"p\"},{\"id\":\"db8imbZuRRdSjaMs4syKH\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\"function-prototype12\",\"type\":\"h4\"},{\"children\":[{\"id\":\"TSMsJRNu2IB_0J2TPCBC9\",\"children\":[{\"text\":\"-(int)StartRecording:(NSString*)filePath;\"}],\"type\":\"code-line\"},{\"id\":\"Bi9uDDRAtTG9_gO1U00zF\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"id\":\"346\",\"language\":\"bash\",\"name\":\"Java\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"NVXQ2HuDfom-Y46VKfioF\",\"children\":[{\"id\":\"UsYIfBaFrt27v7jgLWVLY\",\"children\":[{\"id\":\"0r5q3QxIQG989jgqj-2lE\",\"children\":[{\"id\":\"QbT7v8ij7B3p6sVK2a0i4\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"yeun7kfhA7LqKiuOalXe8\",\"children\":[{\"id\":\"uqwZjrpttvNXIIBqTS7Nt\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"wHn5CjfJWpv3KffAqn5jh\",\"children\":[{\"id\":\"s0D-BT5EDbgNifHLDS-D6\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"wXHbr2SY-Hc4mk1h_g_AN\",\"children\":[{\"id\":\"D6CcyrGbZyPQT8ILGlGmF\",\"children\":[{\"id\":\"6YovmtEtbn6Fch3BAQJOO\",\"children\":[{\"id\":\"XgaEat7M2ictVM_om4nK7\",\"children\":[{\"text\":\"filePath\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"YVfFVkF-mjsdf_G8lQNIZ\",\"children\":[{\"id\":\"5oCDgONKyaiSXeprPLuqT\",\"children\":[{\"id\":\"MoVHMPtokeTuKHCu7oq7C\",\"children\":[{\"text\":\"NSString\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"1PLIio3pxkS_auP080oQl\",\"children\":[{\"id\":\"kLSeZoP5Ha8Dwpm6eJTZu\",\"children\":[{\"id\":\"8eB5TwOx9wPRR8qkzffZE\",\"children\":[{\"text\":\"Path of stored audio file\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[26,24,50],\"widthMode\":\"percentage\"},{\"id\":\"p2YrRZxKiY2-YAGo85FpQ\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code13\",\"type\":\"h4\"},{\"children\":[{\"id\":\"BY_XOIeKPtaD7kK6Qfczj\",\"children\":[{\"text\":\"recordfilePath =[docDir stringByAppendingFormat:@\\\"/test_%d.ptt\\\",index++];\"}],\"type\":\"code-line\"},{\"id\":\"LuzOrv-IFLgDgokIN4z2E\",\"children\":[{\"text\":\"[[[ITMGContext GetInstance]GetPTT]StartRecording:recordfilePath];\"}],\"type\":\"code-line\"},{\"id\":\"dN89W2hssw7EmoAYJJwaE\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"id\":\"347\",\"language\":\"bash\",\"name\":\"Java\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"K5Qssepi2rxMg5WAdgnKx\",\"children\":[{\"id\":\"fUOKVwEQbwg6C5nxS2J9c\",\"children\":[{\"text\":\"Stopping recording\"}],\"nodeId\":\"Stop\",\"type\":\"p\"}],\"nodeId\":\".3Ca-id.3D.22stop.22.3Estopping-recording.3C.2Fa.3E\",\"type\":\"h3\"},{\"id\":\"50AqXkTaiyEuJZOyOwZEc\",\"children\":[{\"text\":\"This API is used to stop recording. It is async, and a callback for recording completion will be returned after recording stops. A recording file will be available only after recording succeeds.\"}],\"type\":\"p\"},{\"id\":\"5Bqfd-1-8527E_XWIDKP5\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\"function-prototype13\",\"type\":\"h4\"},{\"id\":\"QrLA1Wi4YICiBvtf4Q8bj\",\"children\":[{\"id\":\"2dfUUuugSfj6JESLgN6ed\",\"children\":[{\"text\":\"-(QAVResult)StopRecording;\"}],\"type\":\"code-line\"},{\"id\":\"M8t-MoAM0VvorvsowEcfu\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"3pRTVjjbH9316-ht3xPob\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code14\",\"type\":\"h4\"},{\"id\":\"TDvaqhgg0s9u5I0p3St5U\",\"children\":[{\"id\":\"-BJiv4Hh6dVjVXREWQkw-\",\"children\":[{\"text\":\"[[[ITMGContext GetInstance]GetPTT]StopRecording];\"}],\"type\":\"code-line\"},{\"id\":\"S9iTQbDzag7qLh-WNFCXF\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"NN14V2TTUpvMZ6ZwZL__3\",\"children\":[{\"text\":\"Callback for recording start\"}],\"nodeId\":\"callback-for-recording-start\",\"type\":\"h3\"},{\"id\":\"th-k_0hmhu4kKXH0INwdF\",\"children\":[{\"text\":\"A callback will be executed through a delegate function to pass a message when recording is completed.\"}],\"type\":\"p\"},{\"id\":\"amlTCI3HGn5oyB1LX-XvB\",\"children\":[{\"b\":1,\"text\":\"To stop recording, call \"},{\"b\":1,\"code\":1,\"text\":\"StopRecording\"},{\"text\":\". The callback for recording start will be returned after the recording is stopped.\"}],\"type\":\"p\"},{\"id\":\"Eb5SEdSRJ59vo2VvAekbe\",\"children\":[{\"text\":\"The callback function \"},{\"code\":1,\"text\":\"OnEvent\"},{\"text\":\" will be called after recording is started. The event message \"},{\"code\":1,\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_RECORD_COMPLETE\"},{\"text\":\" will be returned, which will be identified in the \"},{\"code\":1,\"text\":\"OnEvent\"},{\"text\":\" function.\\nThe passed parameter includes \"},{\"code\":1,\"text\":\"result\"},{\"text\":\" and \"},{\"code\":1,\"text\":\"file_path\"},{\"text\":\".\"}],\"type\":\"p\"},{\"id\":\"CLEnmIw1RCHdxXnJ7CTL3\",\"children\":[{\"text\":\"Error codes\"}],\"nodeId\":\"error-codes2\",\"type\":\"h4\"},{\"id\":\"eAA35FmiPdH0JIe-1e3t5\",\"children\":[{\"id\":\"6zbSgDRaWJy9FIXdO16oh\",\"children\":[{\"id\":\"Y5Xnrn-Hy8IdIaowTr-Mc\",\"children\":[{\"id\":\"59mCUS0usJ-CBZjqzi2ug\",\"children\":[{\"text\":\"Error Code Value\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"6SxXnO3eM83XYl_TMWEvt\",\"children\":[{\"id\":\"bdrPJWFfD5xtgqo-FOm3Z\",\"children\":[{\"text\":\"Cause\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Nca1KwtY7Ks9BFmCsnbK5\",\"children\":[{\"id\":\"5N4dwNL_R93ysijt7HnkS\",\"children\":[{\"text\":\"Suggested Solution\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"vCd3CfB4o1-gOamrCbrdX\",\"children\":[{\"id\":\"IwhTc8QGaXLGZabarC0bd\",\"children\":[{\"id\":\"UDX0L4K2yhsKGSKJRkrVO\",\"children\":[{\"id\":\"deZ_opXpFUpg2Xzb7_paM\",\"children\":[{\"text\":\"4097\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"APng1CsD-R0Z4WJWkfnw7\",\"children\":[{\"id\":\"KIesEf-6TIihYdNeyupym\",\"children\":[{\"id\":\"PmLObnsZZimCDTT1B6bgl\",\"children\":[{\"text\":\"Parameter is empty.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"LGNeYxQsBYv1LXm_e-IOd\",\"children\":[{\"id\":\"YE191lMSUVTyH9Jf5BTld\",\"children\":[{\"id\":\"OrYIMsH4_jukHVoxZ2a7y\",\"children\":[{\"text\":\"Check whether the API parameters in the code are correct.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"ouOb8mRy0nk3Hlm57uH3S\",\"children\":[{\"id\":\"pC7CGW0jXzurroM1SC0GJ\",\"children\":[{\"id\":\"1754GmE77XQdz2xd_F-CC\",\"children\":[{\"id\":\"pllCEQv_H5I7_CJNy-4ae\",\"children\":[{\"text\":\"4098\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"QcrfztrI87e5uSlaBOCJg\",\"children\":[{\"id\":\"_cSr0jLob-tr2L_Pmlfrm\",\"children\":[{\"id\":\"PqAuxrRz6nYmysO9Fwpwz\",\"children\":[{\"text\":\"Initialization error.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"-n_g_RG5V4sVJwTDncwh9\",\"children\":[{\"id\":\"9keuU6NoXa7TSg5xW5aqF\",\"children\":[{\"id\":\"iLal_vKi3hBwckHz-YgY2\",\"children\":[{\"text\":\"Check whether the device is being used, whether the permissions are normal, and whether the initialization is normal.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"3AEXyJF1uzdl7wCwxJNTz\",\"children\":[{\"id\":\"-fb3Y9PMdXKCORR3vEeHL\",\"children\":[{\"id\":\"8g90j_k05EZTHreEGvR1d\",\"children\":[{\"id\":\"UXH3kSiyKcZ863nbPLWhZ\",\"children\":[{\"text\":\"4099\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"sejcnO-CIXuA8B-kBfg17\",\"children\":[{\"id\":\"tx8SWCs237V7KDe7KNj3-\",\"children\":[{\"id\":\"4v_1Yy0ORa_GTX7P_-gt_\",\"children\":[{\"text\":\"Recording is in progress.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"9FKFkJidtwaR-JrVAZ3gm\",\"children\":[{\"id\":\"Nh3maH-R2pmA8wbd7ufxZ\",\"children\":[{\"id\":\"5t1vniI9moVjxG-D6gq5n\",\"children\":[{\"text\":\"Ensure that the SDK recording feature is used at the right time.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"YrucTq7WaBOWescFC3ZxH\",\"children\":[{\"id\":\"bWvicQLwWKKe8aYC_5PRJ\",\"children\":[{\"id\":\"SAl4P0Vew4AUt1Qxx8ePb\",\"children\":[{\"id\":\"A9KiVz1OD0aeN4aCS5A3l\",\"children\":[{\"text\":\"4100\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"sZS05bU4-YNdTd-m-byAa\",\"children\":[{\"id\":\"a-6CygYo1fbCu_cTQPgv5\",\"children\":[{\"id\":\"b8iFXjLfKlLmXnk8yjIHJ\",\"children\":[{\"text\":\"Audio data is not captured.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"9c6ehQR3ncehnmGnE0UtQ\",\"children\":[{\"id\":\"QZTntp81CqEk1yx5D0w8P\",\"children\":[{\"id\":\"1zQy2PikRtZoLg0jcCLnS\",\"children\":[{\"text\":\"Check whether the mic is working properly.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"Ve4LS9gLiOIJ_tvHIV6Ii\",\"children\":[{\"id\":\"0iZOn67HlK2c_Xy3cEi0R\",\"children\":[{\"id\":\"C1BQ_-xAefM4sW4mxVAbT\",\"children\":[{\"id\":\"omFlmsneXyUIFkHai3U1x\",\"children\":[{\"text\":\"4101\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"gdfada01Gto3q1C36CP62\",\"children\":[{\"id\":\"425NB_42hPz_7U5aTF9eQ\",\"children\":[{\"id\":\"Qi0Id25lvC7EDBjgjEw4W\",\"children\":[{\"text\":\"An error occurred while accessing the file during recording.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"qNRk21prXLlI5kG_yyv-f\",\"children\":[{\"id\":\"78-mB5UK9HkHBdH0zcAXH\",\"children\":[{\"id\":\"Dbmw4A92A1oi455OTqi23\",\"children\":[{\"text\":\"Ensure the existence of the file and the validity of the file path.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"Har_5YGpJ4BZb9_x7MeVN\",\"children\":[{\"id\":\"hOGV8IXZ7cpOtCxzt0djI\",\"children\":[{\"id\":\"f7m8pl-VrUpVHLu4qwTPz\",\"children\":[{\"id\":\"PLCD-hPkJTuzVCaoDHTkQ\",\"children\":[{\"text\":\"4102\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"4fBkNIua7Xu-vR2ETDL9v\",\"children\":[{\"id\":\"c6PO0W_k7vm9yYZxmuOLJ\",\"children\":[{\"id\":\"VjapN83GpJ40UiKPu851h\",\"children\":[{\"text\":\"The mic is not authorized.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"FlQZnfhMN98LBqjIf0lgt\",\"children\":[{\"id\":\"Mc11hiDS2YL4T6lkBQA0k\",\"children\":[{\"id\":\"aG9W7zwKblg79M0-6LueV\",\"children\":[{\"text\":\"Mic permission is required for using the SDK. To add the permission, please see the SDK project configuration document for the corresponding engine or platform.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"JOvcXqdGUtxxgx4-XBuLs\",\"children\":[{\"id\":\"Vs6-bnIg50D2ao-58akdx\",\"children\":[{\"id\":\"kxog0ZMc1_2ShXpPuBKKm\",\"children\":[{\"id\":\"frR3u2oVX5We7HpL_L_SL\",\"children\":[{\"text\":\"4103\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"eDHGYvOeTNEpHGkMmm9it\",\"children\":[{\"id\":\"FnKHVyVZDPJOpZIGaGqwM\",\"children\":[{\"id\":\"hbQisDoBJ_S90IreRV9dL\",\"children\":[{\"text\":\"The recording duration is too short.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"q6_hyIvZQqGuJI4OLpNX3\",\"children\":[{\"id\":\"DupLanXBxWzWGE6IopaEq\",\"children\":[{\"id\":\"6rzfcL9fqNR9DLKGwJyhr\",\"children\":[{\"text\":\"The recording duration should be in ms and longer than 1,000 ms.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"5RSxGjkD21uaY3U4NpcfG\",\"children\":[{\"id\":\"ZdGn8qc2i89FnEwkqEDOV\",\"children\":[{\"id\":\"W8hjKj3v2rFqUnjRPfz_O\",\"children\":[{\"id\":\"jteLJj9jiHcaX6c4XIcXW\",\"children\":[{\"text\":\"4104\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"9DTLnmDa6L056taR5KIVf\",\"children\":[{\"id\":\"o6s6282az41HIcD1u0zVk\",\"children\":[{\"id\":\"3gPfc8TMkEQ3eYqldcA7m\",\"children\":[{\"text\":\"No recording operation is started.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"BlCjjOP7FqxRO3YYMP1NI\",\"children\":[{\"id\":\"vjfKAnGDyw2a9vTnT_EPm\",\"children\":[{\"id\":\"cetUeK6sn9LV_MlqD_N1f\",\"children\":[{\"text\":\"Check whether the recording starting API has been called.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[16,30,54],\"widthMode\":\"percentage\"},{\"id\":\"ONPUn46DwWVszEYIscCka\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code15\",\"type\":\"h4\"},{\"id\":\"5AIMkVqbU-MpuXucneGsl\",\"children\":[{\"id\":\"Wh_wtcdk1KbRyVd9BZLBv\",\"children\":[{\"text\":\"-(void)OnEvent:(ITMG_MAIN_EVENT_TYPE)eventType data:(NSDictionary *)data{\"}],\"type\":\"code-line\"},{\"id\":\"fD2hpEZgfDQEanzhC71BO\",\"children\":[{\"text\":\" NSLog(@\\\"OnEvent:%lu,data:%@\\\",(unsigned long)eventType,data);\"}],\"type\":\"code-line\"},{\"id\":\"lFeOE2hZS28e6y3-OWMjB\",\"children\":[{\"text\":\" switch (eventType) {\"}],\"type\":\"code-line\"},{\"id\":\"cFZ-PfmPzT6ojPtXD8K6x\",\"children\":[{\"text\":\" case ITMG_MAIN_EVNET_TYPE_PTT_RECORD_COMPLETE:\"}],\"type\":\"code-line\"},{\"id\":\"HllIA2Kr6BPapkWk1L62H\",\"children\":[{\"text\":\" {\"}],\"type\":\"code-line\"},{\"id\":\"1n5Qf1zAhRqzDkCAhNgcA\",\"children\":[{\"text\":\" //Recording callback\"}],\"type\":\"code-line\"},{\"id\":\"VwnJ0QM2-4YVl8nJ3rWEo\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"YCKeVfKoU2nlPl4a3U5Gi\",\"children\":[{\"text\":\" break;\"}],\"type\":\"code-line\"},{\"id\":\"fKbjaHZTILCNiDhKxfgbL\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"gCaikcnwXuqW2tzIfqZWq\",\"children\":[{\"text\":\"}\"}],\"type\":\"code-line\"},{\"id\":\"d-uhWATfKu-bdDY3tFvQh\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"dVhE6BdOOwr3y48tE22uO\",\"children\":[{\"text\":\"Pausing recording\"}],\"nodeId\":\"pausing-recording\",\"type\":\"h3\"},{\"id\":\"by2XnX4nCgFf_St1Y7DCA\",\"children\":[{\"text\":\"This API is used to pause recording. If you want to resume recording, please call the \"},{\"code\":1,\"text\":\"ResumeRecording\"},{\"text\":\" API.\"}],\"type\":\"p\"},{\"id\":\"L3Ekx3N0lkyEfsY6yGJba\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\"function-prototype14\",\"type\":\"h4\"},{\"id\":\"TjeHJMass0NhpNbQt7NmM\",\"children\":[{\"id\":\"Y715i5l8P-1WnfAcDfkIR\",\"children\":[{\"text\":\"-(int)PauseRecording;\"}],\"type\":\"code-line\"},{\"id\":\"6_FIh3PZnSgN1rQ4qNvfJ\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"tkFLPvjNpFpz5CYO0PfGV\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code16\",\"type\":\"h4\"},{\"id\":\"ipWoLkDuXfQorHjrF6mRu\",\"children\":[{\"id\":\"7UWIE9yo5KQoyftdJEXQK\",\"children\":[{\"text\":\"[[[ITMGContext GetInstance]GetPTT]PauseRecording];\"}],\"type\":\"code-line\"},{\"id\":\"rPZIhOaaGO-v8ia9jcI0O\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"XAfbCwFnvL9a9W9q5_VsN\",\"children\":[{\"text\":\"Resuming recording\"}],\"nodeId\":\"resuming-recording\",\"type\":\"h3\"},{\"id\":\"zdR-AP6Ic5PpMks58gG2a\",\"children\":[{\"text\":\"This API is used to resume recording.\"}],\"type\":\"p\"},{\"id\":\"QIalPq6dhFwPyDguY9tGP\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\"function-prototype15\",\"type\":\"h4\"},{\"id\":\"I4WiqkyFD_ZuN5iC3KMKI\",\"children\":[{\"id\":\"2mdaldaCLxlVfvq0uDBNd\",\"children\":[{\"text\":\"-(int)ResumeRecording;\"}],\"type\":\"code-line\"},{\"id\":\"16kSVXFdyGON_jy6j_GV9\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"zTEKJK9WsBR0lfLkCE44V\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code17\",\"type\":\"h4\"},{\"id\":\"3n6cDodgNPf-j7qLqz-TT\",\"children\":[{\"id\":\"2lWSj3FDjg1bCecmMUcu-\",\"children\":[{\"text\":\"[[[ITMGContext GetInstance]GetPTT]ResumeRecording];\"}],\"type\":\"code-line\"},{\"id\":\"Iy15r09Uy0VviatTJuiGF\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"tFOOe207dzb7O--FeMIpp\",\"children\":[{\"text\":\"Canceling recording\"}],\"nodeId\":\"canceling-recording\",\"type\":\"h3\"},{\"id\":\"ejnBu2aptqn77q-T9akzw\",\"children\":[{\"text\":\"This API is used to cancel recording. There is no callback after cancellation.\"}],\"type\":\"p\"},{\"id\":\"VPfgBDvS6MpgSjDFaFC0A\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\"function-prototype16\",\"type\":\"h4\"},{\"id\":\"64-faDXY9w-5QDyj8FcSi\",\"children\":[{\"id\":\"B1v-eKu5lmCNOoco-4g2z\",\"children\":[{\"text\":\"-(QAVResult)CancelRecording;\"}],\"type\":\"code-line\"},{\"id\":\"zWcOEEfrr45AE3C339nWY\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"dFnDDs8JgFE8hvfsxIjxz\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code18\",\"type\":\"h4\"},{\"id\":\"Q3oV0QduTd1bsrgLaDrii\",\"children\":[{\"id\":\"jPMrfQu1BwxqxOEWf4rhY\",\"children\":[{\"text\":\"[[[ITMGContext GetInstance]GetPTT]CancelRecording];\"}],\"type\":\"code-line\"},{\"id\":\"dFWpFgRoOGGx36UHGuhjf\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"SgWTSA58FDO-rP3D9K5TU\",\"children\":[{\"text\":\"Getting the real-time mic volume of voice message\"}],\"nodeId\":\"getting-the-real-time-mic-volume-of-voice-message\",\"type\":\"h3\"},{\"id\":\"k7UWPyBUTBPl14lnuvLWM\",\"children\":[{\"text\":\"This API is used to get the real-time mic volume. An int-type value will be returned. Value range: 0-200.\"}],\"type\":\"p\"},{\"id\":\"IAchc395S9bS_AFMMhWpE\",\"children\":[{\"id\":\"YbKpuNaOGlzxSNjeJ8JwH\",\"children\":[{\"b\":1,\"color\":\"inherit\",\"text\":\"Note: \"}],\"type\":\"p\"},{\"id\":\"To7qIEuDxIcjJhndA4M7R\",\"children\":[{\"text\":\"This API is different from the voice chat API and is in \"},{\"code\":1,\"text\":\"ITMGPTT\"},{\"text\":\".\"}],\"type\":\"p\"}],\"hintType\":\"info\",\"type\":\"hint\"},{\"id\":\"86do68ONvqGF4zk3PnIaN\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\"function-prototype17\",\"type\":\"h4\"},{\"id\":\"-IGjx9or0KQBwfAsmSdN2\",\"children\":[{\"id\":\"pfUV6f6cm0okoClvzBgPU\",\"children\":[{\"text\":\"-(QAVResult)GetMicLevel;\"}],\"type\":\"code-line\"},{\"id\":\"SJZfqB-duUMIzISViwr9m\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"Cv6gtybPzUiddUJEdAXSv\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code19\",\"type\":\"h4\"},{\"id\":\"2fXj3UyEp7T1_V7pHZKp-\",\"children\":[{\"id\":\"283W3z81eZjF-Kp0s676P\",\"children\":[{\"text\":\"[[[ITMGContext GetInstance]GetPTT]GetMicLevel];\"}],\"type\":\"code-line\"},{\"id\":\"DSSK4dmZNXV7lH21isiYJ\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"LGUbdW1qytCgWLVLnjIQ4\",\"children\":[{\"text\":\"Setting the recording volume of voice message\"}],\"nodeId\":\"setting-the-recording-volume-of-voice-message\",\"type\":\"h3\"},{\"id\":\"iprkCd9naZHLCQM6kXDde\",\"children\":[{\"text\":\"This API is used to set the recording volume of voice message. Value range: 0-200.\"}],\"type\":\"p\"},{\"id\":\"Kb-d7P2N3gdBSIUEuv4IQ\",\"children\":[{\"id\":\"sCCEhfQuy4auYAzkMG6Qe\",\"children\":[{\"b\":1,\"color\":\"inherit\",\"text\":\"Note: \"}],\"type\":\"p\"},{\"id\":\"gwLeLIbVGfIS_GLeL2sMP\",\"children\":[{\"text\":\"This API is different from the voice chat API and is in \"},{\"code\":1,\"text\":\"ITMGPTT\"},{\"text\":\".\"}],\"type\":\"p\"}],\"hintType\":\"info\",\"type\":\"hint\"},{\"id\":\"5tEwjQI2GdO3ThOdTv1iF\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\"function-prototype18\",\"type\":\"h4\"},{\"id\":\"VFMpRr-QcVMngUsbYGm8Y\",\"children\":[{\"id\":\"zEQib1zjdLUrkcdZIAVBL\",\"children\":[{\"text\":\"-(QAVResult)SetMicVolume:(int) volume;\"}],\"type\":\"code-line\"},{\"id\":\"QL8E_RsHmTM_zJXE1yWP2\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"s1UlY0hnfXTwERXiWoqpl\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code20\",\"type\":\"h4\"},{\"id\":\"xjv-hqoponEapsCeAqgwI\",\"children\":[{\"id\":\"7YUFLU-8dlbKeMEX5UQUT\",\"children\":[{\"text\":\"[[[ITMGContext GetInstance]GetPTT]SetMicVolume:100];\"}],\"type\":\"code-line\"},{\"id\":\"T-IuoPk-vjxBruSfN4j52\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"T_WWsjoBXJMBOLq8Ikk6F\",\"children\":[{\"text\":\"Getting the recording volume of voice message\"}],\"nodeId\":\"getting-the-recording-volume-of-voice-message\",\"type\":\"h3\"},{\"id\":\"iD3_LBfjLu-_8laOMhJIX\",\"children\":[{\"text\":\"This API is used to get the recording volume of voice message. An int-type value will be returned. Value range: 0-200.\"}],\"type\":\"p\"},{\"id\":\"lOmIQORqolHlZU60_Snae\",\"children\":[{\"id\":\"J8hEnVY-Jqil1PD16zueg\",\"children\":[{\"b\":1,\"color\":\"inherit\",\"text\":\"Note: \"}],\"type\":\"p\"},{\"id\":\"rUb1VhvcqdME7t8MuzKMh\",\"children\":[{\"text\":\"This API is different from the voice chat API and is in \"},{\"code\":1,\"text\":\"ITMGPTT\"},{\"text\":\".\"}],\"type\":\"p\"}],\"hintType\":\"info\",\"type\":\"hint\"},{\"id\":\"5MmEbYquDzu9ZmcoZy2ZM\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\"function-prototype19\",\"type\":\"h4\"},{\"id\":\"QIeLV2s_8XytM50vdCR5D\",\"children\":[{\"id\":\"ftfWMVdFP34cwVPEw1DV_\",\"children\":[{\"text\":\"-(int)GetMicVolume;\"}],\"type\":\"code-line\"},{\"id\":\"pO7KLjqr40WmJGKskmWoH\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"zNYUrquZ8UO0W-UFwy5wH\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code21\",\"type\":\"h4\"},{\"id\":\"gfuAmgSkKzPiu0oxl69D5\",\"children\":[{\"id\":\"b_9aAdT5pOuFkLy3Zex12\",\"children\":[{\"text\":\"[[[ITMGContext GetInstance]GetPTT]GetMicVolume];\"}],\"type\":\"code-line\"},{\"id\":\"cNE4-M737PbS_QS2b2IYg\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"0fjzN6crwMEABDkxyceE0\",\"children\":[{\"text\":\"Getting the real-time speaker volume of voice message\"}],\"nodeId\":\"getting-the-real-time-speaker-volume-of-voice-message\",\"type\":\"h3\"},{\"id\":\"tySS82ZFiJYh0lnMzGUN6\",\"children\":[{\"text\":\"This API is used to get the real-time speaker volume. An int-type value will be returned. Value range: 0-200.\"}],\"type\":\"p\"},{\"id\":\"GN4hdyGT2QfvjS_6lTShL\",\"children\":[{\"id\":\"Ik6g0yEN88jK6A9UtC2xr\",\"children\":[{\"b\":1,\"color\":\"inherit\",\"text\":\"Note: \"}],\"type\":\"p\"},{\"id\":\"XmAtCROiS9yGmHR8Dq251\",\"children\":[{\"text\":\"This API is different from the voice chat API and is in \"},{\"code\":1,\"text\":\"ITMGPTT\"},{\"text\":\".\"}],\"type\":\"p\"}],\"hintType\":\"info\",\"type\":\"hint\"},{\"id\":\"37Z5q0yTKPQJBQSAdcxvj\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\"function-prototype20\",\"type\":\"h4\"},{\"id\":\"nFfY3kb5Fo8XKcFHUZeoC\",\"children\":[{\"id\":\"gDJMHhJTLbzaGmLHwGN0t\",\"children\":[{\"text\":\"-(QAVResult)GetSpeakerLevel;\"}],\"type\":\"code-line\"},{\"id\":\"B0c1trlyw6rmVAgR9B7on\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"XnzfHGIObbzcSLVMiRwnV\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code22\",\"type\":\"h4\"},{\"id\":\"s-oNwpirNf0gKEGqvcNNL\",\"children\":[{\"id\":\"j6_h330d0InlBatYuagjO\",\"children\":[{\"text\":\"[[[ITMGContext GetInstance]GetPTT]GetSpeakerLevel];\"}],\"type\":\"code-line\"},{\"id\":\"_Qy_HgWi1lLh8G8DE_whW\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"WEa8xy_hku9i8EFOVzpnl\",\"children\":[{\"text\":\"Setting the playback volume of voice message\"}],\"nodeId\":\"setting-the-playback-volume-of-voice-message\",\"type\":\"h3\"},{\"id\":\"XE2XL2enSWlkK57qV4ogU\",\"children\":[{\"text\":\"This API is used to set the playback volume of voice messaging. Value range: 0-200.\"}],\"type\":\"p\"},{\"id\":\"jyjora68jD_pi5x7BJOCO\",\"children\":[{\"id\":\"clpvgvizk9ZFo4z4dBjpU\",\"children\":[{\"b\":1,\"color\":\"inherit\",\"text\":\"Note: \"}],\"type\":\"p\"},{\"id\":\"RmM8MAIsdm-Vk5tE2x_x2\",\"children\":[{\"text\":\"This API is different from the voice chat API and is in \"},{\"code\":1,\"text\":\"ITMGPTT\"},{\"text\":\".\"}],\"type\":\"p\"}],\"hintType\":\"info\",\"type\":\"hint\"},{\"id\":\"ujRiDIPkHeyZPhhIBzJxc\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\"function-prototype21\",\"type\":\"h4\"},{\"id\":\"OjFC1qdkfPVD4oXyIFqrq\",\"children\":[{\"id\":\"GWCN8EJ7vT0VahAG5s9rP\",\"children\":[{\"text\":\"-(QAVResult)SetSpeakerVolume:(int)volume;\"}],\"type\":\"code-line\"},{\"id\":\"gGV7j_g6YX26Op_LjGPcq\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"0_cyTo1v6N-g_q1FsHXZf\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code23\",\"type\":\"h4\"},{\"id\":\"AVLh80P_c_XZ4h5pzVfl1\",\"children\":[{\"id\":\"vPocMpMbn2GTdydYZqRKD\",\"children\":[{\"text\":\"[[[ITMGContext GetInstance]GetPTT]SetSpeakerVolume:100];\"}],\"type\":\"code-line\"},{\"id\":\"fvsJYLyeoOO1TBw-05IWj\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"Diu0lpdnsxQ8hnuXyVYKU\",\"children\":[{\"text\":\"Getting the playback volume of voice message\"}],\"nodeId\":\"getting-the-playback-volume-of-voice-message\",\"type\":\"h3\"},{\"id\":\"7eoVe3FdzHxioDA4Eujsy\",\"children\":[{\"text\":\"This API is used to get the playback volume of voice messaging. An int-type value will be returned. Value range: 0-200.\"}],\"type\":\"p\"},{\"id\":\"cDyIEYWBVO-2qQ1U5xkjG\",\"children\":[{\"id\":\"0VmSO-KRvZYoIj3avyM2M\",\"children\":[{\"b\":1,\"color\":\"inherit\",\"text\":\"Note: \"}],\"type\":\"p\"},{\"id\":\"wuwArrE9b4H6Ibd1V1iBZ\",\"children\":[{\"text\":\"This API is different from the voice chat API and is in \"},{\"code\":1,\"text\":\"ITMGPTT\"},{\"text\":\".\"}],\"type\":\"p\"}],\"hintType\":\"info\",\"type\":\"hint\"},{\"id\":\"kxRJcjAx2Vsdt4MRUpPbI\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\"function-prototype22\",\"type\":\"h4\"},{\"id\":\"9GwudA6hLg0d0zzir1FYm\",\"children\":[{\"id\":\"6ZHU9r0hv2CbFkIKAnjaE\",\"children\":[{\"text\":\"-(int)GetSpeakerVolume;\"}],\"type\":\"code-line\"},{\"id\":\"agunM_xd7M9vhUlXGGj9z\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"D3fKaglsAvHWw9sv7uzyq\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code24\",\"type\":\"h4\"},{\"id\":\"a8N9Z6fLB38pCtdmAGKZ3\",\"children\":[{\"id\":\"t4UuFLcfNc6gEp2jURF7U\",\"children\":[{\"text\":\"[[[ITMGContext GetInstance]GetPTT]GetSpeakerVolume];\"}],\"type\":\"code-line\"},{\"id\":\"6ArheX4xmOauciEKaTgmq\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"VVRTBPtnYMJWkzFUJwqZ1\",\"children\":[{\"text\":\"Voice Message Playback\"}],\"nodeId\":\"voice-message-playback\",\"type\":\"h2\"},{\"id\":\"BPcQ2wqo5HN1VAmpzf7z4\",\"children\":[{\"text\":\"Playing back audio\"}],\"nodeId\":\"playing-back-audio\",\"type\":\"h3\"},{\"id\":\"cJ4DvcwdPv0JbMxZqrE30\",\"children\":[{\"text\":\"This API is used to play back audio.\"}],\"type\":\"p\"},{\"id\":\"PDqnuXWysnpCgk9b6zujc\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\"function-prototype23\",\"type\":\"h4\"},{\"id\":\"5xUDdQSVgsBwnWJgcllgX\",\"children\":[{\"id\":\"3VYldc8vMSk3udvGwDtmj\",\"children\":[{\"text\":\"-(int)PlayRecordedFile:(NSString*)filePath;\"}],\"type\":\"code-line\"},{\"id\":\"MN9Kot7jxbg4e8hL-ASrD\",\"children\":[{\"text\":\"-(int)PlayRecordedFile:(NSString*)filePath VoiceType:(ITMG_VOICE_TYPE) type;\"}],\"type\":\"code-line\"},{\"id\":\"JkHB03mzVNxvz7r1_A_NY\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"BUI42UCb4pCBzg9K1Yb7k\",\"children\":[{\"id\":\"Ke1XruIHDBXqvTfMdv8DU\",\"children\":[{\"id\":\"pmSm1Wat8rRpMWjPfVv_2\",\"children\":[{\"id\":\"sZnWMBcVWCHY_vwnsylSG\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"A8XSG_G60wEHnlk0dO6BA\",\"children\":[{\"id\":\"SX7m13TD8Bv2fpoiYHL-0\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"dv2NXY518hMdVmntyIXPv\",\"children\":[{\"id\":\"ycwF260oOm2UT_m9P95-g\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"js3zdv_t3VexnA6BvvIAx\",\"children\":[{\"id\":\"QjAYq2MwXHYce-iH2iyzY\",\"children\":[{\"id\":\"8PXoxLgVahr1b__-x5hvC\",\"children\":[{\"id\":\"HaTBUDOCY62LP9_CW7HmE\",\"children\":[{\"text\":\"downloadFilePath\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"EDSPDxWDr40skBdMl4KPc\",\"children\":[{\"id\":\"w3ZpeWQbUw6ZOpYXJVRN3\",\"children\":[{\"id\":\"87HjaPLbEnD1cvmfXJku6\",\"children\":[{\"text\":\"NSString\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Eilb8rNRZmPayiZYg5kHV\",\"children\":[{\"id\":\"tS0SvbGwPzhpAiYu4Iv-D\",\"children\":[{\"id\":\"451r6d71Z8R7--PRTwihO\",\"children\":[{\"text\":\"Local audio file path\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"tNN6f9KDfbR-mkpqkc4rd\",\"children\":[{\"id\":\"vtT4ceymNNkFXezlSN9iS\",\"children\":[{\"id\":\"NP7rrO2t-mnqAdF8v1WE7\",\"children\":[{\"id\":\"7PRGKSwTvy1uSjGHh72P1\",\"children\":[{\"text\":\"type\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"iFkTXDv0Ws2Y9GIdzktxC\",\"children\":[{\"id\":\"D4Tz0hRBNVv-lJclMhG3h\",\"children\":[{\"id\":\"jbs2Jfm1yIPCvBpybQSVm\",\"children\":[{\"text\":\"ITMG_VOICE_TYPE\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"80T5RlI4x-WBWHxXnmZ0L\",\"children\":[{\"id\":\"hh7465oAD64SyrOyqVIZn\",\"children\":[{\"id\":\"BH4qZeLwrWjwhrnUru8iX\",\"children\":[{\"text\":\"Voice changer type. For more information, see \"},{\"id\":\"rxUh5bj3A7Bl8xhOBQ4Va\",\"children\":[{\"text\":\"Voice Changing Effects\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://intl.cloud.tencent.com/document/product/607/44995\",\"props\":{\"type\":\"link\",\"url\":\"https://intl.cloud.tencent.com/document/product/607/44995\"},\"type\":\"ref\"},{\"text\":\".\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[19,24,57],\"widthMode\":\"percentage\"},{\"id\":\"kX9JbSoUr7BiBfM2V8stW\",\"children\":[{\"text\":\"Error codes\"}],\"nodeId\":\"error-codes3\",\"type\":\"h4\"},{\"id\":\"zzQWk28SUNMxd2uv_FKjv\",\"children\":[{\"id\":\"-N1lO6R8dISPXfW8HdRzg\",\"children\":[{\"id\":\"kELu8B4imXpdY96Oq0Hbs\",\"children\":[{\"id\":\"j5Djzah62d4aRus2cYlGR\",\"children\":[{\"text\":\"Error Code Value\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"lxAOffKfl7mVQivWxVNN-\",\"children\":[{\"id\":\"dgh8DH6jgOKKKANV_RzsY\",\"children\":[{\"text\":\"Cause\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"cD0ay3SSOwF0pa4aRo48F\",\"children\":[{\"id\":\"BK0k-s18ArTDZUJBEObFw\",\"children\":[{\"text\":\"Suggested Solution\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"MkOxGYMXhnG8KrnBcLCE4\",\"children\":[{\"id\":\"EXHARfb1x3vE84DlZU4rZ\",\"children\":[{\"id\":\"eWUc7FUtxeG8yFSNqVV-a\",\"children\":[{\"id\":\"Dd7mGZaIrNVs0OIL5Pd-3\",\"children\":[{\"text\":\"20485\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"AWfM-hb7V7lW2oWooeGej\",\"children\":[{\"id\":\"4FNlm6uPb2emLr4zdQoyb\",\"children\":[{\"id\":\"RHhLpPP-w5NomnoqEnJSm\",\"children\":[{\"text\":\"Playback is not started.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"jcTUrlr4g2o6crHmUfefC\",\"children\":[{\"id\":\"eVgVMBx3FveVQywKM1jUR\",\"children\":[{\"id\":\"KhXjTMM2FW7NHOLCTlfos\",\"children\":[{\"text\":\"Ensure the existence of the file and the validity of the file path.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[19,24,57],\"widthMode\":\"percentage\"},{\"id\":\"SyWW7OyT_4D4C8iz_OOQ9\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code25\",\"type\":\"h4\"},{\"id\":\"gNbgE8euINbWYhgssHjuU\",\"children\":[{\"id\":\"YWifQfqc3yxflQTiRokE-\",\"children\":[{\"text\":\"[[[ITMGContext GetInstance]GetPTT]PlayRecordedFile:path];\"}],\"type\":\"code-line\"},{\"id\":\"9tP-6cTowOMIC_rFHwWvd\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"ZXIOF8Ybc2JceaquGA0CN\",\"children\":[{\"text\":\"Callback for audio playback\"}],\"nodeId\":\"callback-for-audio-playback\",\"type\":\"h3\"},{\"id\":\"UL8lhBhrmKXb8lMKqjd43\",\"children\":[{\"text\":\"After the audio is played back, the event message \"},{\"code\":1,\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_PLAY_COMPLETE\"},{\"text\":\" will be returned, which will be identified in the \"},{\"code\":1,\"text\":\"OnEvent\"},{\"text\":\" function.\\nThe passed parameter includes \"},{\"code\":1,\"text\":\"result\"},{\"text\":\" and \"},{\"code\":1,\"text\":\"file_path\"},{\"text\":\".\"}],\"type\":\"p\"},{\"id\":\"pIrQivOZGRbH5Js-5a4aT\",\"children\":[{\"text\":\"Error codes\"}],\"nodeId\":\"error-codes4\",\"type\":\"h4\"},{\"id\":\"sCA8VCvDzOUcMmOPfoRp5\",\"children\":[{\"id\":\"SJB98heARn-tdvA1OifBM\",\"children\":[{\"id\":\"Y62p6IwFhkj88zU5wo4ja\",\"children\":[{\"id\":\"7P10F0GV5S6rJEvAOon35\",\"children\":[{\"text\":\"Error Code Value\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Mq2vrI1bc-yLg4ioWy2nd\",\"children\":[{\"id\":\"O-yjDIeDD5OZYqTJQRx4-\",\"children\":[{\"text\":\"Cause\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"4ufY6CYOLT9OUN_qxGNVV\",\"children\":[{\"id\":\"WScA-_WSKtIHPzdyemo9F\",\"children\":[{\"text\":\"Suggested Solution\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"VhEWqCROcyIRPMAH9nCnA\",\"children\":[{\"id\":\"Y8tc4lHjT0R_513YoPf5v\",\"children\":[{\"id\":\"ADnVVynChtmKd5aig5-5q\",\"children\":[{\"id\":\"LZ3Ge5v4SNN5kjN9bwYJr\",\"children\":[{\"text\":\"20481\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"fQK3CuxVA126gn2pQgpxj\",\"children\":[{\"id\":\"U_8TXKKk4uAGPAxDk7bFH\",\"children\":[{\"id\":\"3dX7Lgditc0BkLUnkJlRq\",\"children\":[{\"text\":\"Initialization error.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"XQn0BcRKXghq2yyugC-h-\",\"children\":[{\"id\":\"Ki3VbkrJApiLd6UecgCrH\",\"children\":[{\"id\":\"i9iEWVloOcyHu6cSUY48l\",\"children\":[{\"text\":\"Check whether the device is being used, whether the permissions are normal, and whether the initialization is normal.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"sjAoUmufd8YU4pp4ONWtB\",\"children\":[{\"id\":\"hoFhUBFpY3jj7A7UVLMRZ\",\"children\":[{\"id\":\"2rNbzwe1ze_p2PYMcEKl_\",\"children\":[{\"id\":\"c2ADxK58Y3icJ2g7UI8Yn\",\"children\":[{\"text\":\"20482\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"0qTMPJjhwOIIbdQIXpUvt\",\"children\":[{\"id\":\"DIR0VlnBnUWNtSbBzIyVO\",\"children\":[{\"id\":\"cbVM6SnCBAGkfpFQ-wzM3\",\"children\":[{\"text\":\"During playback, the client tried to interrupt and play back the next one but failed (which should succeed normally).\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"C3ipcT_9SsQwt-TUQGGtJ\",\"children\":[{\"id\":\"7ngkcCy5dgtUax5xNme4j\",\"children\":[{\"id\":\"TP_qXEBzEHJ-U7kpGEoqz\",\"children\":[{\"text\":\"Check whether the code logic is correct.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"BnAuxwaOQp7U9fwQXfxPS\",\"children\":[{\"id\":\"fmD-9qj1VRsYCzlNvNfDO\",\"children\":[{\"id\":\"NimYrZ33nbkZw3dS6jO-d\",\"children\":[{\"id\":\"YKlzXomhCEyxzF_auH1F8\",\"children\":[{\"text\":\"20483\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"86oyf_Y5hfOltgZnkR31b\",\"children\":[{\"id\":\"DMS5UtscMzCF0sJpyZs69\",\"children\":[{\"id\":\"3b9DrQK4dBt5txOvO_qCl\",\"children\":[{\"text\":\"Parameter is empty.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"hZr4lsvZnMHsWt9clSw7s\",\"children\":[{\"id\":\"0B346ShUSFRHi_YbX4uEP\",\"children\":[{\"id\":\"mkLBbhCBQugLbHNQy3o2D\",\"children\":[{\"text\":\"Check whether the API parameters in the code are correct.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"dSpucj2yJraVGoJo0y4wa\",\"children\":[{\"id\":\"LzsrZ8WDvMy5vaffW-FF2\",\"children\":[{\"id\":\"xGkQazu5VklyOT4u5p7kl\",\"children\":[{\"id\":\"8zkbYX2ALviiGqr1b17NI\",\"children\":[{\"text\":\"20484\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"gRdarKH4oGWFsTOAFtClX\",\"children\":[{\"id\":\"kMoK1KT9DYxm1573Gj6nH\",\"children\":[{\"id\":\"G6MIuyUOmIJHTaYmHbeZ3\",\"children\":[{\"text\":\"Internal error.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"-8bLKkWsDyskkQIkh41FE\",\"children\":[{\"id\":\"jiDw9zzSHrNhg4-XAhwtQ\",\"children\":[{\"id\":\"rl6vGA7W0jh6fxpMmG7cn\",\"children\":[{\"text\":\"An error occurred while initializing the player. This error code is generally caused by failure in decoding, and the error should be located with the aid of logs.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[16,37,47],\"widthMode\":\"percentage\"},{\"id\":\"dmBpCDkN1l2SxPEUw9w-j\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code26\",\"type\":\"h4\"},{\"id\":\"KuWS-Sih_thX_WjbPz_IM\",\"children\":[{\"id\":\"QKVn2ooQUS-7DM2eZ6sVh\",\"children\":[{\"text\":\"-(void)OnEvent:(ITMG_MAIN_EVENT_TYPE)eventType data:(NSDictionary *)data{\"}],\"type\":\"code-line\"},{\"id\":\"e64BOi1egVgxOchHW-4Ff\",\"children\":[{\"text\":\" NSLog(@\\\"OnEvent:%lu,data:%@\\\",(unsigned long)eventType,data);\"}],\"type\":\"code-line\"},{\"id\":\"jy5KMNxVEKpzzEt1yytoz\",\"children\":[{\"text\":\" switch (eventType) {\"}],\"type\":\"code-line\"},{\"id\":\"MjBle-Yy18hrjqM3EeGGq\",\"children\":[{\"text\":\" case ITMG_MAIN_EVNET_TYPE_PTT_PLAY_COMPLETE:\"}],\"type\":\"code-line\"},{\"id\":\"gez8Bii61spA4U5qQBXI0\",\"children\":[{\"text\":\" {\"}],\"type\":\"code-line\"},{\"id\":\"VP3mzqUyEZcoATh9ZIanm\",\"children\":[{\"text\":\" // Callback for audio playback \"}],\"type\":\"code-line\"},{\"id\":\"ztLK_Dx-VYoezUCr68c_y\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"RGs-UHQ1pjDZGr4333edK\",\"children\":[{\"text\":\" break;\"}],\"type\":\"code-line\"},{\"id\":\"bwWl1ALOyw0TU9Qliv9Ny\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"zsvg0b6bpt4S2VA-fQKbV\",\"children\":[{\"text\":\"}\"}],\"type\":\"code-line\"},{\"id\":\"uo-1h4_Y-WnyQQ175v9J3\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"uy-TpnZnRbhxdsnqq5uYI\",\"children\":[{\"text\":\"Stopping audio playback\"}],\"nodeId\":\"stopping-audio-playback\",\"type\":\"h3\"},{\"id\":\"UT1UmgfT-4xYiC3ZgDuwq\",\"children\":[{\"text\":\"This API is used to stop audio playback. There will be a callback for playback completion when the playback stops.\"}],\"type\":\"p\"},{\"id\":\"eEiJB9TxZizQ1Cf3CLObH\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\"function-prototype24\",\"type\":\"h4\"},{\"id\":\"mVvumS0U5v3cUWpH77qiC\",\"children\":[{\"id\":\"ZKlLHnq9UpL0112TF_Ky4\",\"children\":[{\"text\":\"-(int)StopPlayFile;\"}],\"type\":\"code-line\"},{\"id\":\"K6V24SxCP-a9Oqenw1gVu\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"zHEFbPA2U5JEm1FVGwJfh\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code27\",\"type\":\"h4\"},{\"id\":\"GsuT2zPVZyGWaMW15fcs3\",\"children\":[{\"id\":\"c3WhJHWSmO3mnTU3il4Uu\",\"children\":[{\"text\":\"[[[ITMGContext GetInstance]GetPTT]StopPlayFile];\"}],\"type\":\"code-line\"},{\"id\":\"TrxtuL3N5gjA8HGW5K2NA\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"0G5FYKhnKc9RMQ6fqx-QD\",\"children\":[{\"text\":\"Getting audio file size\"}],\"nodeId\":\"getting-audio-file-size\",\"type\":\"h3\"},{\"id\":\"635mQo4cgEDX33g5xNWWM\",\"children\":[{\"text\":\"This API is used to get the size of an audio file.\"}],\"type\":\"p\"},{\"id\":\"lsCAd7QfgM4jjbFBgbHrP\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\"function-prototype25\",\"type\":\"h4\"},{\"id\":\"7aiboIijAKaIykOMATphk\",\"children\":[{\"id\":\"8dfueb-IkzDEeZ_x4eew0\",\"children\":[{\"text\":\"-(int)GetFileSize:(NSString*)filePath;\"}],\"type\":\"code-line\"},{\"id\":\"dtPJx2SkJdX48GyW133SH\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"7ubILV_H9Ai20n80ZVcNg\",\"children\":[{\"id\":\"3jGMXFVq_Kk0JCKn9TRx_\",\"children\":[{\"id\":\"qAZhYMmmjerFLUs6oqKq_\",\"children\":[{\"id\":\"2PJy_kJcZR2vVtz2MO7g2\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"LO7gKY3cEVF1aR8HAhSCp\",\"children\":[{\"id\":\"I9oZicypAU3SWxEp1GS-_\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"QLT6agrb23-LvtT994azU\",\"children\":[{\"id\":\"opWz_YWmbf-Ow2n5VnpR_\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"4lpplEVocLvJTtgpRLhsC\",\"children\":[{\"id\":\"aLA1NMwV_YsxE6V1ckLHP\",\"children\":[{\"id\":\"Z8KT63gdUoyqMk22dq4b0\",\"children\":[{\"id\":\"1KacUdWjJlzzDTfZWXVpb\",\"children\":[{\"text\":\"filePath\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ZjbeGRz-1kf8r-uBuUnPj\",\"children\":[{\"id\":\"BnPqXAgd5Dayi-nowWMlQ\",\"children\":[{\"id\":\"ha186skn5Gk20e0isNhFw\",\"children\":[{\"text\":\"NSString\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"CdYeaUPKnLb2rYQejT7XT\",\"children\":[{\"id\":\"g0WS9BlEhpcbsT-Nl-qrE\",\"children\":[{\"id\":\"J5iZFCJOnik0EJAbvsR_h\",\"children\":[{\"text\":\"Path of audio file, which is a local path.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[21,19,60],\"widthMode\":\"percentage\"},{\"id\":\"c1dL7u0B1ku5iZnkXEqjk\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code28\",\"type\":\"h4\"},{\"id\":\"3fN7pNM8_xQWCwamsJVfs\",\"children\":[{\"id\":\"dsWiBIJrZ2eiArqEzu2_n\",\"children\":[{\"text\":\"[[[ITMGContext GetInstance]GetPTT]GetFileSize:path];\"}],\"type\":\"code-line\"},{\"id\":\"ATKdPS5uq1YSrCKNVYGhh\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"kVCNM22cT-JZA3lYpTlSI\",\"children\":[{\"text\":\"Getting audio file duration\"}],\"nodeId\":\"getting-audio-file-duration\",\"type\":\"h3\"},{\"id\":\"4LGBMIzY_eTnQHJ1KOFkr\",\"children\":[{\"text\":\"This API is used to get the duration of an audio file in milliseconds.\"}],\"type\":\"p\"},{\"id\":\"NxjSHs-qCnBMTe6bFQusa\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\"function-prototype26\",\"type\":\"h4\"},{\"id\":\"sNziyfpu5BRMxF4YQtrK2\",\"children\":[{\"id\":\"tDN304-sYJIYuYkTRGR8f\",\"children\":[{\"text\":\"-(int)GetVoiceFileDuration:(NSString*)filePath;\"}],\"type\":\"code-line\"},{\"id\":\"vmy0QFh5679MFLhViucNM\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"6ce4wew8ZzCePjKdoOCWa\",\"children\":[{\"id\":\"_qX-wl8mbE_o_8iiHtYnZ\",\"children\":[{\"id\":\"Vc6uqnb59qgIVDQL6z3_j\",\"children\":[{\"id\":\"5-v7cNSrDFYjca8_PjoQS\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"9CUVSbpExwQTkCyMQBDcp\",\"children\":[{\"id\":\"8NgvUYTR5ak4tazjnuNgX\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"iD05zGHygPxX535sdjtL0\",\"children\":[{\"id\":\"5eoM8qr9rvr31kd1_n1m1\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"yucaYbxHgI-RIscaftMhc\",\"children\":[{\"id\":\"Ae2aFXD3Yy6NEYSCmu2Or\",\"children\":[{\"id\":\"7Zy-9RsO05NDJJ1nyMeb-\",\"children\":[{\"id\":\"ZJzB483OkRvf9OywlSJUr\",\"children\":[{\"text\":\"filePath\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"P9dyZ67pDe7jRqYSdFj74\",\"children\":[{\"id\":\"5kCnWiBaZBC5-rZD674hN\",\"children\":[{\"id\":\"Ow1f9xVRxU-KyhTJXoHTe\",\"children\":[{\"text\":\"NSString\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"CIGLiQPdYpgSrw6LzlkgV\",\"children\":[{\"id\":\"VRweO6GVDfR61HeGC5Nsk\",\"children\":[{\"id\":\"bwtyIEo-LXtHDVadzs2Gy\",\"children\":[{\"text\":\"Path of audio file, which is a local path.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[21,19,60],\"widthMode\":\"percentage\"},{\"id\":\"-kYsztoIS6aBqxSRYaFLw\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code29\",\"type\":\"h4\"},{\"id\":\"-oRBunKRNWE64uNz_SwFM\",\"children\":[{\"id\":\"KxQ4ApGvNgrUt0LWy_JTO\",\"children\":[{\"text\":\"[[[ITMGContext GetInstance]GetPTT]GetVoiceFileDuration:path];\"}],\"type\":\"code-line\"},{\"id\":\"3IJFGZ8THuLYJS_sPCKNW\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"WuMzbOBB-L2yqqth2GQD2\",\"children\":[{\"text\":\"Voice Message Upload and Download\"}],\"nodeId\":\"voice-message-upload-and-download\",\"type\":\"h2\"},{\"id\":\"6lCkhsbDjSQggrrJElZJX\",\"children\":[{\"text\":\"Uploading an audio file\"}],\"nodeId\":\"uploading-an-audio-file\",\"type\":\"h3\"},{\"id\":\"hteC-rRj9KrVQecHgWgcd\",\"children\":[{\"text\":\"This API is used to upload an audio file.\"}],\"type\":\"p\"},{\"id\":\"mQEyWfSpKaP_XxJOM1xxs\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\"function-prototype27\",\"type\":\"h4\"},{\"id\":\"R5yzUYjpf6lz9gOZpeeq9\",\"children\":[{\"id\":\"xDS7KvamsCh9DLSib7zDQ\",\"children\":[{\"text\":\"-(void)UploadRecordedFile:(NSString*)filePath;\"}],\"type\":\"code-line\"},{\"id\":\"k24_IRySdF-2GfVqLdDRb\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"R-WquQyG83T2av2jlfzfE\",\"children\":[{\"id\":\"ZgErPJHzzOrNG9Ic1ssnB\",\"children\":[{\"id\":\"Zjt0gwYZAPe9mYN4Lib2Y\",\"children\":[{\"id\":\"GvHFvjr5HZJxAjxwEoiV0\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"0-igPl3vmftUquHTWMWqr\",\"children\":[{\"id\":\"lwYQHE6L7fp9hH_4LdZ8y\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"9GwD3mCzjQBQMSKiUy5SJ\",\"children\":[{\"id\":\"PegAMhtlvkWWUhpjPjN-2\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"k2pNs8mCKm7OccD8yoDaW\",\"children\":[{\"id\":\"I-ZUAsUiHtDs9qLeQAj12\",\"children\":[{\"id\":\"llagSR52FqlzYFIF6O7fW\",\"children\":[{\"id\":\"qE7cwHxVD0dKTssYUxO5m\",\"children\":[{\"text\":\"filePath\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"IoEYDlCgFH--A-Tm4j4-o\",\"children\":[{\"id\":\"MJSl20BQfTEgp78ZJW7-6\",\"children\":[{\"id\":\"VKLEox1YCz31MQTnyrAHZ\",\"children\":[{\"text\":\"NSString\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"6elUAqWPinUTB64GVz4Au\",\"children\":[{\"id\":\"iuRbdTd-zHNkutUrXGKMK\",\"children\":[{\"id\":\"Dukw0phvVL9nAS2M5hjFM\",\"children\":[{\"text\":\"Path of uploaded audio file, which is a local path.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[18,16,66],\"widthMode\":\"percentage\"},{\"id\":\"DvMZznM65hBvAW4Ay2w4e\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code30\",\"type\":\"h4\"},{\"id\":\"B1Ywgt5J70ZiuGgcXhNZ3\",\"children\":[{\"id\":\"7uMNcV9kQONN8p_L6neaJ\",\"children\":[{\"text\":\"[[[ITMGContext GetInstance]GetPTT]UploadRecordedFile:path];\"}],\"type\":\"code-line\"},{\"id\":\"hXC2UZZDBAWqfjFM6y2jb\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"NkqN7fnNnUGyLIlsAR3yu\",\"children\":[{\"text\":\"Callback for audio file upload completion\"}],\"nodeId\":\"callback-for-audio-file-upload-completion\",\"type\":\"h3\"},{\"id\":\"3m29Nb2PHj7-trnRvHxKH\",\"children\":[{\"text\":\"After the audio file is uploaded, the event message \"},{\"code\":1,\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_UPLOAD_COMPLETE\"},{\"text\":\" will be returned, which will be identified in the \"},{\"code\":1,\"text\":\"OnEvent\"},{\"text\":\" function.\\nThe passed parameters include \"},{\"code\":1,\"text\":\"result\"},{\"text\":\", \"},{\"code\":1,\"text\":\"file_path\"},{\"text\":\", and \"},{\"code\":1,\"text\":\"file_id\"},{\"text\":\".\"}],\"type\":\"p\"},{\"id\":\"jtI6ZYxKCji262xsv_JpQ\",\"children\":[{\"text\":\"Error codes\"}],\"nodeId\":\"error-codes5\",\"type\":\"h4\"},{\"id\":\"0TLa585BS68BF4XOuGfIG\",\"children\":[{\"id\":\"p2FMB4Tfl0x6imJ2YkK-X\",\"children\":[{\"id\":\"PZ-nT0UpruS_vaZ7tXZQn\",\"children\":[{\"id\":\"FuWcwswujGDOfH4dhirmD\",\"children\":[{\"text\":\"Error Code Value\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"lkPdb411FEOmgJHmSQRP_\",\"children\":[{\"id\":\"2gXAP9zigGHNief9mpyhx\",\"children\":[{\"text\":\"Cause\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"dt9HIFbYwioAP9nm5tAe2\",\"children\":[{\"id\":\"vhBDIH7V47pWNelQbF2Yh\",\"children\":[{\"text\":\"Suggested Solution\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"hFdA9U_b5PhsJvu1VCiXW\",\"children\":[{\"id\":\"16-QuMAqYp0eTJIGetsO_\",\"children\":[{\"id\":\"zTn6Os_vupolZr_DPBY2i\",\"children\":[{\"id\":\"HrqExpZzuN4WgeTZqHgh_\",\"children\":[{\"text\":\"8193\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"VJH9aNyniVfLdOSBq1Lvf\",\"children\":[{\"id\":\"GJ-8tWQoWjE6xOMSsXgcQ\",\"children\":[{\"id\":\"ptCJD5rOHmQqrxD36nc0E\",\"children\":[{\"text\":\"An error occurred while accessing the file during upload.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"bu5q_1nNm8ZmmDQbeg568\",\"children\":[{\"id\":\"pPU_RIRFDPRCtWs4UD_5I\",\"children\":[{\"id\":\"kwaRG1izh3apG19ENNm5L\",\"children\":[{\"text\":\"Ensure the existence of the file and the validity of the file path.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"TELx3SJCco3X9wUXXOaT3\",\"children\":[{\"id\":\"Kl8ahDbozZup5T46qBO_H\",\"children\":[{\"id\":\"q2CgPrh-6ZiGn5CxRhFEV\",\"children\":[{\"id\":\"TPSrPGIhJu6oMA5wsJn1d\",\"children\":[{\"text\":\"8194\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"P93XCCEtPNNg-Z8I3FgDc\",\"children\":[{\"id\":\"jPf1vBFe6TW8AmAOoLpuM\",\"children\":[{\"id\":\"SlUHluHoC1CEbsJBTDWj6\",\"children\":[{\"text\":\"Signature verification failed.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ijEk1kYPySvn9MdGqeyIW\",\"children\":[{\"id\":\"Lnr9svQATP9lGxY3XFvsR\",\"children\":[{\"id\":\"mVMS8YYhtViIEZgcUo3T2\",\"children\":[{\"text\":\"Check whether the authentication key is correct and whether the voice message and speech-to-text feature is initialized.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"DcqqDa5ZCwlYmOg6KZhBK\",\"children\":[{\"id\":\"q8JXd04XgX-XmW-mVu7jn\",\"children\":[{\"id\":\"z01xw5sjeI3lbIBm-pu9f\",\"children\":[{\"id\":\"QcPu6-yhsv6iyvUsyyRdJ\",\"children\":[{\"text\":\"8195\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"1y_2J6PBGpChJcySxjgtQ\",\"children\":[{\"id\":\"Ytk1fDx0uk7kf0GVa2K7j\",\"children\":[{\"id\":\"GsqpH7YQNxe-LuKp6Fzup\",\"children\":[{\"text\":\"A network error occurred.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"31PfUz-EL7vgMx25M3LpH\",\"children\":[{\"id\":\"2DOZQ1ZP5gD9d0n-Z41Lp\",\"children\":[{\"id\":\"FziXeaSpg1R9Cg8uQNQ57\",\"children\":[{\"text\":\"Check whether the device can access the internet.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"PRVImRT6Ee4hKi0RcBmQg\",\"children\":[{\"id\":\"0JpMnqGpXonMOhpg5uh7f\",\"children\":[{\"id\":\"PdP4UF4dxyrDqBfZP3BHG\",\"children\":[{\"id\":\"pgphu6IeE_UxrK_s4a3yw\",\"children\":[{\"text\":\"8196\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"CmveWBAs_1QtMZuyX2qG4\",\"children\":[{\"id\":\"bh9K_IEa6iQtSkgVvGQJ-\",\"children\":[{\"id\":\"1skxR66U3_qRIPmudxOTh\",\"children\":[{\"text\":\"The network failed while getting the upload parameters.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"dgsrFB5RU1dwj9zOVfYH8\",\"children\":[{\"id\":\"np29yJPgQhMCMsY6JM_uf\",\"children\":[{\"id\":\"FgQC2Lqt4BWHmDsQa_-BD\",\"children\":[{\"text\":\"Check whether the authentication is correct and whether the device can access the internet.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"kdLW6hPFxDqbgecJjCB3X\",\"children\":[{\"id\":\"vOV1Wf6463pXdtQmmNxeU\",\"children\":[{\"id\":\"xEva7Np8YuWCXgJDZ44rx\",\"children\":[{\"id\":\"8JM0UAoq1fWWc6kMevWLR\",\"children\":[{\"text\":\"8197\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Bn8slN0_WuONP9jZ-Pt4M\",\"children\":[{\"id\":\"kzRjJ6krX0SeR-cZs7IUW\",\"children\":[{\"id\":\"3SoG-CXfGs554qGnY5o1T\",\"children\":[{\"text\":\"The packet returned during the process of getting the upload parameters is empty.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"2LQZUcgdE4GoYiLF4IxJa\",\"children\":[{\"id\":\"CH25N_weNz4LZolAAltaf\",\"children\":[{\"id\":\"1cyUM3XFMqFXv4VX-HKVD\",\"children\":[{\"text\":\"Check whether the authentication is correct and whether the device network can normally access the internet.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"mz4nGpNY395aig5mT1fox\",\"children\":[{\"id\":\"Q2c98M5mrAL6NlQcF5Ix8\",\"children\":[{\"id\":\"Q46kitjijLOMLzGZlgOEa\",\"children\":[{\"id\":\"F5odb-f8BNLsAsXjqUquj\",\"children\":[{\"text\":\"8198\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ThZweaFLHCcz9RD0CuWB4\",\"children\":[{\"id\":\"nTy5Zc9BMz05SPSmkcBAF\",\"children\":[{\"id\":\"Ylrg_ff7uZU4hEpgbq5vN\",\"children\":[{\"text\":\"Failed to decode the packet returned during the process of getting the upload parameters.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"-ArlEDEr6dLyg0tC27qBN\",\"children\":[{\"id\":\"mesYjWs1OC2VeX-1JtlJf\",\"children\":[{\"id\":\"1UB_3Ka5paHqyzn0ZQiMS\",\"children\":[{\"text\":\"Check whether the authentication is correct and whether the device can access the internet.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"1ZIopZ12gNdnJU6J316or\",\"children\":[{\"id\":\"r7rjywAkTnU1DCkCK7drd\",\"children\":[{\"id\":\"viFARa-knGq7xVv6bkAmJ\",\"children\":[{\"id\":\"iG-iRquyz3tT0XBgOCWxG\",\"children\":[{\"text\":\"8200\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"H7p7YreF6ikVArwZUYjiQ\",\"children\":[{\"id\":\"rg9ZzUZhfy6EF6cyH5pGt\",\"children\":[{\"id\":\"DAnnbB8mQjOJKIyYZMmZb\",\"children\":[{\"text\":\"No \"},{\"code\":1,\"text\":\"appinfo\"},{\"text\":\" is set.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"9_p0DQDbWrhyYO5iLSnoF\",\"children\":[{\"id\":\"O_2hetXeooguqmFgJinKV\",\"children\":[{\"id\":\"1ohn_04H0buSlriPFZF8c\",\"children\":[{\"text\":\"Check whether the \"},{\"code\":1,\"text\":\"apply\"},{\"text\":\" API is called or whether the input parameters are empty.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[15,37,48],\"widthMode\":\"percentage\"},{\"id\":\"iKs7lFiNHsaZ07tNxY24Q\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code31\",\"type\":\"h4\"},{\"id\":\"AlLAtHp90BcTK1nIFkZgw\",\"children\":[{\"id\":\"R2x7INIT5zahiK11dYksX\",\"children\":[{\"text\":\"-(void)OnEvent:(ITMG_MAIN_EVENT_TYPE)eventType data:(NSDictionary *)data{\"}],\"type\":\"code-line\"},{\"id\":\"YqiVWQizZbCUG3H4m3KCV\",\"children\":[{\"text\":\" NSLog(@\\\"OnEvent:%lu,data:%@\\\",(unsigned long)eventType,data);\"}],\"type\":\"code-line\"},{\"id\":\"BvSKP3oDbMbnjKprZN8MH\",\"children\":[{\"text\":\" switch (eventType) {\"}],\"type\":\"code-line\"},{\"id\":\"Yoq2vb9OLfr5wgNGj_dBp\",\"children\":[{\"text\":\" case ITMG_MAIN_EVNET_TYPE_PTT_UPLOAD_COMPLETE:\"}],\"type\":\"code-line\"},{\"id\":\"jZxU2VXpYyskyRjg15NsI\",\"children\":[{\"text\":\" {\"}],\"type\":\"code-line\"},{\"id\":\"_AjD23pYZl8V3Id8anDH8\",\"children\":[{\"text\":\" if (data != NULL &&[[data objectForKey:@\\\"result\\\"] intValue]== 0)\"}],\"type\":\"code-line\"},{\"id\":\"BETJ4LNMhXT9MCnoW0kYm\",\"children\":[{\"text\":\" {\"}],\"type\":\"code-line\"},{\"id\":\"olEJlAVMoGdJaQs00ZBL3\",\"children\":[{\"text\":\" _donwloadUrlField.text = [data objectForKey:@\\\"file_id\\\"] ;\"}],\"type\":\"code-line\"},{\"id\":\"2zJZB3fzCYgCGmXJV8fHb\",\"children\":[{\"text\":\" donwLoadUrlPath = [data objectForKey:@\\\"file_id\\\"] ;\"}],\"type\":\"code-line\"},{\"id\":\"9Seqhc2vJHWESU7xcEog9\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"yU_LpmW5UYAOpEHd6JpM3\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"YSFImWJl5uv7KhMEoQumu\",\"children\":[{\"text\":\" break;\"}],\"type\":\"code-line\"},{\"id\":\"1rbBZ-qvU89DMVoO3o1Vj\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"uu8_5_jsVqcUxKfFmKePJ\",\"children\":[{\"text\":\"}\"}],\"type\":\"code-line\"},{\"id\":\"5voXtbMWwgujuBaOts3GC\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"nM1H62RVnJeZuKzZdExKF\",\"children\":[{\"text\":\"Downloading the audio file\"}],\"nodeId\":\"downloading-the-audio-file\",\"type\":\"h3\"},{\"id\":\"Bj2YwKaESWVL_jDpMZK54\",\"children\":[{\"text\":\"This API is used to download an audio file.\"}],\"type\":\"p\"},{\"id\":\"eHnum8i9xps6J2R4FoCEm\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\"function-prototype28\",\"type\":\"h4\"},{\"id\":\"ZcuQKfdRsXLqAQd6FvR1x\",\"children\":[{\"id\":\"wMYL1AjK6nEShjEpjf3jp\",\"children\":[{\"text\":\"-(void)DownloadRecordedFile:(NSString*)fileId downloadFilePath:(NSString*)downloadFilePath \"}],\"type\":\"code-line\"},{\"id\":\"v4_NLHHu2Wdy-ib2Z4qP7\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"rod3-t5_c018TlI8INhdh\",\"children\":[{\"id\":\"x6kGFxiwUgjtFE2b6HBwZ\",\"children\":[{\"id\":\"LaPLLYNjg_IBFQsbvK4-x\",\"children\":[{\"id\":\"JfccDqa8Uj_SCqRI_R-nI\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"o0hbsZXIAw6eSf31M7xxt\",\"children\":[{\"id\":\"LOgIDa_RXC007-PY7JQkV\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Vnm129JgaQzT2uSv1aa2J\",\"children\":[{\"id\":\"cZMtK-rwY-KeEZP3uEYF2\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"O6haLcufXUPI6b1-ohBur\",\"children\":[{\"id\":\"N3fcK6jKY-GB6ENFu4_XN\",\"children\":[{\"id\":\"LSYTUrIrOIrxmy3B_NMQi\",\"children\":[{\"id\":\"NtmEpHhzV7p2HrD0Gym7x\",\"children\":[{\"text\":\"fileID\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"D3C-n14wM2nTYt3nLMa6-\",\"children\":[{\"id\":\"cxGt2wR_m3B0L-EMIpUES\",\"children\":[{\"id\":\"Suu62i9RNeKnoZAdjjJ66\",\"children\":[{\"text\":\"NSString\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"SSzhUP2twwLjlYD8LKSz4\",\"children\":[{\"id\":\"z6rTGy4qhUW6IGm0CkOeg\",\"children\":[{\"id\":\"_KZjv8lUDseC_AAZGMMyM\",\"children\":[{\"text\":\"File URL path\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"B05NYOmFgYoK4hSfJS73R\",\"children\":[{\"id\":\"ddwMqsTg6JVSl7XSsQoSR\",\"children\":[{\"id\":\"yxcfDbvpvV2m3gwas4I1F\",\"children\":[{\"id\":\"bB68IkidOv8nbcd-EIFCS\",\"children\":[{\"text\":\"downloadFilePath\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"gfNjPipl1BjueolyIdjtG\",\"children\":[{\"id\":\"vDhMs5dTF2I38BLbkT1C4\",\"children\":[{\"id\":\"Ol_68N7pOYObTl151ljmW\",\"children\":[{\"text\":\"NSString\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"EJXTU7hO2UXYzkN4HvJcQ\",\"children\":[{\"id\":\"1mm8spCExCNLDPTpF9rSV\",\"children\":[{\"id\":\"1Qbvjiro1tAA-Dhl2X55t\",\"children\":[{\"text\":\"Local path of saved file\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[35,21,44],\"widthMode\":\"percentage\"},{\"id\":\"uguwsDMbWakF4-_sj06Dc\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code32\",\"type\":\"h4\"},{\"id\":\"v_-XInYMte3fGDvpr3qLb\",\"children\":[{\"id\":\"PYdTBwKkf6R6_o2P7Q3z5\",\"children\":[{\"text\":\"[[[ITMGContext GetInstance]GetPTT]DownloadRecordedFile:fileIdpath downloadFilePath:path];\"}],\"type\":\"code-line\"},{\"id\":\"BwteDZWqep4lxMCO_lWd-\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"y5LJr9-cNxi3DKwEcisP4\",\"children\":[{\"text\":\"Callback for audio file download completion\"}],\"nodeId\":\"callback-for-audio-file-download-completion\",\"type\":\"h3\"},{\"id\":\"GPUyENEDF44bbSxIFHQNA\",\"children\":[{\"text\":\"After the audio file is downloaded, the event message \"},{\"code\":1,\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_DOWNLOAD_COMPLETE\"},{\"text\":\" will be returned, which will be identified in the \"},{\"code\":1,\"text\":\"OnEvent\"},{\"text\":\" function.\\nThe passed parameters include \"},{\"code\":1,\"text\":\"result\"},{\"text\":\", \"},{\"code\":1,\"text\":\"file_path\"},{\"text\":\", and \"},{\"code\":1,\"text\":\"file_id\"},{\"text\":\".\"}],\"type\":\"p\"},{\"id\":\"3DFerBUYu0OYsocvQh_wv\",\"children\":[{\"text\":\"Error codes\"}],\"nodeId\":\"error-codes6\",\"type\":\"h4\"},{\"id\":\"lqjK0gm5khSUPQq_nO_q9\",\"children\":[{\"id\":\"pYMg8orL9zdxH5xoHzVVu\",\"children\":[{\"id\":\"l7vshmFWtqBJ4C7joFdJv\",\"children\":[{\"id\":\"M-nWvsuU_oNX7R1qTL-_Z\",\"children\":[{\"text\":\"Error Code Value\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"XuHb2I0SX7HbUksi4e7Uw\",\"children\":[{\"id\":\"L1TOhT3fHFpCiGuo6njWI\",\"children\":[{\"text\":\"Cause\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"JRFAqFX7eUcwYmzUWVq_G\",\"children\":[{\"id\":\"W8NUFYxWfTiD9sBZw33Zn\",\"children\":[{\"text\":\"Suggested Solution\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"8Ge6JxP_Cr1IKWCnvFWTl\",\"children\":[{\"id\":\"Ka7WiCRUZJpuhx4sTSK8Q\",\"children\":[{\"id\":\"bGTghnN1QZ35RKdljevPO\",\"children\":[{\"id\":\"26jmcrlX8n_VKvPLdr3EL\",\"children\":[{\"text\":\"12289\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"NoABU6AlZ2TgONFjj9yqr\",\"children\":[{\"id\":\"GgBe40l2fATVGnGd8a4xQ\",\"children\":[{\"id\":\"ls0UBIMuJJfV9hGAjJD-A\",\"children\":[{\"text\":\"An error occurred while accessing the file during download.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"XycfLq3Aa-114HFsTz9k5\",\"children\":[{\"id\":\"95v74fkGRL321PZI8COcY\",\"children\":[{\"id\":\"3DhRosjHI4WvAVh6NmUDJ\",\"children\":[{\"text\":\"Check whether the file path is valid.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"f6NBcOlBC9Klq4eoPjTso\",\"children\":[{\"id\":\"0Lc_bM-LA9nkRQZkxxuZW\",\"children\":[{\"id\":\"DBr0ODibvnhWysUajeHz5\",\"children\":[{\"id\":\"OVAUuL8dB2o9uSKeCIIhU\",\"children\":[{\"text\":\"12290\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"so0jUiSBEGd4Psn1sqz8L\",\"children\":[{\"id\":\"eJu69h_8ddlxhU_23fYy5\",\"children\":[{\"id\":\"Vn2jzaxOTkkjLl_sapQVZ\",\"children\":[{\"text\":\"Signature verification failed.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"W0rVnrfVDg2JKCV3dOTZH\",\"children\":[{\"id\":\"zZ_yVlufCfMMunN41r04t\",\"children\":[{\"id\":\"FfrvVd0kMrLHc-a9y7E9L\",\"children\":[{\"text\":\"Check whether the authentication key is correct and whether the voice message and speech-to-text feature is initialized.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"pIaFtd1yWHIV53iwmD-eZ\",\"children\":[{\"id\":\"Ae4fgEppGM02NIlwkxurj\",\"children\":[{\"id\":\"NzSpGxNFN8sGTw7uCSIAn\",\"children\":[{\"id\":\"0eHxX3E0tmsjPkye9n4xH\",\"children\":[{\"text\":\"12291\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"oSfXqajhZACB4WAg2Eplv\",\"children\":[{\"id\":\"WUs0P1I9ahXW3Vc70oiFO\",\"children\":[{\"id\":\"hkFbt3KG4OB6CsvdEnK0w\",\"children\":[{\"text\":\"Network storage system exception\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"YVxU6dZw2upQFAZLiFBI9\",\"children\":[{\"id\":\"TM7huHfU41hlwVxr6QIh1\",\"children\":[{\"id\":\"_f_o3gB9kptvBTp58_V48\",\"children\":[{\"text\":\"The server failed to get the audio file. Check whether the API parameter \"},{\"code\":1,\"text\":\"fileid\"},{\"text\":\" is correct, whether the network is normal, and whether the file exists in COS.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"XzImy4hCUjhDrGdFWiQls\",\"children\":[{\"id\":\"O10pYJqZgsOfEuSs4Ujau\",\"children\":[{\"id\":\"s-FBgmIgWejTBPs_ck3ZU\",\"children\":[{\"id\":\"72PArRUFhrz7UOXMr4GDC\",\"children\":[{\"text\":\"12292\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ApogP6kpmTPRu9o8xaLIh\",\"children\":[{\"id\":\"9VaumKd7dewLr2jLq4rkp\",\"children\":[{\"id\":\"bt3Ybdox0Vz4PQqlotE1m\",\"children\":[{\"text\":\"Server file system error.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"R9X9jTfJo8br7SPphTIw4\",\"children\":[{\"id\":\"d35siG_jJKkTT7wXamHCN\",\"children\":[{\"id\":\"0of4sMztioN9BejY_gFLC\",\"children\":[{\"text\":\"Check whether the device can access the internet and whether the file exists on the server.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"juNk_XG-TGF6-jGDHLPCj\",\"children\":[{\"id\":\"o0XGU2m3srd2Z6TN4km6x\",\"children\":[{\"id\":\"IJmXeEqOlyUxsj0Ch5eai\",\"children\":[{\"id\":\"0hXkFNWdFhhq5dUjXC3iP\",\"children\":[{\"text\":\"12293\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"pquXObFjL-YUQYyoYEa_D\",\"children\":[{\"id\":\"o-aWNH9xbK8UZfs58vfla\",\"children\":[{\"id\":\"C5RwxanXR2DW7xdnaS64S\",\"children\":[{\"text\":\"The HTTP network failed during the process of getting the download parameters.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"O4bhsgQ_-KzFrARDvyxH0\",\"children\":[{\"id\":\"SdhHi5cwVIirAlj5BYXQF\",\"children\":[{\"id\":\"j2xWKUzcOLY3z_Z025V_b\",\"children\":[{\"text\":\"Check whether the device can access the internet.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"2mok6Z2tHSdfsu3A-eF5i\",\"children\":[{\"id\":\"05WVYRNfN99V722bZqg1s\",\"children\":[{\"id\":\"Gk8mvW2bjeqKvN5lgIqXq\",\"children\":[{\"id\":\"NNz42pG90i0J6Q933WZ2U\",\"children\":[{\"text\":\"12294\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"-aqC1DRyTvhRaCc92gT8H\",\"children\":[{\"id\":\"r-SHDtEzU2vEeI-12b0lV\",\"children\":[{\"id\":\"SPBsPyc7gyziHg55hh18g\",\"children\":[{\"text\":\"The packet returned during the process of getting the download parameters is empty.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"fzG1ZKSPf_6Ai19SeGw1j\",\"children\":[{\"id\":\"0G-MDZ_ByEieg45gTtZoM\",\"children\":[{\"id\":\"9rNq-XQn8Mq2t40Rihv0f\",\"children\":[{\"text\":\"Check whether the device can access the internet.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"ILedZbxRE6JaI4MpnAbx3\",\"children\":[{\"id\":\"kuROEljubwJFoiQw4V709\",\"children\":[{\"id\":\"uOqurM0dZjTP3XnUrgYJB\",\"children\":[{\"id\":\"Ih6hSsNdbwWQp_WcUUU6r\",\"children\":[{\"text\":\"12295\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"4gA7tbCqRnFLuCyXjqa4D\",\"children\":[{\"id\":\"LVjjZEoNx9wrrFEf13_hE\",\"children\":[{\"id\":\"wpgjYdrqOUK2nSzsTFPOK\",\"children\":[{\"text\":\"Failed to decode the packet returned during the process of getting the download parameters.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"cJ5S_BXc_qXq4mQtce99d\",\"children\":[{\"id\":\"3q-aeZ0RSDHQUkHBCzbUy\",\"children\":[{\"id\":\"RD_xug298zNzi128KtNEz\",\"children\":[{\"text\":\"Check whether the device can access the internet.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"-u3ZV-fzdGitTNQN5mUpK\",\"children\":[{\"id\":\"Vljl5kz8DPvSct7CyfC9_\",\"children\":[{\"id\":\"appFDeUPvEMXMUpoHUxhQ\",\"children\":[{\"id\":\"ghWOBLvyRvxVhATG9owUN\",\"children\":[{\"text\":\"12297\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"7oXIy6x7t4G8-YZTtIZfI\",\"children\":[{\"id\":\"_X8CStqjk8Gp4AxvgWz7i\",\"children\":[{\"id\":\"Nm09vZqiarKkBFWCam_AO\",\"children\":[{\"text\":\"No \"},{\"code\":1,\"text\":\"appinfo\"},{\"text\":\" is set.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"t82AsMP__OmYugryZwY7R\",\"children\":[{\"id\":\"tbE8SoEoblDfUSQEvekDK\",\"children\":[{\"id\":\"pD_3pxhGMbtVCiGiF4NsX\",\"children\":[{\"text\":\"Check whether the authentication key is correct and whether the voice message and speech-to-text feature is initialized.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[18,37,45],\"widthMode\":\"percentage\"},{\"id\":\"82fUMhpno4jukM4RGk4s-\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code33\",\"type\":\"h4\"},{\"id\":\"T2vYRpQD6leAlgcQaZ_Hs\",\"children\":[{\"id\":\"Vdz1yql5tD8WeLTq3Liku\",\"children\":[{\"text\":\"-(void)OnEvent:(ITMG_MAIN_EVENT_TYPE)eventType data:(NSDictionary *)data{\"}],\"type\":\"code-line\"},{\"id\":\"IbThlHlY4b5OxQz-LMRL1\",\"children\":[{\"text\":\" NSLog(@\\\"OnEvent:%lu,data:%@\\\",(unsigned long)eventType,data);\"}],\"type\":\"code-line\"},{\"id\":\"M2bres7feh1WWCyZv8waw\",\"children\":[{\"text\":\" switch (eventType) {\"}],\"type\":\"code-line\"},{\"id\":\"XCGavcXVhSdwUy4Dk3xWm\",\"children\":[{\"text\":\" case ITMG_MAIN_EVNET_TYPE_PTT_DOWNLOAD_COMPLETE:\"}],\"type\":\"code-line\"},{\"id\":\"QlYYWh8_qffNHbwEefEnL\",\"children\":[{\"text\":\" {\"}],\"type\":\"code-line\"},{\"id\":\"dj3J4RK6i3fUVdOTuf7ac\",\"children\":[{\"text\":\" if (data != NULL &&[[data objectForKey:@\\\"result\\\"] intValue]== 0)\"}],\"type\":\"code-line\"},{\"id\":\"_eQPsD9-pywAKBs0aKphl\",\"children\":[{\"text\":\" {\"}],\"type\":\"code-line\"},{\"id\":\"FrfEpFmDVqBxYDLPF7Mfu\",\"children\":[{\"text\":\" _audiofileToPlayField.text = [data objectForKey:@\\\"file_path\\\"] ;\"}],\"type\":\"code-line\"},{\"id\":\"IBFUhQJ0UV1IB849OFMwT\",\"children\":[{\"text\":\" donwLoadLocalPath = [data objectForKey:@\\\"file_path\\\"];\"}],\"type\":\"code-line\"},{\"id\":\"eQkOaqx29BeuwHFN4xDim\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"nYe9hmB8G9Lbf7iqxRRGJ\",\"children\":[{\"text\":\" else\"}],\"type\":\"code-line\"},{\"id\":\"dt4MhE4Kvd9u8oTxpv5-c\",\"children\":[{\"text\":\" {\"}],\"type\":\"code-line\"},{\"id\":\"PZvNT2x3-PT0gYeNz0GkU\",\"children\":[{\"text\":\" donwLoadLocalPath = NULL;\"}],\"type\":\"code-line\"},{\"id\":\"IjO48vF1OezXPwjalffNU\",\"children\":[{\"text\":\" } \"}],\"type\":\"code-line\"},{\"id\":\"b4Clr9pZEHVbJQ5dVmJB4\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"16XOeDiLUPvGvsYSO4uPC\",\"children\":[{\"text\":\" break;\"}],\"type\":\"code-line\"},{\"id\":\"cbve8l_pbLWQU-6SUISOX\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"CSifMuGBAchLvQvGsOXLR\",\"children\":[{\"text\":\"}\"}],\"type\":\"code-line\"},{\"id\":\"1xrvE8poTSv5QlkEGTTMF\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"F7rBaLyHrxewhrq-m1ECs\",\"children\":[{\"text\":\"Speech-to-Text Service\"}],\"nodeId\":\"speech-to-text-service\",\"type\":\"h2\"},{\"id\":\"Pz7i4Ip2eoqiDXjKP1l7u\",\"children\":[{\"text\":\"Converting audio file to text\"}],\"nodeId\":\"converting-audio-file-to-text\",\"type\":\"h3\"},{\"id\":\"ueMa40vf5zQRe2FwZ4jjp\",\"children\":[{\"text\":\"This API is used to convert a specified audio file to text.\"}],\"type\":\"p\"},{\"id\":\"nru-MXMHtJQIwfCeLCvmu\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\"function-prototype29\",\"type\":\"h4\"},{\"id\":\"EzfaNkrDmPW4ykFkMlzi6\",\"children\":[{\"id\":\"tCZCFHzjLCgZsXFUsBcyU\",\"children\":[{\"text\":\"-(void)SpeechToText:(NSString*)fileID;\"}],\"type\":\"code-line\"},{\"id\":\"L76ydWxwLB4H7E2OIrLKa\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"YXtaSQTONAya_BcIppRUm\",\"children\":[{\"id\":\"PveK3B-fkmyEVV6wxVWy3\",\"children\":[{\"id\":\"n0EvSwIbF-MESlEKNj60x\",\"children\":[{\"id\":\"neyPpmBX2cqQZBCIcy3oF\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"upjfmdvWd5UYvnoflgNUD\",\"children\":[{\"id\":\"dXSKiwGGE3NN_k0Qb6iS_\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"NoMrEAMf4i0o18aGZoonS\",\"children\":[{\"id\":\"8KCXs0PJKljNveUTzjH7m\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"COwmdHRLOrm-egRGBr8Vi\",\"children\":[{\"id\":\"HCP0AY2cCWRXLs2OlZxJL\",\"children\":[{\"id\":\"wqFExmTP6n3aoCAKx2ZmB\",\"children\":[{\"id\":\"k_niuChxOoG8c6z0G15Ei\",\"children\":[{\"text\":\"fileID\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"8homX8kQdZAtdgkVxptDb\",\"children\":[{\"id\":\"uwA_mQN7EYHu5-8lQtrYP\",\"children\":[{\"id\":\"iXG_ML6bPnFMOq6lkhWLB\",\"children\":[{\"text\":\"NSString\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"YnUK4LfGYOhXa5BUIKlTe\",\"children\":[{\"id\":\"GwM1rYnIxU9G15mViYhU9\",\"children\":[{\"id\":\"IPzPXrRF4hXn79L4Q2UnF\",\"children\":[{\"text\":\"URL of audio file\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[30,27,43],\"widthMode\":\"percentage\"},{\"id\":\"X0wWuUFuvAfIroXdhmwSX\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code34\",\"type\":\"h4\"},{\"id\":\"MCVXq6cI3paCQcI_NRz9k\",\"children\":[{\"id\":\"QqNED1CAqSB3pRXj7F_9u\",\"children\":[{\"text\":\"[[[ITMGContext GetInstance]GetPTT]SpeechToText:fileID];\"}],\"type\":\"code-line\"},{\"id\":\"EVzvjdpkIPGbejULU6KVe\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"A4KqbATRPB-xZBYjvq5XT\",\"children\":[{\"text\":\"Translating audio file into text in specified language\"}],\"nodeId\":\"translating-audio-file-into-text-in-specified-language\",\"type\":\"h3\"},{\"id\":\"k6mRIvpC4X6jGjAiB_AJt\",\"children\":[{\"text\":\"This API can specify a language for recognition or translate the information recognized in speech into a specified language and return the translation.\"}],\"type\":\"p\"},{\"id\":\"Z4XG7_JCRQZFM3iWqpfbf\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\"function-prototype30\",\"type\":\"h4\"},{\"id\":\"ni68hQiK81XNoU0Cm7e7i\",\"children\":[{\"id\":\"-JUEsq47HV8NnLOK2KqIc\",\"children\":[{\"text\":\"-(void)SpeechToText:(NSString*)fileID (NSString*)speechLanguage (NSString*)translateLanguage;\"}],\"type\":\"code-line\"},{\"id\":\"sMrq4c8rWLAMUbKxMtNRZ\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"SircaMy3R6zflova978QS\",\"children\":[{\"id\":\"ZdWYxbMFla0ENeqq8n-VH\",\"children\":[{\"id\":\"y1_RCslQ5X08AncPsCMCZ\",\"children\":[{\"id\":\"FC3NfF79QxCF3b8hXP0kj\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"VzFJmJtg6QAz9f3OydTN9\",\"children\":[{\"id\":\"G2xL3BMR8cFoUdCZ7ipxn\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"BO-rvSYzZJdvRsUoWzT3S\",\"children\":[{\"id\":\"d2eZNHsMzjUjRJFUCz0FR\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"6aFfJYc0YcGWAc4VDTEjb\",\"children\":[{\"id\":\"VlsnmTeZAeWyvS2JA9fio\",\"children\":[{\"id\":\"h6AT_c1SZjKGUPnLeng13\",\"children\":[{\"id\":\"vGhfaWfMruGqV7qVdLV7v\",\"children\":[{\"text\":\"fileID\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"D62PYtl1LnUr5c4AfumCU\",\"children\":[{\"id\":\"gltFFSiJ4zonWC-laE13u\",\"children\":[{\"id\":\"NjCzVviOrKf9awzM1BYCY\",\"children\":[{\"text\":\"NSString*\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"feAxeOq18BPu-l-S2iR3X\",\"children\":[{\"id\":\"wEuS0XqgmY7gghdT_Br3-\",\"children\":[{\"id\":\"vhQoZ_77Nan9fvI4IOe8S\",\"children\":[{\"text\":\"URL of audio file, which will be retained on the server for 90 days\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"i3RRWbFUkJZbZaz9utbCR\",\"children\":[{\"id\":\"jhzwB3SRRGBDlKP1Z7j2M\",\"children\":[{\"id\":\"z_bRBZinyqDEZC_dGT5Kx\",\"children\":[{\"id\":\"oOhznI9NM0v2uKzGmLaox\",\"children\":[{\"text\":\"speechLanguage\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"pJRNU5qWLaF00dtkyddzD\",\"children\":[{\"id\":\"lJA5gNZ7qG2QiURiWRvYy\",\"children\":[{\"id\":\"fEsAyEr1uDJkjt3yNIirh\",\"children\":[{\"text\":\"NSString*\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"pks3tZ3EZ7OmrCWvbAYGh\",\"children\":[{\"id\":\"MU0mRovFfW8Nh9MCjTIQx\",\"children\":[{\"id\":\"fWQGC-lZHmb82Tio7sTml\",\"children\":[{\"text\":\"The language in which the audio file is to be converted to text. For parameters, please see \"},{\"id\":\"ezdHp7BO0Qb50jZK6J3C4\",\"children\":[{\"text\":\"Language Parameter Reference List\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://intl.cloud.tencent.com/document/product/607/30260\",\"props\":{\"type\":\"link\",\"url\":\"https://intl.cloud.tencent.com/document/product/607/30260\"},\"type\":\"ref\"},{\"text\":\".\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"ybu9iQo4VvADfndopZBgn\",\"children\":[{\"id\":\"903-DpTFviv96Zme3_zkh\",\"children\":[{\"id\":\"daoTb7n6CH4_QY9wzGRc-\",\"children\":[{\"id\":\"NM1VrcBrQDR4B8xXFjpFV\",\"children\":[{\"text\":\"translateLanguage\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"v83QREC5xBfzBIsRQ_D8F\",\"children\":[{\"id\":\"Os-euYkGRL0eOFv-I8L0c\",\"children\":[{\"id\":\"0FvAA9V5X95hnMZN3dJWq\",\"children\":[{\"text\":\"NSString*\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"VclFBWqszBMVh8dkkl2hF\",\"children\":[{\"id\":\"RuneG4ML8YuBIiy9aJSs1\",\"children\":[{\"id\":\"joy1c7PSQcKOH8zIXzFqH\",\"children\":[{\"text\":\"The language into which the audio file will be translated. For parameters, please see \"},{\"id\":\"UZHPNsyX09ng9LPRuD1qF\",\"children\":[{\"text\":\"Language Parameter Reference List\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://intl.cloud.tencent.com/document/product/607/30260\",\"props\":{\"type\":\"link\",\"url\":\"https://intl.cloud.tencent.com/document/product/607/30260\"},\"type\":\"ref\"},{\"text\":\". This parameter is currently unavailable. Enter the same value as that of \"},{\"code\":1,\"text\":\"speechLanguage\"},{\"text\":\".\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[17,15,68],\"widthMode\":\"percentage\"},{\"id\":\"hsq5SXVEabRiJykuKP8Vh\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code35\",\"type\":\"h4\"},{\"id\":\"KY5llcU4RHdj3rroCYw-O\",\"children\":[{\"id\":\"On-ZthMZwKwbOJMj6daTs\",\"children\":[{\"text\":\"[[[ITMGContext GetInstance]GetPTT]SpeechToText:fileID speechLanguage:\\\"cmn-Hans-CN\\\" translateLanguage:\\\"cmn-Hans-CN\\\"];\"}],\"type\":\"code-line\"},{\"id\":\"O-uaGgFT6ZifhQxmvL5Up\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"c3zhxuJR2CcJEQIlhX7e4\",\"children\":[{\"text\":\"Callback for recognition\"}],\"nodeId\":\"callback-for-recognition\",\"type\":\"h3\"},{\"id\":\"tNuUBgsEKEhneaiT2d-ZH\",\"children\":[{\"text\":\"After the specified audio file is converted to text, the event message ITMG_MAIN_EVNET_TYPE_PTT_SPEECH2TEXT_COMPLETE will be returned, which will be identified in the \"},{\"code\":1,\"text\":\"OnEvent\"},{\"text\":\" function.\\nThe passed parameters include \"},{\"code\":1,\"text\":\"result\"},{\"text\":\", \"},{\"code\":1,\"text\":\"file_path\"},{\"text\":\" and \"},{\"code\":1,\"text\":\"text\"},{\"text\":\" (recognized text).\"}],\"type\":\"p\"},{\"id\":\"pkqQuL3AfKkIsaRT6e_ex\",\"children\":[{\"text\":\"Error codes\"}],\"nodeId\":\"error-codes7\",\"type\":\"h4\"},{\"id\":\"F_EliHNu2K4GuCq7sB6qf\",\"children\":[{\"id\":\"fvAQOrODTCxZlxwZk0Alh\",\"children\":[{\"id\":\"Jkf5W8I9oBeDfmO_cdMCn\",\"children\":[{\"id\":\"G1dJ4UYWvnMssJbonM9bL\",\"children\":[{\"text\":\"Error Code Value\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"6rZFKE4Fpa4Ktj7DvwUdj\",\"children\":[{\"id\":\"94j_bLSoCIChWxwQPSvAU\",\"children\":[{\"text\":\"Cause\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"20Gv2KF8NRBvkgqH-3DOn\",\"children\":[{\"id\":\"P9bXeLfrOmQ70091uQGfb\",\"children\":[{\"text\":\"Suggested Solution\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"WrX3PWkfvm3IJOXwfPi0W\",\"children\":[{\"id\":\"nfwKfztqGBLgwSIlZHznP\",\"children\":[{\"id\":\"5W4rpwBrRO6ouxztUAYWd\",\"children\":[{\"id\":\"59ZcX0eKVsv7YD1qX5EmL\",\"children\":[{\"text\":\"32769\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"aQF4DaxYwbKWix4UCQs1P\",\"children\":[{\"id\":\"BqCeSQElww_vX-yv-x6WR\",\"children\":[{\"id\":\"20Tw1Ge0zMXAhbK63_81B\",\"children\":[{\"text\":\"An internal error occurred.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"bdasfWqCicc1fEiEk35fD\",\"children\":[{\"id\":\"lykfA9STpIoKJLpqvKoZ9\",\"children\":[{\"id\":\"Digt59W1D7pWX437xVSha\",\"children\":[{\"text\":\"Analyze logs, get the actual error code returned from the backend to the client, and ask backend personnel for assistance.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"uEsb6amsuQX900ykudw_A\",\"children\":[{\"id\":\"MjaOvncnvdUiBtnltcDH4\",\"children\":[{\"id\":\"t3BZbHCUUkn3rQhveGNSI\",\"children\":[{\"id\":\"ZE6HFR4CpfDgHye4g6fDj\",\"children\":[{\"text\":\"32770\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"GaJRlXNLN53R-PEO_8tJ5\",\"children\":[{\"id\":\"_zhOMN1mg8-Q8p1IZuMyc\",\"children\":[{\"id\":\"7eCojKrI6eDKxgXWanLpG\",\"children\":[{\"text\":\"Network failed.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"F1bAcSo425XGwV3RCeEeC\",\"children\":[{\"id\":\"qZJvATzFHadmSQacvA7vw\",\"children\":[{\"id\":\"MIM2uHi3Yf18wEEK5XL5S\",\"children\":[{\"text\":\"Check whether the device can access the internet.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"9zZWYhYV_dWjd9BqcK0d-\",\"children\":[{\"id\":\"E72LMjA2QB-ruuWa-9Dci\",\"children\":[{\"id\":\"bouDhUSc-0xnPoptLmYI0\",\"children\":[{\"id\":\"CZKVI-aeq5rYS618n2PEv\",\"children\":[{\"text\":\"32772\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"VLJ_09YSJ3XFwUNgypvI8\",\"children\":[{\"id\":\"m_VkWBdu_JywgGa2ljgim\",\"children\":[{\"id\":\"dtjxYWV3ZtKV9LEKURat9\",\"children\":[{\"text\":\"Failed to decode the returned packet.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Pyjdas8H5-zb9Lg9G3MP6\",\"children\":[{\"id\":\"osnsQX3Ttef0vRILnqfFM\",\"children\":[{\"id\":\"x_yPgtJ7u6Zjw7iB-EsAP\",\"children\":[{\"text\":\"Analyze logs, get the actual error code returned from the backend to the client, and ask backend personnel for assistance.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"AIAYQpjiig-ZYoioiIMOl\",\"children\":[{\"id\":\"9rEZjgZQoqnaIBtdnu7Gu\",\"children\":[{\"id\":\"QIPkFZy4wqrr_moYjbVZh\",\"children\":[{\"id\":\"3uw0XEugXDDk9Gh4Iqlhu\",\"children\":[{\"text\":\"32774\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"JNRbhhOi2pI9--5mC6dlj\",\"children\":[{\"id\":\"KBg_9waenBlZpEi-gjI7a\",\"children\":[{\"id\":\"uXXwo2szfJCVCXVf3q_EV\",\"children\":[{\"text\":\"No \"},{\"code\":1,\"text\":\"appinfo\"},{\"text\":\" is set.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"g9HTtXkVtyxgF9R-jkwrm\",\"children\":[{\"id\":\"m-J37cuL1o4TmXdImGMdP\",\"children\":[{\"id\":\"UQlcPOwjpaGXJBRY2YVQ5\",\"children\":[{\"text\":\"Check whether the authentication key is correct and whether the voice message and speech-to-text feature is initialized.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"qhN-GWzHUrefPMD-5V87e\",\"children\":[{\"id\":\"VAmXN40vR43KKyyRhWOx_\",\"children\":[{\"id\":\"Vh7cPu7_yucgTReC1MO1a\",\"children\":[{\"id\":\"eVnvWgb3anfhNqkIoSkKU\",\"children\":[{\"text\":\"32776\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"iW96Od9rwxagdWy8Plhdk\",\"children\":[{\"id\":\"p2CQl4VLa7S1VIci9sHQF\",\"children\":[{\"id\":\"fwm7WEbA38Z9ZSOmLN885\",\"children\":[{\"code\":1,\"text\":\"authbuffer\"},{\"text\":\" check failed.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"3xfgHAUMJHUM_KYv5L1tB\",\"children\":[{\"id\":\"2LWsLePaJ5AcEIZjI-HR_\",\"children\":[{\"id\":\"_GlZMRBdvFJscmq91mD5L\",\"children\":[{\"text\":\"Check whether \"},{\"code\":1,\"text\":\"authbuffer\"},{\"text\":\" is correct.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"RRrsSeozTXJtJKi-fqyGW\",\"children\":[{\"id\":\"sxjJBVGc4s9w6IhPWGjvi\",\"children\":[{\"id\":\"UuZ9QNi9kCZ-p8VmO3AT0\",\"children\":[{\"id\":\"dDcOu0Q_1YFzBQJYa3OR1\",\"children\":[{\"text\":\"32784\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"KciXOidEKSqwc2fADjyk9\",\"children\":[{\"id\":\"khe8R0f26zwvRM8yOt4eG\",\"children\":[{\"id\":\"0DsQJX74asn18qELV99aO\",\"children\":[{\"text\":\"Incorrect speech-to-text conversion parameter.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"TFmi-5_POUnV0D_28p_Zn\",\"children\":[{\"id\":\"XEKZhmKmQrpLAmxZJTKo8\",\"children\":[{\"id\":\"Yu5KTukutRSozfmvsmqnl\",\"children\":[{\"text\":\"Check whether the API parameter \"},{\"code\":1,\"text\":\"fileid\"},{\"text\":\" in the code is empty.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"I8bob1AGIpHSHCbtr2c_x\",\"children\":[{\"id\":\"1Zyyt947eXnzfIXTjyEBX\",\"children\":[{\"id\":\"eEZ2B0GOoIcrqgxlbPDYl\",\"children\":[{\"id\":\"426kr8xNw0PN_84TEALwE\",\"children\":[{\"text\":\"32785\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"2OKfxYoCpmNJufLjCmokw\",\"children\":[{\"id\":\"67zFlgahnEmd-W5e8fSBu\",\"children\":[{\"id\":\"26SnCBDqb9A_t3FcpEeqQ\",\"children\":[{\"text\":\"Speech-to-text translation returned an error.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"-ZGxmunpzyrLtSqNoQ3CM\",\"children\":[{\"id\":\"g72EAJ1-n_dNGhDUp8W_x\",\"children\":[{\"id\":\"b24vYRAT33APuC96kc6u2\",\"children\":[{\"text\":\"Error with the backend of voice message and speech-to-text feature. Analyze logs, get the actual error code returned from the backend to the client, and ask backend personnel for assistance.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[17,25,58],\"widthMode\":\"percentage\"},{\"id\":\"TCCjJkB5jEaZKDCwxLjkl\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code36\",\"type\":\"h4\"},{\"id\":\"iAvaioz1ASoRHJly5ynf6\",\"children\":[{\"id\":\"ndmil87vGoih3njKVhSS2\",\"children\":[{\"text\":\"-(void)OnEvent:(ITMG_MAIN_EVENT_TYPE)eventType data:(NSDictionary *)data{\"}],\"type\":\"code-line\"},{\"id\":\"O9nS52rFjTHVjA1hoV7Xj\",\"children\":[{\"text\":\" NSLog(@\\\"OnEvent:%lu,data:%@\\\",(unsigned long)eventType,data);\"}],\"type\":\"code-line\"},{\"id\":\"M_nbTSpk0dgE5XvF1N1Fm\",\"children\":[{\"text\":\" switch (eventType) {\"}],\"type\":\"code-line\"},{\"id\":\"6tU4yldJLWcF5o9bZGL2O\",\"children\":[{\"text\":\" case ITMG_MAIN_EVNET_TYPE_PTT_SPEECH2TEXT_COMPLETE:\"}],\"type\":\"code-line\"},{\"id\":\"ULyZJJVGNIJx2sf3A5ALS\",\"children\":[{\"text\":\" {\"}],\"type\":\"code-line\"},{\"id\":\"IwZD673OF1G0RlvVL2qNv\",\"children\":[{\"text\":\" if (data != NULL &&[[data objectForKey:@\\\"result\\\"] intValue]== 0)\"}],\"type\":\"code-line\"},{\"id\":\"3PEmfhTC7nzwI7Kmfiz9e\",\"children\":[{\"text\":\" {\"}],\"type\":\"code-line\"},{\"id\":\"JjvjXABznnh4m8-YOwUBm\",\"children\":[{\"text\":\" UITextField *_audiotoTextField =(UITextField*)objc_getAssociatedObject(self, [PTT_AUDIO_TO_TEXT UTF8String]);\"}],\"type\":\"code-line\"},{\"id\":\"QOFyptmmysuvQo25iTvIm\",\"children\":[{\"text\":\" _audiotoTextField.text = [data objectForKey:@\\\"text\\\"] ;\"}],\"type\":\"code-line\"},{\"id\":\"-Wlb3QSkcF1O-VUPtpWqB\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"LhXGAQBpgVH5VlE-uUtRF\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"R0Jiema0N1R8wvdeeTOvv\",\"children\":[{\"text\":\" break; \"}],\"type\":\"code-line\"},{\"id\":\"W5Z7Giya3Ep90KCvXN5IY\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"bQuquVUAOcPbx8qE9Awba\",\"children\":[{\"text\":\"}\"}],\"type\":\"code-line\"},{\"id\":\"iLWLZks9D-anMWs2nKvfh\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"pGQ28amSfXEy2EZfZWFSK\",\"children\":[{\"text\":\"Advanced APIs\"}],\"nodeId\":\"advanced-apis\",\"type\":\"h2\"},{\"id\":\"ss_JdeskbhJmEqK4DHv_8\",\"children\":[{\"text\":\"Getting version number\"}],\"nodeId\":\"getting-version-number\",\"type\":\"h3\"},{\"id\":\"EejPhgInRkfTgjuQe1K01\",\"children\":[{\"text\":\"This API is used to get the SDK version number for analysis.\"}],\"type\":\"p\"},{\"id\":\"OY0LiQiAceF5Y8ICCqEgM\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\"function-prototype31\",\"type\":\"h4\"},{\"id\":\"Whm02FBjyNBfNfzgNOoLO\",\"children\":[{\"id\":\"nFnG6-od-_PapPNuWEo8I\",\"children\":[{\"text\":\"-(NSString*)GetSDKVersion;\"}],\"type\":\"code-line\"},{\"id\":\"eFeJY9KXcSk_4vmObxIKo\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"hi7Xe8YpLg0aJG4wFOAgm\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code37\",\"type\":\"h4\"},{\"id\":\"wfhYh4xOUrdNhSdZ2J7c8\",\"children\":[{\"id\":\"QFTPHCZEAXze2ryGCbv_K\",\"children\":[{\"text\":\"[[ITMGContext GetInstance] GetSDKVersion];\"}],\"type\":\"code-line\"},{\"id\":\"LGhe3V5TL6v752TZ1d4IO\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"Pwt2MYZ0BftZMXGkU9P-V\",\"children\":[{\"text\":\"Checking mic permission\"}],\"nodeId\":\"checking-mic-permission\",\"type\":\"h3\"},{\"id\":\"8U2SF0BBgXCr-2bazZRBC\",\"children\":[{\"text\":\"This API is used to return the mic permission status.\"}],\"type\":\"p\"},{\"id\":\"Qn_YLvuLAq634xi77zZ3H\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\"function-prototype32\",\"type\":\"h4\"},{\"id\":\"YpI3TpE82uxoZaMC5Plp-\",\"children\":[{\"id\":\"L7W21UoZL3wLdxUivbhMg\",\"children\":[{\"text\":\"-(ITMG_RECORD_PERMISSION)CheckMicPermission;\"}],\"type\":\"code-line\"},{\"id\":\"jhzK1U38IdRTPpldThyxr\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"ldVt6cTFtbp_bCmhC0-VN\",\"children\":[{\"text\":\"Parameter description\"}],\"nodeId\":\"parameter-description\",\"type\":\"h4\"},{\"id\":\"ZY5PwT-tqkF4aZARNN1zY\",\"children\":[{\"id\":\"rpo95_cYmfFaFNjm2GAHh\",\"children\":[{\"id\":\"ro9022g7DmbYjAo0c3qTP\",\"children\":[{\"id\":\"rQdUfek8x46djhMByHjA9\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"kIi4sxuDFnKIOPKdVROzV\",\"children\":[{\"id\":\"2ydNOZ_o2Kjzo38qL92h0\",\"children\":[{\"text\":\"Value\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"3AUQttni1oN7wtfW5OEik\",\"children\":[{\"id\":\"a9IBlUkEzLbjawVgsmJ6i\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"6Axm_06gnB8o-93H5sTc7\",\"children\":[{\"id\":\"ohJhWcB1jVyHzD3DPFDHE\",\"children\":[{\"id\":\"3tlcjN67V2XMrg1s4hJte\",\"children\":[{\"id\":\"qvPIDk4aPoMrDBY9ls6vb\",\"children\":[{\"text\":\"ITMG_PERMISSION_GRANTED\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"-PGoLuRqmNxsKUodQzxYh\",\"children\":[{\"id\":\"DVHkYBX-cMFEAyatSbtOG\",\"children\":[{\"id\":\"VY8JWJP1U9oyTbbkdgJJe\",\"children\":[{\"text\":\"0\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"khlBDp522P145QJd2DLcE\",\"children\":[{\"id\":\"CkofkVeO7vtNv2Qfi1bFL\",\"children\":[{\"id\":\"OgaDUTJ3lWoS9vuYG1Njn\",\"children\":[{\"text\":\"Mic permission is granted.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"eQd9gL_Bjy4DcmiXeb5Lf\",\"children\":[{\"id\":\"sVFQAP5yGb7TaEvUE1Ch9\",\"children\":[{\"id\":\"oAJJEJdlZhjWpMUbrmEEJ\",\"children\":[{\"id\":\"E-duTHEESTEjFuc3-IVha\",\"children\":[{\"text\":\"ITMG_PERMISSION_Denied\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"x9VXCZobBoq3CLYhuD-a6\",\"children\":[{\"id\":\"UsEbQgwx05qehF_m_dlna\",\"children\":[{\"id\":\"O_uzRKafxxigyHTKI_0Ih\",\"children\":[{\"text\":\"1\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"kHH64N8Whiz94f-lCDohy\",\"children\":[{\"id\":\"nvdPBrbs2ALv953fKyeUN\",\"children\":[{\"id\":\"E_tQPCde2SBzOC10D5Vri\",\"children\":[{\"text\":\"Mic is disabled.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"DKUt-zPwxZaOiTLgp7T0m\",\"children\":[{\"id\":\"KYWAyechqqhwMlM79dqTg\",\"children\":[{\"id\":\"3CHkJkzdwim3F5zOFvcpm\",\"children\":[{\"id\":\"nBcXI3qn-qrzg5qoFGcAH\",\"children\":[{\"text\":\"ITMG_PERMISSION_NotDetermined\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Pw-JfkX2CC2jgKzOPsq7b\",\"children\":[{\"id\":\"PEKT1dfKKDLKkbnhUvdxr\",\"children\":[{\"id\":\"I-GHWGlGOBQoFGcCxdT38\",\"children\":[{\"text\":\"2\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"DV59DuAd8iIKvlixWKVqW\",\"children\":[{\"id\":\"LgGQSyIYZlfYmp66BxQvO\",\"children\":[{\"id\":\"F90KuNL9wsMl1PDESHYKa\",\"children\":[{\"text\":\"No authorization box has been popped up to request the permission.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"khqxCo5xfkZ6SmRnvIshw\",\"children\":[{\"id\":\"ygYFrmv4HRmqtx-EDyu_5\",\"children\":[{\"id\":\"hrFed9rDVJVRwQdQH1zjp\",\"children\":[{\"id\":\"d88nPx5n8bGARRfE3vP51\",\"children\":[{\"text\":\"ITMG_PERMISSION_ERROR\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"0IsOztODwG__c1bJjhbU6\",\"children\":[{\"id\":\"ifjtebohKpfZiRt2n5zeN\",\"children\":[{\"id\":\"SmHVYKxENPEQA4RrbDrod\",\"children\":[{\"text\":\"3\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"mn-94BLBO5TMTmb-tEea2\",\"children\":[{\"id\":\"hr93A6FlYTtNGJrKbLknr\",\"children\":[{\"id\":\"dHqS-fU3nItIYwpaSPTPl\",\"children\":[{\"text\":\"An error occurred while calling the API.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[33,8,59],\"widthMode\":\"percentage\"},{\"id\":\"_ZbxTyvjt6qmUUA1W_CjF\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code38\",\"type\":\"h4\"},{\"id\":\"X7ObES9HFvoxh_BI2qZuT\",\"children\":[{\"id\":\"dfpcSt426CBNNP_kCPsuH\",\"children\":[{\"text\":\"[[ITMGContext GetInstance] CheckMicPermission];\"}],\"type\":\"code-line\"},{\"id\":\"nb9gv9zrBZTVYfjVe-KnC\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"HVoBU9LxwuIoZqva8P7OI\",\"children\":[{\"text\":\"Setting log printing level\"}],\"nodeId\":\"setting-log-printing-level\",\"type\":\"h3\"},{\"id\":\"O9ZOzL7Gry72t7U5BBU5C\",\"children\":[{\"text\":\"This API is used to set the level of logs to be printed, and needs to be called before the initialization. It is recommended to keep the default level.\"}],\"type\":\"p\"},{\"id\":\"bRzEfXaEq2f68jR94pf2Y\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\"function-prototype33\",\"type\":\"h4\"},{\"id\":\"EoNnKAp9x1OG0W1oaJFYC\",\"children\":[{\"id\":\"U2uW1hqOEF1SRo2DZXVCD\",\"children\":[{\"text\":\"-(void)SetLogLevel:(ITMG_LOG_LEVEL)levelWrite (ITMG_LOG_LEVEL)levelPrint;\"}],\"type\":\"code-line\"},{\"id\":\"wXlDbqcFYAqVNRiGn0niy\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"0uXiUUd-FTiE--DlESoJb\",\"children\":[{\"text\":\"Parameter description\"}],\"nodeId\":\"parameter-description2\",\"type\":\"h4\"},{\"id\":\"4DiUPzoyhonUC3nU8vtcw\",\"children\":[{\"id\":\"iBVdaei5YzvfrQkN9Fr48\",\"children\":[{\"id\":\"5iNu58qIYad8foPHwJoXz\",\"children\":[{\"id\":\"CyrUZpK5PA0ytnSVx3kaM\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"XQXXnU4v1-DCAPOgkZEFQ\",\"children\":[{\"id\":\"08ewjvsxxRBc-IuNj-NWh\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"4IO-EtIJL8QUUiZUf65Iu\",\"children\":[{\"id\":\"1p8dA3VVS7NCeO2hLhvvY\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"4Ufk1M7C91q03I8624aS1\",\"children\":[{\"id\":\"NGPK7HggxyoYDLWzvNjAC\",\"children\":[{\"id\":\"mjJfYiTHoRPpR9UQZNrKc\",\"children\":[{\"id\":\"lzPAkT-kEfDm1cHzXDgFW\",\"children\":[{\"text\":\"levelWrite\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"l5KCyk6HzsvvjPSUy8BQq\",\"children\":[{\"id\":\"2LEue1sxZcVk7Lyagmw-x\",\"children\":[{\"id\":\"mzLDgE1Exv41Hx-V2wLWx\",\"children\":[{\"text\":\"ITMG_LOG_LEVEL\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"KNUV4rLwzthEL7YUy0Xdf\",\"children\":[{\"id\":\"ZFJE3JE68km_vgDhDYdXF\",\"children\":[{\"id\":\"V5FbA5idRvbna31HAcM4n\",\"children\":[{\"text\":\"Sets the level of logs to be written. \"},{\"code\":1,\"text\":\"TMG_LOG_LEVEL_NONE\"},{\"text\":\" indicates not to write. Default value: TMG_LOG_LEVEL_INFO\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"W3CFMVOVqOyq7zyE9XSuj\",\"children\":[{\"id\":\"iz0rWTGg0QuLsA2yhoUPT\",\"children\":[{\"id\":\"5TkghCm70NWkADhxFXOtR\",\"children\":[{\"id\":\"fSC4bFZF9VU0UWdLGth7F\",\"children\":[{\"text\":\"levelPrint\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"kxI2DWt-E6GlADHevwnOe\",\"children\":[{\"id\":\"0HAddzsX90m5Kouc43zje\",\"children\":[{\"id\":\"P7RfJMWGNjw2hmZym_SZF\",\"children\":[{\"text\":\"ITMG_LOG_LEVEL\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"kDq6xDlA0PILSuzniSxBp\",\"children\":[{\"id\":\"FzoGhkj4zLttKLBUcEN2c\",\"children\":[{\"id\":\"8VxL0KEPfBnWS1yVVBCCx\",\"children\":[{\"text\":\"Sets the level of logs to be printed. \"},{\"code\":1,\"text\":\"TMG_LOG_LEVEL_NONE\"},{\"text\":\" indicates not to print. Default value: TMG_LOG_LEVEL_ERROR\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[12,20,68],\"widthMode\":\"percentage\"},{\"id\":\"uknHxLrCCnpEiB8FBnMXG\",\"children\":[{\"text\":\"ITMG_LOG_LEVEL\"}],\"nodeId\":\"itmg_log_level\",\"type\":\"h4\"},{\"id\":\"0UVTEFMT5BmrP7OIYOjbs\",\"children\":[{\"id\":\"P0pXgv2n535LMSlLgIKNr\",\"children\":[{\"id\":\"d-t9DZIKDPf8azJ-pF1E_\",\"children\":[{\"id\":\"31DE8x-EdrsZQoHBth8wE\",\"children\":[{\"text\":\"ITMG_LOG_LEVEL\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"pyacLG5Bx98d-cUYR2iIN\",\"children\":[{\"id\":\"nM-4aLbucxTt55uboztaK\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"C2HleiLGcMufSFcZa-1Q6\",\"children\":[{\"id\":\"FpWONfLNEubKoHCbq9Wm5\",\"children\":[{\"id\":\"lZ0lk-Y0iVwovtYv5xODE\",\"children\":[{\"id\":\"I2F-AhcPNtZyEj-bYuLaE\",\"children\":[{\"text\":\"TMG_LOG_LEVEL_NONE\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"fDoYRWQbT4SPIQwUTARC3\",\"children\":[{\"id\":\"KKFGxnWQDZWk4aXOE9ij1\",\"children\":[{\"id\":\"aBdJBgVn4oM8oTzzXvDUT\",\"children\":[{\"text\":\"Does not print logs\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"9G27gMphwolZhQSFLCB8w\",\"children\":[{\"id\":\"0L3WJ1F5toeEz93Et-RQu\",\"children\":[{\"id\":\"7zH6x57sb63P-Ozn9f5lb\",\"children\":[{\"id\":\"9bp3sAKyhweMq_Mmv01ZX\",\"children\":[{\"text\":\"TMG_LOG_LEVEL_ERROR\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"WMWan94R2Ge2UfQgbj58t\",\"children\":[{\"id\":\"Y1H2ZU0z_adbPryxUODqQ\",\"children\":[{\"id\":\"uzqM0ohENL-dil8R7ij52\",\"children\":[{\"text\":\"Prints error logs (default)\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"oZ8zyi5Dt0PFFnjAO0pqe\",\"children\":[{\"id\":\"Tw1vOQdMMBmR3c1r7yDlv\",\"children\":[{\"id\":\"4iqpuyBjr6FRq9cOYAxOP\",\"children\":[{\"id\":\"RXecYoZQyh55STJ8-PnC5\",\"children\":[{\"text\":\"TMG_LOG_LEVEL_INFO\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"5rwMw9K9WltBKxrc-vI3_\",\"children\":[{\"id\":\"-mY4WNy_Fq-uAb6Fs18H2\",\"children\":[{\"id\":\"3i96FWo9EXbDIVB7jHpKF\",\"children\":[{\"text\":\"Prints info logs\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"6BK3vBHruERq8r2tWOxD7\",\"children\":[{\"id\":\"568pd7LNu77kSQ9udLIWe\",\"children\":[{\"id\":\"CaihpoXkokaU94dlZyVOX\",\"children\":[{\"id\":\"cK0eKXTUj_Puu3Gmn0sxQ\",\"children\":[{\"text\":\"TMG_LOG_LEVEL_DEBUG\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"fhQtbEeNEuTVHNCcHnqgY\",\"children\":[{\"id\":\"BI2o-pSqbcBqiwK9XgenN\",\"children\":[{\"id\":\"bwqJ3m6HuaQESMvbvxxLp\",\"children\":[{\"text\":\"Prints debug logs\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"83Dpkh6g_I3I1SA6iXeM_\",\"children\":[{\"id\":\"1imj4N9AM72LU_uTbKkz_\",\"children\":[{\"id\":\"pwpFjaYD8sriVDezm6Rq6\",\"children\":[{\"id\":\"YVQJ55j1VLmsQXM4t-Mwq\",\"children\":[{\"text\":\"TMG_LOG_LEVEL_VERBOSE\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"gun01MtZ0VJrTgaDMDcbn\",\"children\":[{\"id\":\"UKbmndq3uw91hL-i-AK37\",\"children\":[{\"id\":\"HfCLwtfl7rxbAgj4PMxI_\",\"children\":[{\"text\":\"Prints verbose logs\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[40,60],\"widthMode\":\"percentage\"},{\"id\":\"w6pScwV7V171id9Mn1oAZ\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code39\",\"type\":\"h4\"},{\"id\":\"X28ybRDLJcQwOgXOS8sf8\",\"children\":[{\"id\":\"_B7yLC3cLXno0KG3fczsY\",\"children\":[{\"text\":\"[[ITMGContext GetInstance] SetLogLevel:TMG_LOG_LEVEL_INFO TMG_LOG_LEVEL_INFO];\"}],\"type\":\"code-line\"},{\"id\":\"VnL_gs2FzS3Low8rlf_8E\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"cuh5MwrRqe0gf59FwA4Jh\",\"children\":[{\"text\":\"Setting the log printing path\"}],\"nodeId\":\"setting-the-log-printing-path\",\"type\":\"h3\"},{\"id\":\"PA6zKMROlAHjBrv2s6SRo\",\"children\":[{\"text\":\"This API is used to set the log printing path, and needs to be called before initialization. The default path is \"},{\"code\":1,\"text\":\"Application/********-****-****-************/Documents\"},{\"text\":\".\"}],\"type\":\"p\"},{\"id\":\"NwZQ4GxjPc-LPb7Lrr9sk\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\"function-prototype34\",\"type\":\"h4\"},{\"id\":\"ZuRyF6jv4t4F90t6CZYLw\",\"children\":[{\"id\":\"sotibTGywERgV5ctbKFCu\",\"children\":[{\"text\":\"-(void)SetLogPath:(NSString*)logDir;\"}],\"type\":\"code-line\"},{\"id\":\"Gd4fudVBgieGJHsMqmg2H\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"rxMxmiKekpmI7I--h42wH\",\"children\":[{\"id\":\"BBhGHnbKPhxRSVpR3LGeL\",\"children\":[{\"id\":\"HzBoo6buMtP947pAk3gdC\",\"children\":[{\"id\":\"bqxAmNJGQd8OZsZaOSzdG\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"1yhvsoY7rIl6WBKB5KP-8\",\"children\":[{\"id\":\"i9v6zTyEkexU_r7Bg0xvh\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ZHihVi8cHQ31Dz_trF69V\",\"children\":[{\"id\":\"T1pajJNQsVy8LfZqhMoOh\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"3TKKz4Q_A4Puw0FYAh2q6\",\"children\":[{\"id\":\"AnzZ_IKtZ21h8ife5zRai\",\"children\":[{\"id\":\"_utagfblkiha_KaIXqeKM\",\"children\":[{\"id\":\"xe7rEWgI9OGc-Des5WvgJ\",\"children\":[{\"text\":\"logDir\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"LTkHYknCbmrM5TPq_WxM6\",\"children\":[{\"id\":\"stvyneVimkE9_SFBe5oVJ\",\"children\":[{\"id\":\"YZ0_zxzdAhDKfVKK_s6RG\",\"children\":[{\"text\":\"NSString\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"1sUebUag2ZfkQ-ECbTBnl\",\"children\":[{\"id\":\"ctWUcUdu4pIoa4NSYW830\",\"children\":[{\"id\":\"A_G0iHOAG1_3bfTF-gI_r\",\"children\":[{\"text\":\"Path\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[33,30,37],\"widthMode\":\"percentage\"},{\"id\":\"N7EoWYTMx8eHfflDrfyoC\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code40\",\"type\":\"h4\"},{\"id\":\"a61Hr8cEujyRJfaRekLR0\",\"children\":[{\"id\":\"QHW9HAA2vb2lPoWjsM4py\",\"children\":[{\"text\":\"[[ITMGContext GetInstance] SetLogPath:Path];\"}],\"type\":\"code-line\"},{\"id\":\"d0o7TNWL7jGa9a8KJ5Xfw\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"mMC7jZoF8D60gh4632AuZ\",\"children\":[{\"text\":\"Callback Messages\"}],\"nodeId\":\"callback-messages\",\"type\":\"h2\"},{\"id\":\"8AjjRJLQPs-eNHlNQJ0bB\",\"children\":[{\"text\":\"Message list\"}],\"nodeId\":\"message-list\",\"type\":\"h3\"},{\"id\":\"VtHHBz6JSzERUL8M_FCjO\",\"children\":[{\"id\":\"44FRvc8t2PCMDe3pMPQCw\",\"children\":[{\"id\":\"E-0nwwFKCqRW8fVRponUu\",\"children\":[{\"id\":\"0H194gSctIuN0x7QksdFR\",\"children\":[{\"text\":\"Message\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"5M0k7KYFoZOvZKd4kG3C4\",\"children\":[{\"id\":\"2vfVLCy6tvoauAavPH68d\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"zpWeveKrmJzKZ0YBhxoK9\",\"children\":[{\"id\":\"jF6011PwTaYWnYAn1Y7bq\",\"children\":[{\"id\":\"kaG2b9efv6WxLlGXW5xIj\",\"children\":[{\"id\":\"L-ILXDBM82sxbVWBP4ELV\",\"children\":[{\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_RECORD_COMPLETE\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"-9_A00BCU28wyPA0BEP1Q\",\"children\":[{\"id\":\"2-QPa4GNClpqE0KgvrVug\",\"children\":[{\"id\":\"vMrN_9ogcIniBT7ScFHBd\",\"children\":[{\"text\":\"Indicates that PTT recording is completed.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"7uonAYSdKUnomNgMD2ZwA\",\"children\":[{\"id\":\"ABuEYAB731eV220c_gs6F\",\"children\":[{\"id\":\"ePX148u8Ct2597TJzP42M\",\"children\":[{\"id\":\"uHoeBsXZ2Bty-MjWockAm\",\"children\":[{\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_UPLOAD_COMPLETE\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Scp0AtiO-AGqzMiSBdRbK\",\"children\":[{\"id\":\"B0j4OnPgVKs0F7pik8WPK\",\"children\":[{\"id\":\"5MVrV2bj8sbiJccqV3dj7\",\"children\":[{\"text\":\"Indicates that PTT upload is completed.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"OBZx6EfrqY3FN8RzLGQ4I\",\"children\":[{\"id\":\"6QShlaUqpneC2PRvKzTPC\",\"children\":[{\"id\":\"T3SwJ3LYQIxM681MrBzp4\",\"children\":[{\"id\":\"m9_Epiy60sn3KF2FvIX5y\",\"children\":[{\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_DOWNLOAD_COMPLETE\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"JMV1iR9jkow431QAyIZ02\",\"children\":[{\"id\":\"t5TaEAEf2KyFWee3ssFP6\",\"children\":[{\"id\":\"sarvjVpgZswA67e1O0iJF\",\"children\":[{\"text\":\"Indicates that PTT download is completed.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"4vjzg7i5kfGZtD4on0tyn\",\"children\":[{\"id\":\"5bRchZPoQ0rmNro36akWv\",\"children\":[{\"id\":\"GofDSmIFNNVFpKoFPdWBN\",\"children\":[{\"id\":\"qhUeP7HDxbj3aYOEcwgW5\",\"children\":[{\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_PLAY_COMPLETE\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"6Yhx0ia3jJ4SomS2t6c4f\",\"children\":[{\"id\":\"-Z3W5PwOT0unsWEpex1al\",\"children\":[{\"id\":\"oF0vSxS2yp1AsV3murr6J\",\"children\":[{\"text\":\"Indicates that PTT playback is completed.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"LBbBgyeW8-cG2KdPvnX9y\",\"children\":[{\"id\":\"xb4bj43Gax_q3CHaEY6yK\",\"children\":[{\"id\":\"O3pLhyOlRUJ4jdLM7Bq2m\",\"children\":[{\"id\":\"_zj5Xur4sEnnBSfCpJDWw\",\"children\":[{\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_SPEECH2TEXT_COMPLETE\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"pfjlQJv7e_g7VTGA69E5h\",\"children\":[{\"id\":\"_OEb0o5bNPXYVjnMNYF7F\",\"children\":[{\"id\":\"3rQkZOw11ph31FtnMMSVM\",\"children\":[{\"text\":\"Indicates that speech-to-text conversion is completed.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[54,46],\"widthMode\":\"percentage\"},{\"id\":\"m0360cdWtwb_TMBk-QGAQ\",\"children\":[{\"text\":\"Data list\"}],\"nodeId\":\"data-list\",\"type\":\"h3\"},{\"id\":\"kdlITnodtCaq9D01pCAD0\",\"children\":[{\"id\":\"V1DNziabYEYLO-p1Eu-2w\",\"children\":[{\"id\":\"dSOEU-uVBne8cv23-mksx\",\"children\":[{\"id\":\"ZSEKpDUUQ1__ssAdTEU1T\",\"children\":[{\"text\":\"Message\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Ucpd9qdp9aAxer6Qwphmw\",\"children\":[{\"id\":\"xzIf9Puf3GG7LrvwrO3me\",\"children\":[{\"text\":\"Data\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"f4xSto79nPD-OXz79uq4m\",\"children\":[{\"id\":\"IwAbyg7ugx-msjJYRM270\",\"children\":[{\"text\":\"Sample\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"58lKm8fFPJTPAEzK2Ufo_\",\"children\":[{\"id\":\"H2BTnbqtPNkot1AvD3qhv\",\"children\":[{\"id\":\"h3Cy2XBBaW-a1O3xMH8ZY\",\"children\":[{\"id\":\"9FBvPjPu3SEIIh_W5zIIy\",\"children\":[{\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_RECORD_COMPLETE\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"rYs84pnZe1Jpo366xtFIQ\",\"children\":[{\"id\":\"QiohI1xSV4LErLlKu8Zpc\",\"children\":[{\"id\":\"vAQxrh5Z39x3tY_MZXYTe\",\"children\":[{\"text\":\"result; file_path\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"i4BE8UnSp1DamA22Gmwim\",\"children\":[{\"id\":\"igI-OEnyJ6rxd8G0DbaXe\",\"children\":[{\"id\":\"JoDoVm_mIjmeCiJ4rnB9F\",\"children\":[{\"text\":\"{\\\"file_path\\\":\\\"\\\",\\\"result\\\":0}\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"93RUn-NFr-fLOlMLegztL\",\"children\":[{\"id\":\"1SRz5ttcU1rnbhcNoitD5\",\"children\":[{\"id\":\"usM-xiJEa17lyc6bfiBp9\",\"children\":[{\"id\":\"y8Bha6H10iatUgwKgNKXH\",\"children\":[{\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_UPLOAD_COMPLETE\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"MjFRXkRm8u5aQgzoorZOB\",\"children\":[{\"id\":\"BjY1dDuKww37gGEjJpJQC\",\"children\":[{\"id\":\"B3TDUo6Oa1nzb19DsY3V6\",\"children\":[{\"text\":\"result; file_path;file_id\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"xtgyqP25J6aZuSSb2xaD4\",\"children\":[{\"id\":\"j37W4KAKFLxNro3sb56zB\",\"children\":[{\"id\":\"V3Kr7prL4Cw1exSR-BQ4n\",\"children\":[{\"text\":\"{\\\"file_id\\\":\\\"\\\",\\\"file_path\\\":\\\"\\\",\\\"result\\\":0}\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"tEv-71Gbvyr3strtrwNSQ\",\"children\":[{\"id\":\"gM0_V-kwCEH0Vi8WJTWeQ\",\"children\":[{\"id\":\"_q1oymk73IpJhadaJv4iI\",\"children\":[{\"id\":\"d159OZcyJu2vW2399oyaS\",\"children\":[{\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_DOWNLOAD_COMPLETE\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"kPcOtMkuElkDPZ9A0ZiJU\",\"children\":[{\"id\":\"KFF_iEg7BZahl5h3uDzaj\",\"children\":[{\"id\":\"Bp7i5nwQgN-Ocf1CM6kyt\",\"children\":[{\"text\":\"result; file_path;file_id\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"k2h2aJaD8ETkvKAAFMExI\",\"children\":[{\"id\":\"P1cGG8IQde5SC--kgsZpw\",\"children\":[{\"id\":\"6qN5KzK-f5EKfdksdbq4V\",\"children\":[{\"text\":\"{\\\"file_id\\\":\\\"\\\",\\\"file_path\\\":\\\"\\\",\\\"result\\\":0}\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"PxN0MOa7Cq2RN3PkIh049\",\"children\":[{\"id\":\"2C3tEwFguruNYninonMlg\",\"children\":[{\"id\":\"cHXoN6h3CgJ9BL7PHnOdR\",\"children\":[{\"id\":\"G4HvYE5ae8D2sNFCtI9MH\",\"children\":[{\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_PLAY_COMPLETE\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"NHEm82rL3o4cWVnqGFIS3\",\"children\":[{\"id\":\"Ev9mQzHD7_Yw_XkCF1nGX\",\"children\":[{\"id\":\"goJRv5kQR7fzx-TAMr3Xy\",\"children\":[{\"text\":\"result; file_path\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"FJqAkTLHqeV-7b6YWoXT4\",\"children\":[{\"id\":\"yeKb5TN4YOY7cTEqoG1__\",\"children\":[{\"id\":\"-9YCPhYkkj8fmln1WlwZc\",\"children\":[{\"text\":\"{\\\"file_path\\\":\\\"\\\",\\\"result\\\":0}\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"7MvOiLsdFMaatxmBf5oIt\",\"children\":[{\"id\":\"rbgr-iAUIBcFpOm_j2W4K\",\"children\":[{\"id\":\"CeE8vZWtjLwNmXqJZK1uq\",\"children\":[{\"id\":\"_eEbrDkJxVOGRfcYvYanv\",\"children\":[{\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_SPEECH2TEXT_COMPLETE\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"LEzjkT39NFqF9loeZ80r8\",\"children\":[{\"id\":\"VCqGHU399-w01v7PFwpaE\",\"children\":[{\"id\":\"lC8lzisfZ2wuMEp5jjsKi\",\"children\":[{\"text\":\"result; text;file_id\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"z-QR7IjALNHaNevpINTYr\",\"children\":[{\"id\":\"z63wdPxZ6Y-69wkg_gG2D\",\"children\":[{\"id\":\"hKQ2wZiA1wbwRyCXIIAJf\",\"children\":[{\"text\":\"{\\\"file_id\\\":\\\"\\\",\\\"text\\\":\\\"\\\",\\\"result\\\":0}\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"imPGlttSGri9MfP1UPIuN\",\"children\":[{\"id\":\"9wkiEW_YwOSyA1q62-86Q\",\"children\":[{\"id\":\"NHbnhiTygGTHU0DrSumxP\",\"children\":[{\"id\":\"QIV9fyXtGWmhYvvV01Qxp\",\"children\":[{\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRECOGNITION_COMPLETE\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"MkrOy6EgqIUOR636EUo_v\",\"children\":[{\"id\":\"wfZdAcxSzTqHhO502DttB\",\"children\":[{\"id\":\"YCK6JZtRsCJT7y5-bQCOv\",\"children\":[{\"text\":\"result; file_path; text;file_id\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"T3q4cNMk4IzFP_3B3L4mX\",\"children\":[{\"id\":\"IkVEvDXFDMuQas0pTJ-wX\",\"children\":[{\"id\":\"YlJU6Yk_aRIEL1UgSglfs\",\"children\":[{\"text\":\"{\\\"file_id\\\":\\\"\\\",\\\"file_path\\\":\\\",\\\"text\\\":\\\"\\\",\\\"result\\\":0}\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[51,19,30],\"widthMode\":\"percentage\"},{\"type\":\"p\",\"children\":[{\"text\":\"\"}],\"id\":\"y0mgYsIgLGH4Hga3UZVnG\"}]"}},"41634":{"categoryId":607,"weight":140,"type":"page","extension":"","pid":15179,"id":41634,"lang":"en","title":"Project Export","pdfUrl":"","docType":"default","children":[],"firstReleaseTime":"2021-08-11 18:48:18","recentReleaseTime":"2021-08-11 18:48:18","content":{"title":"Project Export","body":"
This document mainly describes the notes on exporting the iOS project so that the iOS developers can easily debug and integrate the APIs for Game Multimedia Engine (GME).

Export Configuration

1. Add the following dependent library to Xcode > Link Binary With Libraries > Build Setting as needed, and set Framework Search Paths to point to the directory where the SDK resides, as shown below:

\"\"


2. Add dependent libraries as shown below:

\"\"


3. Bitcode should be supported by all class libraries that the project depends on. Bitcode is not supported by the SDK, so it can be disabled. To disable Bitcode, you only need to search for Bitcode under Targets > Build Settings and set the corresponding option to NO.

\"\"


4. The GME SDK for iOS requires the following permissions:
Required background modes: Allows running in the background (optional).
Microphone Usage Description: Allows access to microphone.

GME 2.9 or Later

If the accessed SDK is on v2.9 or later, you need to configure it as instructed in iOS Project Upgrade Guide.
","recentReleaseTime":"2024-01-18 15:11:45","slate":"[{\"id\":\"1VTofdXRSEfGZWPzPKV-E\",\"children\":[{\"text\":\"This document mainly describes the notes on exporting the iOS project so that the iOS developers can easily debug and integrate the APIs for Game Multimedia Engine (GME).\"}],\"type\":\"p\"},{\"id\":\"J6e2FHRnHF-U9P_uNXmFy\",\"children\":[{\"text\":\"Export Configuration\"}],\"nodeId\":\"export-configuration\",\"type\":\"h2\"},{\"id\":\"UcUVTlkddeVzAWIien16s\",\"children\":[{\"text\":\"Add the following dependent library to \"},{\"b\":1,\"text\":\"Xcode\"},{\"text\":\" > \"},{\"b\":1,\"text\":\"Link Binary With Libraries\"},{\"text\":\" > \"},{\"b\":1,\"text\":\"Build Setting\"},{\"text\":\" as needed, and set Framework Search Paths to point to the directory where the SDK resides, as shown below:\"}],\"start\":true,\"type\":\"oli\"},{\"id\":\"ontFH3GRzFXZsX8bzPSlM\",\"type\":\"p\",\"children\":[{\"text\":\"\"},{\"id\":\"LeByy8iIBZlwjQu2xSibJ\",\"alt\":\"\",\"children\":[{\"text\":\"\"}],\"inline\":true,\"type\":\"image\",\"url\":\"https://cloudcache.intl.tencent-cloud.com/cms/backend-cms/054d8febb37211eeb2a1525400170219.png\",\"naturalSize\":[1323,725],\"size\":[899,492]},{\"text\":\"\"}],\"indent\":1},{\"id\":\"bnTcmGVFj77t6OB7yLRHc\",\"children\":[{\"text\":\"Add dependent libraries as shown below:\"}],\"start\":false,\"type\":\"oli\"},{\"id\":\"Z-8IE5Sgs3y-YDMWEO8KQ\",\"type\":\"p\",\"children\":[{\"text\":\"\"},{\"id\":\"bAeuhGleidmSrbmLFO6Kf\",\"alt\":\"\",\"children\":[{\"text\":\"\"}],\"inline\":true,\"type\":\"image\",\"url\":\"https://cloudcache.intl.tencent-cloud.com/cms/backend-cms/05198543b37211eeae9a525400c26da5.png\",\"naturalSize\":[378,456],\"size\":[378,456]},{\"text\":\"\"}],\"indent\":1},{\"id\":\"l6LeburIWWQrkgXtU_vJs\",\"children\":[{\"text\":\"Bitcode should be supported by all class libraries that the project depends on. Bitcode is not supported by the SDK, so it can be disabled. To disable Bitcode, you only need to search for Bitcode under \"},{\"b\":1,\"text\":\"Targets\"},{\"text\":\" > \"},{\"b\":1,\"text\":\"Build Settings\"},{\"text\":\" and set the corresponding option to \"},{\"code\":1,\"text\":\"NO\"},{\"text\":\".\"}],\"start\":false,\"type\":\"oli\"},{\"id\":\"swTG_p3bRjxu6_2Hz-ehF\",\"type\":\"p\",\"children\":[{\"text\":\"\"},{\"id\":\"cv0zRvpjF7hj4kmKs9Rh3\",\"alt\":\"\",\"children\":[{\"text\":\"\"}],\"inline\":true,\"type\":\"image\",\"url\":\"https://cloudcache.intl.tencent-cloud.com/cms/backend-cms/053d8990b37211ee9939525400461a83.png\",\"naturalSize\":[723,184],\"size\":[723,184]},{\"text\":\"\"}],\"indent\":1},{\"id\":\"5Pd-d22GsLI3v7eaKOjv6\",\"children\":[{\"text\":\"The GME SDK for iOS requires the following permissions:\"}],\"start\":false,\"type\":\"oli\"},{\"id\":\"XMCJGYKFZ-6yU1XluhPab\",\"children\":[{\"text\":\"Required background modes: Allows running in the background (optional).\"}],\"indent\":1,\"start\":false,\"type\":\"uli\"},{\"id\":\"hmonPQKJ284hs2Qh6aqDF\",\"children\":[{\"text\":\"Microphone Usage Description: Allows access to microphone.\"}],\"indent\":1,\"start\":false,\"type\":\"uli\"},{\"id\":\"DO840BPWRKlAuB7I8rFuH\",\"children\":[{\"text\":\"GME 2.9 or Later\"}],\"nodeId\":\"gme-2.9-or-later\",\"type\":\"h2\"},{\"id\":\"s4lWa8_fBiQ8CjIZ2_Bok\",\"children\":[{\"text\":\"If the accessed SDK is on v2.9 or later, you need to configure it as instructed in \"},{\"id\":\"3oqLWzkzDK_YyoajsLfmn\",\"children\":[{\"text\":\"iOS Project Upgrade Guide\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://intl.cloud.tencent.com/document/product/607/46015\",\"props\":{\"type\":\"link\",\"url\":\"https://intl.cloud.tencent.com/document/product/607/46015\"},\"type\":\"ref\"},{\"text\":\".\"}],\"type\":\"p\"}]"}},"41635":{"categoryId":607,"weight":160,"type":"page","extension":"","pid":15180,"id":41635,"lang":"en","title":"Speech-to-Text Service","pdfUrl":"","docType":"default","children":[],"firstReleaseTime":"2021-08-11 18:48:17","recentReleaseTime":"2021-08-11 18:48:17","content":{"title":"Speech-to-Text Service","body":"
This document describes how to integrate with and debug GME client APIs for the voice message and speech-to-text services for Unity.

Key Considerations for Using GME

GME provides the real-time voice chat service, voice messaging and speech-to-text services, which all depend on core APIs such as Init and Poll.

Notes

You have created a GME application and obtained the SDK AppID and key. For more information, see Activating Services.
You have activated GME voice chat, voice messaging, and speech-to-text services. For more information, see Activating Services.
Configure your project before using GME; otherwise, the SDK will not take effect.
After a GME API is called successfully, QAVError.OK will be returned with the value being 0.
GME APIs should be called in the same thread.
The Poll API should be called periodically for GME to trigger event callbacks.
For detailed error codes, see Error Codes.
Note:
There is a default call rate limit for speech-to-text APIs. For more information on how calls are billed within the limit, see Purchase Guide. If you want to increase the limit or learn more about how excessive calls are billed, submit a ticket.
Non-streaming speech-to-text API SpeechToText(): There can be up to 10 concurrent requests per account.
Streaming speech-to-text API StartRecordingWithStreamingRecognition(): There can be up to 50 concurrent requests per account.
Voice chat streaming speech-to-text API StartRealTimeASR(): There can be up to 50 concurrent requests per account.

Integrating the SDK

Directions

Key processes involved in SDK integration are as follows:

\"\"


2. Call Poll periodically to trigger callbacks

C# classes

Class
Description
ITMGContext
Core APIs
ITMGPTT
Voice messaging and speech-to-text APIs

Core APIs

API
Description
Init
Initializes GME.
Poll
Triggers an event callback.
Pause
Pauses the system.
Resume
Resumes the system.
Uninit
Uninitializes GME.

Importing header files

using GME;

Getting an instance

Get the Context instance by using the ITMGContext method instead of QAVContext.GetInstance().

Initializing the SDK

You need to initialize the SDK through the Init API before you can use the real-time voice chat, voice message, and speech-to-text services. The Init API must be called in the same thread as other APIs. We recommend you call all APIs in the main thread.

API prototype

//class ITMGContext
public abstract int Init(string sdkAppID, string openID);
Parameter
Type
Description
sdkAppId
string
AppID provided in the GME console, which can be obtained as instructed in Activating Services.
openID
string
openID can only be in Int64 type, which is passed in after being converted to a string. You can customize its rules, and it must be unique in the application. To pass in openID as a string, submit a ticket for application.

Returned values

Return Value
Handling
QAVError.OK= 0
The SDK was initialized successfully.
AV_ERR_SDK_NOT_FULL_UPDATE=7015
Checks whether the SDK file is complete. We recommend that you delete it and then import it again.
Notes on 7015 error code
The error code 7015 is identified based on the MD5 value. If this error is reported during integration, check the integrity and version of the SDK file as prompted.
The returned value AV_ERR_SDK_NOT_FULL_UPDATE is only a reminder but will not cause an initialization failure.
Due to the third-party enhancement, the Unity packaging mechanism, and other factors, the library file MD5 will be affected, resulting in misjudgment. Therefore, ignore this error in the logic for official releases, and avoid displaying it on the UI.

Sample code

int ret = ITMGContext.GetInstance().Init(sdkAppId, openID);
// Determine whether the initialization is successful by the returned value
if (ret != QAVError.OK)
{
Debug.Log("SDK initialization failed:"+ret);
return;
}

Triggering event callback

Event callbacks can be triggered by periodically calling the Poll API in update. The Poll API is GME's message pump and should be called periodically for GME to trigger event callbacks; otherwise, the entire SDK service will run abnormally. For more information, see the EnginePollHelper file in SDK Download Guide.
Note:
The Poll API must be called periodically and in the main thread to avoid abnormal API callbacks.

API prototype

ITMGContext public abstract int Poll();

Sample code

public void Update()
{
ITMGContext.GetInstance().Poll();
}

Pausing the system

When a Pause event occurs in the system, the engine should also be notified for pause. For example, when the application switches to the background (OnApplicationPause, isPause=True), and you do not need the background to play back the audio in the room, please call Pause API to pause the GME service.

API prototype

ITMGContext public abstract int Pause()

Resuming the system

When a Resume event occurs in the system, the engine should also be notified for resumption. The Resume API only supports resuming voice chat.

API prototype

ITMGContext public abstract int Resume()

Uninitializing SDK

This API is used to uninitialize the SDK. If the game account is bound to openid, switching game account requires uninitializing GME and then using the new openid to initialize again.

API prototype

ITMGContext public abstract int Uninit()

Voice Messaging and Speech-to-Text Services

Note:
The speech-to-text service consists of fast recording-to-text conversion and streaming speech-to-text conversion.
You do not need to enter a voice chat room when using the voice messaging service.
The maximum recording duration of a voice message is 58 seconds by default, and the minimum recording duration cannot be less than 1 second. If you want to customize the recording duration, for example, to modify the maximum recording duration to 10 seconds, please call the SetMaxMessageLength API to set it after initialization.

Flowchart for using the voice message service


\"\"



Flowchart for using the speech-to-text service


\"\"


API
Description
GenAuthBuffer
Generates the local authentication key.
ApplyPTTAuthbuffer
Initializes authentication.
SetMaxMessageLength
Specifies the maximum duration of a voice message.

Generating the local authentication key

Generate AuthBuffer for encryption and authentication of relevant features. For release in the production environment, use the backend deployment key as detailed in Authentication Key.

API prototype

QAVAuthBuffer GenAuthBuffer(int appId, string roomId, string openId, string key)
Parameter
Type
Description
appId
int
AppId from the Tencent Cloud console
roomId
string
Enter null or an empty string.
openId
string
User ID, which is the same as OpenId during initialization.
key
string
Permission key from the Tencent Cloud console.

Application authentication

After the authentication information is generated, the authentication is assigned to the SDK.

API prototype

ITMGPTT int ApplyPTTAuthbuffer (byte[] authBuffer)
Parameter
Type
Description
authBuffer
byte[]
Authentication

Sample code

UserConfig.SetAppID(transform.Find ("appId").GetComponent<InputField> ().text);
UserConfig.SetUserID(transform.Find ("userId").GetComponent<InputField> ().text);
UserConfig.SetAuthKey(transform.Find("authKey").GetComponent<InputField>().text);
byte[] authBuffer = UserConfig.GetAuthBuffer(UserConfig.GetAppID(), UserConfig.GetUserID(), null,UserConfig.GetAuthKey());
ITMGContext.GetInstance ().GetPttCtrl ().ApplyPTTAuthbuffer(authBuffer);

Specifying the maximum duration of voice message

This API is used to specify the maximum duration of a voice message, which can be up to 58 seconds.

API prototype

ITMGPTT int SetMaxMessageLength(int msTime)
Parameter
Type
Description
msTime
int
Audio duration in ms. Value range: 1000 < msTime < = 58000.

Sample code

ITMGContext.GetInstance().GetPttCtrl().SetMaxMessageLength(58000);

Streaming Speech Recognition

Voice messaging and speech-to-text APIs

API
Description
StartRecordingWithStreamingRecognition
Starts streaming recording.
StopRecording
This API is used to stop audio recording.

Starting streaming speech recognition

This API is used to start streaming speech recognition. Text obtained from speech-to-text conversion will be returned in real time in its callback. It can specify a language for recognition or translate the text recognized in speech into a specified language and return the translation. To stop recording, call StopRecording.

API prototype

ITMGPTT int StartRecordingWithStreamingRecognition(string filePath)
ITMGPTT int StartRecordingWithStreamingRecognition(string filePath, string speechLanguage,string translateLanguage)
Parameter
Type
Description
filePath
String
Path of the stored audio file
speechLanguage
String
The language in which the audio file is to be converted to text. For parameters, see Language Parameter Reference List.
translateLanguage
String
Enter the value of speechLanguage.

Sample code

string recordPath = Application.persistentDataPath + string.Format("/{0}.silk", sUid++);
int ret = ITMGContext.GetInstance().GetPttCtrl().StartRecordingWithStreamingRecognition(recordPath, "cmn-Hans-CN","cmn-Hans-CN");
Note:
Translation incurs additional fees. For more information, see Purchase Guide.

Callback for streaming speech recognition

After streaming speech recognition is started, you need to listen on callback messages in the OnStreamingSpeechComplete or OnStreamingSpeechisRunning notification, which is as detailed below:
OnStreamingSpeechComplete returns text after the recording is stopped and the recognition is completed, which is equivalent to returning the recognized text after a paragraph of speech.
OnStreamingSpeechisRunning returns the recognized text in real time during the recording, which is equivalent to returning the recognized text while speaking.
The event message will be identified in the OnEvent notification based on the actual needs. The passed parameters include the following four messages.
Parameter
Description
result
Return code indicating whether streaming speech-to-text conversion is successful
text
Text converted from speech
file_path
Local path of the stored recording file
file_id
Backend URL address of recording file, which will be retained for 90 days
Note:
The file_id is empty when the 'ITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRecognition_IS_RUNNING' message is listened.

Error codes

Error Code
Description
Solution
32775
Streaming speech-to-text conversion failed, but recording succeeded.
Call the UploadRecordedFile API to upload the recording file and then call the SpeechToText API to perform speech-to-text conversion.
32777
Streaming speech-to-text conversion failed, but recording and upload succeeded.
The message returned contains a backend URL after successful upload. Call the SpeechToText API to perform speech-to-text conversion.
32786
Streaming speech-to-text conversion failed.
During streaming recording, wait for the execution result of the streaming recording API to return.
32787
Speech-to-text conversion succeeded, but the text translation service was not activated.
Activate the text translation service in the console.
32788
Speech-to-text conversion succeeded, but the language parameter of the text translation service was invalid.
Check the parameter passed in.
If the error code 4098 is reported, see Speech-to-text Conversion for solutions.

Sample code

// Listen on an event:
ITMGContext.GetInstance().GetPttCtrl().OnStreamingSpeechComplete +=new QAVStreamingRecognitionCallback (OnStreamingSpeechComplete);
ITMGContext.GetInstance().GetPttCtrl().OnStreamingSpeechisRunning += new QAVStreamingRecognitionCallback (OnStreamingRecisRunning);
// Process the event listened on:
void OnStreamingSpeechComplete(int code, string fileid, string filepath, string result){
// Callback for streaming speech recognition
}

void OnStreamingRecisRunning(int code, string fileid, string filePath, string result){
if (code == 0)
{
setBtnText(mStreamBtn, "Streaming");
InputField field = transform.Find("recordFilePath").GetComponent<InputField>();
field.text = filePath;

field = transform.Find("downloadUrl").GetComponent<InputField>();
field.text = "Stream is Running";

field = transform.Find("convertTextResult").GetComponent<InputField>();
field.text = result;
showWarningText("Recording");
}\t
}

Voice Message Recording

The recording process is as follows: start recording > stop recording > return recording callback > start the next recording.

Voice messaging and speech-to-text APIs

API
Description
StartRecording
Starts recording.
PauseRecording
Pauses recording.
ResumeRecording
Resumes recording.
StopRecording
This API is used to stop audio recording.
CancelRecording
Cancels recording.

Starting recording

This API is used to start recording.

API prototype

ITMGPTT int StartRecording(string fileDir)
Parameter
Type
Description
fileDir
string
Path of the stored audio file

Sample code

string recordPath = Application.persistentDataPath + string.Format ("/{0}.silk", sUid++);
int ret = ITMGContext.GetInstance().GetPttCtrl().StartRecording(recordPath);

Stopping recording

This API is used to stop recording. It is async, and a callback for recording completion will be returned after recording stops. A recording file will be available only after recording succeeds.

API prototype

ITMGPTT int StopRecording()

Sample code

ITMGContext.GetInstance().GetPttCtrl().StopRecording();

Callback for recording start

A callback will be executed through a delegate function to pass a message when recording is completed.
To stop recording, call StopRecording. The callback for recording start will be returned after the recording is stopped.

API prototype

public delegate void QAVRecordFileCompleteCallback(int code, string filepath);
public abstract event QAVRecordFileCompleteCallback OnRecordFileComplete;
Parameter
Type
Description
code
string
0: Recording is completed.
filepath
string
Path of the stored recording file, which must be accessible and cannot be the fileid.

Error codes

Error Code
Caused By
Suggestion
4097
Empty parameters.
Check whether the API parameters in the code are correct.
4098
An initialization error occurred.
Check whether the device is being used, whether the permissions are normal, and whether the initialization is normal.
4099
Recording is in progress.
Make sure that the SDK recording feature is used at the right time.
4100
No audio data is captured.
Check whether the mic is working properly.
4101
An error occurred while accessing the file during recording.
Ensure the existence of the file and the validity of the file path.
4102
The mic is not authorized.
The mic permission is required for using the SDK. To add the permission, see the SDK project configuration document for the corresponding engine or platform.
4103
The recording duration is too short.
The recording duration should be in ms and longer than 1,000 ms.
4104
No recording operation is started.
Check whether the recording starting API has been called.

Sample code

// Listen on an event
ITMGContext.GetInstance().GetPttCtrl().OnRecordFileComplete += new QAVRecordFileCompleteCallback (OnRecordFileComplete);
// Process the event listened on
void OnRecordFileComplete(int code, string filepath){
// Callback for recording start
}

Pausing recording

This API is used to pause recording. If you want to resume recording, call the ResumeRecording API.

API prototype

ITMGPTT int PauseRecording()

Sample code

ITMGContext.GetInstance().GetPttCtrl().PauseRecording();

Resuming recording

This API is used to resume recording.

API prototype

ITMGPTT int ResumeRecording()

Sample code

ITMGContext.GetInstance().GetPttCtrl().ResumeRecording();

Canceling recording

This API is used to cancel recording. There is no callback after cancellation.

API prototype

ITMGPTT int CancelRecording()

Sample code

ITMGContext.GetInstance().GetPttCtrl().CancelRecording();

Voice Message Upload, Download, and Playback

API
Description
UploadRecordedFile
Uploads an audio file.
DownloadRecordedFile
Downloads an audio file.
PlayRecordedFile
Plays back an audio file.
StopPlayFile
Stops playing back an audio file.
GetFileSize
Gets the audio file size.
GetVoiceFileDuration
Gets the audio file duration.

Uploading an audio file

This API is used to upload an audio file.

API prototype

ITMGPTT int UploadRecordedFile (string filePath)
Parameter
Type
Description
filePath
String
Path of the uploaded audio file, which is a local path.

Sample code

ITMGContext.GetInstance().GetPttCtrl().UploadRecordedFile(filePath);

Callback for audio file upload completion

A callback will be executed through a delegate function to pass a message when the upload of audio file is completed.

API prototype

public delegate void QAVUploadFileCompleteCallback(int code, string filepath, string fileid);
public abstract event QAVUploadFileCompleteCallback OnUploadFileComplete;
Parameter
Type
Description
code
int
0: Recording is completed.
filepath
string
Path of the stored recording file
fileid
string
File URL

Error codes

Error Code
Cause
Suggestion
8193
An error occurred while accessing the file during upload.
Ensure the existence of the file and the validity of the file path.
8194
Signature verification failed.
Check whether the authentication key is correct and whether the voice messaging and speech-to-text feature is initialized.
8195
Network error.
Check whether the device can access the internet.
8196
The network failed while getting the upload parameters.
Check whether the authentication is correct and whether the device network can normally access the internet.
8197
The packet returned during the process of getting the upload parameters is empty.
Check whether the authentication is correct and whether the device network can normally access the internet.
8198
Failed to decode the packet returned during the process of getting the upload parameters.
Check whether the authentication is correct and whether the device network can normally access the internet.
8200
appinfo is not set.
Check whether the apply API is called or whether the input parameter is not specified or null.

Sample code

// Listen on an event
ITMGContext.GetInstance().GetPttCtrl().OnUploadFileComplete +=new QAVUploadFileCompleteCallback (OnUploadFileComplete);
// Process the event listened on
void OnUploadFileComplete(int code, string filepath, string fileid){
// Callback for audio file upload completion
}

Downloading the audio file

This API is used to download an audio file.

API prototype

ITMGPTT DownloadRecordedFile (string fileID, string downloadFilePath)
Parameter
Type
Description
fileID
String
File URL
downloadFilePath
String
Local path of the saved file, which must be accessible and cannot be the fileid.

Sample code

ITMGContext.GetInstance().GetPttCtrl().DownloadRecordedFile(fileId, filePath);

Callback for audio file download completion

A callback will be executed through a delegate function to pass a message when the download of audio file is completed.

API prototype

public delegate void QAVDownloadFileCompleteCallback(int code, string filepath, string fileid);
public abstract event QAVDownloadFileCompleteCallback OnDownloadFileComplete;
Parameter
Type
Description
code
int
0: Recording is completed.
filepath
string
Path of the stored recording file
fileid
string
URL of the recording file, which will be retained on the server for 90 days.

Error codes

Error Code
Cause
Suggestion
12289
An error occurred while accessing the file during download.
Check whether the file path is valid.
12290
Signature verification failed.
Check whether the authentication key is correct and whether the voice messaging and speech-to-text feature is initialized.
12291
A network storage system exception occurred.
The server failed to get the audio file. Check whether the API parameter fileid is correct, whether the network is normal, and whether the file exists in COS.
12292
A server file system error occurred.
Check whether the device can access the internet and whether the file exists on the server.
12293
The HTTP network failed while getting the download parameters.
Check whether the device can access the internet.
12294
The packet returned during the process of getting the download parameters is empty.
Check whether the device can access the internet.
12295
Failed to decode the packet returned during the process of getting the download parameters.
Check whether the device can access the internet.
12297
appinfo is not set.
Check whether the authentication key is correct and whether the voice messaging and speech-to-text feature is initialized.

Sample code

// Listen on an event
ITMGContext.GetInstance().GetPttCtrl().OnDownloadFileComplete +=new QAVDownloadFileCompleteCallback(OnDownloadFileComplete);
// Process the event listened on
void OnDownloadFileComplete(int code, string filepath, string fileid){
// Callback for audio file download completion
}

Playing back audio

This API is used to play back audio.

API prototype

ITMGPTT PlayRecordedFile(string filePath)
ITMGPTT PlayRecordedFile(string filePath,int voiceType);
Parameter
Type
Description
filePath
string
Local audio file path
voicetype
int
Voice changing type. For more information, see Voice Changing.

Error codes

Error Code
Cause
Suggestion
20485
Playback is not started.
Ensure the existence of the file and the validity of the file path.

Sample code

ITMGContext.GetInstance().GetPttCtrl().PlayRecordedFile(filePath);

Callback for audio playback

A callback will be executed through a delegate function to pass a message when an audio file is played back.

API prototype

public delegate void QAVPlayFileCompleteCallback(int code, string filepath);
public abstract event QAVPlayFileCompleteCallback OnPlayFileComplete;
Parameter
Type
Description
code
int
0: Playback is completed.
filepath
string
Path of the stored recording file

Error codes

Error Code
Cause
Suggestion
20481
An initialization error occurred.
Check whether the device is being used, whether the permissions are normal, and whether the initialization is normal.
20482
During playback, the client tried to interrupt and play back the next one but failed (which should succeed normally).
Check whether the code logic is correct.
20483
Empty parameters.
Check whether the API parameters in the code are correct.
20484
Internal error
An error occurred while initializing the player. This error code is generally caused by failure in decoding, and the error should be located with the aid of logs.

Sample code

// Listen on an event:
ITMGContext.GetInstance().GetPttCtrl().OnPlayFileComplete +=new QAVPlayFileCompleteCallback(OnPlayFileComplete);
// Process the event listened on:
void OnPlayFileComplete(int code, string filepath){
// Callback for audio playback
}

Stopping audio playback

This API is used to stop audio playback. There will be a callback for playback completion when the playback stops.

API prototype

ITMGPTT int StopPlayFile()

Sample code

ITMGContext.GetInstance().GetPttCtrl().StopPlayFile();

Getting audio file size

This API is used to get the size of an audio file.

API prototype

ITMGPTT GetFileSize(string filePath)
Parameter
Type
Description
filePath
String
Path of the audio file, which is a local path.

Sample code

int fileSize = ITMGContext.GetInstance().GetPttCtrl().GetFileSize(filepath);

Getting audio file duration

This API is used to get the duration of an audio file in milliseconds.

API prototype

ITMGPTT int GetVoiceFileDuration(string filePath)
Parameter
Type
Description
filePath
String
Path of the audio file, which is a local path.

Sample code

int fileDuration = ITMGContext.GetInstance().GetPttCtrl().GetVoiceFileDuration(filepath);

Fast Recording-to-Text Conversion

API
Description
SpeechToText
Converts speech to text.

Converting audio file to text

This API is used to convert a specified audio file to text.

API prototype

ITMGPTT int SpeechToText(String fileID)
Parameter
Type
Description
fileID
String
Audio file URL

Sample code

ITMGContext.GetInstance().GetPttCtrl().SpeechToText(fileID);

Translating audio file into text in specified language

This API can specify a language for recognition or translate the text recognized in speech into a specified language and return the translation.
Note:
Translation incurs additional fees. For more information, see Purchase Guide.

API prototype

ITMGPTT int SpeechToText(String fileID,String speechLanguage)
ITMGPTT int SpeechToText(String fileID,String speechLanguage,String translatelanguage)
Parameter
Type
Description
fileID
String
URL of the audio file, which will be retained on the server for 90 days.
speechLanguage
String
The language in which the audio file is to be converted to text. For parameters, see Language Parameter Reference List.
translatelanguage
String
The language in which the audio file is to be translated into text. For parameters, see Language Parameter Reference List.

Sample code

ITMGContext.GetInstance().GetPttCtrl().SpeechToText(fileID,"cmn-Hans-CN","cmn-Hans-CN");

Callback for recognition

A callback will be executed through a delegate function to pass a message when a specified audio file is recognized and converted to text.

API prototype

public delegate void QAVSpeechToTextCallback(int code, string fileid, string result);
public abstract event QAVSpeechToTextCallback OnSpeechToTextComplete;
Parameter
Type
Description
code
int
0: Recording is completed.
fileid
string
URL of the audio file, which will be retained on the server for 90 days.
result
string
Converted text

Error codes

Error Code
Cause
Suggestion
32769
Internal error
Analyze logs, get the actual error code returned from the backend to the client, and ask backend personnel for assistance.
32770
Network connection failed.
Check whether the device can access the internet.
32772
Failed to decode the returned packet.
Analyze logs, get the actual error code returned from the backend to the client, and ask backend personnel for assistance.
32774
appinfo is not set.
Check whether the authentication key is correct and whether the voice messaging and speech-to-text feature is initialized.
32776
authbuffer check failed.
Check whether authbuffer is correct.
32784
The speech-to-text conversion parameter is incorrect.
Check whether the API parameter fileid in the code is empty.
32785
A speech-to-text translation error occurred.
An error occurred in the voice messaging and speech-to-text feature on the backend. Analyze logs, get the actual error code returned from the backend to the client, and ask backend personnel for assistance.
32787
Speech-to-text conversion succeeded, but the text translation service was not activated.
Activate the text translation service in the console.
32788
Speech-to-text conversion succeeded, but the language parameter of the text translation service was invalid.
Check the parameter passed in.

Sample code

// Listen on an event
ITMGContext.GetInstance().GetPttCtrl().OnSpeechToTextComplete += new QAVSpeechToTextCallback(OnSpeechToTextComplete);
// Process the event listened on
void OnSpeechToTextComplete(int code, string fileid, string result){
// Callback for recognition
}

Voice Message Volume Level APIs

API
Description
GetMicLevel
Gets the real-time mic volume level.
SetMicVolume
Sets the recording volume level.
GetMicVolume
Gets the recording volume level.
GetSpeakerLevel
Gets the real-time speaker volume level.
SetSpeakerVolume
This API is used to set the playback volume.
GetSpeakerVolume
Gets the playback volume level.

Getting the real-time mic volume of voice message

This API is used to get the real-time mic volume. An int-type value will be returned. Value range: 0-200.

API prototype

ITMGPTT int GetMicLevel()

Sample code

ITMGContext.GetInstance().GetPttCtrl().GetMicLevel();

Setting the recording volume of voice message

This API is used to set the recording volume of voice message. Value range: 0-200.

API prototype

ITMGPTT int SetMicVolume(int vol)

Sample code

ITMGContext.GetInstance().GetPttCtrl().SetMicVolume(100);

Getting the recording volume of voice message

This API is used to get the recording volume of voice message. An int-type value will be returned. Value range: 0-200.

API prototype

ITMGPTT int GetMicVolume()

Sample code

ITMGContext.GetInstance().GetPttCtrl().GetMicVolume();

Getting the real-time speaker volume of voice message

This API is used to get the real-time speaker volume. An int-type value will be returned. Value range: 0-200.

API prototype

ITMGPTT int GetSpeakerLevel()

Sample code

ITMGContext.GetInstance().GetPttCtrl().GetSpeakerLevel();

Setting the playback volume of voice message

This API is used to set the playback volume of voice message. Value range: 0-200.

API prototype

ITMGPTT int SetSpeakerVolume(int vol)

Sample code

ITMGContext.GetInstance().GetPttCtrl().SetSpeakerVolume(100);

Getting the playback volume of voice message

This API is used to get the playback volume of voice message. An int-type value will be returned. Value range: 0-200.

API prototype

ITMGPTT int GetSpeakerVolume()

Sample code

ITMGContext.GetInstance().GetPttCtrl().GetSpeakerVolume();

Advanced APIs

Getting version number

This API is used to get the SDK version number for analysis.

API prototype

ITMGContext abstract string GetSDKVersion()

Sample code

ITMGContext.GetInstance().GetSDKVersion();

Setting log printing level

This API is used to set the level of logs to be printed, and needs to be called before the initialization. It is recommended to keep the default level.

API prototype

ITMGContext SetLogLevel(ITMG_LOG_LEVEL levelWrite, ITMG_LOG_LEVEL levelPrint)

Parameter description

Parameter
Type
Description
levelWrite
ITMG_LOG_LEVEL
Sets the level of logs to be written. TMG_LOG_LEVEL_NONE indicates not to write. Default value: TMG_LOG_LEVEL_INFO.
levelPrint
ITMG_LOG_LEVEL
Sets the level of logs to be printed. TMG_LOG_LEVEL_NONE indicates not to print. Default value: TMG_LOG_LEVEL_ERROR.
ITMG_LOG_LEVEL description:
ITMG_LOG_LEVEL
Description
TMG_LOG_LEVEL_NONE
Does not print logs
TMG_LOG_LEVEL_ERROR
Prints error logs (default)
TMG_LOG_LEVEL_INFO
Prints info logs
TMG_LOG_LEVEL_DEBUG
Prints debug logs
TMG_LOG_LEVEL_VERBOSE
Prints verbose logs

Sample code

ITMGContext.GetInstance().SetLogLevel(TMG_LOG_LEVEL_INFO,TMG_LOG_LEVEL_INFO);

Setting the log printing path

This API is used to set the log printing path. The default path is as follows. It needs to be called before initialization.
Platform
Path
Windows
%appdata%\\Tencent\\GME\\ProcessName
iOS
Application/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/Documents
Android
/sdcard/Android/data/xxx.xxx.xxx/files
macOS
/Users/username/Library/Containers/xxx.xxx.xxx/Data/Documents

API prototype

ITMGContext SetLogPath(string logDir)
Parameter
Type
Description
logDir
String
Path

Sample code

ITMGContext.GetInstance().SetLogPath(path);

","recentReleaseTime":"2025-08-26 15:50:03","slate":"[{\"id\":\"mVWG2Ulza_OhDFJXKnwJ6\",\"children\":[{\"text\":\"This document describes how to integrate with and debug GME client APIs for the voice message and speech-to-text services for Unity.\"}],\"type\":\"p\"},{\"id\":\"S_RjvebQ94_4iL9kKkqgI\",\"children\":[{\"text\":\"Key Considerations for Using GME\"}],\"nodeId\":\".E4.BD.BF.E7.94.A8-gme-.E9.87.8D.E8.A6.81.E4.BA.8B.E9.A1.B9\",\"type\":\"h2\"},{\"id\":\"4hAPBIZNniCYMtbnsMSbC\",\"children\":[{\"text\":\"GME provides the real-time voice chat service, voice messaging and speech-to-text services, which all depend on core APIs such as \"},{\"code\":1,\"text\":\"Init\"},{\"text\":\" and \"},{\"code\":1,\"text\":\"Poll\"},{\"text\":\".\"}],\"type\":\"p\"},{\"id\":\"6ps2AAMKvNPkAWfeuBo3O\",\"children\":[{\"text\":\"Notes\"}],\"nodeId\":\".E9.87.8D.E7.82.B9.E6.8F.90.E7.A4.BA\",\"type\":\"h4\"},{\"id\":\"6hy9KiUrxaueDGiZYGoyR\",\"children\":[{\"text\":\"You have created a GME application and obtained the SDK \"},{\"code\":1,\"text\":\"AppID\"},{\"text\":\" and key. For more information, see \"},{\"id\":\"ocWdQrzsNbBpug5IHMrC5\",\"children\":[{\"text\":\"Activating Services\"}],\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/10782\"},\"type\":\"ref\"},{\"text\":\".\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"3cR44oQnLa35EYePmfyhU\",\"children\":[{\"text\":\"You have activated \"},{\"b\":1,\"text\":\"GME voice chat, voice messaging, and speech-to-text services\"},{\"text\":\". For more information, see \"},{\"id\":\"CAnDLe0s4KUHSZXDWRRo8\",\"children\":[{\"text\":\"Activating Services\"}],\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/10782\"},\"type\":\"ref\"},{\"text\":\".\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"WwMM0HT7MuImN5vc1ni3i\",\"children\":[{\"text\":\"Configure your project before using GME; otherwise, the SDK will not take effect.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"OxhtIExF6qSxMARotUTCh\",\"children\":[{\"text\":\"After a GME API is called successfully, \"},{\"code\":1,\"text\":\"QAVError.OK\"},{\"text\":\" will be returned with the value being \"},{\"code\":1,\"text\":\"0\"},{\"text\":\".\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"HDF8stN_FJhI_cixOCMMv\",\"children\":[{\"text\":\"GME APIs should be called in the same thread.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"2rkJHcJCVqklCzHqRskiS\",\"children\":[{\"text\":\"The \"},{\"code\":1,\"text\":\"Poll\"},{\"text\":\" API should be called periodically for GME to trigger event callbacks.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"-Jo_Qxwtx-tAuxQ0TkmSX\",\"children\":[{\"text\":\"For detailed error codes, see \"},{\"id\":\"jEM8AYDFn3O2O7iwDJ9RS\",\"children\":[{\"text\":\"Error Codes\"}],\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/33223\"},\"type\":\"ref\"},{\"text\":\".\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"A8fv9k2x4Nq5rg4vREb89\",\"children\":[{\"id\":\"fKB8CRRzRuSd1pByFArQK\",\"children\":[{\"b\":1,\"text\":\"Note:\"}],\"type\":\"p\"},{\"id\":\"-d1r3Aj_k4stjvvLlIw_U\",\"children\":[{\"text\":\"There is a default call rate limit for speech-to-text APIs. For more information on how calls are billed within the limit, see \"},{\"type\":\"ref\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/50009#speech-to-text\"},\"children\":[{\"text\":\"Purchase Guide\"}],\"id\":\"4W68bCtIYwydUFtmG-ZCX\"},{\"text\":\". If you want to increase the limit or learn more about how excessive calls are billed, \"},{\"id\":\"ZVgvi6sFb4ckgwHegVJ2U\",\"children\":[{\"text\":\"submit a ticket\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://console.tencentcloud.com/workorder/category?level1_id=438&level2_id=445&source=0&data_title=%E6%B8%B8%E6%88%8F%E5%A4%9A%E5%AA%92%E4%BD%93%E5%BC%95%E6%93%8EGME&step=1\",\"props\":{\"type\":\"link\",\"url\":\"https://console.tencentcloud.com/workorder/category?level1_id=438&level2_id=445&source=0&data_title=%E6%B8%B8%E6%88%8F%E5%A4%9A%E5%AA%92%E4%BD%93%E5%BC%95%E6%93%8EGME&step=1\"},\"type\":\"ref\"},{\"text\":\".\"}],\"type\":\"p\"},{\"id\":\"asJI9JQJurQPLB09SjrCL\",\"children\":[{\"text\":\"Non-streaming speech-to-text API \"},{\"text\":\"SpeechToText()\",\"b\":1},{\"text\":\": There can be up to 10 concurrent requests per account.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"TlIR58AVlVengw5EzIgm0\",\"children\":[{\"text\":\"Streaming speech-to-text API \"},{\"text\":\"StartRecordingWithStreamingRecognition()\",\"b\":1},{\"text\":\": There can be up to 50 concurrent requests per account.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"zIJXt6X21cmPSYJ6p0ZTR\",\"children\":[{\"text\":\"Voice chat streaming speech-to-text API \"},{\"text\":\"StartRealTimeASR()\",\"b\":1},{\"text\":\": There can be up to 50 concurrent requests per account.\"}],\"start\":false,\"type\":\"uli\"}],\"hintType\":\"alert\",\"type\":\"hint\"},{\"id\":\"xnyUQ0zF6saDn5FsFjrCA\",\"children\":[{\"text\":\"Integrating the SDK\"}],\"nodeId\":\".E6.8E.A5.E5.85.A5-sdk\",\"type\":\"h2\"},{\"id\":\"D1isZNgT99QOPMf7iU06Q\",\"children\":[{\"text\":\"Directions\"}],\"nodeId\":\".E9.87.8D.E8.A6.81.E6.AD.A5.E9.AA.A4\",\"type\":\"h3\"},{\"id\":\"JISJRRcw1Q2_Ix0ZYYknc\",\"children\":[{\"text\":\"Key processes involved in SDK integration are as follows:\"}],\"type\":\"p\"},{\"type\":\"p\",\"children\":[{\"text\":\"\"},{\"id\":\"a3cWnWNMUN_CsLMMzJx4e\",\"alt\":\"\",\"children\":[{\"text\":\"\"}],\"inline\":true,\"naturalSize\":[1560,1030],\"size\":[800,528],\"type\":\"image\",\"url\":\"https://cloudcache.intl.tencent-cloud.com/cms/backend-cms/ed77e24fd76a11edbe2a525400088f3a.png\"},{\"text\":\"\"}],\"id\":\"bl33ooKbGAJXR4SGoyT5U\"},{\"id\":\"PxcdK1FYZbvO_Pemdymdq\",\"children\":[{\"id\":\"-R4HNP6jMqfgEGL82ovrA\",\"children\":[{\"text\":\"Initialize GME\"}],\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/zh/document/product/607/41635#.E5.88.9D.E5.A7.8B.E5.8C.96-sdk\"},\"type\":\"ref\"}],\"type\":\"oli\"},{\"id\":\"mAGIZ3J09oVofIjZNnxSx\",\"children\":[{\"id\":\"1pe_s9Ozfvt5P5s4BVeem\",\"children\":[{\"text\":\"Call \"}],\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/zh/document/product/607/41635#.E8.A7.A6.E5.8F.91.E4.BA.8B.E4.BB.B6.E5.9B.9E.E8.B0.83\"},\"type\":\"ref\"},{\"code\":1,\"text\":\"Poll\"},{\"text\":\" periodically to trigger callbacks\"}],\"type\":\"oli\"},{\"id\":\"KM6kuehJN0WqZEkVzqDtS\",\"children\":[{\"text\":\"\"},{\"type\":\"ref\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/41635#.E5.88.9D.E5.A7.8B.E5.8C.96-sdk\"},\"children\":[{\"text\":\"Initialize authentication\"}],\"id\":\"OFLkWL3tkl1F4Dr9_umQu\"},{\"text\":\"\"}],\"type\":\"oli\"},{\"id\":\"UzGdoX_zlsROFhDA7infX\",\"children\":[{\"text\":\"\"},{\"id\":\"k8aMyXeYap2AzyyctQ8Ru\",\"type\":\"ref\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/41635#.E6.B5.81.E5.BC.8F.E8.AF.AD.E9.9F.B3.E8.AF.86.E5.88.AB\"},\"children\":[{\"text\":\"Starting streaming speech-to-text conversion\"}]},{\"text\":\"\"}],\"type\":\"oli\"},{\"id\":\"RDvILIfds8_ocnozGA4j9\",\"children\":[{\"id\":\"NGx1tBe-WEzgDWPZcst52\",\"children\":[{\"text\":\"Stop recording\"}],\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/zh/document/product/607/41635#.E5.81.9C.E6.AD.A2.E5.BD.95.E9.9F.B3\"},\"type\":\"ref\"}],\"type\":\"oli\"},{\"id\":\"K_4jXfzo9eBtnLh1sGAZE\",\"children\":[{\"id\":\"TBH8cbpdExOBTW90ET1BE\",\"children\":[{\"text\":\"Uninitialize GME\"}],\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/zh/document/product/607/41635#.E5.8F.8D.E5.88.9D.E5.A7.8B.E5.8C.96-sdk\"},\"type\":\"ref\"}],\"type\":\"oli\"},{\"id\":\"uxq38ez2JeKSkQHyK16Sy\",\"children\":[{\"text\":\"C# classes\"}],\"nodeId\":\"c.23-.E7.B1.BB\",\"type\":\"h3\"},{\"id\":\"DbfSoUFPSGem3Dj-IWWi_\",\"children\":[{\"id\":\"nXkR4fuA42PW703UxsK0y\",\"children\":[{\"id\":\"002P_YTrK0SMe143YpYxJ\",\"children\":[{\"id\":\"CES-IyLG6lI_8aztJ5LX0\",\"children\":[{\"text\":\"Class\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"cl6cAboNO8flfUpebIVaT\",\"children\":[{\"id\":\"FvaftE9FtUauN6Z43i4fQ\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"DIfbe9b_KJ_-SKrZl8l5P\",\"children\":[{\"id\":\"WFKMCMvuMed7aRzaz1bJR\",\"children\":[{\"id\":\"N2i3n6OJNy6Mo6SdMaYL6\",\"children\":[{\"id\":\"Go9rSaaHlLSNY0qpVllEg\",\"children\":[{\"text\":\"ITMGContext\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"JhllEd8tHWF4GID77CTEa\",\"children\":[{\"id\":\"PdMY_giP8Kbu0Gu0RDqGU\",\"children\":[{\"id\":\"cR5kLjHvoHysUCgkXLwsj\",\"children\":[{\"text\":\"Core APIs\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"I8JksaKZq5uvekPNLvAWG\",\"children\":[{\"id\":\"ADku8pc28SP_WqobEXKEF\",\"children\":[{\"id\":\"3lm_Vubis9EexnBsF5gcH\",\"children\":[{\"id\":\"gjTCnTMIvoMKo9gfovhlh\",\"children\":[{\"text\":\"ITMGPTT\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"9cBr1zYvIbsrs4hZhlgbm\",\"children\":[{\"id\":\"G9GhMwFJCMp9yk4IpjIg4\",\"children\":[{\"id\":\"VtviBxuPp_IrLqtiq9tM1\",\"children\":[{\"text\":\"Voice messaging and speech-to-text APIs\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[28,72],\"widthMode\":\"percentage\"},{\"id\":\"G-z2wfMevz0DtJyUyGnVK\",\"children\":[{\"text\":\"Core APIs\"}],\"nodeId\":\".E6.A0.B8.E5.BF.83.E6.8E.A5.E5.8F.A3\",\"type\":\"h2\"},{\"id\":\"-AWtLnSa9SoRqdFB6zI4a\",\"children\":[{\"id\":\"UP9odq4qYTfq0stwr2F1P\",\"children\":[{\"id\":\"gjwI_Cp6JTRhXDXXydjvo\",\"children\":[{\"id\":\"fij7VYY96tGtBv9U3zrJQ\",\"children\":[{\"text\":\"API\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"GS39BJceCTDHk7Pqseuxn\",\"children\":[{\"id\":\"UPhJsIlEklUtRIa2CVWwY\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"BbuVO9k5yoWu8A2eZDyCf\",\"children\":[{\"id\":\"z3BsGbFowtvITmwqdcVsw\",\"children\":[{\"id\":\"sDcIGfA80rNNAXutIiKkL\",\"children\":[{\"id\":\"Wmhb5zsQTjHi7hhLwcsaV\",\"children\":[{\"text\":\"Init\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"bpX4Uvj72vIyuSseH80g1\",\"children\":[{\"id\":\"QKDDh-WS3j06iMrnulyMa\",\"children\":[{\"id\":\"CtbEa7GsoEiyzrCF7BeuE\",\"children\":[{\"text\":\"Initializes GME.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"c7cDw0me5ufvvzyILrhO1\",\"children\":[{\"id\":\"XJPZluWDf-rdcxW5B875e\",\"children\":[{\"id\":\"th8EnXnHjYgEEDKwkpqLV\",\"children\":[{\"id\":\"YyDTsGExleNExNZG17TU4\",\"children\":[{\"text\":\"Poll\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"CN6nPceDtbgfSqqcfIH-8\",\"children\":[{\"id\":\"5FSB1BwE7lONBpwUZaGyT\",\"children\":[{\"id\":\"6fiSNJ1hBNxd8wX-4nNh_\",\"children\":[{\"text\":\"Triggers an event callback.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"OC3N-oRlKXeG2Iug4np5w\",\"children\":[{\"id\":\"enBNJndfA5tH7a2dJHd19\",\"children\":[{\"id\":\"rw0b30WLcyd8Y40udu9_C\",\"children\":[{\"id\":\"92WPyLWippFJqzN7zbZ7I\",\"children\":[{\"text\":\"Pause\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ONkAErJycxFnVWpwXK_du\",\"children\":[{\"id\":\"5VyUMaTxdKQXS4dTW-d7P\",\"children\":[{\"id\":\"ZhVuxO-ik_gpjjjlco0Yd\",\"children\":[{\"text\":\"Pauses the system.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"FtDgT2Wmvgp1eYrSDa_6V\",\"children\":[{\"id\":\"g_Lf41SrsnIgkXjDgmHYr\",\"children\":[{\"id\":\"IMrxW5KLnlUqw-2JSrZPs\",\"children\":[{\"id\":\"Yu2MYuvfvI2zzraiZfFbW\",\"children\":[{\"text\":\"Resume\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"NdUp7qK7uOgfrac9OZrME\",\"children\":[{\"id\":\"dHvG8vLkLoZ-oko0bGNUi\",\"children\":[{\"id\":\"8RRxAGTI2mKJ6eG3mcHWX\",\"children\":[{\"text\":\"Resumes the system.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"fV-ovGOPOjXEbhgxZ9juH\",\"children\":[{\"id\":\"GKeJt-ZUObWIXhEtS0miu\",\"children\":[{\"id\":\"NZNXpq9lLuqnnS43-R2v0\",\"children\":[{\"id\":\"7aEKlWMYoM93wo6_UwKm7\",\"children\":[{\"text\":\"Uninit\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"nSd2lPA5PYBjVbyl4-ZTj\",\"children\":[{\"id\":\"qQ46YnkVOckBn1KDUgzjT\",\"children\":[{\"id\":\"HXxpb0XoOshKhgxrAPvap\",\"children\":[{\"text\":\"Uninitializes GME.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[28,72],\"widthMode\":\"percentage\"},{\"id\":\"drE2D431jHmQGQ-tQH24B\",\"children\":[{\"text\":\"Importing header files\"}],\"nodeId\":\".E5.BC.95.E7.94.A8.E5.A4.B4.E6.96.87.E4.BB.B6\",\"type\":\"h3\"},{\"id\":\"kCF5jRXxV7r_V9vyLh1UA\",\"autoWrap\":false,\"children\":[{\"id\":\"e8H1wGMtDlfiLODZAuUAr\",\"children\":[{\"text\":\"using GME;\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"e9wv5Q1GS3icwywJ7XSP_\",\"children\":[{\"text\":\"Getting an instance\"}],\"nodeId\":\".E8.8E.B7.E5.8F.96.E5.AE.9E.E4.BE.8B\",\"type\":\"h3\"},{\"id\":\"li2wUYSyyl3uzeg83RWMG\",\"children\":[{\"text\":\"Get the \"},{\"code\":1,\"text\":\"Context\"},{\"text\":\" instance by using the \"},{\"code\":1,\"text\":\"ITMGContext\"},{\"text\":\" method instead of \"},{\"code\":1,\"text\":\"QAVContext.GetInstance()\"},{\"text\":\".\"}],\"type\":\"p\"},{\"id\":\"jvO28hfVEInKglcpWXfm7\",\"children\":[{\"text\":\"Initializing the SDK\"}],\"nodeId\":\".E5.88.9D.E5.A7.8B.E5.8C.96-sdk\",\"type\":\"h3\"},{\"id\":\"V9KBM3m1wg-X_4ycM6ioN\",\"children\":[{\"b\":1,\"text\":\"You need to initialize the SDK through the \"},{\"code\":1,\"text\":\"Init\"},{\"text\":\" API\"},{\"text\":\" before you can use the real-time voice chat, voice message, and speech-to-text services. The \"},{\"code\":1,\"text\":\"Init\"},{\"text\":\" API must be called in the same thread as other APIs. We recommend you call all APIs in the main thread.\"}],\"nodeId\":\"Init\",\"type\":\"p\"},{\"id\":\"Z46sg-LvhfMk_TelENk-d\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\".E6.8E.A5.E5.8F.A3.E5.8E.9F.E5.9E.8B\",\"type\":\"h4\"},{\"id\":\"4kg7HBRVOl9uBrbEttC61\",\"autoWrap\":false,\"children\":[{\"id\":\"k1yfCo_KmylyfpxrdLEat\",\"children\":[{\"text\":\"//class ITMGContext\"}],\"type\":\"code-line\"},{\"id\":\"7-xCJLl_BkBAqpR535HU0\",\"children\":[{\"text\":\"public abstract int Init(string sdkAppID, string openID);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"ITzsLGrqXA0dN7wD4vdX0\",\"children\":[{\"id\":\"6C-zNaFFzMwXftZfBaK4j\",\"children\":[{\"id\":\"65g3AmohQBVMSP9EqJ0pE\",\"children\":[{\"id\":\"eMXmBqXnzJ9s4EPuECokW\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"vB6dcf6EJFtEYO475JRI7\",\"children\":[{\"id\":\"8U1RFjKrlPcJtnaRfdwWv\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"VRV-FqUkK38tw1rhNwfF1\",\"children\":[{\"id\":\"EcUwYesrUYcn_EodLmh_a\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"5iVATd8J0PeoN-5TqRNNU\",\"children\":[{\"id\":\"gNSj_va52UmDLWJT3XpEd\",\"children\":[{\"id\":\"IadKdu3hezx5TE06Ua2gW\",\"children\":[{\"id\":\"_IpCcaZ6DqpsDFoMcia0s\",\"children\":[{\"text\":\"sdkAppId\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"hLdDjCtwIyziDVBbhEOfn\",\"children\":[{\"id\":\"z49Lid1TMBSeI3w_irF_i\",\"children\":[{\"id\":\"KhveEKnAnx2iuZact09MR\",\"children\":[{\"text\":\"string\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"sKkgJWDrmAI3tLQonceSL\",\"children\":[{\"id\":\"QDktf5NXYRjHuKEUlnq8d\",\"children\":[{\"code\":1,\"text\":\"AppID\"},{\"text\":\" provided in the \"},{\"id\":\"qEH7dB9jJVvAaviItlRi_\",\"children\":[{\"text\":\"GME console\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://console.tencentcloud.com/gamegme\",\"props\":{\"type\":\"link\",\"url\":\"https://console.tencentcloud.com/gamegme\"},\"type\":\"ref\"},{\"text\":\", which can be obtained as instructed in \"},{\"id\":\"C5vM0RyJVDWeOQ6q2UcFb\",\"children\":[{\"text\":\"Activating Services\"}],\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/10782\"},\"type\":\"ref\"},{\"text\":\".\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"bJgsNwqoXUlXl9YzSCWhm\",\"children\":[{\"id\":\"GLFberfvPx1UJJL49leBn\",\"children\":[{\"id\":\"VveE-jA8VJfZAgbEp2h8h\",\"children\":[{\"id\":\"9Dycs4RkWflEUdYvlIQ0_\",\"children\":[{\"text\":\"openID\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"riLnlYxcVXjjByOdT1kue\",\"children\":[{\"id\":\"GUjAkRKW2ZKbUlCSLjDys\",\"children\":[{\"id\":\"HFpsPo_rSDzsU_HOuM_95\",\"children\":[{\"text\":\"string\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"q8bvhYJAz-ifa5yon-X3Z\",\"children\":[{\"id\":\"Vd4h4-CjG1KvJiFxOWVJV\",\"children\":[{\"id\":\"ASg60U6cfWXVC2eaxUoMt\",\"children\":[{\"code\":1,\"text\":\"openID\"},{\"text\":\" can only be in Int64 type, which is passed in after being converted to a string. You can customize its rules, and it must be unique in the application. To pass in \"},{\"code\":1,\"text\":\"openID\"},{\"text\":\" as a string, \"},{\"id\":\"RzddtzOmFuUMjyW7gIBma\",\"children\":[{\"text\":\"submit a ticket\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://console.tencentcloud.com/workorder/category?level1_id=438&level2_id=445&source=0&data_title=%E6%B8%B8%E6%88%8F%E5%A4%9A%E5%AA%92%E4%BD%93%E5%BC%95%E6%93%8EGME&step=1\",\"props\":{\"type\":\"link\",\"url\":\"https://console.tencentcloud.com/workorder/category?level1_id=438&level2_id=445&source=0&data_title=%E6%B8%B8%E6%88%8F%E5%A4%9A%E5%AA%92%E4%BD%93%E5%BC%95%E6%93%8EGME&step=1\"},\"type\":\"ref\"},{\"text\":\" for application.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[12,10,78],\"widthMode\":\"percentage\"},{\"id\":\"UG3ZVakm53STMaKEbbXDn\",\"children\":[{\"text\":\"Returned values\"}],\"nodeId\":\".E8.BF.94.E5.9B.9E.E5.80.BC\",\"type\":\"h4\"},{\"id\":\"gc3da66jJ9UddY0eGm0zl\",\"children\":[{\"id\":\"GvWkBdAqw-DtSigoduj-s\",\"children\":[{\"id\":\"L8oGym_K-csxnuG_UOtsU\",\"children\":[{\"id\":\"D-GCeu5eMBS0jcNsTXUIj\",\"children\":[{\"text\":\"Return Value\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"cB2KHAgU7W37cYyDk-0Gw\",\"children\":[{\"id\":\"JCK9he9wEVgFAOEznKV3u\",\"children\":[{\"text\":\"Handling\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"PbBgA4DzIufOYounw-eZW\",\"children\":[{\"id\":\"jJGIVIq7fHWtKvozN7ieP\",\"children\":[{\"id\":\"oD6rlGTOex9ST9nEPCuS7\",\"children\":[{\"id\":\"OxTeJb_aerGxmOBZP8azI\",\"children\":[{\"text\":\"QAVError.OK= 0\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ZP8Zr0_TVlTa_qBkMivRH\",\"children\":[{\"id\":\"Dv2sA_g0g5u4g-BT7JVX_\",\"children\":[{\"id\":\"ylf-rHBdFcsoujRBkmzgr\",\"children\":[{\"text\":\"The SDK was initialized successfully.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"NI55MU4ChcPoNzkxgebUF\",\"children\":[{\"id\":\"kPCAeppc-ljW2Vt04jB2G\",\"children\":[{\"id\":\"DrMERFf1Yz0Oiv-rpZbzK\",\"children\":[{\"id\":\"LqT2urXFjAl2YIUBeubLZ\",\"children\":[{\"text\":\"AV_ERR_SDK_NOT_FULL_UPDATE=7015\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"gpiQRU3zv3XzOMNz1288o\",\"children\":[{\"id\":\"72-3v1nFtb3K57ywtvUUW\",\"children\":[{\"id\":\"Iu3sLMuOPEX66QfNZtbJ_\",\"children\":[{\"text\":\"Checks whether the SDK file is complete. We recommend that you delete it and then import it again.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[34,66],\"widthMode\":\"percentage\"},{\"id\":\"ikeepZOPyYqtdqxBireSM\",\"children\":[{\"id\":\"Eqf3bt7VQPY8R6kLQMiHV\",\"children\":[{\"b\":1,\"text\":\"Notes on 7015 error code\"}],\"type\":\"p\"},{\"id\":\"iAa3G-V0ObGiOaAXuRcJK\",\"children\":[{\"text\":\"The error code 7015 is identified based on the MD5 value. If this error is reported during integration, check the integrity and version of the SDK file as prompted.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"y-oZDQ9RbtVU91KdR_SGx\",\"children\":[{\"text\":\"The returned value \"},{\"code\":1,\"text\":\"AV_ERR_SDK_NOT_FULL_UPDATE\"},{\"text\":\" is \"},{\"b\":1,\"text\":\"only a reminder\"},{\"text\":\" but will not cause an initialization failure.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"R8dOGPDtRInEY44drSqEO\",\"children\":[{\"text\":\"Due to the third-party enhancement, the Unity packaging mechanism, and other factors, the library file MD5 will be affected, resulting in misjudgment. Therefore, \"},{\"b\":1,\"text\":\"ignore this error in the logic for official releases\"},{\"text\":\", and avoid displaying it on the UI.\"}],\"start\":false,\"type\":\"uli\"}],\"hintType\":\"alert\",\"type\":\"hint\"},{\"id\":\"30FooyH1_raIqZZ1lWGBy\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.81\",\"type\":\"h4\"},{\"id\":\"UfNW6mOa61cg1HJU9hgy0\",\"autoWrap\":false,\"children\":[{\"id\":\"PWRO6uAaZYyGPyZ8qopKq\",\"children\":[{\"text\":\"int ret = ITMGContext.GetInstance().Init(sdkAppId, openID);\"}],\"type\":\"code-line\"},{\"id\":\"QFtsWiBY8MIgzPfuRjjNf\",\"children\":[{\"text\":\"// Determine whether the initialization is successful by the returned value\"}],\"type\":\"code-line\"},{\"id\":\"dH9cZnPuGNWipGL0N5KJu\",\"children\":[{\"text\":\"if (ret != QAVError.OK)\"}],\"type\":\"code-line\"},{\"id\":\"58klWZJ6W0RDCNSajaFpa\",\"children\":[{\"text\":\" {\"}],\"type\":\"code-line\"},{\"id\":\"nbWm0oq15FEUh2EMDqd8h\",\"children\":[{\"text\":\" Debug.Log(\\\"SDK initialization failed:\\\"+ret);\"}],\"type\":\"code-line\"},{\"id\":\"5KAG_Qnu5iTpcRFf60w2Y\",\"children\":[{\"text\":\" return;\"}],\"type\":\"code-line\"},{\"id\":\"8AAN-vj3KDFJI6BZDHu1D\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"T6aJH9__pP3xO2EH3ruii\",\"children\":[{\"text\":\"Triggering event callback\"}],\"nodeId\":\".E8.A7.A6.E5.8F.91.E4.BA.8B.E4.BB.B6.E5.9B.9E.E8.B0.83\",\"type\":\"h3\"},{\"id\":\"ck7PM17Ea8cYbpjqRyFsB\",\"children\":[{\"text\":\"Event callbacks can be triggered by periodically calling the \"},{\"code\":1,\"text\":\"Poll\"},{\"text\":\" API in \"},{\"code\":1,\"text\":\"update\"},{\"text\":\". The \"},{\"code\":1,\"text\":\"Poll\"},{\"text\":\" API is GME's message pump and should be called periodically for GME to trigger event callbacks; otherwise, the entire SDK service will run abnormally. For more information, see the \"},{\"code\":1,\"text\":\"EnginePollHelper\"},{\"text\":\" file in \"},{\"id\":\"Ig6vodbtXJEw-HhSurQlT\",\"children\":[{\"text\":\"SDK Download Guide\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://www.tencentcloud.com/document/product/607/18521\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/18521\"},\"type\":\"ref\"},{\"text\":\".\"}],\"nodeId\":\"Poll\",\"type\":\"p\"},{\"id\":\"tad2bCCHlm5hnHFKR9x_k\",\"children\":[{\"id\":\"NfcRpyfuhfrK_oXzddvXs\",\"children\":[{\"b\":1,\"text\":\"Note:\"}],\"type\":\"p\"},{\"id\":\"bSfQX7o7GY1OLOh0Yv7Jh\",\"children\":[{\"text\":\"The \"},{\"code\":1,\"text\":\"Poll\"},{\"text\":\" API must be called periodically and in the main thread to avoid abnormal API callbacks.\"}],\"type\":\"p\"}],\"hintType\":\"alert\",\"type\":\"hint\"},{\"id\":\"V9VAZ2NBpsNPC-y8wFItE\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\".E6.8E.A5.E5.8F.A3.E5.8E.9F.E5.9E.8B2\",\"type\":\"h4\"},{\"id\":\"zcxAeU_sRlKQxAYCkNey4\",\"autoWrap\":false,\"children\":[{\"id\":\"SnP6m7sRCR-ZXXuzr2_6B\",\"children\":[{\"text\":\"ITMGContext public abstract int Poll();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"hL52iH-o_1I3xu7pMZBdz\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.812\",\"type\":\"h4\"},{\"id\":\"wQaTDHI9TAf2fAt0U86MA\",\"autoWrap\":false,\"children\":[{\"id\":\"-3I0knKXRU9IwQTRVNI-O\",\"children\":[{\"text\":\"public void Update()\"}],\"type\":\"code-line\"},{\"id\":\"ddngF1eA1IB6RBWD0q0bN\",\"children\":[{\"text\":\" {\"}],\"type\":\"code-line\"},{\"id\":\"SUcoBx-M-KSbFvGdXUIEv\",\"children\":[{\"text\":\" ITMGContext.GetInstance().Poll();\"}],\"type\":\"code-line\"},{\"id\":\"Rv9o09xen9HwxB4iTbUBs\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"4bRf1M3lDhnFjc1LfsiX0\",\"children\":[{\"text\":\"Pausing the system\"}],\"nodeId\":\".E7.B3.BB.E7.BB.9F.E6.9A.82.E5.81.9C\",\"type\":\"h3\"},{\"id\":\"pavCLrEWazl3AgGJWCOMr\",\"children\":[{\"text\":\"When a \"},{\"code\":1,\"text\":\"Pause\"},{\"text\":\" event occurs in the system, the engine should also be notified for pause. For example, when the application switches to the background (OnApplicationPause, isPause=True), and you do not need the background to play back the audio in the room, please call \"},{\"code\":1,\"text\":\"Pause\"},{\"text\":\" API to pause the GME service.\"}],\"type\":\"p\"},{\"id\":\"bTT25_Ge6Hntk4KLa-wPD\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\".E6.8E.A5.E5.8F.A3.E5.8E.9F.E5.9E.8B3\",\"type\":\"h4\"},{\"id\":\"ngx09s3xByTA0C-ZRjF6I\",\"autoWrap\":false,\"children\":[{\"id\":\"HgAdiFSSymkdMX0SvnObW\",\"children\":[{\"text\":\"ITMGContext public abstract int Pause()\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"YecTBds0Y905zabRUChMp\",\"children\":[{\"text\":\"Resuming the system\"}],\"nodeId\":\".E7.B3.BB.E7.BB.9F.E6.81.A2.E5.A4.8D\",\"type\":\"h3\"},{\"id\":\"udYFPy7OO8UFwC8Tix1eR\",\"children\":[{\"text\":\"When a \"},{\"code\":1,\"text\":\"Resume\"},{\"text\":\" event occurs in the system, the engine should also be notified for resumption. The \"},{\"code\":1,\"text\":\"Resume\"},{\"text\":\" API only supports resuming voice chat.\"}],\"type\":\"p\"},{\"id\":\"sgJY-eWIYAW5UP9ET-cY2\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\".E6.8E.A5.E5.8F.A3.E5.8E.9F.E5.9E.8B4\",\"type\":\"h4\"},{\"id\":\"deY-mlkUNWWDEUsVkZFZE\",\"autoWrap\":false,\"children\":[{\"id\":\"xfdvecn7ZFj56XCOjm0UK\",\"children\":[{\"text\":\"ITMGContext public abstract int Resume()\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"dy22QODDp9jP9AE3Nv7yv\",\"children\":[{\"text\":\"Uninitializing SDK\"}],\"nodeId\":\".E5.8F.8D.E5.88.9D.E5.A7.8B.E5.8C.96-sdk\",\"type\":\"h3\"},{\"id\":\"yylJZFhZ2pnZGuaHvrFJs\",\"children\":[{\"text\":\"This API is used to uninitialize the SDK. \"},{\"b\":1,\"text\":\"If the game account is bound to \"},{\"code\":1,\"text\":\"openid\"},{\"text\":\", switching game account requires uninitializing GME and then using the new \"},{\"code\":1,\"text\":\"openid\"},{\"text\":\" to initialize again.\"}],\"nodeId\":\"UnInit\",\"type\":\"p\"},{\"id\":\"QHrPWDfbb9twTSAhgpiOU\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\".E6.8E.A5.E5.8F.A3.E5.8E.9F.E5.9E.8B5\",\"type\":\"h4\"},{\"id\":\"pZtVchBYvsugOluhI_u-F\",\"autoWrap\":false,\"children\":[{\"id\":\"bdIy-WNKIgtxxBLlpelEa\",\"children\":[{\"text\":\"ITMGContext public abstract int Uninit()\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"wKFF9W-gHoGFYGZWqyTZO\",\"children\":[{\"text\":\"Voice Messaging and Speech-to-Text Services\"}],\"nodeId\":\".E8.AF.AD.E9.9F.B3.E6.B6.88.E6.81.AF.E6.9C.8D.E5.8A.A1.E5.8F.8A.E8.BD.AC.E6.96.87.E6.9C.AC.E6.9C.8D.E5.8A.A1\",\"type\":\"h2\"},{\"id\":\"3FE7h7wIu1GbtVWcjuprj\",\"children\":[{\"id\":\"_paTRFT79rc5olrgaVNP6\",\"children\":[{\"b\":1,\"text\":\"Note:\"}],\"type\":\"p\"},{\"id\":\"1YPS5WXjIgQLXKPWlCSuh\",\"children\":[{\"text\":\"The speech-to-text service consists of fast recording-to-text conversion and streaming speech-to-text conversion.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"FXZMxEfmSkLy-A_59pNSX\",\"children\":[{\"text\":\"You do not need to enter a voice chat room when using the voice messaging service.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"xxsuP7AE8KomVKkP0R2tl\",\"children\":[{\"text\":\"The maximum recording duration of a voice message is 58 seconds by default, and the minimum recording duration cannot be less than 1 second. If you want to customize the recording duration, for example, to modify the maximum recording duration to 10 seconds, please call the \"},{\"code\":1,\"text\":\"SetMaxMessageLength\"},{\"text\":\" API to set it after initialization.\"}],\"start\":false,\"type\":\"uli\"}],\"hintType\":\"info\",\"type\":\"hint\"},{\"id\":\"Y062_f0mNqsDUCuJbIhmP\",\"children\":[{\"text\":\"Flowchart for using the voice message service\"}],\"nodeId\":\".E8.AF.AD.E9.9F.B3.E6.B6.88.E6.81.AF.E6.9C.8D.E5.8A.A1.E4.BD.BF.E7.94.A8.E6.B5.81.E7.A8.8B\",\"type\":\"h3\"},{\"type\":\"p\",\"children\":[{\"text\":\"\"},{\"id\":\"ZQnPX_CmKtSLa9sLy036a\",\"alt\":\"\",\"children\":[{\"text\":\"\"}],\"inline\":true,\"naturalSize\":[923,675],\"size\":[801,585],\"type\":\"image\",\"url\":\"https://cloudcache.intl.tencent-cloud.com/cms/backend-cms/ac215e26d76b11ed8c12525400c56988.png\"},{\"text\":\"\"}],\"id\":\"W5sg9EKZYDiqkFRV68lqK\"},{\"id\":\"zjC_UIiUvTzEPF_S-7WQP\",\"children\":[{\"text\":\"Flowchart for using the speech-to-text service\"}],\"nodeId\":\"8628dc1f-d03c-4835-b992-ae0759cfae92\",\"type\":\"h3\"},{\"type\":\"p\",\"children\":[{\"text\":\"\"},{\"id\":\"5RTPcfK_neaWjAp19R9qP\",\"alt\":\"\",\"children\":[{\"text\":\"\"}],\"inline\":true,\"naturalSize\":[1138,1043],\"size\":[798,731],\"type\":\"image\",\"url\":\"https://cloudcache.intl.tencent-cloud.com/cms/backend-cms/b3ed0409d76b11ed8c12525400c56988.png\"},{\"text\":\"\"}],\"id\":\"AvYU95ze0oCEvjY5nyned\"},{\"id\":\"wrdIOtQWy9RU5kFfwvF5I\",\"children\":[{\"id\":\"NGw3vSJAFsQ6VPTKF_AqZ\",\"children\":[{\"id\":\"ycBDM-yi0Psz8WJ214G2l\",\"children\":[{\"id\":\"G0B-_VGEWAZiWO-IxJF0E\",\"children\":[{\"text\":\"API\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"hD-rujskbeJnvYdLn0wbt\",\"children\":[{\"id\":\"sgGmuB0JqwxNxiDCksmct\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"b1jj0aXQNZezRbcfueDVC\",\"children\":[{\"id\":\"-LNFAxFpbYbj1qjHwNyaT\",\"children\":[{\"id\":\"XTaVbl35FSq61w8O9kf8r\",\"children\":[{\"id\":\"wzDecKwG2F0-DeYCsHkVj\",\"children\":[{\"text\":\"GenAuthBuffer\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"dvC-NJllAOBZ-ZlZYEHm9\",\"children\":[{\"id\":\"5aAthjgfPIVaFOi7Qq5uR\",\"children\":[{\"id\":\"5-cVr8MWK6mH17d-zTbzs\",\"children\":[{\"text\":\"Generates the local authentication key.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"46cjJltZFKqDXAIFy5ype\",\"children\":[{\"id\":\"CGx3Pl7tbm-KOXww6Zlms\",\"children\":[{\"id\":\"givZy1vuzYkjg-FYZOBpC\",\"children\":[{\"id\":\"ZfIOJvAVKqhZD0mzaIQKN\",\"children\":[{\"text\":\"ApplyPTTAuthbuffer\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"72rr8rIE8ZaDYfShAs_Lp\",\"children\":[{\"id\":\"OeClvpQu96H-9WBuoFjJV\",\"children\":[{\"id\":\"kdBeCbCwKOR8sp80rf0Qy\",\"children\":[{\"text\":\"Initializes authentication.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"l2bTH-nnBP__2l_MstkIC\",\"children\":[{\"id\":\"RuP0bhE05i2iNscKLlbrF\",\"children\":[{\"id\":\"-5R9jyyB7ct9uGQYd1BwF\",\"children\":[{\"id\":\"na1qTBaaPIYNGjN06W18a\",\"children\":[{\"text\":\"SetMaxMessageLength\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"QyevlcWMM994487Dj4c04\",\"children\":[{\"id\":\"SkPgvBnIYI2Ymg6RqzBHC\",\"children\":[{\"id\":\"BIAwTx9W_0AALQoIqKhb4\",\"children\":[{\"text\":\"Specifies the maximum duration of a voice message.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[33,67],\"widthMode\":\"percentage\"},{\"id\":\"SmOevtl9GeoQA0AjbqNvL\",\"children\":[{\"text\":\"Generating the local authentication key\"}],\"nodeId\":\".E7.94.9F.E6.88.90.E6.9C.AC.E5.9C.B0.E9.89.B4.E6.9D.83\",\"type\":\"h3\"},{\"id\":\"B7GC172O94gMdv-VGeGVn\",\"children\":[{\"text\":\"Generate \"},{\"code\":1,\"text\":\"AuthBuffer\"},{\"text\":\" for encryption and authentication of relevant features. For release in the production environment, use the backend deployment key as detailed in \"},{\"id\":\"pvJYYwcwzPzSBvviMD0pO\",\"children\":[{\"text\":\"Authentication Key\"}],\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/12218\"},\"type\":\"ref\"},{\"text\":\".\"}],\"type\":\"p\"},{\"id\":\"c88kFfMwmzJ0sq269SVKA\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\".E6.8E.A5.E5.8F.A3.E5.8E.9F.E5.9E.8B6\",\"type\":\"h4\"},{\"id\":\"zEwqCSyqE6fyk42VbGlqx\",\"autoWrap\":false,\"children\":[{\"id\":\"KVVcELDogG29A0oX3tR1X\",\"children\":[{\"text\":\"QAVAuthBuffer GenAuthBuffer(int appId, string roomId, string openId, string key)\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"YqPXAmk3gXBlTxHMZbvTA\",\"children\":[{\"id\":\"o84v5gHWhS5lxLU-z94ii\",\"children\":[{\"id\":\"lFHDF9lOMt1KcuuPYki8M\",\"children\":[{\"id\":\"rAC9GB1PEogwWuCNi_6dT\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"9VfMw044utc63ZaVpMypE\",\"children\":[{\"id\":\"4Spc4kC8xb6ZVvni5WLsk\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"jFrPQQNPz_WJ48fVEv-1Z\",\"children\":[{\"id\":\"LMcaaav-k5Y7aUqxdjgYq\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"ozywCrC9TQM2FBOsGPlE3\",\"children\":[{\"id\":\"5fm8omuwZ9vWUmJit68Au\",\"children\":[{\"id\":\"r1pMtc-9rMeBODilpR56K\",\"children\":[{\"id\":\"Yd4UN9jPV_Z5ilro5MbKj\",\"children\":[{\"text\":\"appId\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"p6-j7JMPH7lhfST0v_axW\",\"children\":[{\"id\":\"RZIPoRqveawkwkkAzmf-g\",\"children\":[{\"id\":\"bfMGeXkHeuHe2w737MdcN\",\"children\":[{\"text\":\"int\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"QWFwjW8Pm5IKilCe0voh9\",\"children\":[{\"id\":\"dv3gmDiwYEyrTjS2AD8ZB\",\"children\":[{\"id\":\"XLjsFhQP_bJBkeDt4aP3T\",\"children\":[{\"code\":1,\"text\":\"AppId\"},{\"text\":\" from the Tencent Cloud console\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"U_ajl0DP8Lvpq4qkUVFWU\",\"children\":[{\"id\":\"0MHL3KvDFFnlLX5R1CZRR\",\"children\":[{\"id\":\"KCql5cmt5_VoHmnhQqtlw\",\"children\":[{\"id\":\"iNQY99jtjzMKL_8RRF2dp\",\"children\":[{\"text\":\"roomId\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"fUCY5Y6ByYM2BonQoYqgv\",\"children\":[{\"id\":\"euyJHprRzCKK-fJbP7Yhf\",\"children\":[{\"id\":\"qFmD_8dpEsOsiR5r5Hmxb\",\"children\":[{\"text\":\"string\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"N8JJc-1Peb8G0EsBQTwEZ\",\"children\":[{\"id\":\"sm0MGx1JBI10iRzA20VKc\",\"children\":[{\"id\":\"pIyIuIMWTlTG3X6UNA6Wq\",\"children\":[{\"text\":\"Enter \"},{\"code\":1,\"text\":\"null\"},{\"text\":\" or an empty string.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"xJ1eBkxk2kms2024Hk27b\",\"children\":[{\"id\":\"79WX2bFOCPWXd5euHsIRl\",\"children\":[{\"id\":\"vAFZMVlsnvQwd_mDv3mOq\",\"children\":[{\"id\":\"tw2z5TrP4erAaLF5twYxg\",\"children\":[{\"text\":\"openId\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"dfYBd-Lp7o-D3WgzLN2vv\",\"children\":[{\"id\":\"MZ3CFk4VihXqCB2IsS8G7\",\"children\":[{\"id\":\"gkey-cFanCjGv_r942-rw\",\"children\":[{\"text\":\"string\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"KQr0e1eMs4Tvynkm1yRzD\",\"children\":[{\"id\":\"_wOpgQAjQiyta2PmJCsaL\",\"children\":[{\"id\":\"ynUQX-H807H6Futj110Ya\",\"children\":[{\"text\":\"User ID, which is the same as \"},{\"code\":1,\"text\":\"OpenId\"},{\"text\":\" during initialization.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"K-iMKtZgYeCDQ_q9SkEnG\",\"children\":[{\"id\":\"ZU9-7vZVbSLLC4j5XNQzI\",\"children\":[{\"id\":\"xf502cuBgvBPEfoMQVPCB\",\"children\":[{\"id\":\"wjdImTpKGZj8urzxxb9aY\",\"children\":[{\"text\":\"key\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"WY6PkPOAIzCOpi0fImE3W\",\"children\":[{\"id\":\"XBXMafi8QJOPgycmhEhFG\",\"children\":[{\"id\":\"u5kRdsIw4KK3fPKMZEXPF\",\"children\":[{\"text\":\"string\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"aTKHa4--8zuik11fB4oBc\",\"children\":[{\"id\":\"JG4e9MGAt0ae1UypgK1gT\",\"children\":[{\"id\":\"6-vjgR1BmsYD1lvK0gJSk\",\"children\":[{\"text\":\"Permission key from the Tencent Cloud \"},{\"id\":\"FGgFCVMHt1YWeq6elcFqc\",\"children\":[{\"text\":\"console\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://console.tencentcloud.com/gamegme\",\"props\":{\"type\":\"link\",\"url\":\"https://console.tencentcloud.com/gamegme\"},\"type\":\"ref\"},{\"text\":\".\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[17,11,72],\"widthMode\":\"percentage\"},{\"id\":\"uLSR7Md_mUWL9i02-eETO\",\"children\":[{\"text\":\"Application authentication\"}],\"nodeId\":\".E5.BA.94.E7.94.A8.E9.89.B4.E6.9D.83\",\"type\":\"h3\"},{\"id\":\"BLy7mxzX5AiGoA7FgTKSa\",\"children\":[{\"text\":\"After the authentication information is generated, the authentication is assigned to the SDK.\"}],\"type\":\"p\"},{\"id\":\"8SYAz7PxXG1NvhLM2yncA\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\".E6.8E.A5.E5.8F.A3.E5.8E.9F.E5.9E.8B7\",\"type\":\"h4\"},{\"id\":\"QnumvGp-cYQSE4Q4G4AGb\",\"autoWrap\":false,\"children\":[{\"id\":\"lxW2NfRZ-nZSa5Czq4Whd\",\"children\":[{\"text\":\"ITMGPTT int ApplyPTTAuthbuffer (byte[] authBuffer)\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"0RgmHQtcLE2UhF_XX_F--\",\"children\":[{\"id\":\"5j3OSnz7cdtsxgvKKCmAo\",\"children\":[{\"id\":\"zEIOQPQNHh5oX2ciYqexe\",\"children\":[{\"id\":\"JI16ueBbrvHQCe_r7WizM\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"CbSzps6u7clncweFwjXDq\",\"children\":[{\"id\":\"wf5pHwFcfo6FPiVlJn0Jq\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"9wDLhfYMeXEqfE9yuWxD5\",\"children\":[{\"id\":\"PuBBEqPFmja3xLV0Gyorf\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"Fa_yW6VkRlfsw-YFtvzWi\",\"children\":[{\"id\":\"7yKHnZqhPEKgnpfw7UJOX\",\"children\":[{\"id\":\"Z8XHOwiu6FZ8cefq21x5f\",\"children\":[{\"id\":\"P--JY7_QqjgZtH5x2oRIk\",\"children\":[{\"text\":\"authBuffer\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"4O1PJvXZ5Yj7yDnRytYRi\",\"children\":[{\"id\":\"_8bQnJx5a-QEnca3Ler3W\",\"children\":[{\"id\":\"zvCb_FJ2gaHxywch5X2Hn\",\"children\":[{\"text\":\"byte[\"},{\"text\":\"]\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"9UMAt_GiIpZ5hOjTdwwo8\",\"children\":[{\"id\":\"SpvQtcPCvKF3TieOSvJJy\",\"children\":[{\"id\":\"k758JpVJKoTOMMT4D76SI\",\"children\":[{\"text\":\"Authentication\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[34,23,43],\"widthMode\":\"percentage\"},{\"id\":\"qnVJTyljlvX5pnmOrVHJZ\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.813\",\"type\":\"h4\"},{\"id\":\"oF7fHdXCXIctRiKkHYVI_\",\"autoWrap\":false,\"children\":[{\"id\":\"O_U1CtDM7yhByO-XxBDFo\",\"children\":[{\"text\":\"UserConfig.SetAppID(transform.Find (\\\"appId\\\").GetComponent ().text);\"}],\"type\":\"code-line\"},{\"id\":\"b3YeYGzyUnE1I9AW6e_qO\",\"children\":[{\"text\":\"UserConfig.SetUserID(transform.Find (\\\"userId\\\").GetComponent ().text);\"}],\"type\":\"code-line\"},{\"id\":\"rFCw50TclbC9ZZaLoA3Ft\",\"children\":[{\"text\":\"UserConfig.SetAuthKey(transform.Find(\\\"authKey\\\").GetComponent().text);\"}],\"type\":\"code-line\"},{\"id\":\"05kr--GT7WzQezULT0pfh\",\"children\":[{\"text\":\"byte[] authBuffer = UserConfig.GetAuthBuffer(UserConfig.GetAppID(), UserConfig.GetUserID(), null,UserConfig.GetAuthKey());\"}],\"type\":\"code-line\"},{\"id\":\"wYJLc0wI7JoC4nNOYbr6j\",\"children\":[{\"text\":\"ITMGContext.GetInstance ().GetPttCtrl ().ApplyPTTAuthbuffer(authBuffer);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"RI4FrgNzRRsuHGwxtdYh6\",\"children\":[{\"text\":\"Specifying the maximum duration of voice message\"}],\"nodeId\":\".E9.99.90.E5.88.B6.E6.9C.80.E5.A4.A7.E8.AF.AD.E9.9F.B3.E4.BF.A1.E6.81.AF.E6.97.B6.E9.95.BF\",\"type\":\"h3\"},{\"id\":\"DFN-czDcC2ZJYq7e7nZrn\",\"children\":[{\"text\":\"This API is used to specify the maximum duration of a voice message, which can be up to 58 seconds.\"}],\"type\":\"p\"},{\"id\":\"FrqFRNK1IXLHDSJEbwmq7\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\".E6.8E.A5.E5.8F.A3.E5.8E.9F.E5.9E.8B8\",\"type\":\"h4\"},{\"id\":\"sULJ_Uzxpn2SUQpCtEWHo\",\"autoWrap\":false,\"children\":[{\"id\":\"NNzim-18E2Kn6o0Osldxt\",\"children\":[{\"text\":\"ITMGPTT int SetMaxMessageLength(int msTime)\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"jcVkeC9bsD3UAR73yF_HL\",\"children\":[{\"id\":\"DzyUymkL4_mzvwN9VTg_g\",\"children\":[{\"id\":\"sEYUTdMljz5C3evSbbKiS\",\"children\":[{\"id\":\"u4eBK-f2jcS1keEYSBeX3\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"CoQVg1zTeHCt0bEyNT0lS\",\"children\":[{\"id\":\"xYiNRUnLZyxascnGDXJND\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"tm_Mz_16TDQBnvSelCrMW\",\"children\":[{\"id\":\"DUmjzwC3g4rCxtyQs9beM\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"7RbMok3uvMD7sxPXBflVo\",\"children\":[{\"id\":\"_8FfIcBcXpaXUDC0tDc2n\",\"children\":[{\"id\":\"tO4CixNIzGB_75VrOggwJ\",\"children\":[{\"id\":\"diHaO4TY8lBpFGmTyPY4s\",\"children\":[{\"text\":\"msTime\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"aPkBT0UDxQRcNtRcdJBHA\",\"children\":[{\"id\":\"2S0-Ja4nAIw9TFaGjQnrm\",\"children\":[{\"id\":\"-g4y6vcotmq1YcuDUX1-A\",\"children\":[{\"text\":\"int\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"EQeN48vNJBJXWv30HHJIH\",\"children\":[{\"id\":\"55mldfieaCVWfwGGiDod8\",\"children\":[{\"id\":\"Y7Pb1WYeAscRJgRZoXveP\",\"children\":[{\"text\":\"Audio duration in ms. Value range: 1000 < \"},{\"code\":1,\"text\":\"msTime\"},{\"text\":\" < = 58000.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[16,10,74],\"widthMode\":\"percentage\"},{\"id\":\"fJQwTfOYey0ua9WnS5bEt\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.814\",\"type\":\"h4\"},{\"id\":\"HJ7xhGvdIaTmCI3REqFPa\",\"autoWrap\":false,\"children\":[{\"id\":\"m8WfUGeKMkBZtp4ygMZcF\",\"children\":[{\"text\":\"ITMGContext.GetInstance().GetPttCtrl().SetMaxMessageLength(58000); \"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"DjQqgu2asWcroFh9S-NEW\",\"children\":[{\"text\":\"Streaming Speech Recognition\"}],\"nodeId\":\".E6.B5.81.E5.BC.8F.E8.AF.AD.E9.9F.B3.E8.AF.86.E5.88.AB\",\"type\":\"h2\"},{\"id\":\"f2ADcoZvycXg_8IA8k26Q\",\"children\":[{\"text\":\"Voice messaging and speech-to-text APIs\"}],\"nodeId\":\".E8.AF.AD.E9.9F.B3.E6.B6.88.E6.81.AF.E5.8F.8A.E8.BD.AC.E6.96.87.E5.AD.97.E7.9B.B8.E5.85.B3.E6.8E.A5.E5.8F.A3\",\"type\":\"h3\"},{\"id\":\"66sElWRT0PYcwy__11f67\",\"children\":[{\"id\":\"fFWpCg1ccHt6m0o_bZw8g\",\"children\":[{\"id\":\"SOUTxh4l_tOPL0UR_V6Yz\",\"children\":[{\"id\":\"DU9u8kbg3_G1D9a79jyau\",\"children\":[{\"text\":\"API\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"y2LqTtDo_p0PghorpPWNw\",\"children\":[{\"id\":\"rDUQsk82sH0cgTcVQkH2P\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"MOOduZrSsu07lFHpdPRVX\",\"children\":[{\"id\":\"oV0_XbRsRWniTpp4oLeLm\",\"children\":[{\"id\":\"T-t0Ib0Pin3UefFMNgKht\",\"children\":[{\"id\":\"k5ckL_yOQ1bVUbJS4kjDp\",\"children\":[{\"text\":\"StartRecordingWithStreamingRecognition\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"i_q9H1Cg7uPcm8rDlQcZu\",\"children\":[{\"id\":\"K8GAwp8xinSVkf6kdBtuh\",\"children\":[{\"id\":\"HzWbBfsScXOoPPV-JF_UD\",\"children\":[{\"text\":\"Starts streaming recording.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"3z4r4OGjW9aboeHgHLj3C\",\"children\":[{\"id\":\"OsiJcEOErHvT3GmWAoRR7\",\"children\":[{\"id\":\"6LPa89v1_on9d-Bbpk_KT\",\"children\":[{\"id\":\"4u1JMSIIx2vERtWrqCLRr\",\"children\":[{\"text\":\"StopRecording\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"XWga2fcqmjWiKoCq3W__E\",\"children\":[{\"id\":\"zoxASNkuoTYR26U8ptAuo\",\"children\":[{\"text\":\"This API is used to stop audio recording.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[43,57],\"widthMode\":\"percentage\"},{\"id\":\"dr-YuyCuJxMAZ5X9vx8c3\",\"children\":[{\"text\":\"Starting streaming speech recognition\"}],\"nodeId\":\".E5.90.AF.E5.8A.A8.E6.B5.81.E5.BC.8F.E8.AF.AD.E9.9F.B3.E8.AF.86.E5.88.AB\",\"type\":\"h3\"},{\"id\":\"UKqd6c6ztiik6M0_ELDaV\",\"children\":[{\"text\":\"This API is used to start streaming speech recognition. Text obtained from speech-to-text conversion will be returned in real time in its callback. It can specify a language for recognition or translate the text recognized in speech into a specified language and return the translation. \"},{\"b\":1,\"text\":\"To stop recording, call \"},{\"id\":\"Ta0rRX4yhBPyOk0vf6FGx\",\"children\":[{\"text\":\"StopRecording\"}],\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/zh/document/product/607/41635#.E5.81.9C.E6.AD.A2.E5.BD.95.E9.9F.B3\"},\"type\":\"ref\"},{\"b\":1,\"text\":\".\"}],\"type\":\"p\"},{\"id\":\"-Z2CyOwEwJw77QE-dsmll\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\".E6.8E.A5.E5.8F.A3.E5.8E.9F.E5.9E.8B9\",\"type\":\"h4\"},{\"id\":\"NOV3D1MCx1TLdNzAbaj7I\",\"autoWrap\":false,\"children\":[{\"id\":\"JDzPeyz_o-gDqHRn1eGfm\",\"children\":[{\"text\":\"ITMGPTT int StartRecordingWithStreamingRecognition(string filePath)\"}],\"type\":\"code-line\"},{\"id\":\"xf5A5nXMm-TAf7R6cEHji\",\"children\":[{\"text\":\"ITMGPTT int StartRecordingWithStreamingRecognition(string filePath, string speechLanguage,string translateLanguage) \"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"HuLogrokJTHerMybOGWkF\",\"children\":[{\"id\":\"YBbc8WnePJB9PpAjXo8L5\",\"children\":[{\"id\":\"2xWY9fBKPF2yzxXYP4QLD\",\"children\":[{\"id\":\"HzqzGzYI50xya1dUh8ERp\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"nYuDKg2zcpWVdjx94Y5lt\",\"children\":[{\"id\":\"3Pyue7QrU3S7fkQjJVuTU\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"0x6V352oIJtiD3A17cDVF\",\"children\":[{\"id\":\"9o57Mk45noV2w-85R4B3L\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"EHLg-Y7pchvhmK4zcoGzb\",\"children\":[{\"id\":\"jtOlnoRM4qOScfBQ7ox0t\",\"children\":[{\"id\":\"hJHzClX_Vrzv_doLCCPW4\",\"children\":[{\"id\":\"h_Ps7QWfqO9_Y-ciO4M86\",\"children\":[{\"text\":\"filePath\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"s4XTBv7MzapB3xn9NGHi_\",\"children\":[{\"id\":\"ZbC9P8MnOI_5D48c_cMGK\",\"children\":[{\"id\":\"wiNcnOjsU97jTeDNB0KJx\",\"children\":[{\"text\":\"String\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"EtBXO5dFeM-jcvdvSOw2W\",\"children\":[{\"id\":\"-AIMSyV4vXnvwNUmZx4M_\",\"children\":[{\"id\":\"FJ8FkyCvgWyprXaiVOhny\",\"children\":[{\"text\":\"Path of the stored audio file\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"Be09rPizKNxlXXuWiOQ71\",\"children\":[{\"id\":\"t7aLabDzsSTWWTKvvoRBl\",\"children\":[{\"id\":\"0DzlEKvry58VXDab8Nlu_\",\"children\":[{\"id\":\"AgVdIRYkssPgdINiU0-HL\",\"children\":[{\"text\":\"speechLanguage\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"hoCIto01yN6E6rfrjoDkO\",\"children\":[{\"id\":\"eawwbTnxXA-QNkpZBKRSo\",\"children\":[{\"id\":\"D2AJLG6jLyE4DQJ3m_QDa\",\"children\":[{\"text\":\"String\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"B7xrg5UYWPqI65L1TdA1m\",\"children\":[{\"id\":\"9DCeJfGF4AMMW1fStuTzq\",\"children\":[{\"text\":\"The language in which the audio file is to be converted to text. For parameters, see \"},{\"id\":\"_DFZGJMF_uv0TZzQ15epn\",\"children\":[{\"text\":\"Language Parameter Reference List\"}],\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/30260\"},\"type\":\"ref\"},{\"text\":\".\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"EAQnA_O5v-ZlneZ02KxzJ\",\"children\":[{\"id\":\"i3N5DnMQQ67djIDun_BNt\",\"children\":[{\"id\":\"pkoS0-iZN9GvKtgEhcN2S\",\"children\":[{\"id\":\"E4N3rthQVZK-zcTceLMZW\",\"children\":[{\"text\":\"translateLanguage\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"pSpgG7NtJuZLa76v8kSMo\",\"children\":[{\"id\":\"FxxWhdhi2OPvfmcNe6h5K\",\"children\":[{\"id\":\"N-4C71h9SSBd01GapAz4H\",\"children\":[{\"text\":\"String\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"vpizhIJofhzhzkTIUk_e4\",\"children\":[{\"id\":\"rH76geJFjSk0klFhluEXB\",\"children\":[{\"text\":\"Enter the value of \"},{\"code\":1,\"text\":\"speechLanguage\"},{\"text\":\".\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[17,10,73],\"widthMode\":\"percentage\"},{\"id\":\"TBXV5KtTDSsketTsWS3uI\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.815\",\"type\":\"h4\"},{\"id\":\"apNrLv0OGJGhKvBiE8sbP\",\"autoWrap\":false,\"children\":[{\"id\":\"1mHkKK1lpyTuAFz8TmVHH\",\"children\":[{\"text\":\"string recordPath = Application.persistentDataPath + string.Format(\\\"/{0}.silk\\\", sUid++);\"}],\"type\":\"code-line\"},{\"id\":\"fqQtEWxvsOF3UP0LlMcAj\",\"children\":[{\"text\":\"int ret = ITMGContext.GetInstance().GetPttCtrl().StartRecordingWithStreamingRecognition(recordPath, \\\"cmn-Hans-CN\\\",\\\"cmn-Hans-CN\\\");\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"DX1XF_XOy8wWfMrx_Ab5K\",\"children\":[{\"id\":\"HWaAF-pHxU_OFRoVcVjP0\",\"children\":[{\"b\":1,\"text\":\"Note:\"}],\"type\":\"p\"},{\"id\":\"fE-quLAH9FVa6_izmy6aJ\",\"children\":[{\"text\":\"Translation incurs additional fees. For more information, see \"},{\"id\":\"Wn2wX7d5ftCEsi6rg-9Ih\",\"children\":[{\"text\":\"Purchase Guide\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://www.tencentcloud.com/document/product/607/50009\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/50009\"},\"type\":\"ref\"},{\"text\":\".\"}],\"type\":\"p\"}],\"hintType\":\"alert\",\"type\":\"hint\"},{\"id\":\"xUAQ2LLkADl07pQcUilqq\",\"children\":[{\"text\":\"Callback for streaming speech recognition\"}],\"nodeId\":\".E6.B5.81.E5.BC.8F.E8.AF.AD.E9.9F.B3.E8.AF.86.E5.88.AB.E7.9A.84.E5.9B.9E.E8.B0.83\",\"type\":\"h3\"},{\"id\":\"wK8cyIu2o-YijYKK-pJ-5\",\"children\":[{\"text\":\"After streaming speech recognition is started, you need to listen on callback messages in the \"},{\"code\":1,\"text\":\"OnStreamingSpeechComplete\"},{\"text\":\" or \"},{\"code\":1,\"text\":\"OnStreamingSpeechisRunning\"},{\"text\":\" notification, which is as detailed below:\"}],\"type\":\"p\"},{\"id\":\"dSXUrHOwOsZ8IxS65GTRb\",\"children\":[{\"code\":1,\"text\":\"OnStreamingSpeechComplete\"},{\"text\":\" returns text after the recording is stopped and the recognition is completed, which is equivalent to returning the recognized text after a paragraph of speech.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"Wm5qiPRUG7QC1WS1JuW5e\",\"children\":[{\"code\":1,\"text\":\"OnStreamingSpeechisRunning\"},{\"text\":\" returns the recognized text in real time during the recording, which is equivalent to returning the recognized text while speaking.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"Dz9Rv9e8K54GEWLQH3iQK\",\"children\":[{\"text\":\"The event message will be identified in the \"},{\"code\":1,\"text\":\"OnEvent\"},{\"text\":\" notification based on the actual needs. The passed parameters include the following four messages.\"}],\"type\":\"p\"},{\"id\":\"r1ucpR3Nwu5d6Qq8N4d_e\",\"children\":[{\"id\":\"b-xYj507zvffLrZv4hAsc\",\"children\":[{\"id\":\"K6SttOB7kEAOQh0YaFHKC\",\"children\":[{\"id\":\"uYIpqiXDw9-9xa6-YmvLZ\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"W5CwadRhjJqIjlQym1kfi\",\"children\":[{\"id\":\"a7L5P3q8LC4ihTnOYwKEH\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"tdT4pyzv5e5DDH4TFJQbu\",\"children\":[{\"id\":\"mlrcugE10iIEE64-ILWP_\",\"children\":[{\"id\":\"nwG2YMBKWuTUUAGNz-_rp\",\"children\":[{\"id\":\"1_B9jHnY_RE0vE6QEykZl\",\"children\":[{\"text\":\"result\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"3CwbZDPvBp89HVA3MkrXs\",\"children\":[{\"id\":\"JXHNdBShzwp584e-WtYm1\",\"children\":[{\"id\":\"I1GBJttrb01spf-87-sl5\",\"children\":[{\"text\":\"Return code indicating whether streaming speech-to-text conversion is successful\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"x0s8AHEVhgK59PXSMvHCk\",\"children\":[{\"id\":\"DOcqpzQ1edAOo4l-Ujmhz\",\"children\":[{\"id\":\"FuBp1kV6m6jL0zGysRz-g\",\"children\":[{\"id\":\"h13RzLlISB8QkRa4-II1W\",\"children\":[{\"text\":\"text\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"u1-MmxHweW6fzCZjbqrCT\",\"children\":[{\"id\":\"jBlYSUi2zhzekhomB1gLf\",\"children\":[{\"id\":\"IPo5eHW0_JwyQ6cfVg6sC\",\"children\":[{\"text\":\"Text converted from speech\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"f62mzPPYD_EnkTjBj9wBQ\",\"children\":[{\"id\":\"jEyjhFdeupNZ6hKzS9uon\",\"children\":[{\"id\":\"BAKWNB6tHBLQASvXY8QxR\",\"children\":[{\"id\":\"i0NqZlgtgzitMQMlCpH-i\",\"children\":[{\"text\":\"file_path\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"irJIGVQVFe6juH7jgv19I\",\"children\":[{\"id\":\"WMjC9ILs0P-5TB7FyNdND\",\"children\":[{\"id\":\"nxeMt00yX3Q8BhX41Txeb\",\"children\":[{\"text\":\"Local path of the stored recording file\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"lgVsP6CWoTqxrtN8hSD8k\",\"children\":[{\"id\":\"ZFp0pUwDP3agRAniCrPh7\",\"children\":[{\"id\":\"tXYhJ5RCKKcYZoiAe3sQN\",\"children\":[{\"id\":\"XeFPjHnIlpOzLjTE46keR\",\"children\":[{\"text\":\"file_id\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"KJMYHggJs5EkMxZERJWOK\",\"children\":[{\"id\":\"Dj-rrrN9Ii3s7cGcXfV88\",\"children\":[{\"id\":\"o84-XBqGXbkdj8ygzO6M-\",\"children\":[{\"text\":\"Backend URL address of recording file, which will be retained for 90 days\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[15,85],\"widthMode\":\"percentage\"},{\"id\":\"iSuLoANHGAhevZPj1DDhd\",\"children\":[{\"id\":\"28Ykis1OF5ECfbDjFb-yA\",\"children\":[{\"b\":1,\"text\":\"Note:\"}],\"type\":\"p\"},{\"id\":\"j8bVJzah3n_4qQSXcSmet\",\"children\":[{\"text\":\"The file_id is empty when the 'ITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRecognition_IS_RUNNING' message is listened.\"}],\"type\":\"p\"}],\"hintType\":\"alert\",\"type\":\"hint\"},{\"id\":\"pg0VpbiPijIzHtqAXG5bl\",\"children\":[{\"text\":\"Error codes\"}],\"nodeId\":\".E9.94.99.E8.AF.AF.E7.A0.81\",\"type\":\"h4\"},{\"id\":\"HHZx9Px04Zxi-OPdaCZ0p\",\"children\":[{\"id\":\"DVAniqGWmRATkJFb_sq0z\",\"children\":[{\"id\":\"Uy4SjVivKozrxE1uFtCrh\",\"children\":[{\"id\":\"zvv9Vl5uq2Yi97Ub-dJCo\",\"children\":[{\"text\":\"Error Code\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"n8SWcxukrtvb79ijj5qQp\",\"children\":[{\"id\":\"mU1HzOQqg5D73IK8gjOPp\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Wake5lbhMJ4uGZZTIQJF4\",\"children\":[{\"id\":\"47lLYyCe9H41xuNKGYeE5\",\"children\":[{\"text\":\"Solution\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"jHM9KOqDxK27TgoM8J2ll\",\"children\":[{\"id\":\"t_8tBAGndBAjB5cdt1dHv\",\"children\":[{\"id\":\"EaMvEZDFuFo-mw_5A0Kzu\",\"children\":[{\"id\":\"M_792RSKldF5FuxbnRhVB\",\"children\":[{\"text\":\"32775\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"9R1KDDf9IxfmOxaOQuFe_\",\"children\":[{\"id\":\"43rAOTisZi7UnNhjikOCg\",\"children\":[{\"id\":\"RTBudf4eAb0BCNgMYT7cv\",\"children\":[{\"text\":\"Streaming speech-to-text conversion failed, but recording succeeded.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"SOBjGOUB2e7GRycva4eE-\",\"children\":[{\"id\":\"H39RfN_XhQfhdYJL5isBh\",\"children\":[{\"id\":\"GvPdNOK_EKMhGXiHTT_PB\",\"children\":[{\"text\":\"Call the \"},{\"code\":1,\"text\":\"UploadRecordedFile\"},{\"text\":\" API to upload the recording file and then call the \"},{\"code\":1,\"text\":\"SpeechToText\"},{\"text\":\" API to perform speech-to-text conversion.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"mKtcGO8EFhNUP6SLJOWU7\",\"children\":[{\"id\":\"61Ldqy7FZrFL7b6vBW7qN\",\"children\":[{\"id\":\"pXOTjCQIdlYnx86Eqblpq\",\"children\":[{\"id\":\"bxoCVE0dIITV1VxiNFwun\",\"children\":[{\"text\":\"32777\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"WJPVUV2NyjfwNBczJYI2f\",\"children\":[{\"id\":\"Nu8GZ659HlGXSHJpbeAOR\",\"children\":[{\"text\":\"Streaming speech-to-text conversion failed, but recording and upload succeeded.\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"GXw2BltkMXFDAz5fBbjkx\",\"children\":[{\"id\":\"aeWj30bWEnO9lZeKnWJBb\",\"children\":[{\"id\":\"ow1yw5i8ShVCoHstJBXTM\",\"children\":[{\"text\":\"The message returned contains a backend URL after successful upload. Call the \"},{\"code\":1,\"text\":\"SpeechToText\"},{\"text\":\" API to perform speech-to-text conversion.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"RGZJSnVy6GGemC-okHA2R\",\"children\":[{\"id\":\"yMPPu_s6sWmMOQk4UdsWX\",\"children\":[{\"id\":\"wSM6SjZR4w8GRWH6B0P7p\",\"children\":[{\"id\":\"0jSVUtUKeM3X-rvx03vW_\",\"children\":[{\"text\":\"32786\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"FKYc1LQM0CfDLFM31i1UD\",\"children\":[{\"id\":\"lmO53idHJ7olIfDwPJrju\",\"children\":[{\"id\":\"o5YBzOJdyNelAfa4lIwiy\",\"children\":[{\"text\":\"Streaming speech-to-text conversion failed.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"u3tazLJ28Vwl4LJGpfe07\",\"children\":[{\"id\":\"dCMZuN0lTjk8OBZPJkcM7\",\"children\":[{\"id\":\"3yyKwLEuoZQVrudb135qE\",\"children\":[{\"text\":\"During streaming recording, wait for the execution result of the streaming recording API to return.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"intVvW6VkevfHt_zO5PbM\",\"children\":[{\"id\":\"wSqwj9YRwP7hvlg0nr1T4\",\"children\":[{\"id\":\"ZxXFJV_fa9FkeKIOGY8YU\",\"children\":[{\"id\":\"flxZpoDbb8RMVyTBTyAn6\",\"children\":[{\"text\":\"32787\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"TGYVPW4nPMjQ5Ghowgcv3\",\"children\":[{\"id\":\"VBOHGS20zL14RnYUm1s7J\",\"children\":[{\"id\":\"4OMaagnYhLWS93z1YE7Q6\",\"children\":[{\"text\":\"Speech-to-text conversion succeeded, but the text translation service was not activated.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"8RcnTGJo_ihPINWZzmL2B\",\"children\":[{\"id\":\"SH4wS1yfEUPx6YT3AvQL7\",\"children\":[{\"id\":\"okIwd_hPuCfqUb7EdZ4Of\",\"children\":[{\"text\":\"Activate the text translation service in the console.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"Jo8vV0YUE2CCDTRCVRzSd\",\"children\":[{\"id\":\"hoSTwxcQO8_NiQrIOqK93\",\"children\":[{\"id\":\"F2isBmR0PjElvGhLQifW5\",\"children\":[{\"id\":\"4SK0zUX_hWYMB9UaEc_Cm\",\"children\":[{\"text\":\"32788\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"R8TGMD5aPljkf2DmUNM7w\",\"children\":[{\"id\":\"sTJCt1q7WJbcBV3U2scI8\",\"children\":[{\"id\":\"4wrpspiTZnFdUqtEDLOOU\",\"children\":[{\"text\":\"Speech-to-text conversion succeeded, but the language parameter of the text translation service was invalid.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"G-179HTYa8cuYDVjQkMlZ\",\"children\":[{\"id\":\"sRfQiD3ZaWeb7-1rNnEET\",\"children\":[{\"id\":\"CbmlDPQgKwtQiq8lSXsep\",\"children\":[{\"text\":\"Check the parameter passed in.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[13,39,48],\"widthMode\":\"percentage\"},{\"id\":\"o8-RCI3NmMGAtL1CfMwNK\",\"children\":[{\"text\":\"If the error code 4098 is reported, see \"},{\"id\":\"jv8RBCwv2AI3oDGpYVEkA\",\"children\":[{\"text\":\"Speech-to-text Conversion\"}],\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/39716\"},\"type\":\"ref\"},{\"text\":\" for solutions.\"}],\"type\":\"p\"},{\"id\":\"epSxFzqbXcu3u5yPB8HiU\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.816\",\"type\":\"h4\"},{\"id\":\"03nqJs5ryb9iuO5J1622Y\",\"autoWrap\":false,\"children\":[{\"id\":\"Gvwf6ybgleInKakuJhiKP\",\"children\":[{\"text\":\" // Listen on an event:\"}],\"type\":\"code-line\"},{\"id\":\"v8kpLeusGR4UB06ljyO6e\",\"children\":[{\"text\":\" ITMGContext.GetInstance().GetPttCtrl().OnStreamingSpeechComplete +=new QAVStreamingRecognitionCallback (OnStreamingSpeechComplete);\"}],\"type\":\"code-line\"},{\"id\":\"oAHw5Altoad6REFnxRj6z\",\"children\":[{\"text\":\" ITMGContext.GetInstance().GetPttCtrl().OnStreamingSpeechisRunning += new QAVStreamingRecognitionCallback (OnStreamingRecisRunning);\"}],\"type\":\"code-line\"},{\"id\":\"zmqmwAVpiXa4mrjKi8hX1\",\"children\":[{\"text\":\" // Process the event listened on:\"}],\"type\":\"code-line\"},{\"id\":\"PkgT8-LSTT0hiLBUys2y-\",\"children\":[{\"text\":\" void OnStreamingSpeechComplete(int code, string fileid, string filepath, string result){\"}],\"type\":\"code-line\"},{\"id\":\"xY4lqqzxDzKHIW509PSAQ\",\"children\":[{\"text\":\" // Callback for streaming speech recognition\"}],\"type\":\"code-line\"},{\"id\":\"9R54dXfaKVY-Y8U9VCG1x\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"yMtfT4s8r5yuCwUF9mlFJ\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"},{\"id\":\"mmFKXdUPxvp5D5sAHN05q\",\"children\":[{\"text\":\" void OnStreamingRecisRunning(int code, string fileid, string filePath, string result){\"}],\"type\":\"code-line\"},{\"id\":\"5TnS6AUBqB3rFsVN-bot_\",\"children\":[{\"text\":\" if (code == 0)\"}],\"type\":\"code-line\"},{\"id\":\"oYsl_m4ZsWwkfJeGO4mZp\",\"children\":[{\"text\":\" {\"}],\"type\":\"code-line\"},{\"id\":\"98PIQrYE-72gcDlOMXfI8\",\"children\":[{\"text\":\" setBtnText(mStreamBtn, \\\"Streaming\\\");\"}],\"type\":\"code-line\"},{\"id\":\"wtriEnlIf7B71k2mY-X6Q\",\"children\":[{\"text\":\" InputField field = transform.Find(\\\"recordFilePath\\\").GetComponent();\"}],\"type\":\"code-line\"},{\"id\":\"lTivuc8CT0-9OHXATuswQ\",\"children\":[{\"text\":\" field.text = filePath;\"}],\"type\":\"code-line\"},{\"id\":\"zZCkim6EyvBXTH7qq-fSB\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"},{\"id\":\"czcIIg1N5fC97Po4WfkdU\",\"children\":[{\"text\":\" field = transform.Find(\\\"downloadUrl\\\").GetComponent();\"}],\"type\":\"code-line\"},{\"id\":\"If2LO0HPea8eYSd8kZ3_3\",\"children\":[{\"text\":\" field.text = \\\"Stream is Running\\\";\"}],\"type\":\"code-line\"},{\"id\":\"rTiSkFHPmUUm3gRANRIlE\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"},{\"id\":\"VwObgw8HXzvAIx3BX_vDq\",\"children\":[{\"text\":\" field = transform.Find(\\\"convertTextResult\\\").GetComponent();\"}],\"type\":\"code-line\"},{\"id\":\"Jp1cn9QTGOHDF6cQhdg0f\",\"children\":[{\"text\":\" field.text = result;\"}],\"type\":\"code-line\"},{\"id\":\"4yGGSDmjReRwhefdsJD3v\",\"children\":[{\"text\":\" showWarningText(\\\"Recording\\\");\"}],\"type\":\"code-line\"},{\"id\":\"DjMxDERYw0ptnAm6R1gO9\",\"children\":[{\"text\":\" }\\t\"}],\"type\":\"code-line\"},{\"id\":\"IhDnk9TqZhgKXdg-Hl1VE\",\"children\":[{\"text\":\"}\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"6s7seTHntXwDquiFjWBMp\",\"children\":[{\"text\":\"Voice Message Recording\"}],\"nodeId\":\".E8.AF.AD.E9.9F.B3.E6.B6.88.E6.81.AF.E5.BD.95.E5.88.B6\",\"type\":\"h2\"},{\"id\":\"FM2KNMGzy7yGYuGzZx5rj\",\"children\":[{\"b\":1,\"text\":\"The recording process is as follows: start recording > stop recording > return recording callback > start the next recording.\"}],\"type\":\"p\"},{\"id\":\"3AKj7yqIJas6MuQfbyQyt\",\"children\":[{\"text\":\"Voice messaging and speech-to-text APIs\"}],\"nodeId\":\".E8.AF.AD.E9.9F.B3.E6.B6.88.E6.81.AF.E5.8F.8A.E8.BD.AC.E6.96.87.E5.AD.97.E7.9B.B8.E5.85.B3.E6.8E.A5.E5.8F.A32\",\"type\":\"h3\"},{\"id\":\"ekTEElStKyttSFZwRARZA\",\"children\":[{\"id\":\"NCtAAOeu1oM9uqjohIyTj\",\"children\":[{\"id\":\"w1fN2z7LZoqas9zGwtwJS\",\"children\":[{\"id\":\"QgduZ1evBgni0tVfMY9qC\",\"children\":[{\"text\":\"API\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"8JS51JuY2KEbgDTIQ7Zvb\",\"children\":[{\"id\":\"NK914YiXS3sP6yZ843Mme\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"HhmlTRC0C3leKkFnvAYod\",\"children\":[{\"id\":\"p84T7sb4wMLSkoPCK6mZQ\",\"children\":[{\"id\":\"FCDPGOGeZsq3MJTFlpwXm\",\"children\":[{\"id\":\"6HMdMMxmlUoVMd2sWhtZ1\",\"children\":[{\"text\":\"StartRecording\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"v202GBgW5unpJlq6TmuiG\",\"children\":[{\"id\":\"WQiVeC1tdXP2VzcnpkO8n\",\"children\":[{\"id\":\"hV8CBMpJBC7RG63Zsyb5E\",\"children\":[{\"text\":\"Starts recording.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"FAYy04kAsOvfLFFFimOOa\",\"children\":[{\"id\":\"-KxbvgwKy5GJxV0DQYO9M\",\"children\":[{\"id\":\"cgsteEcgM1jS6N0EMe5Nw\",\"children\":[{\"id\":\"qChKakaoFVTAkSZatajNV\",\"children\":[{\"text\":\"PauseRecording\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"vwyRkbka4yZYbOtAG1JJr\",\"children\":[{\"id\":\"VRRGnxYqwY3vjeeT2wwN2\",\"children\":[{\"id\":\"mwoHcWaLpEAHPU84Kd6kp\",\"children\":[{\"text\":\"Pauses recording.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"ZtKjZxITGxXiyrGulCiUi\",\"children\":[{\"id\":\"KMsaet5wKSu_aENWqoxSQ\",\"children\":[{\"id\":\"hWsCBU17jnDARCUIUk5X1\",\"children\":[{\"id\":\"3uzI-XBaSDipuqgHse_Q1\",\"children\":[{\"text\":\"ResumeRecording\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"F9vr17QJsxre1FCp-ARMl\",\"children\":[{\"id\":\"i1IQupcSwy_PgBAq8tWo-\",\"children\":[{\"id\":\"Uv0acVwik27NPYC0at7Y8\",\"children\":[{\"text\":\"Resumes recording.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"bPmdQCWZwQJ6-HRDlRkqQ\",\"children\":[{\"id\":\"A5Tvnrsyn72K2NOW8uy9z\",\"children\":[{\"id\":\"iXWjJgTcAg-Cqr7s0PQv0\",\"children\":[{\"id\":\"9l1fEKz6CpT027kh0Gp12\",\"children\":[{\"text\":\"StopRecording\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"2UwgNkeDt9uGeo_PV8hoj\",\"children\":[{\"id\":\"at5RBq4MxNMY2h2dnd_3z\",\"children\":[{\"id\":\"EAyzc7i3s8VOS-2_ubv4r\",\"children\":[{\"text\":\"This API is used to stop audio recording.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"S6Yt59jScpIhIPB7E_HfT\",\"children\":[{\"id\":\"SAeORWQrJqlqvyO0nI9ej\",\"children\":[{\"id\":\"HCWy6PyM33YsJJ5XITLD7\",\"children\":[{\"id\":\"Zz3lVsPC7SsUGXBFWWpU0\",\"children\":[{\"text\":\"CancelRecording\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"CGNhgBzLgMuisLEhLWrx_\",\"children\":[{\"id\":\"lZmoBuuhZMX2x-S8sDpgh\",\"children\":[{\"id\":\"Uii7LvzrTvxyJCMxhZ3-a\",\"children\":[{\"text\":\"Cancels recording.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[34,66],\"widthMode\":\"percentage\"},{\"id\":\"hACVheY4LiRoQ_AdSnz71\",\"children\":[{\"text\":\"Starting recording\"}],\"nodeId\":\".E5.90.AF.E5.8A.A8.E5.BD.95.E9.9F.B3\",\"type\":\"h3\"},{\"id\":\"qcA_c6jcGaC__cPCN9XJ8\",\"children\":[{\"text\":\"This API is used to start recording.\"}],\"type\":\"p\"},{\"id\":\"6KU-bP7zjixRTD8qL_Ch5\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\".E6.8E.A5.E5.8F.A3.E5.8E.9F.E5.9E.8B10\",\"type\":\"h4\"},{\"id\":\"REgnrjiGRtEioxrhmuHgQ\",\"autoWrap\":false,\"children\":[{\"id\":\"UJYIEKacplO5hhu6cQ_cg\",\"children\":[{\"text\":\"ITMGPTT int StartRecording(string fileDir)\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"Ywl6myay3nGLLupLVnxTk\",\"children\":[{\"id\":\"0Hq3-KIzxr3xSOfUcsFvd\",\"children\":[{\"id\":\"GLMhBQsqt2b9xkwTp223k\",\"children\":[{\"id\":\"bJfI-0NmqaUxwCkvwF_a8\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ZSOQtbsH9iGa6jGKukPuZ\",\"children\":[{\"id\":\"ctYsxXP3Qy1dXmeWcKxMe\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"eS69mY5QVf-NEnLMKs3h3\",\"children\":[{\"id\":\"9HIwWYXBVOb1W4nFhDrf4\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"SfQv4JslrORVkJ_9Np-FC\",\"children\":[{\"id\":\"NFyI08zCNiEiacGR-mQy3\",\"children\":[{\"id\":\"gRJe2KejBZTZZ3xlUtZlf\",\"children\":[{\"id\":\"6Yxd7jXnAs1XVS56eAbZW\",\"children\":[{\"text\":\"fileDir\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"lbsk7zc0mrbTOPfxP9J42\",\"children\":[{\"id\":\"KmImWCU_N83EQPArVL_6q\",\"children\":[{\"id\":\"2NOXTqrEL-jMGlKrLKVeN\",\"children\":[{\"text\":\"string\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"grbUVnGZ_CVKxA4-z9E7m\",\"children\":[{\"id\":\"kMjBTTkYmA4Hxz8Iltc6x\",\"children\":[{\"id\":\"AvzXsuHgE5sLIlDcwZFuI\",\"children\":[{\"text\":\"Path of the stored audio file\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[26,18,56],\"widthMode\":\"percentage\"},{\"id\":\"5j_qS6_-YKRXElTFvQJIS\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.817\",\"type\":\"h4\"},{\"id\":\"LeaFybkoW3uhiDF-hFSj5\",\"autoWrap\":false,\"children\":[{\"id\":\"hVpv5N0AY5UEZZ-q0LJJ_\",\"children\":[{\"text\":\"string recordPath = Application.persistentDataPath + string.Format (\\\"/{0}.silk\\\", sUid++);\"}],\"type\":\"code-line\"},{\"id\":\"LuXa9jBYPWlIu68b2EB27\",\"children\":[{\"text\":\"int ret = ITMGContext.GetInstance().GetPttCtrl().StartRecording(recordPath);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"OHlHys4RYGkD9u8k4EE3C\",\"children\":[{\"text\":\"Stopping recording\"}],\"nodeId\":\".E5.81.9C.E6.AD.A2.E5.BD.95.E9.9F.B3\",\"type\":\"h3\"},{\"id\":\"Mw4WJx77A9rgCPqti6xXo\",\"children\":[{\"text\":\"This API is used to stop recording. It is async, and a callback for recording completion will be returned after recording stops. A recording file will be available only after recording succeeds.\"}],\"nodeId\":\"Stop\",\"type\":\"p\"},{\"id\":\"yaATMFOidL4YIqwU5Jf5S\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\".E6.8E.A5.E5.8F.A3.E5.8E.9F.E5.9E.8B11\",\"type\":\"h4\"},{\"id\":\"J4RnkwQIQklFjs2FV63Si\",\"autoWrap\":false,\"children\":[{\"id\":\"K0B7srU6LfWKvz2KImjuA\",\"children\":[{\"text\":\"ITMGPTT int StopRecording()\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"qEN1bDsYrOunJloOGENzc\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.818\",\"type\":\"h4\"},{\"id\":\"ZsAo-5qBxs2-BKYhOzgSY\",\"autoWrap\":false,\"children\":[{\"id\":\"u86AcwwW_N8tx8mUVBEDQ\",\"children\":[{\"text\":\"ITMGContext.GetInstance().GetPttCtrl().StopRecording();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"f_l6jRn0TiKbQgE1ozfHf\",\"children\":[{\"text\":\"Callback for recording start\"}],\"nodeId\":\".E5.90.AF.E5.8A.A8.E5.BD.95.E9.9F.B3.E7.9A.84.E5.9B.9E.E8.B0.83\",\"type\":\"h3\"},{\"id\":\"_-_t0hmdBC5aS9apWI6_f\",\"children\":[{\"text\":\"A callback will be executed through a delegate function to pass a message when recording is completed.\"}],\"type\":\"p\"},{\"id\":\"NxDmP8Q_eHedPyvJ9Roe5\",\"children\":[{\"text\":\"To stop recording, call \",\"b\":1},{\"code\":1,\"text\":\"StopRecording\"},{\"text\":\". The callback for recording start will be returned after the recording is stopped.\"}],\"type\":\"p\"},{\"id\":\"kGcERkilr766qTESCVhpZ\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\".E6.8E.A5.E5.8F.A3.E5.8E.9F.E5.9E.8B12\",\"type\":\"h4\"},{\"id\":\"Rn3noUmwqHDK605k1x7tD\",\"autoWrap\":false,\"children\":[{\"id\":\"IyILQIUaxoWklT9nLnDJm\",\"children\":[{\"text\":\"public delegate void QAVRecordFileCompleteCallback(int code, string filepath); \"}],\"type\":\"code-line\"},{\"id\":\"6EQQ2CwEM1AAwOpdstcrh\",\"children\":[{\"text\":\"public abstract event QAVRecordFileCompleteCallback OnRecordFileComplete;\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"TTd8At4Ru_PUPvPYlQv5m\",\"children\":[{\"id\":\"-vj-xCfRuVVVi_0YyY8MD\",\"children\":[{\"id\":\"efA6Fh2at-4awwpa1Lqio\",\"children\":[{\"id\":\"MBC4OvHyHH1Qdd-tuKERf\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"XuzIpIrkhiqJJ41ct7-Aa\",\"children\":[{\"id\":\"DEhXYPT5KTIlUr65R0E34\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"8m1X3GYk5DaB7TUNtBCmu\",\"children\":[{\"id\":\"cYIyZTN13J1-0RPfruGsn\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"mYIZlADCO1VZZRz7PNELX\",\"children\":[{\"id\":\"j5FIylF397_M-mKW1tPIS\",\"children\":[{\"id\":\"nxa_8ABLhDcgAmXAMWswm\",\"children\":[{\"id\":\"A5AL902e2SBMMCOcyRpGO\",\"children\":[{\"text\":\"code\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ImDaptNFdQKbVKDYSLNX9\",\"children\":[{\"id\":\"TvU-8mbOUxw3KSs-8_hiJ\",\"children\":[{\"id\":\"2ftEiz30DeDsQi58DZ9Ht\",\"children\":[{\"text\":\"string\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"7uA5gTpSjoom1ValP7AtF\",\"children\":[{\"id\":\"BQdvvUaP8VUrkHCYGxfgp\",\"children\":[{\"id\":\"qGR6-9_BnL5NyPTzw7Y5C\",\"children\":[{\"code\":1,\"text\":\"0\"},{\"text\":\": Recording is completed.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"E7qRmNMsiEXnSV7Q1ZjLE\",\"children\":[{\"id\":\"X-ad2yP9OsOuTl7_KKi9V\",\"children\":[{\"id\":\"3E7t4d4GRxajzWwkKTs3R\",\"children\":[{\"id\":\"DvHgO-t0t9K9w7h3T-LJC\",\"children\":[{\"text\":\"filepath\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Dlw11eMb54lRXTT0b8xHT\",\"children\":[{\"id\":\"mJ-CRtKbnio0SnEvxeKiI\",\"children\":[{\"id\":\"CCGfkaGX6xuZmni7mMz2j\",\"children\":[{\"text\":\"string\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"pHPb2ybPk4cNwL-yH2FO4\",\"children\":[{\"id\":\"iI7jlU81wvTeUlTrCbjOz\",\"children\":[{\"id\":\"jvNWvRj-w1-ZP7wzX6SQY\",\"children\":[{\"text\":\"Path of the stored recording file, which must be accessible and cannot be the \"},{\"code\":1,\"text\":\"fileid\"},{\"text\":\".\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[13,9,78],\"widthMode\":\"percentage\"},{\"id\":\"bmFBPVKlTS_HeGxQdu9MC\",\"children\":[{\"text\":\"Error codes\"}],\"nodeId\":\".E9.94.99.E8.AF.AF.E7.A0.812\",\"type\":\"h4\"},{\"id\":\"w6KUO5Lou-Uemqhnf52zB\",\"children\":[{\"id\":\"R-UxG7XlFnUCDYCxonyX0\",\"children\":[{\"id\":\"uhYbJrlkEcXsJO6Ck5Gvv\",\"children\":[{\"id\":\"4QX9sunchdSNlNCIv9sry\",\"children\":[{\"text\":\"Error Code\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"pCoPKHUIM1bGAnnNG5Anb\",\"children\":[{\"id\":\"Drl-KM8zW1lhvwtYR8_t6\",\"children\":[{\"text\":\"Caused By\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"rF1nhAVG__s7XqU-_nxsg\",\"children\":[{\"id\":\"pccj3H0LnGiqBVG7FR4Ex\",\"children\":[{\"text\":\"Suggestion\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"tN762KuPDx1AhNeViZplR\",\"children\":[{\"id\":\"EBqTRNqyfcuNYLT4TQYAC\",\"children\":[{\"id\":\"uGk7P4NF2ja1y49owgtV4\",\"children\":[{\"id\":\"kv4FTfMnBldJuNqGO4VBX\",\"children\":[{\"text\":\"4097\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"bdtvPVVzwq0mVzNFSuXaC\",\"children\":[{\"id\":\"ukRyayHVZlan-Wde6St94\",\"children\":[{\"id\":\"hych8AHYdyR0scEN6_jQE\",\"children\":[{\"text\":\"Empty parameters.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"hvGrFF1gijQ_od__OyEhf\",\"children\":[{\"id\":\"PD8BhBNcu61o6XbQdi5rb\",\"children\":[{\"id\":\"C3giFUslx33odkwkhyj5X\",\"children\":[{\"text\":\"Check whether the API parameters in the code are correct.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"0qDM-KzzP4klhAbWmlawJ\",\"children\":[{\"id\":\"lSLf8mbZnmnWdxnOfPcIb\",\"children\":[{\"id\":\"hhYHEo0INbP9Gq_WXZPrr\",\"children\":[{\"id\":\"ra1lVPHS7-7ZL0MTzpjuU\",\"children\":[{\"text\":\"4098\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"1ZqaNFoqcQkByYZ610D61\",\"children\":[{\"id\":\"XGHFztzxhfblkzYBiWSsf\",\"children\":[{\"id\":\"QY3dB9fowtoBDs3OfdaLT\",\"children\":[{\"text\":\"An initialization error occurred.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"bPO01bHJqwJqB--Wdg76c\",\"children\":[{\"id\":\"QEYnVnICyV2S4-kGUaPRf\",\"children\":[{\"id\":\"UUIVlMBAxVsE0uKomUjZT\",\"children\":[{\"text\":\"Check whether the device is being used, whether the permissions are normal, and whether the initialization is normal.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"sws1Hqpodxk7d4lcUKeKx\",\"children\":[{\"id\":\"xIklFxnAww2W67UYCuYS1\",\"children\":[{\"id\":\"XNPE2v2WVH_cALRDwY8zy\",\"children\":[{\"id\":\"evtwUpGmMVK8FoZF9XgSG\",\"children\":[{\"text\":\"4099\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"eYKowANJrJNprVeOJk4wn\",\"children\":[{\"id\":\"aibpCDvjXWKgKFzie7bzY\",\"children\":[{\"id\":\"JDn4DEX1j6tS_ZR3LvIwt\",\"children\":[{\"text\":\"Recording is in progress.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"C_b3HpL0TADqTy0n_a8cL\",\"children\":[{\"id\":\"exoh0Vs0CEfakkEDFd6ad\",\"children\":[{\"id\":\"Vgs2qgUvfHHearU4JdGWX\",\"children\":[{\"text\":\"Make sure that the SDK recording feature is used at the right time.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"xe4zko7njH9M-Cp9o3G-F\",\"children\":[{\"id\":\"Bg4Gmqko_TpbXWd-bSJXF\",\"children\":[{\"id\":\"ylS-GWOy0BcoHC3ffRFI_\",\"children\":[{\"id\":\"cxifX9FqrvxK8hIP907Hf\",\"children\":[{\"text\":\"4100\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Qa8uSH--DHvtc771VafMr\",\"children\":[{\"id\":\"i9yqUQxf4PRDVqCL_w2g7\",\"children\":[{\"id\":\"zROXCzL171UnrPz0XnFfP\",\"children\":[{\"text\":\"No audio data is captured.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"BoyqCyB4EZCYnmkS83Um3\",\"children\":[{\"id\":\"w_PdOaJ8Mi8tO5zc-xi2A\",\"children\":[{\"id\":\"qPmtONlGhTWzkTc27Zywo\",\"children\":[{\"text\":\"Check whether the mic is working properly.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"8ff-3jivsXd5Puk2HvlBl\",\"children\":[{\"id\":\"Jv2Pkgi09gJmCWS2azy3k\",\"children\":[{\"id\":\"tKRFTUzdgtDT15bhD29FF\",\"children\":[{\"id\":\"hbo19mOGzs9bN4hh5WRn1\",\"children\":[{\"text\":\"4101\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"DrKQRqHTvq3KhGXDetbhA\",\"children\":[{\"id\":\"1pz6PvXfAATtmfnBmGCJE\",\"children\":[{\"id\":\"CFpGMba0_PpGPH8_7HoDQ\",\"children\":[{\"text\":\"An error occurred while accessing the file during recording.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"WPNgRUwgJcIIqVIOqE4q6\",\"children\":[{\"id\":\"i9TNV5D6TOEKc3aavJXd9\",\"children\":[{\"id\":\"lYNW0YWpuKqNlTzJ0rXZa\",\"children\":[{\"text\":\"Ensure the existence of the file and the validity of the file path.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"sn7BVkKZAChDc-WJq0g58\",\"children\":[{\"id\":\"-2GGjpUqy5lIcEvdLSaf7\",\"children\":[{\"id\":\"kBTcxX-KZSwrIGcuUJqIM\",\"children\":[{\"id\":\"AOwXH3uDJEpVJ14rMcqXW\",\"children\":[{\"text\":\"4102\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"X9z07QuK_VqAqLZ8bTJmW\",\"children\":[{\"id\":\"jUig06HjJOBwNMVX2jb5E\",\"children\":[{\"id\":\"M4jQMdr321znFZsjLlXTf\",\"children\":[{\"text\":\"The mic is not authorized.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"xryUjtgOlmPInkuzjuUja\",\"children\":[{\"id\":\"RKQ-_TyRDPY1D3pvgflZY\",\"children\":[{\"id\":\"MaFcsgbaBwDuz6YXOfyxU\",\"children\":[{\"text\":\"The mic permission is required for using the SDK. To add the permission, see the SDK project configuration document for the corresponding engine or platform.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"oWhI05WFIOyb-ZY0ZerXU\",\"children\":[{\"id\":\"WcKyhhNtsfg-5QHH5f2KJ\",\"children\":[{\"id\":\"8YpbXCO1WLh4MaRTXRCMR\",\"children\":[{\"id\":\"vJTimcDCtVIN8-C9cziXQ\",\"children\":[{\"text\":\"4103\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"F5kZ40eFXVjWOf-vA4vCT\",\"children\":[{\"id\":\"pBMq_Vk83eiRus0Z0_x-k\",\"children\":[{\"id\":\"07HjaleD3oicQtfJq4rUG\",\"children\":[{\"text\":\"The recording duration is too short.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"NAME1bV1LnkW21MCabFqr\",\"children\":[{\"id\":\"EeJRvS7EfrcYofrkvzmtE\",\"children\":[{\"id\":\"NCkjCN6Hahsn9Vc372tub\",\"children\":[{\"text\":\"The recording duration should be in ms and longer than 1,000 ms.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"KpJjFsUA3vWpJDPNMkCUm\",\"children\":[{\"id\":\"X_CrTRLQYlrmjWb3ue7op\",\"children\":[{\"id\":\"KYi_VDzyhRUKlW8h8VsqK\",\"children\":[{\"id\":\"v17BsjpISVG2OftbLVtCt\",\"children\":[{\"text\":\"4104\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"JPm4o-7aJXYOMkrWLEle8\",\"children\":[{\"id\":\"DDI4TD7XNSC-epKsxAQ-_\",\"children\":[{\"id\":\"mlUU095xuBYcDUTlZU4s7\",\"children\":[{\"text\":\"No recording operation is started.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"CHi2DgyAh5ctNU8AeqfoX\",\"children\":[{\"id\":\"axvueN0-70NWWzDnPKj_u\",\"children\":[{\"id\":\"hCmeznRtAHc5rSJuMhgbr\",\"children\":[{\"text\":\"Check whether the recording starting API has been called.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[13,30,57],\"widthMode\":\"percentage\"},{\"id\":\"C_XTTPj5WFdS9Nyj6AHH9\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.819\",\"type\":\"h4\"},{\"id\":\"c3A_0ui3dX6J_iTaIZ_r6\",\"autoWrap\":false,\"children\":[{\"id\":\"LIlYCfXLNPrGEq6sEvCqB\",\"children\":[{\"text\":\"// Listen on an event\"}],\"type\":\"code-line\"},{\"id\":\"_PNz-vQCEhLJad4P1UGkh\",\"children\":[{\"text\":\"ITMGContext.GetInstance().GetPttCtrl().OnRecordFileComplete += new QAVRecordFileCompleteCallback (OnRecordFileComplete);\"}],\"type\":\"code-line\"},{\"id\":\"TkYKp3NnFXn3nrCFCt3v0\",\"children\":[{\"text\":\"// Process the event listened on\"}],\"type\":\"code-line\"},{\"id\":\"uuXlQkKBWgJhXdEUsVmAg\",\"children\":[{\"text\":\"void OnRecordFileComplete(int code, string filepath){\"}],\"type\":\"code-line\"},{\"id\":\"09mW9VrRLt_D3jVoi0c8A\",\"children\":[{\"text\":\" // Callback for recording start\"}],\"type\":\"code-line\"},{\"id\":\"It5RPfvjqYn30VqVZCnsw\",\"children\":[{\"text\":\"}\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"wEQpviVQo4T9a2vCeOef8\",\"children\":[{\"text\":\"Pausing recording\"}],\"nodeId\":\".E6.9A.82.E5.81.9C.E5.BD.95.E9.9F.B3\",\"type\":\"h3\"},{\"id\":\"MEjb__rCZdbmC2fj9Jb1W\",\"children\":[{\"text\":\"This API is used to pause recording. If you want to resume recording, call the \"},{\"code\":1,\"text\":\"ResumeRecording\"},{\"text\":\" API.\"}],\"type\":\"p\"},{\"id\":\"waF8t5_XGz0dRgqMv5JVd\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\".E6.8E.A5.E5.8F.A3.E5.8E.9F.E5.9E.8B13\",\"type\":\"h4\"},{\"id\":\"NdPiqR_4yMc_solyzyL02\",\"autoWrap\":false,\"children\":[{\"id\":\"2USJ6HeAXVNWrGVm3HeUZ\",\"children\":[{\"text\":\"ITMGPTT int PauseRecording()\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"ZdZFlpGNA3bKva7GcMDHB\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.8110\",\"type\":\"h4\"},{\"id\":\"Dj0tW5zQN02yS8pFmBRum\",\"autoWrap\":false,\"children\":[{\"id\":\"S5orSh4CivpWVTks3EriB\",\"children\":[{\"text\":\"ITMGContext.GetInstance().GetPttCtrl().PauseRecording();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"kxTWf-96ITrOvzwAomA5v\",\"children\":[{\"text\":\"Resuming recording\"}],\"nodeId\":\".E6.81.A2.E5.A4.8D.E5.BD.95.E9.9F.B3\",\"type\":\"h3\"},{\"id\":\"naCAgEhER3GR0d9s2YSi1\",\"children\":[{\"text\":\"This API is used to resume recording.\"}],\"type\":\"p\"},{\"id\":\"Zu8-te39BsN2WP7NPJjNV\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\".E6.8E.A5.E5.8F.A3.E5.8E.9F.E5.9E.8B14\",\"type\":\"h4\"},{\"id\":\"NugHVAl7Qrfhzwain9m_j\",\"autoWrap\":false,\"children\":[{\"id\":\"tBA0dVXCMSUMXPTKLQLsp\",\"children\":[{\"text\":\"ITMGPTT int ResumeRecording()\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"hwbDBSgizwmeNlWLiqPBf\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.8111\",\"type\":\"h4\"},{\"id\":\"pgiPmufCYfux-2vbmmfkT\",\"autoWrap\":false,\"children\":[{\"id\":\"mLy3iRDew7YGLcvrOWuFk\",\"children\":[{\"text\":\"ITMGContext.GetInstance().GetPttCtrl().ResumeRecording();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"S5WQu7azGurL4NhB8KOEm\",\"children\":[{\"text\":\"Canceling recording\"}],\"nodeId\":\".E5.8F.96.E6.B6.88.E5.BD.95.E9.9F.B3\",\"type\":\"h3\"},{\"id\":\"WcrHxlqD-MYm-XmhIQ0gE\",\"children\":[{\"text\":\"This API is used to cancel recording. \"},{\"b\":1,\"text\":\"There is no callback after cancellation\"},{\"text\":\".\"}],\"type\":\"p\"},{\"id\":\"WDVvPmhizgM14fZ1a8-tj\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\".E6.8E.A5.E5.8F.A3.E5.8E.9F.E5.9E.8B15\",\"type\":\"h4\"},{\"id\":\"jIIVxNAf3FQUFX8qIKOuN\",\"autoWrap\":false,\"children\":[{\"id\":\"k11fgfm6Lgg04WhDVyI-K\",\"children\":[{\"text\":\"ITMGPTT int CancelRecording()\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"C5NG8lMq6d9Opokg0yHp-\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.8112\",\"type\":\"h4\"},{\"id\":\"pae2JC_-lns6f1FhMVMXL\",\"autoWrap\":false,\"children\":[{\"id\":\"FjHX-zeaoTDMYdt5lg-yx\",\"children\":[{\"text\":\"ITMGContext.GetInstance().GetPttCtrl().CancelRecording();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"6nwkKG6ihFDgEBgcNiELU\",\"children\":[{\"text\":\"Voice Message Upload, Download, and Playback\"}],\"nodeId\":\".E8.AF.AD.E9.9F.B3.E6.B6.88.E6.81.AF.E4.B8.8A.E4.BC.A0.E3.80.81.E4.B8.8B.E8.BD.BD.E5.8F.8A.E6.92.AD.E6.94.BE\",\"type\":\"h2\"},{\"id\":\"H5Nh0G_6pVYfj5jbfxt_o\",\"children\":[{\"id\":\"CifkWJzRxBi5HSSgtReGH\",\"children\":[{\"id\":\"2g94N4WDw9Nq2yPfhMhfB\",\"children\":[{\"id\":\"kNo_Od7TF9GKvBcnV8lR-\",\"children\":[{\"text\":\"API\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"WwSBR5L5rgEndy9b6483E\",\"children\":[{\"id\":\"5HgwboAnQHO2YdvMDxXv5\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"GZZUZbRwNae1bXy6IVIoT\",\"children\":[{\"id\":\"laeRk1AXE-8Tqx5FzhTWD\",\"children\":[{\"id\":\"QQ9xPeIzInrQjr-bx8QkK\",\"children\":[{\"id\":\"QParSiEL0_UKtX3wFeeP2\",\"children\":[{\"text\":\"UploadRecordedFile\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"_IYStuwehhys5L6-6SbWY\",\"children\":[{\"id\":\"yM6P9tAqrStbHCxBLPDih\",\"children\":[{\"id\":\"y3TnHFlQ5lD9QuMVQrYfR\",\"children\":[{\"text\":\"Uploads an audio file.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"QvcOyQnXxWmXLOT_gIZU3\",\"children\":[{\"id\":\"zR_OQz3bxklMXsoyZ4QMY\",\"children\":[{\"id\":\"dL8dVHmYtGPE8pSrBj3a9\",\"children\":[{\"id\":\"Dnk8-1bPQ5gP6ZhMzcHOz\",\"children\":[{\"text\":\"DownloadRecordedFile\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"rwJWUv4PvJSbi-JArDrdn\",\"children\":[{\"id\":\"xVrHlE9U81PzDEbVZ9WAr\",\"children\":[{\"id\":\"g8Ez1enXG-wUT87-BRBxF\",\"children\":[{\"text\":\"Downloads an audio file.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"iKfJzYaW288EBF4hAUhiO\",\"children\":[{\"id\":\"ak7U5m-4sKMqTFKxaYLVI\",\"children\":[{\"id\":\"qS5KlWn7DDBg1EhgojoXx\",\"children\":[{\"id\":\"yu0You9qNXiN-SgzqEO1_\",\"children\":[{\"text\":\"PlayRecordedFile\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"wXG14Kb1GYAsYGtI49MXu\",\"children\":[{\"id\":\"MfPAhtoB6ARVDU7xxDopY\",\"children\":[{\"id\":\"57Jx9TYpmrrJcqOpFE09j\",\"children\":[{\"text\":\"Plays back an audio file.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"cfWo20qXivHYXP7QXxKEg\",\"children\":[{\"id\":\"PIWCAnJ0sHB1mukEodsKm\",\"children\":[{\"id\":\"2SkaFcS-l3HX5psxMm4fA\",\"children\":[{\"id\":\"qHvGIOmzr5RZRdTA2Z3wZ\",\"children\":[{\"text\":\"StopPlayFile\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Vr-z4k3OCKA0x2CVYduxY\",\"children\":[{\"id\":\"oNNdICkVw1C1J7LR5SDbc\",\"children\":[{\"id\":\"F_hcc4w3ZeE6xj7WEfBul\",\"children\":[{\"text\":\"Stops playing back an audio file.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"200ppmFox1PJIg_AcJ5jw\",\"children\":[{\"id\":\"2mPBO07T-kNhMN1RzrIyj\",\"children\":[{\"id\":\"ZBqSi5cAohIzXp-Kw_BtD\",\"children\":[{\"id\":\"tBQsCbi-h75qMDUDlhvdq\",\"children\":[{\"text\":\"GetFileSize\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"0RRoVmAiPzX4rtxe49Iuj\",\"children\":[{\"id\":\"OsQJwoaSfnXBoo9D-5i6D\",\"children\":[{\"id\":\"eKHogYh1tAPkGXgc1q8jj\",\"children\":[{\"text\":\"Gets the audio file size.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"LDaXwOLyIOhTRrDqdhnTo\",\"children\":[{\"id\":\"nYP0GQUujBT0jI8mBHPx_\",\"children\":[{\"id\":\"U_gBVAEViUX2Ft3RQjMJP\",\"children\":[{\"id\":\"e3meUSD_ihTZoUCg_c9IW\",\"children\":[{\"text\":\"GetVoiceFileDuration\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"8gR_14mr4xplr9I0sbtYt\",\"children\":[{\"id\":\"yDKSdiZJO-vAxK-uOnxhE\",\"children\":[{\"id\":\"XZcUFeYlSb7g81ikzhXHI\",\"children\":[{\"text\":\"Gets the audio file duration.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[43,57],\"widthMode\":\"percentage\"},{\"id\":\"PhmDJZysz_gi1e66AKNfs\",\"children\":[{\"text\":\"Uploading an audio file\"}],\"nodeId\":\".E4.B8.8A.E4.BC.A0.E8.AF.AD.E9.9F.B3.E6.96.87.E4.BB.B6\",\"type\":\"h3\"},{\"id\":\"0jU0-KxprHj4kZCIVp1cq\",\"children\":[{\"text\":\"This API is used to upload an audio file.\"}],\"type\":\"p\"},{\"id\":\"a9k8jcRXqwE2ncHMLIKQp\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\".E6.8E.A5.E5.8F.A3.E5.8E.9F.E5.9E.8B16\",\"type\":\"h4\"},{\"id\":\"VlB14EC52AajTScwOwYS-\",\"autoWrap\":false,\"children\":[{\"id\":\"LfVcBXx6Y9Sug1Kj2JLva\",\"children\":[{\"text\":\"ITMGPTT int UploadRecordedFile (string filePath)\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"r5sVdkuEkeGI1NogH1fkV\",\"children\":[{\"id\":\"IJuNldumBBLs-TgGitSJ1\",\"children\":[{\"id\":\"VrrQ4h5iiyeWtRBG_fomc\",\"children\":[{\"id\":\"h3VBSMwWrK1Z0r63_JQu5\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"dnzsJAPKH0kfGW5f12rvi\",\"children\":[{\"id\":\"rG7RhHUaSUFWc3nozi1nj\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"np-RuRkmI3_v2XKzhvy7K\",\"children\":[{\"id\":\"TNtlyU0uvdFxj8EOx6jvw\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"KfXAINzItRuG8wNSphFPW\",\"children\":[{\"id\":\"K3lBwglN9BNRAvXCmRYie\",\"children\":[{\"id\":\"9GSEqM8EW0u35lJ66DtbD\",\"children\":[{\"id\":\"PBFb5OJhVVm9UdG2gypSt\",\"children\":[{\"text\":\"filePath\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"bpdsxDVWQPol8MvNRh8wO\",\"children\":[{\"id\":\"flRBBgbxP8UgYxxmwOl6V\",\"children\":[{\"id\":\"aJY3oXhWOPFnoT1XI5OAS\",\"children\":[{\"text\":\"String\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"rQbgLvrP_e-dA8LLi8iNq\",\"children\":[{\"id\":\"SSDHQMMCkF9xEDwiuCLv0\",\"children\":[{\"id\":\"oQ5CUy_Jxy7aL1cI7VHvT\",\"children\":[{\"text\":\"Path of the uploaded audio file, which is a local path.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[18,13,69],\"widthMode\":\"percentage\"},{\"id\":\"Dy17ZxXFT3tGd84HOiv4H\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.8113\",\"type\":\"h4\"},{\"id\":\"GDBlq_THA8UnzRShz3Stz\",\"autoWrap\":false,\"children\":[{\"id\":\"MVFwP0HqbvBcZoNtxCdsI\",\"children\":[{\"text\":\"ITMGContext.GetInstance().GetPttCtrl().UploadRecordedFile(filePath);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"koAKdhTnBTjoO5EzMXQhe\",\"children\":[{\"text\":\"Callback for audio file upload completion\"}],\"nodeId\":\".E4.B8.8A.E4.BC.A0.E8.AF.AD.E9.9F.B3.E5.AE.8C.E6.88.90.E7.9A.84.E5.9B.9E.E8.B0.83\",\"type\":\"h3\"},{\"id\":\"iBI-_Lf3JzYInYpgvJvrH\",\"children\":[{\"text\":\"A callback will be executed through a delegate function to pass a message when the upload of audio file is completed.\"}],\"type\":\"p\"},{\"id\":\"f5E0HIuud6nskZlupgGwh\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\".E6.8E.A5.E5.8F.A3.E5.8E.9F.E5.9E.8B17\",\"type\":\"h4\"},{\"id\":\"P8LlVhi9BbdyZzjuXeThC\",\"autoWrap\":false,\"children\":[{\"id\":\"OZxsuF4p4qpnL-tpWtnc2\",\"children\":[{\"text\":\"public delegate void QAVUploadFileCompleteCallback(int code, string filepath, string fileid);\"}],\"type\":\"code-line\"},{\"id\":\"Of_zPeOXgHKO-YVc5L__K\",\"children\":[{\"text\":\"public abstract event QAVUploadFileCompleteCallback OnUploadFileComplete; \"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"t6BVYVTugbBOtjSLda-oh\",\"children\":[{\"id\":\"GZb6ea1LxIeQ2l7QfLKFk\",\"children\":[{\"id\":\"moTp1NDPXNb7-lU9lBsXo\",\"children\":[{\"id\":\"3uQpVCX6JBVH9h_Y1MrZU\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"N9Bct46Y5ZLxpQNt7wazb\",\"children\":[{\"id\":\"kDSVDiAEYImnY6UpkQs8p\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"5FlvfXo1ACMWDb4JreIYG\",\"children\":[{\"id\":\"NMSNaSOLCRWqzwIhpV4uN\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"wt2ZlsjRVki8M7icSRO8A\",\"children\":[{\"id\":\"mbFtCAl95Pn9fzw2q9s2Y\",\"children\":[{\"id\":\"nrZPz0ENKCdgpxsvNreQM\",\"children\":[{\"id\":\"7bJXc7VLALCvs9ZyHE-CG\",\"children\":[{\"text\":\"code\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"j0FZrleZLZVoRFpbEvZvn\",\"children\":[{\"id\":\"5k0zQeAlymcOJCejgRyfG\",\"children\":[{\"id\":\"cM0ECBABnRTgOL2nNNaKC\",\"children\":[{\"text\":\"int\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"WLkGIhfefQsReLz2Nbl6T\",\"children\":[{\"id\":\"DXjNON_ZT_H2TY3cKRdr8\",\"children\":[{\"id\":\"fDJ2Nx5a9lMBb2pJCAH5I\",\"children\":[{\"code\":1,\"text\":\"0\"},{\"text\":\": Recording is completed.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"71rC75Fsu3xsyQ766XEHg\",\"children\":[{\"id\":\"qNyw8HSynMYZRt6IE-_0j\",\"children\":[{\"id\":\"M62zuayxSe6S1xE1KdRjB\",\"children\":[{\"id\":\"yVFHqON0sXCiU3Ivn2PGT\",\"children\":[{\"text\":\"filepath\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"RzgPr5SKVUIcRrozPfisF\",\"children\":[{\"id\":\"Ff2nj6vww3N4jU2B28Md1\",\"children\":[{\"id\":\"X1XSgXMeLY6hTnHQ4u8D6\",\"children\":[{\"text\":\"string\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"uxshT8NiYfxiG8_4IFUVM\",\"children\":[{\"id\":\"48DNWalfs2uY4PvxJw1EC\",\"children\":[{\"id\":\"_dYg0e4bFqHhpp3-4617i\",\"children\":[{\"text\":\"Path of the stored recording file\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"JwuaOonVlv7ZpD5pQa1db\",\"children\":[{\"id\":\"HXX4dsetCYDFsEpMSXrIi\",\"children\":[{\"id\":\"ud1tX5ibsyFr_KQJUII14\",\"children\":[{\"id\":\"36UArnNGhveT-N3vHOB2b\",\"children\":[{\"text\":\"fileid\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"U7tUsaG0_QMdCMbQAUBtQ\",\"children\":[{\"id\":\"BhJ-wYJrfwJJ0Ec2OfLSL\",\"children\":[{\"id\":\"Jr059VqLZ1QrZTisPlL4L\",\"children\":[{\"text\":\"string\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"vh_a3BFDU_E_T5ksX6UIV\",\"children\":[{\"id\":\"5j4ykCysjcJRb7SaXK5Oy\",\"children\":[{\"id\":\"8dnMiDhCsi9rT9923NiGT\",\"children\":[{\"text\":\"File URL\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[24,17,59],\"widthMode\":\"percentage\"},{\"id\":\"kKQCk111iPvkklzshNTMu\",\"children\":[{\"text\":\"Error codes\"}],\"nodeId\":\".E9.94.99.E8.AF.AF.E7.A0.813\",\"type\":\"h4\"},{\"id\":\"LrmaK3MEHDtA4xA0wr5sx\",\"children\":[{\"id\":\"CnXMTRE28tMONalPOihvV\",\"children\":[{\"id\":\"MZjo3uFwgJ3mucr0dl7-t\",\"children\":[{\"id\":\"LyncALGZYdfQ2Pw-nLusx\",\"children\":[{\"text\":\"Error Code\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"pJzufHLL4KTucZk5PLRr_\",\"children\":[{\"id\":\"wLKefrmMUtL1U3QbWcbhk\",\"children\":[{\"text\":\"Cause\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"susNjSjvodugGkmXvJv-f\",\"children\":[{\"id\":\"BPTXYghduYXdIbEeWzlGY\",\"children\":[{\"text\":\"Suggestion\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"MbrAoJObMZhGYgJQoaUXa\",\"children\":[{\"id\":\"tDJf3NWYQ3c4-_cGPKs1S\",\"children\":[{\"id\":\"EldZB71Rd11MDm7U4xfkq\",\"children\":[{\"id\":\"RjTGJwhPAbyZZuFsxSNAx\",\"children\":[{\"text\":\"8193\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"9ToKnjw7Su-9M7Xrd8A48\",\"children\":[{\"id\":\"CAvhpQrdlGK8rTbfxZRy9\",\"children\":[{\"id\":\"S6S0gHBpAf__tXRgRn3Ix\",\"children\":[{\"text\":\"An error occurred while accessing the file during upload.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"jbY5_bRcwRW5VTi3qJsUp\",\"children\":[{\"id\":\"vW7MlaIkHlgpHN4cgZ2os\",\"children\":[{\"id\":\"iUaqlD1oZrLvAnfu-P_XK\",\"children\":[{\"text\":\"Ensure the existence of the file and the validity of the file path.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"k_xsLoxQimw4FwWaEWVuD\",\"children\":[{\"id\":\"sgQ2uEuJXA4wG6Bk7vF1R\",\"children\":[{\"id\":\"mblIyZTS4mGz-cBVSGkmf\",\"children\":[{\"id\":\"HqFTVswkpqP6Q4jpUOJ9t\",\"children\":[{\"text\":\"8194\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"iW1yBx7Q8VEOPNcVLe_lu\",\"children\":[{\"id\":\"hdSY8it_fWDoUCKiOjLW1\",\"children\":[{\"id\":\"k7EHv2VwdR8wuq_WFxv1K\",\"children\":[{\"text\":\"Signature verification failed.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"W6yscvMb_0LBanhjV_zHa\",\"children\":[{\"id\":\"Tq4gEow0jnTSDk4z7WlFZ\",\"children\":[{\"id\":\"mzKhLD3N_eoMTYZsofQ5J\",\"children\":[{\"text\":\"Check whether the authentication key is correct and whether the voice messaging and speech-to-text feature is initialized.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"2slaYZ-ZfLlNXD9dSiNJd\",\"children\":[{\"id\":\"0r_HD_q6xUdAomhbhZDPK\",\"children\":[{\"id\":\"9S_c_943YERtS2f0_Z2xD\",\"children\":[{\"id\":\"cK-6_QqbB55s2XJh4wbf4\",\"children\":[{\"text\":\"8195\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"-i5jUXeQBvEYt-_3YRNcP\",\"children\":[{\"id\":\"sspHqZYe_WZC6ezos94kF\",\"children\":[{\"id\":\"ATA86uKNDKFIBU9MjG-69\",\"children\":[{\"text\":\"Network error.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"3K08IikIsG9x09dm1V07S\",\"children\":[{\"id\":\"0bB7BycWh82oG0xDs5oES\",\"children\":[{\"id\":\"rKG-kK0E0X8tz038wSqK8\",\"children\":[{\"text\":\"Check whether the device can access the internet.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"LxXaLphW1hfdysb6HzA3g\",\"children\":[{\"id\":\"ShMnNF8thnU3GMGWLlJqK\",\"children\":[{\"id\":\"BtXuoB29QnCfyPuqAVPRU\",\"children\":[{\"id\":\"MpEpWLpaC2vs7fLh41cEv\",\"children\":[{\"text\":\"8196\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"WG14qnHnls-Q_li_Q407Y\",\"children\":[{\"id\":\"iwZxfKm1PKEGFXjrjo0ZB\",\"children\":[{\"id\":\"IBszHDPIxn2DxsnkmG4Jj\",\"children\":[{\"text\":\"The network failed while getting the upload parameters.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ZA2GLwYF-GeuO9l01rUjj\",\"children\":[{\"id\":\"tHAvD3CzSW0GWYJPUvkNO\",\"children\":[{\"id\":\"EAmLfwwocWplyuojqDJG6\",\"children\":[{\"text\":\"Check whether the authentication is correct and whether the device network can normally access the internet.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"H7_FpmWRY06bKKpmKk84H\",\"children\":[{\"id\":\"-W974cIdMnN16cuK1XRBk\",\"children\":[{\"id\":\"LZBl3X01ibeWxAWZdw2bg\",\"children\":[{\"id\":\"YY4NLFKRoS8VGSAUpwuk0\",\"children\":[{\"text\":\"8197\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"wlZhPKjHZHKJzwigc4li4\",\"children\":[{\"id\":\"6BGf6vrzOVR0NisN7NCKO\",\"children\":[{\"id\":\"9Hjq_rldWcpAc-tUbYUhr\",\"children\":[{\"text\":\"The packet returned during the process of getting the upload parameters is empty.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"XNWek7bzrANBY_biqULzp\",\"children\":[{\"id\":\"S_CKz2MDsO1UEQS1tUFlB\",\"children\":[{\"id\":\"Cvb-_9PqThhfZcg8mNOUW\",\"children\":[{\"text\":\"Check whether the authentication is correct and whether the device network can normally access the internet.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"6bYkeBLjfeLK6NeFFiQpP\",\"children\":[{\"id\":\"xQhj8Cm5hkY9hAnu1_OTe\",\"children\":[{\"id\":\"hcLcKn7Y97Uwc24fV2ZiK\",\"children\":[{\"id\":\"ipikczGiGyV5AXVPg_MUB\",\"children\":[{\"text\":\"8198\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Ivze5cJgHrbPkIIka08ML\",\"children\":[{\"id\":\"j5Uk-xLnrRX3s6X89x5FP\",\"children\":[{\"id\":\"78Fy7WMtMgY4Tv3Px5f0z\",\"children\":[{\"text\":\"Failed to decode the packet returned during the process of getting the upload parameters.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"7IvB4pbKafcAVs2juI94d\",\"children\":[{\"id\":\"_hOEYd8dQrYm_FURzC9Hv\",\"children\":[{\"id\":\"CUpFgDVFfSH-kcL32Opud\",\"children\":[{\"text\":\"Check whether the authentication is correct and whether the device network can normally access the internet.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"cCOvjAjJlJqzjcx6wsLcI\",\"children\":[{\"id\":\"obMcCah86RmdKhO3A93X8\",\"children\":[{\"id\":\"hbbvmvUhAnQ7wgjBaZUpu\",\"children\":[{\"id\":\"cUsZ06InO8b_jU5vEMjyg\",\"children\":[{\"text\":\"8200\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Q4VX_XPKx8tzh5y_-HhPY\",\"children\":[{\"id\":\"4OyaPtNRstlcLdcRGrY77\",\"children\":[{\"id\":\"a0xgWfR_sRnahYJE-dVqn\",\"children\":[{\"code\":1,\"text\":\"appinfo\"},{\"text\":\" is not set.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"fUTJowYzk_AuWeLBQt9e-\",\"children\":[{\"id\":\"0fKXPpsufuHBHLerr4WBr\",\"children\":[{\"id\":\"VnoNlOWtLzbea33tVBDVw\",\"children\":[{\"text\":\"Check whether the \"},{\"code\":1,\"text\":\"apply\"},{\"text\":\" API is called or whether the input parameter is not specified or null.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[13,36,51],\"widthMode\":\"percentage\"},{\"id\":\"e-vDSD1mbWta4HB6jR1FD\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.8114\",\"type\":\"h4\"},{\"id\":\"zWDpcoTTkdNLtFtZfzaj4\",\"autoWrap\":false,\"children\":[{\"id\":\"k_eSu56dqTbD0Ni1xyi_0\",\"children\":[{\"text\":\"// Listen on an event\"}],\"type\":\"code-line\"},{\"id\":\"8Pvt_vbQvqWApe651y3gP\",\"children\":[{\"text\":\"ITMGContext.GetInstance().GetPttCtrl().OnUploadFileComplete +=new QAVUploadFileCompleteCallback (OnUploadFileComplete);\"}],\"type\":\"code-line\"},{\"id\":\"eL6c-IBNQ9zZuIPhLQjjY\",\"children\":[{\"text\":\"// Process the event listened on\"}],\"type\":\"code-line\"},{\"id\":\"Zk_F_ORoCcJGjW6VZdGzv\",\"children\":[{\"text\":\"void OnUploadFileComplete(int code, string filepath, string fileid){\"}],\"type\":\"code-line\"},{\"id\":\"hzVLzWOY2evRaHh1BmF6r\",\"children\":[{\"text\":\" // Callback for audio file upload completion\"}],\"type\":\"code-line\"},{\"id\":\"lA8hg8LPwWyiU02sSASqm\",\"children\":[{\"text\":\"}\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"P0mmXhrBIdcvwW9Opb_mk\",\"children\":[{\"text\":\"Downloading the audio file\"}],\"nodeId\":\".E4.B8.8B.E8.BD.BD.E8.AF.AD.E9.9F.B3.E6.96.87.E4.BB.B6\",\"type\":\"h3\"},{\"id\":\"rd771ZydsfEcp6RhAvVRB\",\"children\":[{\"text\":\"This API is used to download an audio file.\"}],\"type\":\"p\"},{\"id\":\"KD8XSd_7Uhm55DJuU1YQW\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\".E6.8E.A5.E5.8F.A3.E5.8E.9F.E5.9E.8B18\",\"type\":\"h4\"},{\"id\":\"_akfQpfNRNwG3gwkMtJqH\",\"autoWrap\":false,\"children\":[{\"id\":\"W1m0d7FZdFoMkYzFiDX3i\",\"children\":[{\"text\":\"ITMGPTT DownloadRecordedFile (string fileID, string downloadFilePath)\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"bo7WdXfZY-w_8bubqbaP-\",\"children\":[{\"id\":\"lhtxSKFCYqnQWJdC26vIZ\",\"children\":[{\"id\":\"EL6NyHFhrYokNcMhqeLV9\",\"children\":[{\"id\":\"oC5vdf5n9xrjEb_-NAY02\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"PKy2jhl5Nl8QT2wCqgAEu\",\"children\":[{\"id\":\"BE1AQKT8q4ZkUJn7I0eNu\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"r16BfmMz7pTPF0ChaCZTU\",\"children\":[{\"id\":\"4_Cn71Q-bHm_rh-v3kGLJ\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"WOFFA6QRHwfhFC4J6q5ky\",\"children\":[{\"id\":\"RDAzJqPuqmMQRWyJHc2rA\",\"children\":[{\"id\":\"ZmRv7nOjI9iLEpl0Rqhpg\",\"children\":[{\"id\":\"BsRVM0bkHrHCuTCrdHyQb\",\"children\":[{\"text\":\"fileID\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"29uBm-8hzlxi5W9kzMpZa\",\"children\":[{\"id\":\"v2TciM09YKiYDEXBG5vGz\",\"children\":[{\"id\":\"CGATxtXf0ARHq1FSRJJl8\",\"children\":[{\"text\":\"String\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"MlBwLI7PnN3fUzgzMKEFp\",\"children\":[{\"id\":\"CiHl980B_puiBXAsIgVCT\",\"children\":[{\"id\":\"YJcNFecRtVzn-ajUGsyn7\",\"children\":[{\"text\":\"File URL\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"BawJJ3-h4e6A44gwLdJn9\",\"children\":[{\"id\":\"DIKjEIxlu7FeqGdh9RtWr\",\"children\":[{\"id\":\"HT857b1fo9K-sn9l83Ebq\",\"children\":[{\"id\":\"Nx6UVYkkoTdIcK_236OV6\",\"children\":[{\"text\":\"downloadFilePath\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"5UIUIK7ZW3ifQa5NKMyB6\",\"children\":[{\"id\":\"iZVagB42V6d5XLBgS4lmJ\",\"children\":[{\"id\":\"bUQBfTTJzPMT98wQHgfDp\",\"children\":[{\"text\":\"String\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"4-2SaBEPBeridFy5hkVFo\",\"children\":[{\"id\":\"Z9fnNfrImfVBBhdakNlay\",\"children\":[{\"id\":\"mJHYwyNhHrFSCgIyqyBBq\",\"children\":[{\"text\":\"Local path of the saved file, which must be accessible and cannot be the \"},{\"code\":1,\"text\":\"fileid\"},{\"text\":\".\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[18,9,73],\"widthMode\":\"percentage\"},{\"id\":\"u4pqOTJzP934g7u3PjmJ0\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.8115\",\"type\":\"h4\"},{\"id\":\"VvWP-BXYBI9XjIrAjjF1_\",\"autoWrap\":false,\"children\":[{\"id\":\"eRS_RReFxU6FFOT5Plq8h\",\"children\":[{\"text\":\"ITMGContext.GetInstance().GetPttCtrl().DownloadRecordedFile(fileId, filePath);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"kw9z8SOr4XEHGpL7SFoyB\",\"children\":[{\"text\":\"Callback for audio file download completion\"}],\"nodeId\":\".E4.B8.8B.E8.BD.BD.E8.AF.AD.E9.9F.B3.E6.96.87.E4.BB.B6.E5.AE.8C.E6.88.90.E5.9B.9E.E8.B0.83\",\"type\":\"h3\"},{\"id\":\"Vz4A_BcWeeI1_PiS65V-S\",\"children\":[{\"text\":\"A callback will be executed through a delegate function to pass a message when the download of audio file is completed.\"}],\"type\":\"p\"},{\"id\":\"E_m_8L7w6IP1v356gDFtB\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\".E6.8E.A5.E5.8F.A3.E5.8E.9F.E5.9E.8B19\",\"type\":\"h4\"},{\"id\":\"K-2qkQQd6TGRLbVc41U0f\",\"autoWrap\":false,\"children\":[{\"id\":\"gYl3Z3lrpVxMW3aYKZtMi\",\"children\":[{\"text\":\"public delegate void QAVDownloadFileCompleteCallback(int code, string filepath, string fileid);\"}],\"type\":\"code-line\"},{\"id\":\"_WRI73nr1hf7-fdaQ8NpV\",\"children\":[{\"text\":\"public abstract event QAVDownloadFileCompleteCallback OnDownloadFileComplete;\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"sMsNE6l3BKg7o0HYEYKjB\",\"children\":[{\"id\":\"MVOjqoURm0r6lCaouft4e\",\"children\":[{\"id\":\"EUWC1oK2yxTgJ7dgdbptl\",\"children\":[{\"id\":\"m6oEZ1RLP5SLD2cEaow0W\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"65_faEYsy5ym_KDushjcl\",\"children\":[{\"id\":\"owehhJQDHF4isU1SL9gmN\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"S-zSdLmTXg-_J7mn6UohK\",\"children\":[{\"id\":\"PNQ2EDPr437cskqemz04g\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"pPeje99Fv9brdLILaJnp9\",\"children\":[{\"id\":\"qKE-80-Phjt5YOAwAIfQU\",\"children\":[{\"id\":\"veFT_8qNWUBOHAMszYeJC\",\"children\":[{\"id\":\"yQI9jVYKq8t-jAydSZNsj\",\"children\":[{\"text\":\"code\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"TVUHmxAzsONr18pIZW9sF\",\"children\":[{\"id\":\"OhI3x9wjyGMiBxDYdBGBl\",\"children\":[{\"id\":\"B-szmgJTTQAtQu4Zoxh2C\",\"children\":[{\"text\":\"int\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"DhALBsATiQV9yBDHZi9Va\",\"children\":[{\"id\":\"C_aITVrW0YRPbj23zh-TK\",\"children\":[{\"id\":\"gjg5F6kpGkzflNHowdWHK\",\"children\":[{\"code\":1,\"text\":\"0\"},{\"text\":\": Recording is completed.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"i8iaLhWPHet8WCvEwT3To\",\"children\":[{\"id\":\"LNYb1VG7XSiBwYRUwUg6M\",\"children\":[{\"id\":\"9q8LkbR5qAVP7JDWuBqLF\",\"children\":[{\"id\":\"kF8VH_rXMYTKPQr0SfmDi\",\"children\":[{\"text\":\"filepath\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ECtmfvtydeFKm1Z81U2p-\",\"children\":[{\"id\":\"tx5s_Q01x_AxWCZ6kj1eb\",\"children\":[{\"id\":\"GnjtCTYpFKa8yxIS-lsT1\",\"children\":[{\"text\":\"string\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"TeeZBjnJ2-pdGu8HZ_FDA\",\"children\":[{\"id\":\"dOqNgcHwQ0RgDwDykDxEs\",\"children\":[{\"id\":\"LeTMuWnsqATB6J6EJPGyN\",\"children\":[{\"text\":\"Path of the stored recording file\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"6_7fj9wM37AH79aIdo10P\",\"children\":[{\"id\":\"IIQEgzgxLE5x_1_n6Aqb3\",\"children\":[{\"id\":\"txGp85BrTzvKAv6C69Myr\",\"children\":[{\"id\":\"X_tz_MbIlzEjmIA-xrXpg\",\"children\":[{\"text\":\"fileid\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"2xHfbjUPQd-v-gHnXoy9K\",\"children\":[{\"id\":\"oIoZL69h9hC5_nxfA39nV\",\"children\":[{\"id\":\"Lhb9a5fsLixsqQ3E4u7s_\",\"children\":[{\"text\":\"string\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"KPoQhDqHDfwo7rjXLKLBL\",\"children\":[{\"id\":\"hJmjsjQOEHW3ZdxnLOH9C\",\"children\":[{\"id\":\"TnDe_N29WYr5uOgjpXcrn\",\"children\":[{\"text\":\"URL of the recording file, which will be retained on the server for 90 days.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[15,10,75],\"widthMode\":\"percentage\"},{\"id\":\"VmaGiIIPf6OnUMkoHWc87\",\"children\":[{\"text\":\"Error codes\"}],\"nodeId\":\".E9.94.99.E8.AF.AF.E7.A0.814\",\"type\":\"h4\"},{\"id\":\"3--ZIaq5OVDKii90RRASu\",\"children\":[{\"id\":\"-HrO5g1ut6KmqXmF8BXH-\",\"children\":[{\"id\":\"flp-qxvaj1Pj2cbAXUFlh\",\"children\":[{\"id\":\"-PHTt_BwDzZP8tCeGCMJH\",\"children\":[{\"text\":\"Error Code\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"HWVJACkHVJvNm4M2OG4qx\",\"children\":[{\"id\":\"RE837a1KEgxxs5SbY4yPe\",\"children\":[{\"text\":\"Cause\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"jDxdJLJGVQI2AT_eZhmPr\",\"children\":[{\"id\":\"NASCwncv7FQyXeUCdBF-X\",\"children\":[{\"text\":\"Suggestion\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"LGU4fgwEUbgcTG8GAlovE\",\"children\":[{\"id\":\"pfgpXLL_dJr8HNgEiNO_u\",\"children\":[{\"id\":\"8PZ4BKnczX1CmuI8Qe4Hi\",\"children\":[{\"id\":\"l7m-Hf917mpUIJIBGEa0j\",\"children\":[{\"text\":\"12289\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"hzxPWqbqRRMvzXa4A5xsh\",\"children\":[{\"id\":\"MJF54If4S2wp7rtlKyF0p\",\"children\":[{\"id\":\"czudYjhfB5msC3Fl-8Cp_\",\"children\":[{\"text\":\"An error occurred while accessing the file during download.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"HJxkdqO1Kv9mJa7dMJqXK\",\"children\":[{\"id\":\"BPJOQlV30X2ehtl2v7FYQ\",\"children\":[{\"id\":\"731ZBOS_t0KN-_PoiKpvq\",\"children\":[{\"text\":\"Check whether the file path is valid.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"0LOkVDKvTMbZXd1fkuoTh\",\"children\":[{\"id\":\"eK9RvSVyF2ZL8LebADoiF\",\"children\":[{\"id\":\"EBA995Y79tys79EoAtXCz\",\"children\":[{\"id\":\"bo0ZTu1o_DeWfWzTMBiC1\",\"children\":[{\"text\":\"12290\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"h0Euq2FSPNwEo1KcN3U6E\",\"children\":[{\"id\":\"BdUSlcVuN2mNiCe2eahKm\",\"children\":[{\"id\":\"-TpM5PUTJsWEJgccUjRJN\",\"children\":[{\"text\":\"Signature verification failed.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"X6EOq59sr2NW-lPeAy5VR\",\"children\":[{\"id\":\"kBVjRPIp3Vl8K41jC27Tl\",\"children\":[{\"id\":\"udFpdyAawkW0aDG3wIVY5\",\"children\":[{\"text\":\"Check whether the authentication key is correct and whether the voice messaging and speech-to-text feature is initialized.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"E2LdGZpTcczaT9UhtQz08\",\"children\":[{\"id\":\"lYIHaQXxqgAp0ERnts4FX\",\"children\":[{\"id\":\"AoN5VkrfefyODl0Ajd47o\",\"children\":[{\"id\":\"ZXyK8qEx9UMwp55MqLlnU\",\"children\":[{\"text\":\"12291\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"OTnYH399oXE3EabUBG2BU\",\"children\":[{\"id\":\"LAQANPWngN-TvAOc5pPJa\",\"children\":[{\"id\":\"i-P7tpuukSshbP2C4zO-n\",\"children\":[{\"text\":\"A network storage system exception occurred.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"xiKZ9a304gKR0OrckgxOd\",\"children\":[{\"id\":\"AtDj2J3e6tbfGL8rPhTLl\",\"children\":[{\"id\":\"xRBkPgn9RLPY_kLwlg7-H\",\"children\":[{\"text\":\"The server failed to get the audio file. Check whether the API parameter \"},{\"code\":1,\"text\":\"fileid\"},{\"text\":\" is correct, whether the network is normal, and whether the file exists in COS.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"_WmYj0_G6xq8r_t1QGk_j\",\"children\":[{\"id\":\"IWFWFL2DQ8qOCLFfJRFAr\",\"children\":[{\"id\":\"pkqjSh8-w3n_ZqK51bx6f\",\"children\":[{\"id\":\"pU7LwrUaTHyjhMtqokAyo\",\"children\":[{\"text\":\"12292\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"UDAbVA9TW-di5JYLXSQt7\",\"children\":[{\"id\":\"YeHyHDMiF62Aujpr9fra5\",\"children\":[{\"id\":\"WXkrR4Q4Qor8PHojxqJuL\",\"children\":[{\"text\":\"A server file system error occurred.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"HvNtqDol1M3wxADIQ5djK\",\"children\":[{\"id\":\"mUmctEmgugi_pLeUFzp-c\",\"children\":[{\"id\":\"6FjhZSoqxDvwDCOX3bJgV\",\"children\":[{\"text\":\"Check whether the device can access the internet and whether the file exists on the server.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"czW7NTBqCYFB-W6DQwtWx\",\"children\":[{\"id\":\"xNzoOsYTJCleYOk7InsMT\",\"children\":[{\"id\":\"GnwMf4Bu1bbvCM6FiXQmr\",\"children\":[{\"id\":\"rWjAtb0Pg5HsIagcs7xgL\",\"children\":[{\"text\":\"12293\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"iaMidhQtjCQWKDJ32ZpoM\",\"children\":[{\"id\":\"Njrr0hSp9hrbjiNLJ-BiC\",\"children\":[{\"id\":\"Alt35m0b4hk0gl8WnD0PD\",\"children\":[{\"text\":\"The HTTP network failed while getting the download parameters.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"mplcaIZ7rRGYRXcUdIXZ0\",\"children\":[{\"id\":\"0xZDYG3k2zhJYfNPt4TKh\",\"children\":[{\"id\":\"y5GgXo6JXgY4PIjKppFx5\",\"children\":[{\"text\":\"Check whether the device can access the internet.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"mfsJHaeik9T0ZHpyjo-Ww\",\"children\":[{\"id\":\"yaMQuY6hfvzYrO2g4UxFg\",\"children\":[{\"id\":\"Y6bbtxGIq1DeHc6rrozef\",\"children\":[{\"id\":\"jd3Cds7XCviFYlhi2Uq9e\",\"children\":[{\"text\":\"12294\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"I58e0Sxc1tBa5qeJhsc2F\",\"children\":[{\"id\":\"y8UW7S15hu-9AkgrMuywq\",\"children\":[{\"id\":\"vPW04fWAGSFLzwG05o3Pi\",\"children\":[{\"text\":\"The packet returned during the process of getting the download parameters is empty.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"iJu9zqUgCGfWK54X-wvCh\",\"children\":[{\"id\":\"DJ8w9JG66zpfvazadWVk0\",\"children\":[{\"id\":\"B1FKFnJZoeJokf6QbOTGX\",\"children\":[{\"text\":\"Check whether the device can access the internet.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"FkTKj_tktMSJWHK9ej2CO\",\"children\":[{\"id\":\"DTQyXWrAgsTnhRK74AzwK\",\"children\":[{\"id\":\"Up83xKfvoagTr5qLgHJ-F\",\"children\":[{\"id\":\"BjUtTMzKpC_qTCWUlaTAk\",\"children\":[{\"text\":\"12295\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ry1TqC4v3g0opY1GrC5aW\",\"children\":[{\"id\":\"76qtREy2bIV2TrayrAZFU\",\"children\":[{\"id\":\"S4QE9h8uqyR3nyCIRXE-q\",\"children\":[{\"text\":\"Failed to decode the packet returned during the process of getting the download parameters.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"lMy7JpSGw5mG7xzcFAKM7\",\"children\":[{\"id\":\"-i-ecw_Y6y2iCW7MeEkxQ\",\"children\":[{\"id\":\"Jk7KAP2fh-SLI3Vjgk5j9\",\"children\":[{\"text\":\"Check whether the device can access the internet.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"XWmPMxiTVkhcy5ZD9nmla\",\"children\":[{\"id\":\"e_bObY6jXvXxUMQSx1KlD\",\"children\":[{\"id\":\"vZ1HdtmaPpskXC9JjVD9k\",\"children\":[{\"id\":\"YEy1WL42ONTe891uhOXfr\",\"children\":[{\"text\":\"12297\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"5Ax7dC_E4Mj17Vu1Jchhf\",\"children\":[{\"id\":\"eQlLMU01pFU_1zdRH93Z6\",\"children\":[{\"id\":\"FGL1D_2tzl8BgjIZh_cUB\",\"children\":[{\"code\":1,\"text\":\"appinfo\"},{\"text\":\" is not set.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"A7oqaT7Lc9Qat0jm1SgJk\",\"children\":[{\"id\":\"5-H7nHF-lRh3zbnt_08ll\",\"children\":[{\"id\":\"yt3QpYj5X5EVFnn-3p9T0\",\"children\":[{\"text\":\"Check whether the authentication key is correct and whether the voice messaging and speech-to-text feature is initialized.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[15,47,38],\"widthMode\":\"percentage\"},{\"id\":\"tDs--JCuH1GqVbrR-xdn6\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.8116\",\"type\":\"h4\"},{\"id\":\"OBt7r1e0b6ILBFM3bVDHW\",\"autoWrap\":false,\"children\":[{\"id\":\"R8_3f6cX1fXJiLKgVQhFC\",\"children\":[{\"text\":\"// Listen on an event\"}],\"type\":\"code-line\"},{\"id\":\"j4Trzer8uuDFhzynVFEt2\",\"children\":[{\"text\":\"ITMGContext.GetInstance().GetPttCtrl().OnDownloadFileComplete +=new QAVDownloadFileCompleteCallback(OnDownloadFileComplete);\"}],\"type\":\"code-line\"},{\"id\":\"uFUg-90oPeV7KBAc0N0qq\",\"children\":[{\"text\":\"// Process the event listened on\"}],\"type\":\"code-line\"},{\"id\":\"U68ZDqP2yU6rx3WoPu8r1\",\"children\":[{\"text\":\"void OnDownloadFileComplete(int code, string filepath, string fileid){\"}],\"type\":\"code-line\"},{\"id\":\"GYrsp8e0VlNML8KVtbVXO\",\"children\":[{\"text\":\" // Callback for audio file download completion\"}],\"type\":\"code-line\"},{\"id\":\"mhcS7gQwtMmi2foolCFuf\",\"children\":[{\"text\":\"}\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"mQZkdwyHXlHg3gbbejbB0\",\"children\":[{\"text\":\"Playing back audio\"}],\"nodeId\":\".E6.92.AD.E6.94.BE.E8.AF.AD.E9.9F.B3\",\"type\":\"h3\"},{\"id\":\"3aH0vBJ_cHlIzCwLCnM8k\",\"children\":[{\"text\":\"This API is used to play back audio.\"}],\"type\":\"p\"},{\"id\":\"dsLoSynCdgkK-RUAvtfJg\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\".E6.8E.A5.E5.8F.A3.E5.8E.9F.E5.9E.8B20\",\"type\":\"h4\"},{\"id\":\"1dGcGzb66asa_StiKluFL\",\"autoWrap\":false,\"children\":[{\"id\":\"gg2Y7oqnAr5WfTK737erE\",\"children\":[{\"text\":\"ITMGPTT PlayRecordedFile(string filePath)\"}],\"type\":\"code-line\"},{\"id\":\"1HWGu3sW9grpt3QWxIpZP\",\"children\":[{\"text\":\"ITMGPTT PlayRecordedFile(string filePath,int voiceType);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"HHw-MwC1HQW8QRhMvIazG\",\"children\":[{\"id\":\"n4SK7SqQNxTwg_7xM6cSu\",\"children\":[{\"id\":\"5NyuteJ-_rGKskMKHpqon\",\"children\":[{\"id\":\"ugWfr_nd4xtlkF5hcIH5O\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"PBnL9xbhORWC5F66ehAnS\",\"children\":[{\"id\":\"2LYQ6T9CXDZhNMZWo49wh\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"CeZvB_CnvhrPxQGOE1Y2P\",\"children\":[{\"id\":\"WxmVhuZsjoUs_noe8Au-D\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"XSF-A_beesRgdiu8Edk4W\",\"children\":[{\"id\":\"AHl2m7BIJRWJt338lSXV8\",\"children\":[{\"id\":\"O62WivrlElxUadr_Z3EhQ\",\"children\":[{\"id\":\"Me9WYHCLQqB1oQ6pZDyYf\",\"children\":[{\"text\":\"filePath\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"GUCcvGW9sSOOZ5GY324YG\",\"children\":[{\"id\":\"nEs71A7Sw3StHWUUdftGC\",\"children\":[{\"id\":\"5Tv1tI_-vRr3ShXxlAVW4\",\"children\":[{\"text\":\"string\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Z7qVZAl2qRn43h74eNsfF\",\"children\":[{\"id\":\"rBPrNzfTohNp1frv0tu73\",\"children\":[{\"id\":\"zu5rj4D5V2WupIU2Bmz5L\",\"children\":[{\"text\":\"Local audio file path\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"ImcO0HDfZQ-VFP_XEmSdP\",\"children\":[{\"id\":\"UW5akMRNrBYMImAZsB76o\",\"children\":[{\"id\":\"G5YBDxW4Q3sJbuMhWDUPh\",\"children\":[{\"id\":\"VbHGWPbh3vG9C5HYn9l9A\",\"children\":[{\"text\":\"voicetype\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"U39R66QoiEWIHTZO8gYa-\",\"children\":[{\"id\":\"MArO5Hrzhrrm2wJYsRAwv\",\"children\":[{\"id\":\"tV5q7g-oR-Wnj7zrBZP2r\",\"children\":[{\"text\":\"int\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"iacEvmT3Hggj8kvRggcSS\",\"children\":[{\"id\":\"BrRf9fKspjFKwRQVDAb7d\",\"children\":[{\"text\":\"Voice changing type. For more information, see \"},{\"id\":\"xL0D_MzhysY1ksCFZVNu3\",\"children\":[{\"text\":\"Voice Changing\"}],\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/44995\"},\"type\":\"ref\"},{\"text\":\".\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[16,11,73],\"widthMode\":\"percentage\"},{\"id\":\"eZkgj-GU4LgeUN8RF6za4\",\"children\":[{\"text\":\"Error codes\"}],\"nodeId\":\".E9.94.99.E8.AF.AF.E7.A0.815\",\"type\":\"h4\"},{\"id\":\"RAKXymFgKonb-setTv-Yh\",\"children\":[{\"id\":\"D53wg3MLuS03apQhnuWpk\",\"children\":[{\"id\":\"tIBRqcoMhZa_AMLN8dKzx\",\"children\":[{\"id\":\"XTiPCCgszsNZMb31Hyiy6\",\"children\":[{\"text\":\"Error Code\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"kruhcbPJgwwZAnXWY8FWx\",\"children\":[{\"id\":\"k4l_v0sHygxK6FepygQl6\",\"children\":[{\"text\":\"Cause\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"RRLFbPPNMYxssqr2t69mQ\",\"children\":[{\"id\":\"qsO__NnghdEj-1-8AhFo7\",\"children\":[{\"text\":\"Suggestion\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"987JktFkQ0l5xI68wXvAa\",\"children\":[{\"id\":\"9MetxM2MmCRaRTPYJEPO6\",\"children\":[{\"id\":\"NUi3JZvdr9oO7Wl-s05dO\",\"children\":[{\"id\":\"-QB3j2dfbZloeF_fu8Czg\",\"children\":[{\"text\":\"20485\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"c7o1ku7OrKbUt7TwlVmzP\",\"children\":[{\"id\":\"3V9jbCCNxeAIZDLRpR4HY\",\"children\":[{\"id\":\"JwEg8I4J_m0QrwdohhuhH\",\"children\":[{\"text\":\"Playback is not started.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"4Zf1suks9wO1gkzjp4UdK\",\"children\":[{\"id\":\"mZEEs1UrBjIa3ye-E7jZy\",\"children\":[{\"id\":\"PLVmsDc4AR2PViwhCINpf\",\"children\":[{\"text\":\"Ensure the existence of the file and the validity of the file path.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[14,25,61],\"widthMode\":\"percentage\"},{\"id\":\"pdkVYOLrGYuheZDiecMWW\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.8117\",\"type\":\"h4\"},{\"id\":\"Cwm_xicMubGTeBzwF_xNO\",\"autoWrap\":false,\"children\":[{\"id\":\"aPE0pIPkxP0J6Wal_LdhV\",\"children\":[{\"text\":\"ITMGContext.GetInstance().GetPttCtrl().PlayRecordedFile(filePath); \"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"IqUSOOMvdZdHGTP9u4jlc\",\"children\":[{\"text\":\"Callback for audio playback\"}],\"nodeId\":\".E6.92.AD.E6.94.BE.E8.AF.AD.E9.9F.B3.E7.9A.84.E5.9B.9E.E8.B0.83\",\"type\":\"h3\"},{\"id\":\"52a-rkTUYPUSl_o4cB29a\",\"children\":[{\"text\":\"A callback will be executed through a delegate function to pass a message when an audio file is played back.\"}],\"type\":\"p\"},{\"id\":\"NUqbvnJ0n9FfxunsbNDu0\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\".E6.8E.A5.E5.8F.A3.E5.8E.9F.E5.9E.8B21\",\"type\":\"h4\"},{\"id\":\"agEY8jDej6PfFUB6Rykbh\",\"autoWrap\":false,\"children\":[{\"id\":\"yqWz6Uidt7HWt0PvlvB07\",\"children\":[{\"text\":\"public delegate void QAVPlayFileCompleteCallback(int code, string filepath);\"}],\"type\":\"code-line\"},{\"id\":\"3Gke8RxUCzXPOPxFTLQMT\",\"children\":[{\"text\":\"public abstract event QAVPlayFileCompleteCallback OnPlayFileComplete;\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"DehrLxHduiF41v5TRuFBd\",\"children\":[{\"id\":\"qLoq5-BKORh9HS3aHdKrH\",\"children\":[{\"id\":\"dPlJn0Pkri_noWf3JcBU1\",\"children\":[{\"id\":\"XcBubWC-NKtiJiBKw46wz\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"65HYK6cTZ1he81-m1A3V-\",\"children\":[{\"id\":\"GEBmRGKJuWrF79FuIu9b-\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"oTJiPfUsS_6Q3pvuJ42KT\",\"children\":[{\"id\":\"dnQMF5ka_-8MfEOu1fd3O\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"mLm5LwlIba0izW2c1Bl-U\",\"children\":[{\"id\":\"RjEN9dzs2JJmo-PB4yIfE\",\"children\":[{\"id\":\"QVyjQyQz9dSBe6-uYL7Cx\",\"children\":[{\"id\":\"EEzyFbh_r_3IKHZr4ahcL\",\"children\":[{\"text\":\"code\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Ex0K_lAxkbzm3ynI6_DzF\",\"children\":[{\"id\":\"hHFyOVnC_hz3iBIETg1kq\",\"children\":[{\"id\":\"Vw9LxDvvkMdQ8tOMwNZL0\",\"children\":[{\"text\":\"int\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"8_vKv4mSezNV7d8Vo_2oN\",\"children\":[{\"id\":\"j9e7OpSw9y3fCPQGZd9US\",\"children\":[{\"id\":\"guR1jI4HXptmXqfTMOmCA\",\"children\":[{\"code\":1,\"text\":\"0\"},{\"text\":\": Playback is completed.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"7IaSJIEnl4bCJsLGu3WM_\",\"children\":[{\"id\":\"xV_HozGLtIteRoSVDO8uE\",\"children\":[{\"id\":\"tP4pN33o2Tr4LPblzv9zL\",\"children\":[{\"id\":\"ex-H8ICHKtqfPXBoBCswM\",\"children\":[{\"text\":\"filepath\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"QigwxL4XgdQHXOT4Wt8PC\",\"children\":[{\"id\":\"37W30subg75oFrLQm6AMQ\",\"children\":[{\"id\":\"nU3ReMnlAT6M02fQqkZ14\",\"children\":[{\"text\":\"string\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"qAyeT4aC1qzqnoQXN4iU_\",\"children\":[{\"id\":\"T1O8QEaSp2_sbxoyZtf_8\",\"children\":[{\"id\":\"K-3xgvbwvckYZTMVuYaal\",\"children\":[{\"text\":\"Path of the stored recording file\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[24,17,59],\"widthMode\":\"percentage\"},{\"id\":\"AkmcECmOVdXMXHLgwYmTk\",\"children\":[{\"text\":\"Error codes\"}],\"nodeId\":\".E9.94.99.E8.AF.AF.E7.A0.816\",\"type\":\"h4\"},{\"id\":\"qHg47uhTBlrM-ukyvHa75\",\"children\":[{\"id\":\"J6EyW94q8Mb5Ct96X3j2v\",\"children\":[{\"id\":\"tYs91uH9Fw7ME_P8XsOeW\",\"children\":[{\"id\":\"oCqDYmxEbiX6G-gZZDudD\",\"children\":[{\"text\":\"Error Code\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"uYCR2LcXBvRAmfPStS9Ck\",\"children\":[{\"id\":\"zgdXX3DiHgUSebw8K5YKc\",\"children\":[{\"text\":\"Cause\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"eXmrWTwEYRXDJfaS17b1Z\",\"children\":[{\"id\":\"MdCqqnwiBG9vAM-qMDAkw\",\"children\":[{\"text\":\"Suggestion\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"UmmhjZGyKBYomUHr05j7r\",\"children\":[{\"id\":\"zVMPt5oxd2KP9egQZ8d6V\",\"children\":[{\"id\":\"R4dp-Tzi3wAK_k3CI-i5Z\",\"children\":[{\"id\":\"--ty9jBW4jaNZabDyiSCD\",\"children\":[{\"text\":\"20481\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"jd70wN9ekOCJ9DHsBclDJ\",\"children\":[{\"id\":\"6P0vYMdy4WFSuXh9wDw_b\",\"children\":[{\"id\":\"vdS-NniKSRbB4IjqqM-ue\",\"children\":[{\"text\":\"An initialization error occurred.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"pVuM_ml4QEvaP2X3jD4Py\",\"children\":[{\"id\":\"Cql4TgGd_eaWNoojEcV7u\",\"children\":[{\"id\":\"QQuLuMwj0La2Ge9VVlikT\",\"children\":[{\"text\":\"Check whether the device is being used, whether the permissions are normal, and whether the initialization is normal.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"tOvhhBXCUlV-mCLHfqWFN\",\"children\":[{\"id\":\"huZeq6nvkGS_NY1pjQD17\",\"children\":[{\"id\":\"3CkEhVqIPgT3Exgv3aJEZ\",\"children\":[{\"id\":\"bqUWgsdOa4-knOiZZBY1c\",\"children\":[{\"text\":\"20482\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"GRCmxccoulJvKDYwoAMJ-\",\"children\":[{\"id\":\"XFMSUV6nQu8J3vrLLiXMH\",\"children\":[{\"id\":\"Bpv27uYoNlm1sGgd0RCft\",\"children\":[{\"text\":\"During playback, the client tried to interrupt and play back the next one but failed (which should succeed normally).\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"vao6HHOGYlvAEPHI5Mmd0\",\"children\":[{\"id\":\"AReq-dRFLviUqps7zApVn\",\"children\":[{\"id\":\"bdkLDIo3ncEhPikYvzxwR\",\"children\":[{\"text\":\"Check whether the code logic is correct.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"436Z-bv19_p9m24cfE-rb\",\"children\":[{\"id\":\"-2yVc7_6ZyM-eXFMepqc5\",\"children\":[{\"id\":\"KHI3F0_a8_IM934EMA7xr\",\"children\":[{\"id\":\"sT1wkBi980b7axT87NJuI\",\"children\":[{\"text\":\"20483\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"PziNlE-d3D4CSmpuXZXLH\",\"children\":[{\"id\":\"a-Opf37ETfhmQdoPLXbUX\",\"children\":[{\"id\":\"G3WMqnVgJ8gs-9QzM_Hh2\",\"children\":[{\"text\":\"Empty parameters.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"1ZPNQuaoJCs00eeFHgpZT\",\"children\":[{\"id\":\"RKyOpSHvrfluTdDb5cWeA\",\"children\":[{\"id\":\"Aj-XBZ4MKf-CnRsDl4xvt\",\"children\":[{\"text\":\"Check whether the API parameters in the code are correct.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"mf3CFLI33cE9kSfbs_lKv\",\"children\":[{\"id\":\"0lNZlvPYUWqeandFMDK6_\",\"children\":[{\"id\":\"yfeAvknfTYPNnvFHNqDSt\",\"children\":[{\"id\":\"3bt-ImJrz-9pp7YcIHZ2t\",\"children\":[{\"text\":\"20484\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"3UvWBlFPp6Duvb2X1KqHv\",\"children\":[{\"id\":\"O4zSDT1Ab88lj8-aS5dNo\",\"children\":[{\"id\":\"-9rnx4pW_Yg3P-XxAVLR5\",\"children\":[{\"text\":\"Internal error\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"kThVb6GqigGKdRI2Th3Zj\",\"children\":[{\"id\":\"3q8trL916rA8JuRhJ2VeX\",\"children\":[{\"id\":\"FRhQqyf7eNAwLOGKiC_kJ\",\"children\":[{\"text\":\"An error occurred while initializing the player. This error code is generally caused by failure in decoding, and the error should be located with the aid of logs.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[13,42,45],\"widthMode\":\"percentage\"},{\"id\":\"wy5quUTCoXf20yILzbsi0\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.8118\",\"type\":\"h4\"},{\"id\":\"l51qFy9wds-auG0HV4Jus\",\"autoWrap\":false,\"children\":[{\"id\":\"QViN2_B-JVonYQ2ROSwi8\",\"children\":[{\"text\":\"// Listen on an event:\"}],\"type\":\"code-line\"},{\"id\":\"Bpk_E6W_BWLSY9NY6A6np\",\"children\":[{\"text\":\"ITMGContext.GetInstance().GetPttCtrl().OnPlayFileComplete +=new QAVPlayFileCompleteCallback(OnPlayFileComplete);\"}],\"type\":\"code-line\"},{\"id\":\"psYzMrh27RjBuG5JBPTuL\",\"children\":[{\"text\":\"// Process the event listened on:\"}],\"type\":\"code-line\"},{\"id\":\"21MAcLgg9jxoiyH7JRJQ_\",\"children\":[{\"text\":\"void OnPlayFileComplete(int code, string filepath){\"}],\"type\":\"code-line\"},{\"id\":\"Ono1xZqe3i_UjP9ay5Oqr\",\"children\":[{\"text\":\" // Callback for audio playback\"}],\"type\":\"code-line\"},{\"id\":\"JRR4ws3v5s8-xQqkN5mbc\",\"children\":[{\"text\":\"}\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"Z6wYu6wlhufShsbbazbp_\",\"children\":[{\"text\":\"Stopping audio playback\"}],\"nodeId\":\".E5.81.9C.E6.AD.A2.E6.92.AD.E6.94.BE.E8.AF.AD.E9.9F.B3\",\"type\":\"h3\"},{\"id\":\"orcvSOS18xnRSKGmVAmhx\",\"children\":[{\"text\":\"This API is used to stop audio playback. There will be a callback for playback completion when the playback stops.\"}],\"type\":\"p\"},{\"id\":\"ma2viZ0IqEZaSD_VVyFO7\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\".E6.8E.A5.E5.8F.A3.E5.8E.9F.E5.9E.8B22\",\"type\":\"h4\"},{\"id\":\"V5Nlk_tP-AD4qHltGccLY\",\"autoWrap\":false,\"children\":[{\"id\":\"v-3pvjJdpbVFEIfalccz8\",\"children\":[{\"text\":\"ITMGPTT int StopPlayFile()\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"BIFoH3Zzv2PxQBgezjGax\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.8119\",\"type\":\"h4\"},{\"id\":\"w68NVdv_04pb_XpHN4pFI\",\"autoWrap\":false,\"children\":[{\"id\":\"h02_pj9qquHGkFTYDPvq0\",\"children\":[{\"text\":\"ITMGContext.GetInstance().GetPttCtrl().StopPlayFile();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"1vr7yaw3q5sgFMnH0OBuc\",\"children\":[{\"text\":\"Getting audio file size\"}],\"nodeId\":\".E8.8E.B7.E5.8F.96.E8.AF.AD.E9.9F.B3.E6.96.87.E4.BB.B6.E7.9A.84.E5.A4.A7.E5.B0.8F\",\"type\":\"h3\"},{\"id\":\"5r9zcOpoymkLsMlMW9xRS\",\"children\":[{\"text\":\"This API is used to get the size of an audio file.\"}],\"type\":\"p\"},{\"id\":\"RVM9VU5TfAtD2KwsOpvWk\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\".E6.8E.A5.E5.8F.A3.E5.8E.9F.E5.9E.8B23\",\"type\":\"h4\"},{\"id\":\"sAtbv_rfReVbxgtKYWFfe\",\"autoWrap\":false,\"children\":[{\"id\":\"RWIVT4dkD2WecwqnzwMxf\",\"children\":[{\"text\":\"ITMGPTT GetFileSize(string filePath) \"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"eXVzA1aeCRjJ9OqaVZ25K\",\"children\":[{\"id\":\"vZ9hGSzUMn1WCGZhmAJT4\",\"children\":[{\"id\":\"XAfMQhMwdHw1i4DPReDxl\",\"children\":[{\"id\":\"zpPfRl81TDoa7cTzHOk2Z\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"8auDww_69ysOW89Toe0LN\",\"children\":[{\"id\":\"zeCOeg48kqC6ysW1TA2Mb\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"L0ZIB7NNyz_VGwX9xgQKw\",\"children\":[{\"id\":\"7dN3eRM-MsAjzynfPZoJt\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"RLR5XL9gFclb-M14YP3dV\",\"children\":[{\"id\":\"_QqIuJKMrPh7g_l3UEPqJ\",\"children\":[{\"id\":\"RBHDPUesO_9MG2Av63O0e\",\"children\":[{\"id\":\"vRFu5M1WgtK5PUHmZ2KwH\",\"children\":[{\"text\":\"filePath\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"pzb_PYiPhHq4jNrU9RNNx\",\"children\":[{\"id\":\"DYj_WyoA49CK9E5J2FI0B\",\"children\":[{\"id\":\"geRJprEH6P2Ws09Zop3C4\",\"children\":[{\"text\":\"String\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"AE-TgG2gMurfDNDxnHLcu\",\"children\":[{\"id\":\"79AdCx9-qJvy_Yz_Jr0CD\",\"children\":[{\"id\":\"a6IVU6nugj26lKVB7OnEc\",\"children\":[{\"text\":\"Path of the audio file, which is a local path.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[21,14,65],\"widthMode\":\"percentage\"},{\"id\":\"cgSekBi1h0iGxVfigx0lR\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.8120\",\"type\":\"h4\"},{\"id\":\"T0XEmngYCckMcR2JaKtkk\",\"autoWrap\":false,\"children\":[{\"id\":\"nQBeZG_EEzueGdTLZK-p2\",\"children\":[{\"text\":\"int fileSize = ITMGContext.GetInstance().GetPttCtrl().GetFileSize(filepath);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"KcucgK5PDsTnKldXH_YLw\",\"children\":[{\"text\":\"Getting audio file duration\"}],\"nodeId\":\".E8.8E.B7.E5.8F.96.E8.AF.AD.E9.9F.B3.E6.96.87.E4.BB.B6.E7.9A.84.E6.97.B6.E9.95.BF\",\"type\":\"h3\"},{\"id\":\"ZTMQwDrMFEzXn6wwbhN6R\",\"children\":[{\"text\":\"This API is used to get the duration of an audio file in milliseconds.\"}],\"type\":\"p\"},{\"id\":\"lfmMocIVNPlT8wB99AzD5\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\".E6.8E.A5.E5.8F.A3.E5.8E.9F.E5.9E.8B24\",\"type\":\"h4\"},{\"id\":\"YwgghjPXNorGNksh-aEtq\",\"autoWrap\":false,\"children\":[{\"id\":\"rhQK2ZOMwGoekrfp1D2Ca\",\"children\":[{\"text\":\"ITMGPTT int GetVoiceFileDuration(string filePath)\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"mSTgvn3-VeqtjyEfJkSnU\",\"children\":[{\"id\":\"LdbGug77IQbIpwWlbISZ6\",\"children\":[{\"id\":\"E-YrfFIiEWs8UYYy0Buub\",\"children\":[{\"id\":\"lEjQiDSJE87ju9gMxPAAp\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"QX35DQphjKIoBfg8q2VEH\",\"children\":[{\"id\":\"TV5jG87cChZCTXb4Kx_Hy\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"BOlEno4UKC20YggkPq4iJ\",\"children\":[{\"id\":\"9ole6Z0IWzru9ZU7LmMMF\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"r4pr7MNkI0K-QGWaCo3JL\",\"children\":[{\"id\":\"Qi64bEaBs-oYp_dak7Y1V\",\"children\":[{\"id\":\"BL0C4AGWdWyu7uJGx8-Y6\",\"children\":[{\"id\":\"HjibvA2qYyM_iXWcZG4_g\",\"children\":[{\"text\":\"filePath\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"97tzeyC-yuRBCs-THO4Rb\",\"children\":[{\"id\":\"GheSoifK8LpBJAXStx3Fh\",\"children\":[{\"id\":\"NeBQNMflFdc46nusLQMPa\",\"children\":[{\"text\":\"String\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"MTXsAo8Q4GUzNdJwJFv1_\",\"children\":[{\"id\":\"Cp5XNCv9joMU7yVHNQ-A7\",\"children\":[{\"id\":\"ILQM6zuDCgmzL0enJ6Qod\",\"children\":[{\"text\":\"Path of the audio file, which is a local path.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[21,14,65],\"widthMode\":\"percentage\"},{\"id\":\"vt--6W5whE-LNC0ZHFPnB\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.8121\",\"type\":\"h4\"},{\"id\":\"2h2GertCxmB8UrSKXycGY\",\"autoWrap\":false,\"children\":[{\"id\":\"Ugefj9Mk-C1n8catoQDJG\",\"children\":[{\"text\":\"int fileDuration = ITMGContext.GetInstance().GetPttCtrl().GetVoiceFileDuration(filepath);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"RFKQ8VPHEsAfCBJjSWZdv\",\"children\":[{\"text\":\"Fast Recording-to-Text Conversion\"}],\"nodeId\":\".E5.BD.95.E9.9F.B3.E6.96.87.E4.BB.B6.E6.9E.81.E9.80.9F.E8.BD.AC.E6.96.87.E6.9C.AC\",\"type\":\"h2\"},{\"id\":\"Ti66u3uC5ZYN-dyL0OKMV\",\"children\":[{\"id\":\"XUla1Z-Pc1jqV4u5HZbiG\",\"children\":[{\"id\":\"T9-7UQj3dyMbdzrVdz5jD\",\"children\":[{\"id\":\"usav14jmLJORmk-qY0QGp\",\"children\":[{\"text\":\"API\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"f4HsgQZ-BgIPnXl53A8JZ\",\"children\":[{\"id\":\"OInGR2rcRiGLdO9W0bEz8\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"GCbFWcPpKjPv4juYc5S9c\",\"children\":[{\"id\":\"Wuz_FO8v1zW_3uu1BpX-9\",\"children\":[{\"id\":\"PGbJ1eVZinCZCCt-r9H7B\",\"children\":[{\"id\":\"0eFmUghiSPqopyGs5XDdF\",\"children\":[{\"text\":\"SpeechToText\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"dgx7X164bRCR7a6NSMfwn\",\"children\":[{\"id\":\"k7Z6aLbhih6jm50tJXx05\",\"children\":[{\"id\":\"no9hEzwICJp-Y5G4q9oUU\",\"children\":[{\"text\":\"Converts speech to text.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[39,61],\"widthMode\":\"percentage\"},{\"id\":\"d2qN_V16Cowtqjs7kh61r\",\"children\":[{\"text\":\"Converting audio file to text\"}],\"nodeId\":\".E5.B0.86.E6.8C.87.E5.AE.9A.E7.9A.84.E8.AF.AD.E9.9F.B3.E6.96.87.E4.BB.B6.E8.AF.86.E5.88.AB.E6.88.90.E6.96.87.E5.AD.97\",\"type\":\"h3\"},{\"id\":\"OxcPwf_g4lI9_T-GDp0-0\",\"children\":[{\"text\":\"This API is used to convert a specified audio file to text.\"}],\"type\":\"p\"},{\"id\":\"7JYNqJKr-a2G6zk3wmy_X\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\".E6.8E.A5.E5.8F.A3.E5.8E.9F.E5.9E.8B25\",\"type\":\"h4\"},{\"id\":\"6fjD9-jBKSHNbidJOe2b_\",\"autoWrap\":false,\"children\":[{\"id\":\"k_LkTJ7_39wkv-21G2ECD\",\"children\":[{\"text\":\"ITMGPTT int SpeechToText(String fileID)\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"-bNA4n2yEnDuLDQa40OXF\",\"children\":[{\"id\":\"VxDwxGd1C0S53DlaeTPPG\",\"children\":[{\"id\":\"2Rbt6lFgWXAk0PTO8ie5H\",\"children\":[{\"id\":\"ZhVELHiK7wv2sgwVhEqSz\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"hkb76nacy6WMVQe_oDg7v\",\"children\":[{\"id\":\"GFQGIEBYy98bjUhntiZLw\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"9ml1ZiMdU1wSH332C-w1W\",\"children\":[{\"id\":\"-QSKjlYZiwChM0O630WFp\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"dFFa33nEulwTAQaY2Gw5u\",\"children\":[{\"id\":\"h4igLRWZdVc5LuFVLWzkW\",\"children\":[{\"id\":\"AQomp_ZB0YlRsyUeni3-p\",\"children\":[{\"id\":\"86KxuS3nMF50-7kX0tOiZ\",\"children\":[{\"text\":\"fileID\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"tDiZ9h1aVfBvFdDjMzBZq\",\"children\":[{\"id\":\"fBbtaLz5rbf0Hu--Mgb05\",\"children\":[{\"id\":\"Bk2HuJhmHSgKL2rohtEFt\",\"children\":[{\"text\":\"String\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"c8gjyhXTwIHZH_cxRnIQN\",\"children\":[{\"id\":\"psAoEiyiwc3mohWO-VgUA\",\"children\":[{\"id\":\"IFd2kJCXbBv2CaM9z6l3i\",\"children\":[{\"text\":\"Audio file URL\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[33,23,44],\"widthMode\":\"percentage\"},{\"id\":\"EnDB0VrIomGzQV-G3OKFg\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.8122\",\"type\":\"h4\"},{\"id\":\"sB6IKB_kOgVs2_MGuyRaJ\",\"autoWrap\":false,\"children\":[{\"id\":\"qMfGu1eU43H08NzyMABf1\",\"children\":[{\"text\":\"ITMGContext.GetInstance().GetPttCtrl().SpeechToText(fileID);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"TC569im6c8tdhIu2ZFtmp\",\"children\":[{\"text\":\"Translating audio file into text in specified language\"}],\"nodeId\":\".E5.B0.86.E6.8C.87.E5.AE.9A.E7.9A.84.E8.AF.AD.E9.9F.B3.E6.96.87.E4.BB.B6.E7.BF.BB.E8.AF.91.E6.88.90.E6.96.87.E5.AD.97.EF.BC.88.E6.8C.87.E5.AE.9A.E8.AF.AD.E8.A8.80.EF.BC.89\",\"type\":\"h3\"},{\"id\":\"dwat357ZI40VObed6EI2w\",\"children\":[{\"text\":\"This API can specify a language for recognition or translate the text recognized in speech into a specified language and return the translation.\"}],\"type\":\"p\"},{\"id\":\"6nqAFbgVnViLi0wdMEyj5\",\"children\":[{\"id\":\"dji-2TU0mzeN5mBV3XxXG\",\"children\":[{\"b\":1,\"text\":\"Note:\"}],\"type\":\"p\"},{\"id\":\"dqP6BR5_1xYhj4eNaG4hZ\",\"children\":[{\"text\":\"Translation incurs additional fees. For more information, see \"},{\"id\":\"u1X9aPpZq3o-hyfLzuh_G\",\"children\":[{\"text\":\"Purchase Guide\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://www.tencentcloud.com/document/product/607/50009\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/50009\"},\"type\":\"ref\"},{\"text\":\".\"}],\"type\":\"p\"}],\"hintType\":\"alert\",\"type\":\"hint\"},{\"id\":\"83mIOLE6lisZIpeL99OB1\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\".E6.8E.A5.E5.8F.A3.E5.8E.9F.E5.9E.8B26\",\"type\":\"h4\"},{\"id\":\"DuEFX_2WsxkJgECXM2TKE\",\"autoWrap\":false,\"children\":[{\"id\":\"68EPkv2F3914Z7PQOe0En\",\"children\":[{\"text\":\"ITMGPTT int SpeechToText(String fileID,String speechLanguage)\"}],\"type\":\"code-line\"},{\"id\":\"8KbDIwZDnjf-mNeFg-s5n\",\"children\":[{\"text\":\"ITMGPTT int SpeechToText(String fileID,String speechLanguage,String translatelanguage)\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"e46t9HLARTvXTfaSYcyHR\",\"children\":[{\"id\":\"ITGTz6Prw78Mj37TjBmj9\",\"children\":[{\"id\":\"5IzloERI8qEJ4CFPr6K3D\",\"children\":[{\"id\":\"XeZj2nUBtPCWiCh3kqDkd\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"RYAELXnVDkaqb7Xu0eXfx\",\"children\":[{\"id\":\"uBTVp3CQTaIhypnnHQwmX\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"7YPZvGvdduvvylPiThbkt\",\"children\":[{\"id\":\"BMo3zbWO5Yny88lKRJnux\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"iEjxiOYCt_CrjyoQMMLwh\",\"children\":[{\"id\":\"DTfwxdI8qlvCryVwwlybB\",\"children\":[{\"id\":\"HqyolEx5GgTWrtI9BYQe0\",\"children\":[{\"id\":\"J7uImzYiooQ24zERI8oJg\",\"children\":[{\"text\":\"fileID\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"pRFBM2aYToaM04X5Y5O0G\",\"children\":[{\"id\":\"s0NqhQCKZS5ufwumjjeBX\",\"children\":[{\"id\":\"m1I-ILzGlfDi_NjCgmc1p\",\"children\":[{\"text\":\"String\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Y32tZm5MHUSreZe__tvPg\",\"children\":[{\"id\":\"cQdLwwlQ2y7i_ppPlhwj7\",\"children\":[{\"id\":\"QCZgCBn536Q7F8HUWUEB1\",\"children\":[{\"text\":\"URL of the audio file, which will be retained on the server for 90 days.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"Y_qpQgqemixlISYCfedC-\",\"children\":[{\"id\":\"zaIZKdvcWXJGrAEiEM67Y\",\"children\":[{\"id\":\"8BNLfU-byHKa-BEd6qwS8\",\"children\":[{\"id\":\"HU5u2bJU-8V3SKJJfQMUE\",\"children\":[{\"text\":\"speechLanguage\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Q-SGgpnQsCQuNME25FOHi\",\"children\":[{\"id\":\"nOePuUnahZX_xg_rEf3Gf\",\"children\":[{\"id\":\"2RvzAoJn2X6cdku34KYQb\",\"children\":[{\"text\":\"String\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"CC_8wM0ZIrGJWSVTyKTSf\",\"children\":[{\"id\":\"mydRj1da7F7W9IAiWmjNr\",\"children\":[{\"text\":\"The language in which the audio file is to be converted to text. For parameters, see \"},{\"id\":\"KBkHzppXj9-dBwDKqJYSB\",\"children\":[{\"text\":\"Language Parameter Reference List\"}],\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/30260\"},\"type\":\"ref\"},{\"text\":\".\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"dR7YTy4sjJn38iqPhFKid\",\"children\":[{\"id\":\"KmSEHzslZY7JVyVrhwepg\",\"children\":[{\"id\":\"pcGtRy4nkDBzv25_TOxmf\",\"children\":[{\"id\":\"lNQs_a01G6v2zQmHUlTza\",\"children\":[{\"text\":\"translatelanguage\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Iv_mfx0z3Cy1rgd7QiFTr\",\"children\":[{\"id\":\"bejdM5QmH67Kjs8WrVEhF\",\"children\":[{\"id\":\"07dDE1D4xN2znsOEnQasg\",\"children\":[{\"text\":\"String\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"jI7LyZJIDUG4s1_xrYRbq\",\"children\":[{\"id\":\"_EnDcc8esfTbrOhkfqHTw\",\"children\":[{\"text\":\"The language in which the audio file is to be translated into text. For parameters, see \"},{\"id\":\"GTKpXCV0NQTLP3AVthPDr\",\"children\":[{\"text\":\"Language Parameter Reference List\"}],\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/30260\"},\"type\":\"ref\"},{\"text\":\".\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[16,10,74],\"widthMode\":\"percentage\"},{\"id\":\"tbd1zhx90RCTFv9FQP13e\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.8123\",\"type\":\"h4\"},{\"id\":\"NyfKzdbSQFs4pGA3FADM3\",\"autoWrap\":false,\"children\":[{\"id\":\"4ubrOggXTKhK8qJagvzpv\",\"children\":[{\"text\":\"ITMGContext.GetInstance().GetPttCtrl().SpeechToText(fileID,\\\"cmn-Hans-CN\\\",\\\"cmn-Hans-CN\\\");\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"BLzkLkCtGgXuVzjWsiobE\",\"children\":[{\"text\":\"Callback for recognition\"}],\"nodeId\":\".E8.AF.86.E5.88.AB.E5.9B.9E.E8.B0.83\",\"type\":\"h3\"},{\"id\":\"PCZAvWlfkp42-cNCASjl_\",\"children\":[{\"text\":\"A callback will be executed through a delegate function to pass a message when a specified audio file is recognized and converted to text.\"}],\"type\":\"p\"},{\"id\":\"RIDbTDl_JwTby5MfR4aho\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\".E6.8E.A5.E5.8F.A3.E5.8E.9F.E5.9E.8B27\",\"type\":\"h4\"},{\"id\":\"32ef8VjBvBmF2prt_q79A\",\"autoWrap\":false,\"children\":[{\"id\":\"v4_M-ZBpbJ1SIPUpQotK8\",\"children\":[{\"text\":\"public delegate void QAVSpeechToTextCallback(int code, string fileid, string result);\"}],\"type\":\"code-line\"},{\"id\":\"pHld4WlR_UBy-g-dRFb2K\",\"children\":[{\"text\":\"public abstract event QAVSpeechToTextCallback OnSpeechToTextComplete;\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"-jeWdIp1Uor49KXZ-IQjN\",\"children\":[{\"id\":\"d4JbmGoJm62mJ9NsE348E\",\"children\":[{\"id\":\"SmGs8OV2zpHm847tdIqDZ\",\"children\":[{\"id\":\"GfenPvjgGjFzeeoNwpMtG\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"3XUzIdfgaryGN9nGxadcf\",\"children\":[{\"id\":\"4lEB9lRHlFqaystAPSuF2\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"4f4NGd2GCfiJS0-eUSUCf\",\"children\":[{\"id\":\"MdCWtSV9FJEdT8YL3HUDB\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"h1bZA-oPF0kGuzsR1JzVU\",\"children\":[{\"id\":\"5XCIP7NOY-t_MGq6-IPj6\",\"children\":[{\"id\":\"f1QXbgVespfPaiB58u67d\",\"children\":[{\"id\":\"ejCULvcjTyz1xusLVxreB\",\"children\":[{\"text\":\"code\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Lvc6BJFvhxfb3hkOMyNCz\",\"children\":[{\"id\":\"SaIKxlfhxGHym9GwKcRNS\",\"children\":[{\"id\":\"sA-0DAV0m6HRZ-7wS_VKe\",\"children\":[{\"text\":\"int\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"xp8x15CBSmvcZsm22-yp7\",\"children\":[{\"id\":\"u7rXmc0I_uAYPAxyDanwr\",\"children\":[{\"id\":\"Z_w125NOoW1dSQCvgTavM\",\"children\":[{\"code\":1,\"text\":\"0\"},{\"text\":\": Recording is completed.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"X3jPanyQsbvetcNYuf_EM\",\"children\":[{\"id\":\"9FRa7z77aIigQYL5cz3qx\",\"children\":[{\"id\":\"JSFjL1aw6Omnp0AUebQQs\",\"children\":[{\"id\":\"NhLjGqCM0FqUESSmzME-_\",\"children\":[{\"text\":\"fileid\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"8Lme7vjDrCkmgkaFKPSdy\",\"children\":[{\"id\":\"feD7C8ZL_zGhDHnhD3uHG\",\"children\":[{\"id\":\"kjXumW5-l9WA-duxRsxKe\",\"children\":[{\"text\":\"string\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"gOFuZLUQwi0xapPrjbaxB\",\"children\":[{\"id\":\"TcmtcYSlQz_E0W47TqMt2\",\"children\":[{\"id\":\"Oc6yHCzz-h2KY-Zm7YIcD\",\"children\":[{\"text\":\"URL of the audio file, which will be retained on the server for 90 days.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"xVzxnNuGX4-VHsA9r0bCb\",\"children\":[{\"id\":\"Uo7oCY0Y9V6KXCIzr7Zhu\",\"children\":[{\"id\":\"qzJwgnj6KmcwX6wH_j8eC\",\"children\":[{\"id\":\"4iW7ywWacA3En39ddhJlD\",\"children\":[{\"text\":\"result\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"eaw01JAIBrmCrKkeKysXr\",\"children\":[{\"id\":\"0jhuzF_YW7_jZ1n3tU3hv\",\"children\":[{\"id\":\"NhzfUUmUq4dqJlugaXBzt\",\"children\":[{\"text\":\"string\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"p63fAwGb5QK5lInukg9Dx\",\"children\":[{\"id\":\"XjA9srs5gkdDMPbWWQ8Hg\",\"children\":[{\"id\":\"zEA61f5vb2lK6hPt8yvHf\",\"children\":[{\"text\":\"Converted text\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[15,10,75],\"widthMode\":\"percentage\"},{\"id\":\"sVx7eUbsOd6O6MbmtkNj1\",\"children\":[{\"text\":\"Error codes\"}],\"nodeId\":\".E9.94.99.E8.AF.AF.E7.A0.817\",\"type\":\"h4\"},{\"id\":\"X21gZdjpptp_ZaT-8Wy8V\",\"children\":[{\"id\":\"0vLy_lG7-jXNSJvxXbaXB\",\"children\":[{\"id\":\"c9OiIhD7hh3pFBj2-LtSt\",\"children\":[{\"id\":\"UIUliopqOYZFfIcgAHgfH\",\"children\":[{\"text\":\"Error Code\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ErWA8IKV5OBgptoQRGLPO\",\"children\":[{\"id\":\"aCQogOhzWxUNwP4XwwtaS\",\"children\":[{\"text\":\"Cause\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"m6KiRycEc7PQcOgU36-OE\",\"children\":[{\"id\":\"rXYcDsW__mPLg0CFsAlKz\",\"children\":[{\"text\":\"Suggestion\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"zGvHZqbx2nTFOVFVgw08m\",\"children\":[{\"id\":\"mMphxj46x-tGLAbuRpr3G\",\"children\":[{\"id\":\"YcjkduGfESS6UpUJ6IsLM\",\"children\":[{\"id\":\"bEsBy_Q9zW6UQ5-x0aTXC\",\"children\":[{\"text\":\"32769\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"fvCPXItRkOkwYCNvcEf_B\",\"children\":[{\"id\":\"oX1qRkg-TG9BDVGOki6Po\",\"children\":[{\"id\":\"4b3MUctea16re54s4MSVy\",\"children\":[{\"text\":\"Internal error\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"VZBnS5hiAxUBEFHUJNvqF\",\"children\":[{\"id\":\"WzsplqsmC-C6w3XU4gtkf\",\"children\":[{\"id\":\"hSSVbO0dxMPnghkysgA1g\",\"children\":[{\"text\":\"Analyze logs, get the actual error code returned from the backend to the client, and ask backend personnel for assistance.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"HTN1pueyHwCWocJ4IAsYn\",\"children\":[{\"id\":\"wmvXd0IhII5RJaqymKBud\",\"children\":[{\"id\":\"2Ttu4yl4pEsmOHnoUzrMd\",\"children\":[{\"id\":\"84hNQt_Oj0-SDSKpMk4XM\",\"children\":[{\"text\":\"32770\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"RFRlLVLR2sjFtHZ6V8MNE\",\"children\":[{\"id\":\"mARLm0xGGm8Pw7lGnrY3U\",\"children\":[{\"id\":\"Tm_Eg8G6nwE-5Q7WDbCzt\",\"children\":[{\"text\":\"Network connection failed.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"-pDtomVUzCRRkUBzLTAMZ\",\"children\":[{\"id\":\"JkkNUYV6tTa4VExevgjBV\",\"children\":[{\"id\":\"D7RDI3s-cihFlfiEc8_0k\",\"children\":[{\"text\":\"Check whether the device can access the internet.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"2Go02Ke0Etpq37hundaEp\",\"children\":[{\"id\":\"EXE0fz0HUit3mY8F9Hdzh\",\"children\":[{\"id\":\"JpqBbqj4HNmXP5W5Nyq5e\",\"children\":[{\"id\":\"Oh3kUk49ZK4yRk2hY8btP\",\"children\":[{\"text\":\"32772\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"TiWNEXuMZVUtnSDVX8JzW\",\"children\":[{\"id\":\"Lc5o65ICaxXfDnjJc64tY\",\"children\":[{\"id\":\"yMeDNZW89oZZ0hamZUp1V\",\"children\":[{\"text\":\"Failed to decode the returned packet.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"N9yR9KA2zzZGYUPpvI2jC\",\"children\":[{\"id\":\"el9T5o_H9mYl5Nb7sm3_V\",\"children\":[{\"id\":\"xc5h2EMOm_MNPSut-gvfT\",\"children\":[{\"text\":\"Analyze logs, get the actual error code returned from the backend to the client, and ask backend personnel for assistance.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"mjbwlEuiG9cto8qgKvlfQ\",\"children\":[{\"id\":\"SE1hjlM-XLGs1T92Z0xaf\",\"children\":[{\"id\":\"4S2fdBdJxcWAQ517HtGYT\",\"children\":[{\"id\":\"7bmyxAsPMYfp85EQ69Ue8\",\"children\":[{\"text\":\"32774\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"nHVz3x_zu8Odz5c9Lvb_t\",\"children\":[{\"id\":\"boNM18kpY_eiMPG-BUdTK\",\"children\":[{\"id\":\"9B5PhIcjeyAv2-0cpCqEP\",\"children\":[{\"code\":1,\"text\":\"appinfo\"},{\"text\":\" is not set.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"PfgoP4dRnYRik3p15kmZG\",\"children\":[{\"id\":\"T7uloh1Ty1VfyyBGw0NJN\",\"children\":[{\"id\":\"eqca9kZ-Tur_81FQQH3DC\",\"children\":[{\"text\":\"Check whether the authentication key is correct and whether the voice messaging and speech-to-text feature is initialized.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"eZsOKSTIyZ0O17CwRdwe3\",\"children\":[{\"id\":\"7P5tjIBAGbCB-JG6Fh2cp\",\"children\":[{\"id\":\"RloXLf6CrYe9kaI0oCtp5\",\"children\":[{\"id\":\"Q5PMIVv9aAu_-sI_usvF5\",\"children\":[{\"text\":\"32776\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"NsWGpy4P3Q0iYbI6WgUhq\",\"children\":[{\"id\":\"ixYwDg7QL6LLcowtcIF0A\",\"children\":[{\"id\":\"7HF5t_AcWVpAzgqUHO-jE\",\"children\":[{\"code\":1,\"text\":\"authbuffer\"},{\"text\":\" check failed.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"CQU4HnEpWef-Hb-krbYQN\",\"children\":[{\"id\":\"xE6gv286GolFevzFqJQHI\",\"children\":[{\"id\":\"FxqyTPSrN3mUzCnM33FnE\",\"children\":[{\"text\":\"Check whether \"},{\"code\":1,\"text\":\"authbuffer\"},{\"text\":\" is correct.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"WTtKy52d2z2AyCte4QsHT\",\"children\":[{\"id\":\"2gmOuyI9t__28f5pTB2-_\",\"children\":[{\"id\":\"RT3MQ8hKjHzNLWxa8jGEv\",\"children\":[{\"id\":\"RRNjK-Ft-YanU99nvJWEX\",\"children\":[{\"text\":\"32784\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"V2AGZwanc_zKmpe1bCDcI\",\"children\":[{\"id\":\"uhzrYYspid99aoP-GjFU_\",\"children\":[{\"id\":\"Mj1gHb8wYmj_13wsQQjR-\",\"children\":[{\"text\":\"The speech-to-text conversion parameter is incorrect.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"7xyJvU8VX1ke_NHPIQt5E\",\"children\":[{\"id\":\"6AAvXuf0j15U4-Z0aAES-\",\"children\":[{\"id\":\"PKHg0kC8RBTbOKHqaNe4B\",\"children\":[{\"text\":\"Check whether the API parameter \"},{\"code\":1,\"text\":\"fileid\"},{\"text\":\" in the code is empty.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"zbaAxWAtqVdwc9MjhA8_z\",\"children\":[{\"id\":\"ie9jg_LAA5LclRktc5VTC\",\"children\":[{\"id\":\"-A5jZ53Zs7o6o4seGwNV3\",\"children\":[{\"id\":\"bqBGu_vrdBURKh1ROGPBy\",\"children\":[{\"text\":\"32785\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"CjIKSpA7i5t4-Kwq1Ci8H\",\"children\":[{\"id\":\"NLgPvfFqdyozuo4mWso59\",\"children\":[{\"id\":\"EFa-c4pMYpka_seUris3c\",\"children\":[{\"text\":\"A speech-to-text translation error occurred.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"nBPYj5gFqoiVxntPGm0M8\",\"children\":[{\"id\":\"qL7Kj_kcyYsiYB3h6bdD_\",\"children\":[{\"id\":\"kcN-yCW9dr70R5ugoHsI5\",\"children\":[{\"text\":\"An error occurred in the voice messaging and speech-to-text feature on the backend. Analyze logs, get the actual error code returned from the backend to the client, and ask backend personnel for assistance.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"SxV3QlckgzdSOQb9B8GCo\",\"children\":[{\"id\":\"Rffxv5iXcyHRoSUV5n9cH\",\"children\":[{\"id\":\"LVHc9w1cOHxSC_MQFfqLH\",\"children\":[{\"id\":\"bXSttCLM0WXpS_GiZAC-7\",\"children\":[{\"text\":\"32787\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"nqloL--xa2MGmn2sjHox9\",\"children\":[{\"id\":\"oDPFMzY8YpMvqqxz1Rte9\",\"children\":[{\"id\":\"b7nb__ag3lfwEqfS7o_Gx\",\"children\":[{\"text\":\"Speech-to-text conversion succeeded, but the text translation service was not activated.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ssrK_QiCSGpRtLqUdtxi8\",\"children\":[{\"id\":\"Zkl88hlCO5aqEQivbdv-u\",\"children\":[{\"id\":\"s8_cDLmclTC4DWUjhVLOO\",\"children\":[{\"text\":\"Activate the text translation service in the console.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"ojDA7T4LfOuOt3PW9SoQR\",\"children\":[{\"id\":\"jFEjzG1wqs1Ps9SucRV62\",\"children\":[{\"id\":\"mQuB2LMf8_S9PISOUTgYm\",\"children\":[{\"id\":\"X9-H8ITVJk6kEo2sDQ4H7\",\"children\":[{\"text\":\"32788\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"pcEtCczWsm0SyHhkqtY3h\",\"children\":[{\"id\":\"Pdh05sowbJkicc6L5vvmF\",\"children\":[{\"id\":\"8oqnS3O5c6N8vZctgefN8\",\"children\":[{\"text\":\"Speech-to-text conversion succeeded, but the language parameter of the text translation service was invalid.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"H95JvlC7HiZtMXMXZxors\",\"children\":[{\"id\":\"jS4NqtxOSuOVDlarXe7cg\",\"children\":[{\"id\":\"mNDWbH9L8XAxZLJdndwlC\",\"children\":[{\"text\":\"Check the parameter passed in.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[13,35,52],\"widthMode\":\"percentage\"},{\"id\":\"7cs8oCgDLH7lVIc3PvkxD\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.8124\",\"type\":\"h4\"},{\"id\":\"Zd01QS9ZP2OeGv4KNmDOI\",\"autoWrap\":false,\"children\":[{\"id\":\"eDPuWuGGF4eAA-BnWZSV9\",\"children\":[{\"text\":\"// Listen on an event\"}],\"type\":\"code-line\"},{\"id\":\"wQc1iZAwBpVjFaMAZwLpi\",\"children\":[{\"text\":\"ITMGContext.GetInstance().GetPttCtrl().OnSpeechToTextComplete += new QAVSpeechToTextCallback(OnSpeechToTextComplete);\"}],\"type\":\"code-line\"},{\"id\":\"s9ZWzBDMJNSLgyteMfS2W\",\"children\":[{\"text\":\"// Process the event listened on\"}],\"type\":\"code-line\"},{\"id\":\"4-uLLcKC1ChOOcRQhA1Gn\",\"children\":[{\"text\":\"void OnSpeechToTextComplete(int code, string fileid, string result){\"}],\"type\":\"code-line\"},{\"id\":\"QLx_uO0sdvxU1a-NPbkX0\",\"children\":[{\"text\":\" // Callback for recognition\"}],\"type\":\"code-line\"},{\"id\":\"YemBBLEPL-vpCI1DqBzxL\",\"children\":[{\"text\":\"}\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"EQWFMPbWFJeMBpt-hKb0u\",\"children\":[{\"text\":\"Voice Message Volume Level APIs\"}],\"nodeId\":\".E8.AF.AD.E9.9F.B3.E6.B6.88.E6.81.AF.E9.9F.B3.E9.87.8F.E7.9B.B8.E5.85.B3.E6.8E.A5.E5.8F.A3\",\"type\":\"h2\"},{\"id\":\"YupnTeFvWfM4TEMRq0K1E\",\"children\":[{\"id\":\"C12WPTQm9WhitzLv9vzPZ\",\"children\":[{\"id\":\"nc6jus-ijggrcOJWmepde\",\"children\":[{\"id\":\"GWM9FwSse0OeTaYUVNfIz\",\"children\":[{\"text\":\"API\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"EGhD5hLUTHyfKGlfHnsey\",\"children\":[{\"id\":\"16Y1Zs9-8JPfDj-CSkhzS\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"Fk0Djd8T2v93mweZ-R-Id\",\"children\":[{\"id\":\"hPYVjX8ZKlCCrFC1ZUnHd\",\"children\":[{\"id\":\"gFI8blFj6V2g1azyDbEoX\",\"children\":[{\"id\":\"mK2D4GraGTLcI9yFsTpp3\",\"children\":[{\"text\":\"GetMicLevel\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"_g1bohb7neFx9BYvPjiSd\",\"children\":[{\"id\":\"WsTb19COZOw7xMjJ6o3Rl\",\"children\":[{\"id\":\"LrPAboUatV-AI2x0zvCVe\",\"children\":[{\"text\":\"Gets the real-time mic volume level.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"kl_pXEomGVgeG1pnKqABU\",\"children\":[{\"id\":\"f1WUcUfHudGZXKkfcA011\",\"children\":[{\"id\":\"IFfSpBVvIAFmrdGf1nvr7\",\"children\":[{\"id\":\"GEyCG1PFE73R3JxnIzDyA\",\"children\":[{\"text\":\"SetMicVolume\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"VJYgss-V5XIEo9abkAB2G\",\"children\":[{\"id\":\"tyfV4bjlIGb663m06BfNb\",\"children\":[{\"id\":\"KwWAgqZR1FGtnYi0R5VQo\",\"children\":[{\"text\":\"Sets the recording volume level.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"jclwwBq6RfEtBOKRCz1IM\",\"children\":[{\"id\":\"9kIJdOu83rf9MYZKpf945\",\"children\":[{\"id\":\"XOJog2lx-1I1A7UfU52fy\",\"children\":[{\"id\":\"WfOTNnfwOfI0lhTU-8KA2\",\"children\":[{\"text\":\"GetMicVolume\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Grl3b9ICPWz8ufZWeyMNY\",\"children\":[{\"id\":\"IsY_1QWxw4_IKVtcAViOZ\",\"children\":[{\"id\":\"wUF13SNMVir6JNEmKLl_b\",\"children\":[{\"text\":\"Gets the recording volume level.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"VFZx9KodZgro28ZGaTuJh\",\"children\":[{\"id\":\"ZJhcAezZtsBDg70g1gm5j\",\"children\":[{\"id\":\"eB2fPKwRhyY05CxE9BWRr\",\"children\":[{\"id\":\"KnDuB2IUC7t7-fELpM5PW\",\"children\":[{\"text\":\"GetSpeakerLevel\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"6fEqBLzezQaAG9N7qLSXb\",\"children\":[{\"id\":\"U74p0AnLpQwdUHDUHoZnC\",\"children\":[{\"id\":\"1P9cfsOdGDM7wx2tEdE_A\",\"children\":[{\"text\":\"Gets the real-time speaker volume level.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"q2bxZ7d0p3AXMCeOSz9m5\",\"children\":[{\"id\":\"2HVHXMY4UL9kmHeIOTyZ5\",\"children\":[{\"id\":\"abF0Ekom-cKb9wDYyIr9O\",\"children\":[{\"id\":\"cQKLOzIISf3p3mLJ4Dnha\",\"children\":[{\"text\":\"SetSpeakerVolume\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"udm7xUVxfXDr-ozCdIxJr\",\"children\":[{\"id\":\"nT1PWdbUUjEch2wvUjdvn\",\"children\":[{\"id\":\"VbHVsU9nMryC5pBtQrxpc\",\"children\":[{\"text\":\"This API is used to set the playback volume.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"HppbYMX1lt0BNSTjiTAoz\",\"children\":[{\"id\":\"8MCl13kZv7RGMqHUqWIHm\",\"children\":[{\"id\":\"KEzOLHhR-bY8g9hw0aCA4\",\"children\":[{\"id\":\"4laIb6dxYJTc7YjMcj8Pn\",\"children\":[{\"text\":\"GetSpeakerVolume\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"gA0I2bj3S7DhZLXO3-wE2\",\"children\":[{\"id\":\"RuaiJe1976OgjxQxg_gfO\",\"children\":[{\"id\":\"aySpMegea-dFIFZ4gW_FZ\",\"children\":[{\"text\":\"Gets the playback volume level.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[33,67],\"widthMode\":\"percentage\"},{\"id\":\"FXcV1nHWBypzd79VGVDQd\",\"children\":[{\"text\":\"Getting the real-time mic volume of voice message\"}],\"nodeId\":\".E8.8E.B7.E5.8F.96.E8.AF.AD.E9.9F.B3.E6.B6.88.E6.81.AF.E9.BA.A6.E5.85.8B.E9.A3.8E.E5.AE.9E.E6.97.B6.E9.9F.B3.E9.87.8F\",\"type\":\"h3\"},{\"id\":\"o8DUnEVo2joKrtR-fWBad\",\"children\":[{\"text\":\"This API is used to get the real-time mic volume. An int-type value will be returned. Value range: 0-200.\"}],\"type\":\"p\"},{\"id\":\"qCaHCTqUCk9gR6AREiUal\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\".E6.8E.A5.E5.8F.A3.E5.8E.9F.E5.9E.8B28\",\"type\":\"h4\"},{\"id\":\"8aKu0oBglxVl3EC7prmim\",\"autoWrap\":false,\"children\":[{\"id\":\"KOtcTMdZOHR7G_fnlVu1M\",\"children\":[{\"text\":\"ITMGPTT int GetMicLevel()\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"_DMbpb27vezDaNzyR62wq\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.8125\",\"type\":\"h4\"},{\"id\":\"2BN-4eCBR64bn7TaSUMPY\",\"autoWrap\":false,\"children\":[{\"id\":\"Gkj04gAmJKT7bFVrvIffA\",\"children\":[{\"text\":\"ITMGContext.GetInstance().GetPttCtrl().GetMicLevel();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"pzw04Ky8uKYtbsg8IpY-z\",\"children\":[{\"text\":\"Setting the recording volume of voice message\"}],\"nodeId\":\".E8.AE.BE.E7.BD.AE.E8.AF.AD.E9.9F.B3.E6.B6.88.E6.81.AF.E5.BD.95.E5.88.B6.E9.9F.B3.E9.87.8F\",\"type\":\"h3\"},{\"id\":\"KFDE34J0NZ-AOBAIhcMQs\",\"children\":[{\"text\":\"This API is used to set the recording volume of voice message. Value range: 0-200.\"}],\"type\":\"p\"},{\"id\":\"WBAVD1N_IRQQ7NG15hqu2\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\".E6.8E.A5.E5.8F.A3.E5.8E.9F.E5.9E.8B29\",\"type\":\"h4\"},{\"id\":\"T3BJkLCKnxFV2yMW3t38q\",\"autoWrap\":false,\"children\":[{\"id\":\"ijdfdqyzvEVjh4r0Wkwae\",\"children\":[{\"text\":\"ITMGPTT int SetMicVolume(int vol)\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"CY3kc-BfBHbT28lo_8KQV\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.8126\",\"type\":\"h4\"},{\"id\":\"xnNLyI1se-9JC3G4bbqFT\",\"autoWrap\":false,\"children\":[{\"id\":\"HI2Un7pzPbhH6T_bC5N6N\",\"children\":[{\"text\":\"ITMGContext.GetInstance().GetPttCtrl().SetMicVolume(100);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"OWIUnFLxhXpJnOpKANTaM\",\"children\":[{\"text\":\"Getting the recording volume of voice message\"}],\"nodeId\":\".E8.8E.B7.E5.8F.96.E8.AF.AD.E9.9F.B3.E6.B6.88.E6.81.AF.E5.BD.95.E5.88.B6.E9.9F.B3.E9.87.8F\",\"type\":\"h3\"},{\"id\":\"LFV7jfPJyqMDe_mNJEwJK\",\"children\":[{\"text\":\"This API is used to get the recording volume of voice message. An int-type value will be returned. Value range: 0-200.\"}],\"type\":\"p\"},{\"id\":\"o7x-OAQ25JAQJB-MrXZg1\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\".E6.8E.A5.E5.8F.A3.E5.8E.9F.E5.9E.8B30\",\"type\":\"h4\"},{\"id\":\"x9SoxJLN3kowS1UNQoTdo\",\"autoWrap\":false,\"children\":[{\"id\":\"c602VSmDd8x65yg3oo5z-\",\"children\":[{\"text\":\"ITMGPTT int GetMicVolume()\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"pCGRn8jZ-FNVUlwKvGX06\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.8127\",\"type\":\"h4\"},{\"id\":\"NBMrirRmPWYWMOtk0Uv2O\",\"autoWrap\":false,\"children\":[{\"id\":\"IgTRUjTmpu3zhlrGCZeSq\",\"children\":[{\"text\":\"ITMGContext.GetInstance().GetPttCtrl().GetMicVolume();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"lCnCrV7MQs0rZCfV3PPxu\",\"children\":[{\"text\":\"Getting the real-time speaker volume of voice message\"}],\"nodeId\":\".E8.8E.B7.E5.8F.96.E8.AF.AD.E9.9F.B3.E6.B6.88.E6.81.AF.E6.89.AC.E5.A3.B0.E5.99.A8.E5.AE.9E.E6.97.B6.E9.9F.B3.E9.87.8F\",\"type\":\"h3\"},{\"id\":\"MzFRW3C0FoZgH8LGkucz1\",\"children\":[{\"text\":\"This API is used to get the real-time speaker volume. An int-type value will be returned. Value range: 0-200.\"}],\"type\":\"p\"},{\"id\":\"gyp9IjHdSYlEnfXBl1-dZ\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\".E6.8E.A5.E5.8F.A3.E5.8E.9F.E5.9E.8B31\",\"type\":\"h4\"},{\"id\":\"XiUyD2UmPFlZdcEwJGJ_o\",\"autoWrap\":false,\"children\":[{\"id\":\"DwwHNJoNC5OxyM5m9APzG\",\"children\":[{\"text\":\"ITMGPTT int GetSpeakerLevel()\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"h8NaxdrpoyI7RTCFypaLZ\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.8128\",\"type\":\"h4\"},{\"id\":\"A7G7uPxmEmFhAT5--HlmR\",\"autoWrap\":false,\"children\":[{\"id\":\"pYIIj0gD9Nb078E8yS6xC\",\"children\":[{\"text\":\"ITMGContext.GetInstance().GetPttCtrl().GetSpeakerLevel();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"9P3mMdI0O8F3-UTzb0mbP\",\"children\":[{\"text\":\"Setting the playback volume of voice message\"}],\"nodeId\":\".E8.AE.BE.E7.BD.AE.E8.AF.AD.E9.9F.B3.E6.B6.88.E6.81.AF.E6.92.AD.E6.94.BE.E9.9F.B3.E9.87.8F\",\"type\":\"h3\"},{\"id\":\"ho1gFRdtZoPs9rszxlC12\",\"children\":[{\"text\":\"This API is used to set the playback volume of voice message. Value range: 0-200.\"}],\"type\":\"p\"},{\"id\":\"xJh-KTJ5e6ap4RACCaut5\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\".E6.8E.A5.E5.8F.A3.E5.8E.9F.E5.9E.8B32\",\"type\":\"h4\"},{\"id\":\"hyXGf_o3TmcFZrUyv3nJE\",\"autoWrap\":false,\"children\":[{\"id\":\"DgCzawYQUX0be1D5lnd5i\",\"children\":[{\"text\":\"ITMGPTT int SetSpeakerVolume(int vol)\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"7qNDzAh_tdoT_a-tFKMGV\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.8129\",\"type\":\"h4\"},{\"id\":\"1O7mZ_lgw9Ed9UPx6aeRE\",\"autoWrap\":false,\"children\":[{\"id\":\"xoQjK38ugmZfSptwK32ct\",\"children\":[{\"text\":\"ITMGContext.GetInstance().GetPttCtrl().SetSpeakerVolume(100);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"5lLUyqibx-wkpE8wklcjP\",\"children\":[{\"text\":\"Getting the playback volume of voice message\"}],\"nodeId\":\".E8.8E.B7.E5.8F.96.E8.AF.AD.E9.9F.B3.E6.B6.88.E6.81.AF.E6.92.AD.E6.94.BE.E9.9F.B3.E9.87.8F\",\"type\":\"h3\"},{\"id\":\"AOLI0HX7e2hjF_4nMzgeM\",\"children\":[{\"text\":\"This API is used to get the playback volume of voice message. An int-type value will be returned. Value range: 0-200.\"}],\"type\":\"p\"},{\"id\":\"s5UXGijWTQJGi4sx2Cu0N\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\".E6.8E.A5.E5.8F.A3.E5.8E.9F.E5.9E.8B33\",\"type\":\"h4\"},{\"id\":\"F7QHZ_FJ1XfS6DAuyp8D0\",\"autoWrap\":false,\"children\":[{\"id\":\"Y7ALN2PVas8j6e0hmU_T8\",\"children\":[{\"text\":\"ITMGPTT int GetSpeakerVolume()\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"wqCnNB0KHQtEkhKkrletO\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.8130\",\"type\":\"h4\"},{\"id\":\"ixq1BCMQkJdsL7GIRIfCF\",\"autoWrap\":false,\"children\":[{\"id\":\"mSAIzr1ESMrOx-GaIp4lI\",\"children\":[{\"text\":\"ITMGContext.GetInstance().GetPttCtrl().GetSpeakerVolume();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"2Nt-Uc8l9CT_ziqi9McNh\",\"children\":[{\"text\":\"Advanced APIs\"}],\"nodeId\":\".E9.AB.98.E7.BA.A7-api\",\"type\":\"h2\"},{\"id\":\"zGj0EVJMW5qZkkBM9vzrL\",\"children\":[{\"text\":\"Getting version number\"}],\"nodeId\":\".E8.8E.B7.E5.8F.96.E7.89.88.E6.9C.AC.E5.8F.B7\",\"type\":\"h3\"},{\"id\":\"YlKobwvBAfNCfzpyaaTlW\",\"children\":[{\"text\":\"This API is used to get the SDK version number for analysis.\"}],\"type\":\"p\"},{\"id\":\"V5vTRWw7AtjfQHOmFSdue\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\".E6.8E.A5.E5.8F.A3.E5.8E.9F.E5.9E.8B34\",\"type\":\"h4\"},{\"id\":\"OuWXY6XAq85U7257C0hxK\",\"autoWrap\":false,\"children\":[{\"id\":\"ynW0VS0EowsH54kL1yiKZ\",\"children\":[{\"text\":\"ITMGContext abstract string GetSDKVersion()\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"lySzVGndofmXaK12MIOVm\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.8131\",\"type\":\"h4\"},{\"id\":\"JK9HLt-TZB2e3SgASEyG4\",\"autoWrap\":false,\"children\":[{\"id\":\"wJEbM5OjvQvlOPL-lfC1X\",\"children\":[{\"text\":\"ITMGContext.GetInstance().GetSDKVersion();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"YR3iCxq-ph4Q2omkCeHtW\",\"children\":[{\"text\":\"Setting log printing level\"}],\"nodeId\":\".E8.AE.BE.E7.BD.AE.E6.89.93.E5.8D.B0.E6.97.A5.E5.BF.97.E7.AD.89.E7.BA.A7\",\"type\":\"h3\"},{\"id\":\"YjtLzhdgBMEWMM7UYfOYx\",\"children\":[{\"text\":\"This API is used to set the level of logs to be printed, and needs to be called before the initialization. It is recommended to keep the default level.\"}],\"type\":\"p\"},{\"id\":\"YlaQyQjvOAgRlNDiUjHam\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\".E6.8E.A5.E5.8F.A3.E5.8E.9F.E5.9E.8B35\",\"type\":\"h4\"},{\"id\":\"10NXuwz0nsUI6c-hc5-Aw\",\"autoWrap\":false,\"children\":[{\"id\":\"_K2a1adP1oedCPGesskc-\",\"children\":[{\"text\":\"ITMGContext SetLogLevel(ITMG_LOG_LEVEL levelWrite, ITMG_LOG_LEVEL levelPrint)\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"3-lmCdu8sKpQ8QKt90GZB\",\"children\":[{\"text\":\"Parameter description\"}],\"nodeId\":\".E5.8F.82.E6.95.B0.E5.90.AB.E4.B9.89\",\"type\":\"h4\"},{\"id\":\"zT1qGNSvPD-COdnubMFO_\",\"children\":[{\"id\":\"QQhZHHoEW3BanzVvFBXSk\",\"children\":[{\"id\":\"Ssl2nvM346DxgtuMkoM0T\",\"children\":[{\"id\":\"fOrMJFbR4ddcuqXkCHuUU\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"SmvLsiRs509TFNzjrwsBS\",\"children\":[{\"id\":\"pP9OatDz3cyJRfjNXxMCQ\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"noD7LseiyPJoA3jQIz1qD\",\"children\":[{\"id\":\"XTyPw8Yp3vc-fv1lkTbMM\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"OQga-ZYQdCSUM52jZ6SRj\",\"children\":[{\"id\":\"stpRDNlkmHDVAG9TCzuoN\",\"children\":[{\"id\":\"_UIrZalePbdFjCFsyQljt\",\"children\":[{\"id\":\"Y-HxtfHz57AFRT2wTN35j\",\"children\":[{\"text\":\"levelWrite\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"G-NQgrxQ8UolmQEmbGXLc\",\"children\":[{\"id\":\"OGHBNIaV5loNBP_7T9I5V\",\"children\":[{\"id\":\"UBImlXepmmaXXdHoVlo4M\",\"children\":[{\"text\":\"ITMG_LOG_LEVEL\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"QjL-eCSSGs0_uX9_lU9f4\",\"children\":[{\"id\":\"CNkVJlfV7Voh-E-3aOyHi\",\"children\":[{\"id\":\"K9RA9lv7SbjpaouKYrXqZ\",\"children\":[{\"text\":\"Sets the level of logs to be written. \"},{\"code\":1,\"text\":\"TMG_LOG_LEVEL_NONE\"},{\"text\":\" indicates not to write. Default value: \"},{\"code\":1,\"text\":\"TMG_LOG_LEVEL_INFO\"},{\"text\":\".\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"C-vQMFeyZ81oRx4qOj6Mu\",\"children\":[{\"id\":\"HrIVPHN42TjS1QZfcM7FF\",\"children\":[{\"id\":\"3WT3pWrbcW4-ysJNSG7YC\",\"children\":[{\"id\":\"JFY9h9DE8ntnc_aZPPC4B\",\"children\":[{\"text\":\"levelPrint\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"9t8X0g34c4CWkRR2Z6x-h\",\"children\":[{\"id\":\"k8LYZToWG1ex0H7aZbWO0\",\"children\":[{\"id\":\"iO5cEIVVnCWdX0LZRaJEJ\",\"children\":[{\"text\":\"ITMG_LOG_LEVEL\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"M_fDASOBp6H1Fau6a0KLu\",\"children\":[{\"id\":\"LKu2tdU2aVr_VwTR1ItCM\",\"children\":[{\"id\":\"y5yqPL1u4klfgaCcP1lGc\",\"children\":[{\"text\":\"Sets the level of logs to be printed. \"},{\"code\":1,\"text\":\"TMG_LOG_LEVEL_NONE\"},{\"text\":\" indicates not to print. Default value: \"},{\"code\":1,\"text\":\"TMG_LOG_LEVEL_ERROR\"},{\"text\":\".\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[11,18,71],\"widthMode\":\"percentage\"},{\"id\":\"7YaS_4qyZJJ8-gJw6xyD7\",\"children\":[{\"code\":1,\"text\":\"ITMG_LOG_LEVEL\"},{\"text\":\" description:\"}],\"type\":\"p\"},{\"id\":\"CNbzdNl8ScMd6LY45dWko\",\"children\":[{\"id\":\"vzK_ZgB07cS9-PtIMVrVz\",\"children\":[{\"id\":\"B983QCiYCykwEx7a0lkiF\",\"children\":[{\"id\":\"AVE2FUL6mhm7r--8zuD-Q\",\"children\":[{\"text\":\"ITMG_LOG_LEVEL\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"O0rpBSJQw4YqAinli0sf6\",\"children\":[{\"id\":\"cSg3PqigQi7vykb1t7t12\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"b3ptcPjuObPPznwnSMufr\",\"children\":[{\"id\":\"Vj0xkgx0Hl-Vpyl3Oy_QZ\",\"children\":[{\"id\":\"0ctpyMEq2JGsYdvQgZ2Eg\",\"children\":[{\"id\":\"lEDx3KeT4RSRyGaojfLqH\",\"children\":[{\"text\":\"TMG_LOG_LEVEL_NONE\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"njReQffD28S_tTU6YUZNR\",\"children\":[{\"id\":\"gkdc5k_BJ-K-OcnB7KVjM\",\"children\":[{\"id\":\"ztFX_SsK3rW4oHvsL52xJ\",\"children\":[{\"text\":\"Does not print logs\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"UN1RvJAZEZJ2gjp23b8Pp\",\"children\":[{\"id\":\"z_oTunUQotv8Btlx_Kufz\",\"children\":[{\"id\":\"3_b9NDVsxnYPf8oKjHbS_\",\"children\":[{\"id\":\"vEtpN8hBsSKrQa95y98JC\",\"children\":[{\"text\":\"TMG_LOG_LEVEL_ERROR\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"czyWbec1eAlRNX6ghGJyE\",\"children\":[{\"id\":\"yCgX6zCswWHE4HZIeeJ3q\",\"children\":[{\"id\":\"q2g2t9p68VXl2ofDkp51h\",\"children\":[{\"text\":\"Prints error logs (default)\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"jSRHaqWHL2AS1Y55ZrpCX\",\"children\":[{\"id\":\"uFsKl_vftSnSTsUDkEujD\",\"children\":[{\"id\":\"LICOaRlubkvot-jh_md23\",\"children\":[{\"id\":\"1wslRFyVE5YWJTEQ7TRnm\",\"children\":[{\"text\":\"TMG_LOG_LEVEL_INFO\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"COD7H7oxcH1oVR2AfHwHk\",\"children\":[{\"id\":\"qCybAs5VYGdRDWgnMDFeZ\",\"children\":[{\"id\":\"26lzVOWWdWBoC7V7s1Txl\",\"children\":[{\"text\":\"Prints info logs\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"efJX5nxUdMAruyaftCBQ4\",\"children\":[{\"id\":\"x24I9dJiFn_o33JRnon4B\",\"children\":[{\"id\":\"tsaT336i6NfmOPfTCGzYD\",\"children\":[{\"id\":\"1SNgq_wUv-u7EQ31fmfoi\",\"children\":[{\"text\":\"TMG_LOG_LEVEL_DEBUG\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ghH-ZjSgjNnIOa258n1Y5\",\"children\":[{\"id\":\"9GIQiH1IPxXNa4z0q0PJg\",\"children\":[{\"id\":\"Q-AvHZaeCryqf6NRIKMkr\",\"children\":[{\"text\":\"Prints debug logs\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"Rfm_-ZkwdKKyALAq_u0HG\",\"children\":[{\"id\":\"DzoQPeG_ub21TbnZSnX3P\",\"children\":[{\"id\":\"GmpP4JsltCt1W1ZVAa170\",\"children\":[{\"id\":\"xj5ARkHbju6KSwk37GIHC\",\"children\":[{\"text\":\"TMG_LOG_LEVEL_VERBOSE\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ID7Tg3jmkMDXP43sQHKtx\",\"children\":[{\"id\":\"2_1XAXSaKLBpyKdnxqiy1\",\"children\":[{\"id\":\"6y5BBGQ51OPcPfKlZU1Px\",\"children\":[{\"text\":\"Prints verbose logs\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[45,55],\"widthMode\":\"percentage\"},{\"id\":\"TSOxMj2bRTUcVgqyKswWV\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.8132\",\"type\":\"h4\"},{\"id\":\"z8-Y4rBHXWbjgCvtqh2ny\",\"autoWrap\":false,\"children\":[{\"id\":\"_9pBaMi7qr9OMNx71tOzM\",\"children\":[{\"text\":\"ITMGContext.GetInstance().SetLogLevel(TMG_LOG_LEVEL_INFO,TMG_LOG_LEVEL_INFO);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"EcrDXUozIAHzADKUhsBEh\",\"children\":[{\"text\":\"Setting the log printing path\"}],\"nodeId\":\".E8.AE.BE.E7.BD.AE.E6.89.93.E5.8D.B0.E6.97.A5.E5.BF.97.E8.B7.AF.E5.BE.84\",\"type\":\"h3\"},{\"id\":\"FBemYfCm7MjcdUP3LgOLG\",\"children\":[{\"text\":\"This API is used to set the log printing path. The default path is as follows. It needs to be called before initialization.\"}],\"type\":\"p\"},{\"id\":\"7ExrqUaTOpFvl-cqBR3pD\",\"children\":[{\"id\":\"jwOL6QM8YFv8dKQQWYWF-\",\"children\":[{\"id\":\"Bn6Rq5AITw9-Ij3824lgt\",\"children\":[{\"id\":\"AY6UL6TkTVxpWCkoETcCR\",\"children\":[{\"text\":\"Platform\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"o-uQLkh-9iC9q0Pdov4sG\",\"children\":[{\"id\":\"bvc3j975hhSJcLrxy1goN\",\"children\":[{\"text\":\"Path\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"jvDX5EYUlFOhMO43goVmN\",\"children\":[{\"id\":\"UVScykgz8sguymBElpyqh\",\"children\":[{\"id\":\"ZSgNXcdN_r1QhSB1-OC0e\",\"children\":[{\"id\":\"Yw3XNVVLm06HBRubkDl42\",\"children\":[{\"text\":\"Windows\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"lzWO0qryN0ZqrMythfgtT\",\"children\":[{\"id\":\"NUx7a-GfKGDpZj-7Qlf29\",\"children\":[{\"id\":\"SIAv4Au-MxUgjE_2kPBqC\",\"children\":[{\"text\":\"%appdata%\\\\Tencent\\\\GME\\\\ProcessName\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"r4zwCflzHst8awJG68J33\",\"children\":[{\"id\":\"xDOgY39nvnaO3Uk72Usrx\",\"children\":[{\"id\":\"RYiIoCV2t7Kgzi9-I9cZx\",\"children\":[{\"id\":\"PGR-S4HzIFb7TEc64faNj\",\"children\":[{\"text\":\"iOS\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Lo6_yWXcSjOYNV4GBpC8r\",\"children\":[{\"id\":\"qx8-pbBd23Z5xBUAZS4Gh\",\"children\":[{\"id\":\"D-y-ZuOW3puVPLDWR2edf\",\"children\":[{\"text\":\"Application/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/Documents\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"gg1s-6acy3zoB8F7m06FK\",\"children\":[{\"id\":\"OPcBxgP-8tYqty_rMqmQv\",\"children\":[{\"id\":\"LVuMv1linkJemTdHYhAIA\",\"children\":[{\"id\":\"_4j5Xv7sconpmyVzGDvYm\",\"children\":[{\"text\":\"Android\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"t3KKkaDYvJwzoUUhWqVfY\",\"children\":[{\"id\":\"pA9he3PwnWP6FmfpA2e4c\",\"children\":[{\"id\":\"3gQrVw5GBDhAUHimJPtz0\",\"children\":[{\"text\":\"/sdcard/Android/data/xxx.xxx.xxx/files\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"m8K9we1xmsUoRDQdE58IL\",\"children\":[{\"id\":\"RgEPHQotgSj7wSG4lOQwP\",\"children\":[{\"id\":\"mdYX3s4Iesg06Lhz74cX6\",\"children\":[{\"id\":\"PKlkhtpXzUYe0NtnUU7KG\",\"children\":[{\"text\":\"macOS\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"2GgXxkL4KlbiDWh8lPcDv\",\"children\":[{\"id\":\"KR5hpb9iqzP86G_NkAJON\",\"children\":[{\"id\":\"vMBWFnhI8rIbKuRy0LJFy\",\"children\":[{\"text\":\"/Users/username/Library/Containers/xxx.xxx.xxx/Data/Documents\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[16,84],\"widthMode\":\"percentage\"},{\"id\":\"dPlI0cJmTPZH-Uq3D-0kd\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\".E6.8E.A5.E5.8F.A3.E5.8E.9F.E5.9E.8B36\",\"type\":\"h4\"},{\"id\":\"5X6_tbC6tvK8-RajNqLaw\",\"autoWrap\":false,\"children\":[{\"id\":\"bdLd6ByIobBCQC5d7i6M8\",\"children\":[{\"text\":\"ITMGContext SetLogPath(string logDir)\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"npZQ_yB4UxRBcQMmDl9Cd\",\"children\":[{\"id\":\"LCh01QnHhDIhdUpHjGY6K\",\"children\":[{\"id\":\"u-aXviGsJzAN_nDHTRe2U\",\"children\":[{\"id\":\"CjOUVdWKhYC5Q-QP502tl\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Q3HvD2Uist8BerIQEkxpr\",\"children\":[{\"id\":\"ff1BguQ1kBn6YOB1bVmeF\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"oNabfyrNK9E8i94xg06C6\",\"children\":[{\"id\":\"i_N88NWvrAcVRrT_I03qL\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"c_5lNg5x3jFKlei8b9YdH\",\"children\":[{\"id\":\"HK6YbbgcIdK7-7nVTjsWi\",\"children\":[{\"id\":\"P7HBxyx2Ngbb-rP70QwQS\",\"children\":[{\"id\":\"40uKHc-2FdiZrFM1zBUYz\",\"children\":[{\"text\":\"logDir\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"OVo797qIeovEO85GYqLtm\",\"children\":[{\"id\":\"DIvvcU5dRwWLkkgo8f_c4\",\"children\":[{\"id\":\"vkNy7PWYpR1blNfbqs6ti\",\"children\":[{\"text\":\"String\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"m_ZedG1p7tbhuRV8oK4N8\",\"children\":[{\"id\":\"uv0KBK2-wAnKVIsxCeXHu\",\"children\":[{\"id\":\"MX7-XKkRBOga_I9jWJCcd\",\"children\":[{\"text\":\"Path\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\"},{\"id\":\"gxSFk0kngajHyEZS1DXrd\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.8133\",\"type\":\"h4\"},{\"id\":\"xaTk7FetKN1Z3d8toeyM4\",\"autoWrap\":false,\"children\":[{\"id\":\"3koJL130L1IWHkvfTz5-u\",\"children\":[{\"text\":\"ITMGContext.GetInstance().SetLogPath(path);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"PXnjIIxxErlP7Si0qQae1\",\"children\":[{\"text\":\"\"}],\"type\":\"p\"}]"}},"41636":{"categoryId":607,"weight":140,"type":"page","extension":"","pid":15180,"id":41636,"lang":"en","title":"Project Export","pdfUrl":"","docType":"default","children":[],"firstReleaseTime":"2021-08-11 18:48:17","recentReleaseTime":"2021-08-11 18:48:17","content":{"title":"Project Export","body":"
This document describes how to configure a Unity project export for the GME APIs for Unity.

Export for iOS

When exporting a Unity project as an Xcode project, you need to process GME dynamic libraries. The processing steps vary by Unity version.

1. Process dynamic libraries (for Unity 2019 or later)

Configuration principle

Create an Editor OnPostprocessBuild script and use the UnityEditor.iOS.Xcode.Extensions.PBXProjectExtensions.AddFileToEmbedFrameworks API, which will automatically copy the dynamic libraries to the framework directory of the final output bundle and sign them.
You can add or remove dynamic libraries based on the required features and determine the list of imported frameworks in the sample code based on the dynamic library list. For more information on dynamic library features, see SDK Version Upgrade Guide.
string[] framework_names = {
"libgme_fdkaac.framework",
"libgme_lamemp3.framework",
"libgme_ogg.framework",
"libgme_soundtouch.framework"
};

Sample code

You can refer to the add_dylib.cs script file in the demo project and put this part of code in the Editor folder of the project as needed.
[UnityEditor.Callbacks.PostProcessBuild(1002)]
public static void OnPostprocessBuild (UnityEditor.BuildTarget BuildTarget, string path){
if (BuildTarget == UnityEditor.BuildTarget.iOS) {
UnityEngine.Debug.Log ("OnPostprocessBuild add_dylib:" + path);
#if UNITY_EDITOR_OSX || UNITY_STANDALONE_OSX
{
string projPath = UnityEditor.iOS.Xcode.PBXProject.GetPBXProjectPath (path);
UnityEditor.iOS.Xcode.PBXProject proj = new UnityEditor.iOS.Xcode.PBXProject ();

proj.ReadFromString (System.IO.File.ReadAllText (projPath));
// string targetGuid = proj.TargetGuidByName (UnityEditor.iOS.Xcode.PBXProject.GetUnityTargetName ()); // 2018
string targetGuid = proj.GetUnityMainTargetGuid();\t// 2019

// Delete according to the imported frameworks
string[] framework_names = {
"libgme_fdkaac.framework",
"libgme_lamemp3.framework",
"libgme_ogg.framework",
"libgme_soundtouch.framework"
};

for (int i = 0; i < framework_names.Length; i++)
{
string framework_name = framework_names[i];
string dylibGuid = null;
dylibGuid = proj.FindFileGuidByProjectPath("Frameworks/Plugins/iOS/" + framework_name);

if (dylibGuid == null) {
UnityEngine.Debug.LogWarning (framework_name + " guid not found");
} else {
UnityEngine.Debug.LogWarning (framework_name + " guid:" + dylibGuid);
// proj.AddDynamicFramework (targetGuid, dylibGuid);
UnityEditor.iOS.Xcode.Extensions.PBXProjectExtensions.AddFileToEmbedFrameworks(proj, targetGuid, dylibGuid);

proj.AddBuildProperty(targetGuid, "LD_RUNPATH_SEARCH_PATHS", "@executable_path/Frameworks");
System.IO.File.WriteAllText (projPath, proj.WriteToString ());
}
}
}
#endif
}
}

2. Process dynamic libraries (for Unity versions earlier than 2019)

Currently, only Unity 2019 or later can use UnityEditor.iOS.Xcode.Extensions. You can export the UnityEditor.iOS.Xcode package from a later version for use in an earlier version, or directly decompress the attachment UnityEditorAV.iOS.XCode.zip and place it in the Editor folder of the project directory.

\"\"



3. Export the Xcode project

Make sure that the Xcode version is 10.0 or later. Export the Xcode project from the Unity Editor.

4. Disable Bitcode

If the following error occurs during the compilation, disable Bitcode. Search for Bitcode in Targets > Build Settings and set the corresponding option to NO.

\"\"



5. Add access to iOS

Required background modes: Allows running in the background (optional).
Microphone Usage Description: Allows access to microphone.

6. Add library files

If the following error occurs during compilation, please complete the library files.

\"\"


The list of library files is as follows:
libc++.tbd
CoreMedia.framework
libresolv.tbd
AVFoundation.framework
Security.framework
CoreAudio.framework
AudioToolbox.framework
libiconv.tbd
libz.tbd
SystemConfiguration.framework
OpenAL.framework

7. Add libresolv9.tbd

If the following error occurs:

\"\"


Add libresolv9.tbd to UnityFramework.

\"\"



8. FAQs about export

If you have any questions during exporting, see Exporting for iOS.

Export for Android

1. Delete unnecessary .lib files

The GME SDK for Unity provides lib files for arm64-v8a, armeabi-v7a, and x86 by default. Please delete unnecessary files as needed.
Architecture loss
A crash will occur if the exported Android executable file lacks the specified architecture.
After the executable apk file is exported, if a black screen or crash occurs when you open it, it is generally caused by the lack of corresponding architecture lib file. Please add or delete the corresponding architecture lib file according to the project.

2. Configure permissions

2.1 Required permissions\nAdd the following permissions in the AndroidManifest.xml file of the project:
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
2.2 Adding permissions as needed\nAdd the following permissions in the AndroidManifest.xml file of the project as needed:
Read/Write permission
The read/write permission is not required. Determine whether to add it according to the following rules:
If you use the default log path (/SDCARD/Android/Data/files), it means that you do not call SetLogPath, and do not need Write_External_Storage permission.
If you call the setLogPath API to set the log path to an external storage device, and the storage path of the voice message recording is an external storage device, you need to apply for the Write_External_Storage permission to the user and get the user's approval.
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
Bluetooth permission
Add the Bluetooth permission according to the following rules:
If targetSDKVersion in the project is v30 or earlier:
<uses-permission android:name="android.permission.BLUETOOTH"/>
If targetSDKVersion in the project is v31 or later:
<uses-permission android:name="android.permission.BLUETOOTH" android:maxSdkVersion="30" />
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />

3. FAQs about export

If you have any questions during exporting, see Exporting for Android.

Export for Windows

If you have any questions during exporting, see Exporting for Windows.

Export for WebGL

1. Configure WebGL plugins

Set the scope of gmesdk.dll on Windows to prevent it from conflicting with gmesdk on WebGL.

\"\"



\"\"



2. Disable Flare Layer (on Unity 2018 or later)


\"\"


As certain Unity versions no longer support the Flare Layer mode in MainCamera, you need to deselect Flare Layer in the scene to be built; otherwise, the following error will be reported:

\"\"



3. Select a template

When exporting to WebGL, select a WebGL template of GME to ensure that the relevant dependent libraries are imported to the build. The project will use the GMEWebGLTemplatesUnity2018 template by default, which supports Unity 2018 and 2019. For Unity 2020 and 2021, you need to use GMEWebGLTemplatesUnity2021 to create the build.

\"\"



4. Import frontend libraries

Before importing GME for WebGL to your project, you need to manually import frontend libraries, place the library files in the corresponding import locations, and add the audio tag as shown below. If you want the above operations to be automatically completed every time you build a Unity project, you can add the corresponding template to your project by referring to the GME demo for WebGL.

\"\"



5. FAQs about export

If you have any questions during export, see Program Export.
","recentReleaseTime":"2024-12-18 14:51:13","slate":"[{\"id\":\"b-mfrLSE40QP4JHwAMCQn\",\"children\":[{\"text\":\"This document describes how to configure a Unity project export for the GME APIs for Unity.\"}],\"type\":\"p\"},{\"id\":\"UFaZ6dSF9LpXAo55hHh2J\",\"children\":[{\"text\":\"Export for iOS\"}],\"nodeId\":\"export-for-ios\",\"type\":\"h2\"},{\"id\":\"8UkBRBmHZlD2slMvYmpDn\",\"children\":[{\"text\":\"When exporting a Unity project as an Xcode project, you need to process GME dynamic libraries. The processing steps vary by Unity version.\"}],\"type\":\"p\"},{\"id\":\"uzVKPRmSQGD4jC4_wimh7\",\"children\":[{\"text\":\"1. Process dynamic libraries (for Unity 2019 or later)\"}],\"nodeId\":\"1.-process-dynamic-libraries-(for-unity-2019-or-later)\",\"type\":\"h3\"},{\"id\":\"Uq-wJRWFuOtoo9lHihlSq\",\"children\":[{\"text\":\"Configuration principle\"}],\"nodeId\":\"configuration-principle\",\"type\":\"h4\"},{\"id\":\"boSbWcM3m8QNcsd4R1yEF\",\"children\":[{\"text\":\"Create an \"},{\"code\":1,\"text\":\"Editor OnPostprocessBuild\"},{\"text\":\" script and use the \"},{\"code\":1,\"text\":\"UnityEditor.iOS.Xcode.Extensions.PBXProjectExtensions.AddFileToEmbedFrameworks\"},{\"text\":\" API, which will automatically copy the dynamic libraries to the \"},{\"code\":1,\"text\":\"framework\"},{\"text\":\" directory of the final output bundle and sign them.\"}],\"type\":\"p\"},{\"id\":\"lUCAmvWR9RI-W4kw_R3pd\",\"children\":[{\"text\":\"You can add or remove dynamic libraries based on the required features and determine the list of imported frameworks in the sample code based on the dynamic library list. For more information on dynamic library features, see \"},{\"id\":\"U4gYyuAIikf6ncUdHr6qN\",\"children\":[{\"text\":\"SDK Version Upgrade Guide\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://intl.cloud.tencent.com/document/product/607/32363\",\"props\":{\"type\":\"link\",\"url\":\"https://intl.cloud.tencent.com/document/product/607/32363\"},\"type\":\"ref\"},{\"text\":\".\"}],\"type\":\"p\"},{\"id\":\"rWwrGMpA7rsdgPtdFucGX\",\"children\":[{\"id\":\"CNf9oyzr902Gco_wp1_4r\",\"children\":[{\"text\":\"string[] framework_names = {\"}],\"type\":\"code-line\"},{\"id\":\"4DE5ruKjBq7hx-OH0VB9x\",\"children\":[{\"text\":\" \\\"libgme_fdkaac.framework\\\",\"}],\"type\":\"code-line\"},{\"id\":\"qSnfeUKOYf3XMrOCg-OVp\",\"children\":[{\"text\":\" \\\"libgme_lamemp3.framework\\\",\"}],\"type\":\"code-line\"},{\"id\":\"IjMDpiQ5GXaLeqKQnSnST\",\"children\":[{\"text\":\" \\\"libgme_ogg.framework\\\",\"}],\"type\":\"code-line\"},{\"id\":\"Wxc1nJFL8ZjUY3KFUY5de\",\"children\":[{\"text\":\" \\\"libgme_soundtouch.framework\\\"\"}],\"type\":\"code-line\"},{\"id\":\"L-3i2A0gPrxVJAw8Sjzi6\",\"children\":[{\"text\":\"};\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"xq0IzNRbrJsy3PCDK7osu\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code\",\"type\":\"h4\"},{\"id\":\"L5pxHcDSuUA5yNbyUa8FW\",\"children\":[{\"text\":\"You can refer to the \"},{\"code\":1,\"text\":\"add_dylib.cs\"},{\"text\":\" script file in the demo project and put this part of code in the \"},{\"code\":1,\"text\":\"Editor\"},{\"text\":\" folder of the project as needed.\"}],\"type\":\"p\"},{\"id\":\"OTOv87S7vh5m33qCugpx3\",\"children\":[{\"id\":\"ppwyfBReZoRkniFa0DMGs\",\"children\":[{\"text\":\"[UnityEditor.Callbacks.PostProcessBuild(1002)]\"}],\"type\":\"code-line\"},{\"id\":\"zjGfc7lYvsz88sCj_xPxb\",\"children\":[{\"text\":\"public static void OnPostprocessBuild (UnityEditor.BuildTarget BuildTarget, string path){ \"}],\"type\":\"code-line\"},{\"id\":\"XdeJi3Zx5Evpgt28AaK1y\",\"children\":[{\"text\":\" if (BuildTarget == UnityEditor.BuildTarget.iOS) {\"}],\"type\":\"code-line\"},{\"id\":\"a3ZYcbC1EnLZq29FMrLUH\",\"children\":[{\"text\":\" UnityEngine.Debug.Log (\\\"OnPostprocessBuild add_dylib:\\\" + path);\"}],\"type\":\"code-line\"},{\"id\":\"jdPsfWJGS0Ups2sgnC3yn\",\"children\":[{\"text\":\"#if UNITY_EDITOR_OSX || UNITY_STANDALONE_OSX\"}],\"type\":\"code-line\"},{\"id\":\"xT_9sW5gH-0kPSo7p3FGQ\",\"children\":[{\"text\":\" {\"}],\"type\":\"code-line\"},{\"id\":\"0yEOwSrSwflmirKVOC2F6\",\"children\":[{\"text\":\" string projPath = UnityEditor.iOS.Xcode.PBXProject.GetPBXProjectPath (path); \"}],\"type\":\"code-line\"},{\"id\":\"QRnagB0HZU81cAbOdA5k5\",\"children\":[{\"text\":\" UnityEditor.iOS.Xcode.PBXProject proj = new UnityEditor.iOS.Xcode.PBXProject (); \"}],\"type\":\"code-line\"},{\"id\":\"3n_UEGNSD-jkpdNq8ygcx\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"},{\"id\":\"T6x3AEV6patnMgG-j2GDz\",\"children\":[{\"text\":\" proj.ReadFromString (System.IO.File.ReadAllText (projPath)); \"}],\"type\":\"code-line\"},{\"id\":\"SaoJtD19ocqOxce6YYZFx\",\"children\":[{\"text\":\" // string targetGuid = proj.TargetGuidByName (UnityEditor.iOS.Xcode.PBXProject.GetUnityTargetName ()); // 2018\"}],\"type\":\"code-line\"},{\"id\":\"yfkj2gqxbLcDokrqIQlX7\",\"children\":[{\"text\":\" string targetGuid = proj.GetUnityMainTargetGuid();\\t// 2019\"}],\"type\":\"code-line\"},{\"id\":\"XziXMs-ZI6b7NAp02lbQm\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"},{\"id\":\"pxX-T5KMJ2dIkyZU0Q6jq\",\"children\":[{\"text\":\" // Delete according to the imported frameworks\"}],\"type\":\"code-line\"},{\"id\":\"bWmZ8lYz4x2FBe4hNBg1E\",\"children\":[{\"text\":\" string[] framework_names = {\"}],\"type\":\"code-line\"},{\"id\":\"CATnUAcZdb_a83GK55oTg\",\"children\":[{\"text\":\" \\\"libgme_fdkaac.framework\\\",\"}],\"type\":\"code-line\"},{\"id\":\"ZdTJaiiRIz9OWXJ0tc4pf\",\"children\":[{\"text\":\" \\\"libgme_lamemp3.framework\\\",\"}],\"type\":\"code-line\"},{\"id\":\"OWs2hu_e5BmKRgQlQtQw5\",\"children\":[{\"text\":\" \\\"libgme_ogg.framework\\\",\"}],\"type\":\"code-line\"},{\"id\":\"0ziKUzgWM1bJFrgk3eIaK\",\"children\":[{\"text\":\" \\\"libgme_soundtouch.framework\\\"\"}],\"type\":\"code-line\"},{\"id\":\"6TBwCNVAuMu7LfbOSUCKw\",\"children\":[{\"text\":\" };\"}],\"type\":\"code-line\"},{\"id\":\"rNXzhdQlMba4HVFLAc22Y\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"},{\"id\":\"wYb9v3TDek-YfrC2FJGiw\",\"children\":[{\"text\":\" for (int i = 0; i < framework_names.Length; i++)\"}],\"type\":\"code-line\"},{\"id\":\"il6araV4Lhay3Lt-MAKty\",\"children\":[{\"text\":\" {\"}],\"type\":\"code-line\"},{\"id\":\"-ZgvqdG7mdf_L1zNgLC1H\",\"children\":[{\"text\":\" string framework_name = framework_names[i];\"}],\"type\":\"code-line\"},{\"id\":\"GtTbIodsg4NtH00VXg--z\",\"children\":[{\"text\":\" string dylibGuid = null;\"}],\"type\":\"code-line\"},{\"id\":\"c1Hcfc-KGEZJci0cx0-2g\",\"children\":[{\"text\":\" dylibGuid = proj.FindFileGuidByProjectPath(\\\"Frameworks/Plugins/iOS/\\\" + framework_name);\"}],\"type\":\"code-line\"},{\"id\":\"rFQUR77_btwpcSDjpjQCW\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"},{\"id\":\"XhbiQSasKFkpnBvULcR2D\",\"children\":[{\"text\":\" if (dylibGuid == null) {\"}],\"type\":\"code-line\"},{\"id\":\"O3Wvalh4Vaz3B4c70dSCp\",\"children\":[{\"text\":\" UnityEngine.Debug.LogWarning (framework_name + \\\" guid not found\\\");\"}],\"type\":\"code-line\"},{\"id\":\"Bm2kuNGRjaNLSCOaBnvKO\",\"children\":[{\"text\":\" } else {\"}],\"type\":\"code-line\"},{\"id\":\"VdEO7HPYxWhFNDq5GVFSA\",\"children\":[{\"text\":\" UnityEngine.Debug.LogWarning (framework_name + \\\" guid:\\\" + dylibGuid);\"}],\"type\":\"code-line\"},{\"id\":\"gHX-nJmtxGZagY-Oc2jBj\",\"children\":[{\"text\":\" // proj.AddDynamicFramework (targetGuid, dylibGuid);\"}],\"type\":\"code-line\"},{\"id\":\"5Othq4SmT204lknRUSUqL\",\"children\":[{\"text\":\" UnityEditor.iOS.Xcode.Extensions.PBXProjectExtensions.AddFileToEmbedFrameworks(proj, targetGuid, dylibGuid);\"}],\"type\":\"code-line\"},{\"id\":\"c9QCxNCzHN8ADkjeL8dfl\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"},{\"id\":\"MAf0KEtgJ8HQstevEInB0\",\"children\":[{\"text\":\" proj.AddBuildProperty(targetGuid, \\\"LD_RUNPATH_SEARCH_PATHS\\\", \\\"@executable_path/Frameworks\\\");\"}],\"type\":\"code-line\"},{\"id\":\"xAqTOsKhgT1jW6Kxz2ChY\",\"children\":[{\"text\":\" System.IO.File.WriteAllText (projPath, proj.WriteToString ());\"}],\"type\":\"code-line\"},{\"id\":\"4R-v69D9PJ6KsFkrYTAji\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"730s1X5bT6naIA7SBerd3\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"qfLJbY2ilBVe6G31ha8RD\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"3MhsP4S4c4EMonohZsR-W\",\"children\":[{\"text\":\"#endif\"}],\"type\":\"code-line\"},{\"id\":\"w-26cQ0dUm3hk9TrP7Wp9\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"U6rC_N0qm4PEURG6ZrniB\",\"children\":[{\"text\":\"}\"}],\"type\":\"code-line\"}],\"language\":\"c#\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"9nFtYVqFsC-UT4iq0FRAP\",\"children\":[{\"text\":\"2. Process dynamic libraries (for Unity versions earlier than 2019)\"}],\"nodeId\":\"2.-process-dynamic-libraries-(for-unity-versions-earlier-than-2019)\",\"type\":\"h3\"},{\"id\":\"AGiPClcsKGQ2t-jYqxCbl\",\"children\":[{\"text\":\"Currently, only Unity 2019 or later can use \"},{\"code\":1,\"text\":\"UnityEditor.iOS.Xcode.Extensions\"},{\"text\":\". You can export the \"},{\"code\":1,\"text\":\"UnityEditor.iOS.Xcode\"},{\"text\":\" package from a later version for use in an earlier version, or directly decompress the attachment \"},{\"type\":\"ref\",\"props\":{\"type\":\"link\",\"url\":\"https://dldir1.qq.com/hudongzhibo/QCloud_TGP/GME/GME2.9.0/Other/UnityEditorAV.iOS.XCode.zip\"},\"children\":[{\"text\":\"UnityEditorAV.iOS.XCode.zip\"}],\"id\":\"YgWdZAmoQ2lEm4Ul40RTi\"},{\"text\":\" and place it in the \"},{\"code\":1,\"text\":\"Editor\"},{\"text\":\" folder of the project directory.\"}],\"type\":\"p\"},{\"type\":\"p\",\"children\":[{\"text\":\"\"},{\"id\":\"D_h08wKlaQKtVVRwpHf1y\",\"alt\":\"\",\"children\":[{\"text\":\"\"}],\"inline\":true,\"type\":\"image\",\"url\":\"https://cloudcache.intl.tencent-cloud.com/cms/backend-cms/3d6acbd3b36e11eeb2a1525400170219.png\",\"naturalSize\":[1466,576],\"size\":[900,353]},{\"text\":\"\"}],\"id\":\"bsCWatswVr5I1A64gBcBG\"},{\"id\":\"38OODY5jT3ub_rrZjzW_F\",\"children\":[{\"text\":\"3. Export the Xcode project\"}],\"nodeId\":\"3.-export-the-xcode-project\",\"type\":\"h3\"},{\"id\":\"RH2Ik2yXC6N2jmhALacem\",\"children\":[{\"text\":\"Make sure that the Xcode version is 10.0 or later. Export the Xcode project from the Unity Editor.\"}],\"type\":\"p\"},{\"id\":\"gbnC0UYM6bb7k79rAC_pe\",\"children\":[{\"text\":\"4. Disable Bitcode\"}],\"nodeId\":\"4.-disable-bitcode\",\"type\":\"h3\"},{\"id\":\"un92wiolimZjZIzMHk_8N\",\"children\":[{\"text\":\"If the following error occurs during the compilation, disable Bitcode. Search for Bitcode in \"},{\"b\":1,\"text\":\"Targets\"},{\"text\":\" > \"},{\"b\":1,\"text\":\"Build Settings\"},{\"text\":\" and set the corresponding option to \"},{\"code\":1,\"text\":\"NO\"},{\"text\":\".\"}],\"type\":\"p\"},{\"id\":\"_WcqcF5VLUsQgEG_kakUD\",\"type\":\"p\",\"children\":[{\"text\":\"\"},{\"id\":\"QwJECav2ap3LxXfMSgEbq\",\"alt\":\"\",\"children\":[{\"text\":\"\"}],\"inline\":true,\"type\":\"image\",\"url\":\"https://cloudcache.intl.tencent-cloud.com/cms/backend-cms/3d67dd45b36e11ee9939525400461a83.png\",\"naturalSize\":[807,85],\"size\":[807,85]},{\"text\":\"\"}]},{\"id\":\"Jb4xkkcN9LIM-KgTisBhX\",\"children\":[{\"text\":\"5. Add access to iOS\"}],\"nodeId\":\"5.-add-access-to-ios\",\"type\":\"h3\"},{\"id\":\"ji5-SL8HuCPjiV9JqSMyq\",\"children\":[{\"text\":\"Required background modes: Allows running in the background (optional).\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"jINY82rV8_qTPkl4_5ybc\",\"children\":[{\"text\":\"Microphone Usage Description: Allows access to microphone.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"eCNG-kuNRyHeD9QGhqz8_\",\"children\":[{\"text\":\"6. Add library files\"}],\"nodeId\":\"6.-add-library-files\",\"type\":\"h3\"},{\"id\":\"ThRu9rImVS0LGcZUPdBgr\",\"children\":[{\"text\":\"If the following error occurs during compilation, please complete the library files.\"}],\"type\":\"p\"},{\"id\":\"SjUxmskltV-cyNXpirpWw\",\"type\":\"p\",\"children\":[{\"text\":\"\"},{\"id\":\"GW802R7JtDzHS5CUtyCKI\",\"alt\":\"\",\"children\":[{\"text\":\"\"}],\"inline\":true,\"type\":\"image\",\"url\":\"https://cloudcache.intl.tencent-cloud.com/cms/backend-cms/3d686df5b36e11eeae9a525400c26da5.png\",\"naturalSize\":[246,274],\"size\":[246,274]},{\"text\":\"\"}]},{\"id\":\"qELxppSuRqdQtFBpdhGXl\",\"type\":\"p\",\"children\":[{\"text\":\"The list of library files is as follows:\"}]},{\"id\":\"GcgEiQwiiJ4DJK5C9lyI6\",\"children\":[{\"id\":\"kTMhi5OipadERpsxJZ2Iy\",\"children\":[{\"text\":\"libc++.tbd\"}],\"type\":\"code-line\"},{\"id\":\"QjkYdjaEpkzNwihM_lQBp\",\"children\":[{\"text\":\"CoreMedia.framework\"}],\"type\":\"code-line\"},{\"id\":\"lu6eVMLJpCE2Sb8eP9AbH\",\"children\":[{\"text\":\"libresolv.tbd\"}],\"type\":\"code-line\"},{\"id\":\"HXG5493RFIzL-cOHqVx5x\",\"children\":[{\"text\":\"AVFoundation.framework\"}],\"type\":\"code-line\"},{\"id\":\"Ulh0E3ZUqWHDCUlWUcIGg\",\"children\":[{\"text\":\"Security.framework\"}],\"type\":\"code-line\"},{\"id\":\"IVkjAM8koVgRceNzEBAje\",\"children\":[{\"text\":\"CoreAudio.framework\"}],\"type\":\"code-line\"},{\"id\":\"3MYsnVd8a_dptwBgVBAqH\",\"children\":[{\"text\":\"AudioToolbox.framework\"}],\"type\":\"code-line\"},{\"id\":\"8c0tqhSvUHIUkjUv2EzwN\",\"children\":[{\"text\":\"libiconv.tbd\"}],\"type\":\"code-line\"},{\"id\":\"OM7eztFlbYcUvhK7TATYR\",\"children\":[{\"text\":\"libz.tbd\"}],\"type\":\"code-line\"},{\"id\":\"pnRJ3WTJ4MLXpfI2drLoK\",\"children\":[{\"text\":\"SystemConfiguration.framework\"}],\"type\":\"code-line\"},{\"id\":\"22SPAGMBPH2vgSVIFRTK9\",\"children\":[{\"text\":\"OpenAL.framework\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"YgyERND1Or82kYGYdwB4Y\",\"children\":[{\"text\":\"7. Add \"},{\"code\":1,\"text\":\"libresolv9.tbd\"}],\"nodeId\":\"7.-add-.60libresolv9.tbd.60\",\"type\":\"h3\"},{\"id\":\"9BJbVNYEruSD_wcUzKoXD\",\"children\":[{\"text\":\"If the following error occurs:\"}],\"type\":\"p\"},{\"type\":\"p\",\"children\":[{\"text\":\"\"},{\"id\":\"7h7DS8Os45FRavkyjGMlE\",\"alt\":\"\",\"children\":[{\"text\":\"\"}],\"inline\":true,\"type\":\"image\",\"url\":\"https://cloudcache.intl.tencent-cloud.com/cms/backend-cms/3d6ed2c0b36e11eeae9a525400c26da5.png\",\"naturalSize\":[769,196],\"size\":[769,196]},{\"text\":\"\"}],\"id\":\"KpI72tFYsrHTqMNXGPvFS\"},{\"id\":\"5a6IurGwrRvEN5BVZBl4q\",\"children\":[{\"text\":\"Add \"},{\"code\":1,\"text\":\"libresolv9.tbd\"},{\"text\":\" to \"},{\"b\":1,\"text\":\"UnityFramework\"},{\"text\":\".\"}],\"type\":\"p\"},{\"type\":\"p\",\"children\":[{\"text\":\"\"},{\"id\":\"-0KdbE0ScgOLDc-QD8OXz\",\"alt\":\"\",\"children\":[{\"text\":\"\"}],\"inline\":true,\"type\":\"image\",\"url\":\"https://cloudcache.intl.tencent-cloud.com/cms/backend-cms/3d6e56c8b36e11ee9fd6525400bb593a.jpeg\",\"naturalSize\":[1442,446],\"size\":[802,248]},{\"text\":\"\"}],\"id\":\"Smjq1h53Zc4stlk5qZvIe\"},{\"id\":\"HQrxT4l8mEJgoPOIjQ1yT\",\"children\":[{\"text\":\"8. FAQs about export\"}],\"nodeId\":\"8.-faqs-about-export\",\"type\":\"h3\"},{\"id\":\"hIx8R_xpAkWgPrnmwHr8X\",\"children\":[{\"text\":\"If you have any questions during exporting, see \"},{\"id\":\"nafouwBNDOORiyhA0nP8m\",\"children\":[{\"text\":\"Exporting for iOS\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://intl.cloud.tencent.com/document/product/607/39522\",\"props\":{\"type\":\"link\",\"url\":\"https://intl.cloud.tencent.com/document/product/607/39522\"},\"type\":\"ref\"},{\"text\":\".\"}],\"type\":\"p\"},{\"id\":\"5PsntRiD4nl5BvTlWkg_b\",\"children\":[{\"text\":\"Export for Android\"}],\"nodeId\":\"export-for-android\",\"type\":\"h2\"},{\"id\":\"9JWlxhnWgz6iNrdvIBSto\",\"children\":[{\"text\":\"1. Delete unnecessary .lib files\"}],\"nodeId\":\"1.-delete-unnecessary-.lib-files\",\"type\":\"h3\"},{\"id\":\"0kg3MctZkjtsrvHfBRhZH\",\"children\":[{\"text\":\"The GME SDK for Unity provides lib files for arm64-v8a, armeabi-v7a, and x86 by default. Please delete unnecessary files as needed.\"}],\"type\":\"p\"},{\"id\":\"E6_idZPUg9NOlXyb3pS5j\",\"children\":[{\"id\":\"GlYIAaZBvdo3A5FZ038en\",\"children\":[{\"b\":1,\"color\":\"#FF7800\",\"text\":\"Architecture loss\"}],\"type\":\"p\"},{\"id\":\"2vvASM_So17heasy6RvK5\",\"children\":[{\"text\":\"A crash will occur if the exported Android executable file lacks the specified architecture.\"}],\"type\":\"p\"}],\"hintType\":\"warn\",\"type\":\"hint\"},{\"id\":\"0Jk-YiGxvEGaqSnakVniC\",\"children\":[{\"text\":\"After the executable \"},{\"code\":1,\"text\":\"apk\"},{\"text\":\" file is exported, if a black screen or crash occurs when you open it, it is generally caused by the lack of corresponding architecture \"},{\"code\":1,\"text\":\"lib\"},{\"text\":\" file. Please add or delete the corresponding architecture \"},{\"code\":1,\"text\":\"lib\"},{\"text\":\" file according to the project.\"}],\"type\":\"p\"},{\"id\":\"YHJfw2d8RxLzNuH8vpigd\",\"children\":[{\"text\":\"2. Configure permissions\"}],\"nodeId\":\"2.-configure-permissions\",\"type\":\"h3\"},{\"id\":\"wgmNIwnxyxE2Z8fDggwG8\",\"children\":[{\"b\":1,\"text\":\"2.1 Required permissions\"},{\"text\":\"\\nAdd the following permissions in the \"},{\"code\":1,\"text\":\"AndroidManifest.xml\"},{\"text\":\" file of the project:\"}],\"type\":\"p\"},{\"id\":\"yp974Onf4ssdMLTRws1H4\",\"children\":[{\"id\":\"mydgHwiOicCrJYkw02YRL\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"},{\"id\":\"NCQ7siG2q0MiO_T1YgX28\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"},{\"id\":\"DNyGx4L3QDFr3TKl515D5\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"},{\"id\":\"l0mCiMlGMBrXmuAWY4cIf\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"},{\"id\":\"Ibwo0SHUVHNIvp3b4r3b2\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"feH-LuWJhYyq3Pw5jQA5W\",\"children\":[{\"b\":1,\"text\":\"2.2 Adding permissions as needed\"},{\"text\":\"\\nAdd the following permissions in the \"},{\"code\":1,\"text\":\"AndroidManifest.xml\"},{\"text\":\" file of the project as needed:\"}],\"type\":\"p\"},{\"id\":\"AatpvmxQoXqiWebphCy4c\",\"children\":[{\"children\":[{\"id\":\"zMntMCy5ULCpImVDeAlf0\",\"children\":[{\"text\":\"The read/write permission is not required. Determine whether to add it according to the following rules:\"}],\"type\":\"p\"},{\"id\":\"jnhQ-6fSV0O4ZJxvAVo54\",\"children\":[{\"text\":\"If you use the default log path (/SDCARD/Android/Data/files), it means that you do not call SetLogPath, and do not need Write_External_Storage permission.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"tEO3FSGjO6CSSUhy-8Z4e\",\"children\":[{\"text\":\"If you call the setLogPath API to set the log path to an external storage device, and the storage path of the voice message recording is an external storage device, you need to apply for the Write_External_Storage permission to the user and get the user's approval.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"j9HJY4cn3X4P75o3RR_m9\",\"children\":[{\"id\":\"RfjRcBAVlerlK9TR0jiRW\",\"children\":[{\"text\":\" \"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false}],\"id\":\"348\",\"name\":\"Read/Write permission\",\"type\":\"tab\"},{\"children\":[{\"id\":\"-H8M9KL9RJuV15YpkouXx\",\"children\":[{\"text\":\"Add the Bluetooth permission according to the following rules:\"}],\"type\":\"p\"},{\"id\":\"kews2JewHiHpNGjSVZOCG\",\"children\":[{\"text\":\"If \"},{\"code\":1,\"text\":\"targetSDKVersion\"},{\"text\":\" in the project is v30 or earlier:\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"FtqdbB_831Ti-YKy8uA1q\",\"children\":[{\"id\":\"R3TDuf_-CGgPamklGn0rZ\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"indent\":1,\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"lkbH9WTTWIVjCwdV78HIa\",\"children\":[{\"text\":\"If \"},{\"code\":1,\"text\":\"targetSDKVersion\"},{\"text\":\" in the project is v31 or later:\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"paTYnkf3SMqp4MNsR9ew1\",\"children\":[{\"id\":\"EA5uvGhx-9E2k8GooL-sy\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"},{\"id\":\"dsNhK8oXiGJUl_iPCEqvt\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"indent\":1,\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false}],\"id\":\"349\",\"name\":\"Bluetooth permission\",\"type\":\"tab\"}],\"type\":\"tabs\"},{\"id\":\"3KN-njvwLI8sSmKlnI1gv\",\"children\":[{\"text\":\"3. FAQs about export\"}],\"nodeId\":\"3.-faqs-about-export\",\"type\":\"h3\"},{\"id\":\"Go5cDlhkxbSMRHR8ZeE7R\",\"children\":[{\"text\":\"If you have any questions during exporting, see \"},{\"id\":\"oWv8Tj1njiP7wQhnDlKn8\",\"children\":[{\"text\":\"Exporting for Android\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://intl.cloud.tencent.com/document/product/607/39522\",\"props\":{\"type\":\"link\",\"url\":\"https://intl.cloud.tencent.com/document/product/607/39522\"},\"type\":\"ref\"},{\"text\":\".\"}],\"type\":\"p\"},{\"id\":\"wfGIOJUxhErgvjNs5-dlN\",\"children\":[{\"text\":\"Export for Windows\"}],\"nodeId\":\"export-for-windows\",\"type\":\"h2\"},{\"id\":\"O4jTDVjKaotdMJkkPgsFE\",\"children\":[{\"text\":\"If you have any questions during exporting, see \"},{\"id\":\"v3c902qP3cgIHNv0NuM_n\",\"children\":[{\"text\":\"Exporting for Windows\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://intl.cloud.tencent.com/document/product/607/39522\",\"props\":{\"type\":\"link\",\"url\":\"https://intl.cloud.tencent.com/document/product/607/39522\"},\"type\":\"ref\"},{\"text\":\".\"}],\"type\":\"p\"},{\"id\":\"RAoAlJyAQRN2YuNCESpsG\",\"children\":[{\"text\":\"Export for WebGL\"}],\"nodeId\":\"export-for-webgl\",\"type\":\"h2\"},{\"id\":\"YZRJHKd3neZbHJ2SIHF53\",\"children\":[{\"text\":\"1. Configure WebGL plugins\"}],\"nodeId\":\"1.-configure-webgl-plugins\",\"type\":\"h3\"},{\"id\":\"ePdvm3ZOwK703v4Tqazzb\",\"children\":[{\"text\":\"Set the scope of \"},{\"code\":1,\"text\":\"gmesdk.dll\"},{\"text\":\" on Windows to prevent it from conflicting with \"},{\"code\":1,\"text\":\"gmesdk\"},{\"text\":\" on WebGL.\"}],\"type\":\"p\"},{\"type\":\"p\",\"children\":[{\"text\":\"\"},{\"id\":\"8fqIM_-emgG-klcRpiK4Z\",\"alt\":\"\",\"children\":[{\"text\":\"\"}],\"inline\":true,\"type\":\"image\",\"url\":\"https://cloudcache.intl.tencent-cloud.com/cms/backend-cms/3d6f0491b36e11eeae9a525400c26da5.png\",\"naturalSize\":[1057,666],\"size\":[801,504]},{\"text\":\"\"}],\"id\":\"LNS0o2Z-8wXkb6S9vEZ83\"},{\"type\":\"p\",\"children\":[{\"text\":\"\"},{\"id\":\"7dDTFcmsZsiD3sfL5FhVJ\",\"alt\":\"\",\"children\":[{\"text\":\"\"}],\"inline\":true,\"type\":\"image\",\"url\":\"https://cloudcache.intl.tencent-cloud.com/cms/backend-cms/3d769a09b36e11ee9fd6525400bb593a.jpeg\",\"naturalSize\":[1134,628],\"size\":[800,443]},{\"text\":\"\"}],\"id\":\"QspzUCIa36-IRyjHIjeFl\"},{\"id\":\"ZYE1KuOFE7vvHa94tNtrD\",\"children\":[{\"text\":\"2. Disable Flare Layer (on Unity 2018 or later)\"}],\"nodeId\":\"2.-disable-flare-layer-(on-unity-2018-or-later)\",\"type\":\"h3\"},{\"type\":\"p\",\"children\":[{\"text\":\"\"},{\"id\":\"YPXHfHplLuFjFFZxUGfdF\",\"alt\":\"\",\"children\":[{\"text\":\"\"}],\"inline\":true,\"type\":\"image\",\"url\":\"https://cloudcache.intl.tencent-cloud.com/cms/backend-cms/3d700c7cb36e11eeae9a525400c26da5.png\",\"naturalSize\":[1787,1027],\"size\":[900,517]},{\"text\":\"\"}],\"id\":\"u-iSMHvRwsWd3UvEVNADK\"},{\"id\":\"WQZYpZZBUIImm2HEwvvKo\",\"children\":[{\"text\":\"As certain Unity versions no longer support the Flare Layer mode in \"},{\"code\":1,\"text\":\"MainCamera\"},{\"text\":\", you need to deselect Flare Layer in the scene to be built; otherwise, the following error will be reported:\"}],\"type\":\"p\"},{\"type\":\"p\",\"children\":[{\"text\":\"\"},{\"id\":\"6TrIYSJK2BOffCMJlTmAk\",\"alt\":\"\",\"children\":[{\"text\":\"\"}],\"inline\":true,\"type\":\"image\",\"url\":\"https://cloudcache.intl.tencent-cloud.com/cms/backend-cms/3d7e37beb36e11ee9939525400461a83.png\",\"naturalSize\":[1162,68],\"size\":[901,52]},{\"text\":\"\"}],\"id\":\"EF6fxYas-_iUn4lFqmw8J\"},{\"id\":\"nmGt5yHR2Rhycp301Obs2\",\"children\":[{\"text\":\"3. Select a template\"}],\"nodeId\":\"3.-select-a-template\",\"type\":\"h3\"},{\"id\":\"adjZZeE9lWgUEflOGBC41\",\"children\":[{\"text\":\"When exporting to WebGL, select a WebGL template of GME to ensure that the relevant dependent libraries are imported to the build. The project will use the \"},{\"code\":1,\"text\":\"GMEWebGLTemplatesUnity2018\"},{\"text\":\" template by default, which supports Unity 2018 and 2019. For Unity 2020 and 2021, you need to use \"},{\"code\":1,\"text\":\"GMEWebGLTemplatesUnity2021\"},{\"text\":\" to create the build.\"}],\"type\":\"p\"},{\"type\":\"p\",\"children\":[{\"text\":\"\"},{\"id\":\"TFi-uHAmILB-dImMQjvJg\",\"alt\":\"\",\"children\":[{\"text\":\"\"}],\"inline\":true,\"type\":\"image\",\"url\":\"https://cloudcache.intl.tencent-cloud.com/cms/backend-cms/3d90ccbeb36e11eeae9a525400c26da5.png\",\"naturalSize\":[1813,903],\"size\":[900,448]},{\"text\":\"\"}],\"id\":\"kJmZ-2pGcHwtBnHG4RW3u\"},{\"id\":\"u3n0E-RoITUUTPkhipdr_\",\"children\":[{\"text\":\"4. Import frontend libraries\"}],\"nodeId\":\"4.-import-frontend-libraries\",\"type\":\"h3\"},{\"id\":\"wCUy2PlDH7CbzeNHMMmhv\",\"children\":[{\"text\":\"Before importing GME for WebGL to your project, you need to manually import frontend libraries, place the library files in the corresponding import locations, and add the audio tag as shown below. If you want the above operations to be automatically completed every time you build a Unity project, you can add the corresponding template to your project by referring to the GME demo for WebGL.\"}],\"type\":\"p\"},{\"type\":\"p\",\"children\":[{\"text\":\"\"},{\"id\":\"0Lt7Wb8Ej_A14xx-m0uRN\",\"alt\":\"\",\"children\":[{\"text\":\"\"}],\"inline\":true,\"type\":\"image\",\"url\":\"https://cloudcache.intl.tencent-cloud.com/cms/backend-cms/3d723e5db36e11ee9939525400461a83.png\",\"naturalSize\":[1515,727],\"size\":[901,432]},{\"text\":\"\"}],\"id\":\"qniDC_3SEgvmdguIfZmV6\"},{\"id\":\"kZVxbVKHR2p3tuk8n4m7l\",\"children\":[{\"text\":\"5. FAQs about export\"}],\"nodeId\":\"5.-faqs-about-export\",\"type\":\"h3\"},{\"id\":\"ukQ94nGkS-SOqZJ6j914U\",\"children\":[{\"text\":\"If you have any questions during export, see \"},{\"id\":\"1qrQoSLkUJXS--oLFErL7\",\"children\":[{\"text\":\"Program Export\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://intl.cloud.tencent.com/document/product/607/39522\",\"props\":{\"type\":\"link\",\"url\":\"https://intl.cloud.tencent.com/document/product/607/39522\"},\"type\":\"ref\"},{\"text\":\".\"}],\"type\":\"p\"}]"}},"44549":{"categoryId":607,"weight":100,"type":"page","extension":"","pid":17024,"id":44549,"lang":"en","title":"Integrating SDK","pdfUrl":"","docType":"default","children":[],"firstReleaseTime":"2022-01-17 19:47:01","recentReleaseTime":"2022-01-17 19:47:01","content":{"title":"Integrating SDK","body":"

Overview

This document describes how to configure a Unreal Engine project for the GME APIs for Unreal Engine.

SDK Download

1. Download the applicable demo and SDK. For more information, see SDK Download Guide.
2. Locate the SDK resources for Unreal Engine on the page.
3. Click Download. After decompression, the downloaded SDK resources include the following files:
File name
Description
Purpose
GMESDK.uplugin
.uplugin file
Plugin configuration file
Resources
Plugin resource file
Plugin resource file
Source
SDK file
SDK library files and code files for various platforms, such as header files
Platforms supported by the SDK for Unreal Engine:
SDK for Unreal Engine has integrated Windows, macOS, Android, and iOS platform architectures. If you need console platform architectures, contact us.

Project Configuration

Step 1: Import Plugins files

If no Plugins folder exists in the root directory of the game project (the directory of the *.uproject file), create one first and copy the GME SDK to the Plugins folder. Then, you will see the directory structure as shown below:
\"\"


Step 2: Compile the plugin

Refresh the C++ project in Visual Studio/Xcode, open it, and you will see the directory structure like the following. Then, compile the game.
\"\"


Step 3. Complete compilation

After completing the compilation, restart Unreal Engine Editor. In Unreal Engine Editor, open the plugin manager, and you can see that the GME SDK has been imported into the project. Make sure that the GME SDK is enabled.
\"\"


Step 4. Add GME SDK dependencies

Add GME SDK dependencies to the .build.cs file of the game project.
\"\"


Adaptations of Different Unreal Engine Versions

Unreal Engine 4.21 and later

If you are using Unreal Engine 4.21 or later, you need to add the following code after downloading the GME sample code for Unreal Engine:
AUEDemoLevelScriptActor::AUEDemoLevelScriptActor()
{
PrimaryActorTick.bCanEverTick = true;
}
Note:
Tick is disabled by default and must be enabled manually.

Unreal Engine 4.26

If you are using Unreal Engine 4.26, you need to download the adaptation file and import it into the project. The downloaded file contains two folders: Source and Plugins.
For a demo project, import both folders into the project in an overwriting manner.
If you only need the GME SDK, import the Plugins folder only.
","recentReleaseTime":"2024-01-18 15:02:24","slate":"[{\"id\":\"OQT80xeatw2Gup8I8PyRk\",\"children\":[{\"text\":\"Overview\"}],\"nodeId\":\".E7.AE.80.E4.BB.8B\",\"type\":\"h2\"},{\"id\":\"hEZkR6hHePu31hPP1LQuh\",\"children\":[{\"text\":\"This document describes how to configure a Unreal Engine project for the GME APIs for Unreal Engine.\"}],\"type\":\"p\"},{\"id\":\"sAi3zs1IHc1bzTA6JeOAl\",\"children\":[{\"text\":\"SDK Download\"}],\"nodeId\":\".E4.B8.8B.E8.BD.BD-sdk\",\"type\":\"h2\"},{\"id\":\"DH2QE14m7tS7sWVvZcgVb\",\"children\":[{\"text\":\"Download the applicable demo and SDK. For more information, see \"},{\"id\":\"qhzLkkwCgwxjpy1-kLXb1\",\"children\":[{\"text\":\"SDK Download Guide\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://www.tencentcloud.com/document/product/607/18521\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/18521\"},\"type\":\"ref\"},{\"text\":\".\"}],\"start\":true,\"type\":\"oli\"},{\"id\":\"J88adCcssVNc3OU2Pxom2\",\"children\":[{\"text\":\"Locate the SDK resources for Unreal Engine on the page.\"}],\"start\":false,\"type\":\"oli\"},{\"id\":\"yKH96B0kP80TIstGm4wwE\",\"children\":[{\"text\":\"Click \"},{\"b\":1,\"text\":\"Download\"},{\"text\":\". After decompression, the downloaded SDK resources include the following files:\"}],\"start\":false,\"type\":\"oli\"},{\"id\":\"yQzLMxAOE-MgkYsuZM7G7\",\"children\":[{\"id\":\"GulXaCyei0V8bt0YhBN7V\",\"children\":[{\"id\":\"GlyVG7-8jQohzUkyMk8Vq\",\"children\":[{\"id\":\"7OuP1YwUYqxiDUXY_jyrc\",\"children\":[{\"text\":\"File name\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"sP_1SBXAtr58ZClY5uwOE\",\"children\":[{\"id\":\"TMoplPaLQm3hHIBTwTtsC\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"b3tXXJ_yYSIrA8NZgPsP-\",\"children\":[{\"id\":\"q9HPE5zT2UEXb6JPRtdxe\",\"children\":[{\"text\":\"Purpose\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"IUl2hIrmEFogO_zP1g_Y7\",\"children\":[{\"id\":\"J0cfnxx5RgWdFZz2cNIoG\",\"children\":[{\"id\":\"cuPJQkMTAKdxULXf9CTF-\",\"children\":[{\"text\":\"GMESDK.uplugin\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"cXWBr2HI71l59CIoAGtAo\",\"children\":[{\"id\":\"G953X_YQEeFQODs7xMPTA\",\"children\":[{\"code\":1,\"text\":\".uplugin\"},{\"text\":\" file\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"v3hsUMQNOego9qHKeEcB2\",\"children\":[{\"id\":\"784QRE038W_L0pOksV11a\",\"children\":[{\"text\":\"Plugin configuration file\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"qOML9LL_aM3V1W8ChiwqG\",\"children\":[{\"id\":\"CBoY2xqDEL6ecAbmCD-_l\",\"children\":[{\"id\":\"MpvK-Y9c_hAzjzXFLyT8e\",\"children\":[{\"text\":\"Resources\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"nNPwuzKRfQolHfMmVY6vY\",\"children\":[{\"id\":\"wieo9wSt61bGOaSwlpPJ8\",\"children\":[{\"text\":\"Plugin resource file\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"3xXjJmr3_GYDngfrzHM6v\",\"children\":[{\"id\":\"8kTg9J5qIopmt0ZTDxzr7\",\"children\":[{\"text\":\"Plugin resource file\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"bKvWf2Hy0CvXYSxrkhRoJ\",\"children\":[{\"id\":\"MIB7n998tPcGxjuU8lgpP\",\"children\":[{\"id\":\"AOlSHX6na5P6rWiLRtjLd\",\"children\":[{\"text\":\"Source\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Jt_JKk3IDICuypGSrnuTa\",\"children\":[{\"id\":\"-XENp4xw-hYs7IWuXKJcY\",\"children\":[{\"text\":\"SDK file\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"QuXnKEIZuqK2Ott7ZtYII\",\"children\":[{\"id\":\"gNmOyY4rsvUOMPt5DEz_H\",\"children\":[{\"text\":\"SDK library files and code files for various platforms, such as header files\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"rowHeader\":true,\"type\":\"table\",\"widths\":[18,19,63],\"widthMode\":\"percentage\"},{\"id\":\"NvOxbnPHzXTK526h63Gqi\",\"children\":[{\"id\":\"OZD4ltcDgWOwN99ihSXWb\",\"children\":[{\"b\":1,\"text\":\"Platforms supported by the SDK for Unreal Engine:\"}],\"type\":\"p\"},{\"id\":\"LXFaYyltA0DBEt8aCvofs\",\"children\":[{\"text\":\"SDK for Unreal Engine has integrated Windows, macOS, Android, and iOS platform architectures. If you need console platform architectures, \"},{\"id\":\"Je_RAxA1PJwCWZj6oellN\",\"type\":\"ref\",\"props\":{\"type\":\"link\",\"url\":\"https://intl.cloud.tencent.com/contact-sales\"},\"children\":[{\"text\":\"contact us\"}]},{\"text\":\".\"}],\"type\":\"p\"}],\"hintType\":\"info\",\"type\":\"hint\"},{\"id\":\"638YCe49_Z5S633m3ipUK\",\"children\":[{\"text\":\"Project Configuration\"}],\"nodeId\":\".E5.B7.A5.E7.A8.8B.E9.85.8D.E7.BD.AE.E6.AD.A5.E9.AA.A4\",\"type\":\"h2\"},{\"id\":\"qhDPMQHiWJasof8jkOzgg\",\"children\":[{\"text\":\"Step 1: Import Plugins files\"}],\"nodeId\":\".E6.AD.A5.E9.AA.A41.EF.BC.9A.E5.AF.BC.E5.85.A5-plugins-.E6.96.87.E4.BB.B6\",\"type\":\"h3\"},{\"id\":\"Qucj0cuFodmpjiRtjTam4\",\"children\":[{\"text\":\"If no \"},{\"code\":1,\"text\":\"Plugins\"},{\"text\":\" folder exists in the root directory of the game project (the directory of the \"},{\"code\":1,\"text\":\"*.uproject\"},{\"text\":\" file), create one first and copy the GME SDK to the \"},{\"code\":1,\"text\":\"Plugins\"},{\"text\":\" folder. Then, you will see the directory structure as shown below:\"}],\"type\":\"p\"},{\"id\":\"tAuylhLZwpy4ta0kcneyo\",\"children\":[{\"id\":\"IOOONtvRTE6x12uvRbQmd\",\"alt\":\"\",\"children\":[{\"text\":\"\"}],\"inline\":true,\"naturalSize\":[1320,848],\"size\":[639,410],\"type\":\"image\",\"url\":\"https://cloudcache.intl.tencent-cloud.com/cms/backend-cms/89ec8c71d76911edbe2a525400088f3a.png\"}],\"type\":\"p\"},{\"id\":\"i-pJGYaURxb-oWJPJ8A0J\",\"children\":[{\"text\":\"Step 2: Compile the plugin\"}],\"nodeId\":\".E6.AD.A5.E9.AA.A42.EF.BC.9A.E7.BC.96.E8.AF.91.E6.8F.92.E4.BB.B6\",\"type\":\"h3\"},{\"id\":\"pbaVjmj6lDeDb2cDy_yRp\",\"children\":[{\"text\":\"Refresh the C++\"},{\"text\":\" project in Visual Studio/Xcode, open it, and you will see the directory structure like the following. Then, compile the game.\"}],\"type\":\"p\"},{\"id\":\"kt1LJnvK5CYFng_W0n4WA\",\"children\":[{\"id\":\"A_FVTZSKyaOG4R5_cvUEF\",\"alt\":\"\",\"children\":[{\"text\":\"\"}],\"inline\":true,\"naturalSize\":[436,579],\"size\":[436,579],\"type\":\"image\",\"url\":\"https://cloudcache.intl.tencent-cloud.com/cms/backend-cms/89bb38ead76911edbe2a525400088f3a.png\"}],\"type\":\"p\"},{\"id\":\"-thz_ielZxJCqXHBIa8T_\",\"children\":[{\"text\":\"Step 3. Complete compilation\"}],\"nodeId\":\".E6.AD.A5.E9.AA.A43.EF.BC.9A.E7.BC.96.E8.AF.91.E5.AE.8C.E6.88.90\",\"type\":\"h3\"},{\"id\":\"_4vN4XJlFUbxcx3hD94kY\",\"children\":[{\"text\":\"After completing the compilation, restart Unreal Engine Editor. In Unreal Engine Editor, open the plugin manager, and you can see that the GME SDK has been imported into the project. Make sure that the GME SDK is enabled.\"}],\"type\":\"p\"},{\"id\":\"nhBPfrt5mYGbKcK3l6qf2\",\"children\":[{\"id\":\"1ILH05HcwsuuW477u2FTc\",\"alt\":\"\",\"children\":[{\"text\":\"\"}],\"inline\":true,\"naturalSize\":[1254,814],\"size\":[639,414],\"type\":\"image\",\"url\":\"https://cloudcache.intl.tencent-cloud.com/cms/backend-cms/89c48bded76911ed8c12525400c56988.png\"}],\"type\":\"p\"},{\"id\":\"nyfJHQ3u-k3yFQM5GL6s8\",\"children\":[{\"text\":\"Step 4. Add GME SDK dependencies\"}],\"nodeId\":\".E6.AD.A5.E9.AA.A44.EF.BC.9A.E6.89.93.E5.BC.80.E6.9F.A5.E7.9C.8B-gme-.E6.8F.92.E4.BB.B6\",\"type\":\"h3\"},{\"id\":\"3WKadxehIsSgUJURY4n1U\",\"children\":[{\"text\":\"Add GME SDK dependencies to the \"},{\"code\":1,\"text\":\".build.cs\"},{\"text\":\" file of the game project.\"}],\"type\":\"p\"},{\"id\":\"MYAdF0BN9EMJBUAONUG0E\",\"children\":[{\"id\":\"UWntUeEnMRB4FrU5g6I2C\",\"alt\":\"\",\"children\":[{\"text\":\"\"}],\"inline\":true,\"naturalSize\":[1709,639],\"size\":[639,238],\"type\":\"image\",\"url\":\"https://cloudcache.intl.tencent-cloud.com/cms/backend-cms/89b6421bd76911edbe2a525400088f3a.png\"}],\"type\":\"p\"},{\"id\":\"HCR-7EV3XC5x_8ZS8k7My\",\"children\":[{\"text\":\"Adaptations of Different Unreal Engine Versions\"}],\"nodeId\":\".E4.B8.8D.E5.90.8Cunreal.E7.89.88.E6.9C.AC.E9.80.82.E9.85.8D.E5.B7.A5.E4.BD.9C\",\"type\":\"h2\"},{\"id\":\"6s0dTcIgw5VcauryeLEIr\",\"children\":[{\"text\":\"Unreal Engine 4.21 and later\"}],\"nodeId\":\"unreal-engine-4.21.E5.8F.8A.E4.BB.A5.E4.B8.8A.E7.89.88.E6.9C.AC\",\"type\":\"h3\"},{\"id\":\"PAc6x0Vve2bY_m5A9Vt0F\",\"children\":[{\"text\":\"If you are using Unreal Engine 4.21 or later, you need to add the following code after downloading the GME sample code for Unreal Engine:\"}],\"type\":\"p\"},{\"id\":\"RDkm69xA8sWmGYzm18K4q\",\"autoWrap\":false,\"children\":[{\"id\":\"Y7LlRa33FGIHBa0T4VYWh\",\"children\":[{\"text\":\"AUEDemoLevelScriptActor::AUEDemoLevelScriptActor()\"}],\"type\":\"code-line\"},{\"id\":\"Mhezjibrb_ymHT1YKu35-\",\"children\":[{\"text\":\"{\"}],\"type\":\"code-line\"},{\"id\":\"vR_qZyUx1FjV_FSga8N7j\",\"children\":[{\"text\":\" PrimaryActorTick.bCanEverTick = true;\"}],\"type\":\"code-line\"},{\"id\":\"SbsTenaGKL8Y4VA7n6hJm\",\"children\":[{\"text\":\"}\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"YP9ouVYUVk2gUhu7oxZe4\",\"children\":[{\"id\":\"1XImvdlwS_1CoorQ7SI62\",\"children\":[{\"b\":1,\"text\":\"Note:\"}],\"type\":\"p\"},{\"id\":\"rhX06Wu68s25Z-Pj2ZmTo\",\"children\":[{\"text\":\"Tick is disabled by default and must be enabled manually.\"}],\"type\":\"p\"}],\"hintType\":\"info\",\"type\":\"hint\"},{\"id\":\"CTqc0r3Vy4PBGg7MQuISa\",\"children\":[{\"text\":\"Unreal Engine 4.26\"}],\"nodeId\":\"unreal-engine-4.26.E7.89.88.E6.9C.AC\",\"type\":\"h3\"},{\"id\":\"Dghj_xfsUnFy9_yOyTOl2\",\"children\":[{\"text\":\"If you are using Unreal Engine 4.26, you need to download the \"},{\"id\":\"oBX31YaZWPejsI6h-zLSZ\",\"children\":[{\"text\":\"adaptation file\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"http://dldir1.qq.com/hudongzhibo/QCloud_TGP/GME/pubilc/UEDemo_4.26Adapter.zip\",\"props\":{\"type\":\"link\",\"url\":\"http://dldir1.qq.com/hudongzhibo/QCloud_TGP/GME/pubilc/UEDemo_4.26Adapter.zip\"},\"type\":\"ref\"},{\"text\":\" and import it into the project. The downloaded file contains two folders: \"},{\"code\":1,\"text\":\"Source\"},{\"text\":\" and \"},{\"code\":1,\"text\":\"Plugins\"},{\"text\":\".\"}],\"type\":\"p\"},{\"id\":\"Zxyizk478Vre6JiNrb_SE\",\"children\":[{\"text\":\"For a demo project, import both folders into the project in an overwriting manner.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"MdZemC9evb1ibrFwybt0l\",\"children\":[{\"text\":\"If you only need the GME SDK, import the \"},{\"code\":1,\"text\":\"Plugins\"},{\"text\":\" folder only.\"}],\"start\":false,\"type\":\"uli\"}]"}},"44550":{"categoryId":607,"weight":95,"type":"page","extension":"","pid":17024,"id":44550,"lang":"en","title":"Speech-to-Text Service","pdfUrl":"","docType":"default","children":[],"firstReleaseTime":"2022-01-17 19:47:01","recentReleaseTime":"2022-01-17 19:47:01","content":{"title":"Speech-to-Text Service","body":"
This document describes how to integrate with and debug GME client APIs for the voice messaging and speech-to-text services for Unreal Engine.

Key Considerations for Using GME

GME provides the real-time voice and voice messaging and speech-to-text services, which all depend on core APIs such as Init and Poll.

Notes

You have created a GME application and obtained the SDK AppID and key. For more information, see Activating Services.
You have activated GME real-time voice and voice messaging and speech-to-text services. For more information, see Activating Services.
Configure your project before using GME; otherwise, the SDK will not take effect.
After a GME API is called successfully, QAVError.OK will be returned with the value being 0.
GME APIs should be called in the same thread.
The Poll API should be called periodically for GME to trigger event callbacks.
For detailed error code, see Error Codes.
Note:
There is a default call rate limit for speech-to-text APIs. For more information on how calls are billed within the limit, see Purchase Guide. If you want to increase the limit or learn more about how excessive calls are billed, submit a ticket.
Non-streaming speech-to-text API SpeechToText(): There can be up to 10 concurrent requests per account.
Streaming speech-to-text API StartRecordingWithStreamingRecognition(): There can be up to 50 concurrent requests per account.
Real-time streaming speech-to-text API StartRealTimeASR(): There can be up to 50 concurrent requests per account.

Integrating the SDK

Directions

Key processes involved in SDK integration are as follows:

\"\"



C++ classes

Class
Description
ITMGContext
Key APIs
ITMGPTT
Voice messaging and speech-to-text APIs

Key APIs

API
Description
Init
Initializes GME
Poll
Triggers event callback
Pause
Pauses the system
Resume
Resumes the system
Uninit
Uninitializes GME

Preparations

You need to import the header file tmg_sdk.h first before you can access GME. The classes in the header file inherit ITMGDelegate for message delivery and callback.

Sample code

#include "tmg_sdk.h"

class UEDEMO1_API AUEDemoLevelScriptActor : public ALevelScriptActor, public ITMGDelegate
{
public:
...
private:
...

Setting singleton

You need to get ITMGContext first before you can call the EnterRoom function, because all calls begin with ITMGContext and callbacks are passed to the application through ITMGDelegate.

Sample code

ITMGContext* context = ITMGContextGetInstance();
context->SetTMGDelegate(this);

Message delivery

The API class uses the Delegate method to send callback notifications to the application. ITMG_MAIN_EVENT_TYPE indicates the message type. The data on Windows is in json string format. For the key-value pairs, please see the relevant documentation.

Sample code

// Function implementation:
//UEDemoLevelScriptActor.h:
class UEDEMO1_API AUEDemoLevelScriptActor : public ALevelScriptActor, public SetTMGDelegate
{
public:
void OnEvent(ITMG_MAIN_EVENT_TYPE eventType, const char* data);

//UEDemoLevelScriptActor.cpp:
void AUEDemoLevelScriptActor::OnEvent(ITMG_MAIN_EVENT_TYPE eventType, const char* data){
// Identify and manipulate `eventType` here
}

Initializing SDK

You need to initialize the SDK through the Init API before you can use the real-time voice, voice message, and speech-to-text services. The Init API must be called in the same thread as other APIs. We recommend you call all APIs in the main thread.

API prototype

ITMGContext virtual int Init(const char* sdkAppId, const char* openId)
Parameter
Type
Description
sdkAppId
const char*
AppID provided in the GME console, which can be obtained as instructed in Activating Services.
openID
const char*
openID can only be in Int64 type, which is passed in after being converted to a const char*. You can customize its rules, and it must be unique in the application. To pass in openID as a string, submit a ticket for application.

Returned values

Returned Value
Description
AV_OK = 0
Initialized SDK successfully.
AV_ERR_SDK_NOT_FULL_UPDATE=7015
Checks whether the SDK file is complete. It is recommended to delete it and then import the SDK again.
Notes on 7015 error code
The 7015 error code is judged by md5. If this error is reported during integration, please check the integrity and version of the SDK file as prompted.
The returned value AV_ERR_SDK_NOT_FULL_UPDATE is only a reminder but will not cause an initialization failure.
Due to the third-party reinforcement, Unity packaging mechanism and other factors, the md5 of the library file will be affected, resulting in misjudgment. Please ignore this error in the logic for official release, and try to avoid displaying it in the UI.

Sample code

std::string appid = TCHAR_TO_UTF8(CurrentWidget->editAppID->GetText().ToString().operator*());
std::string userId = TCHAR_TO_UTF8(CurrentWidget->editUserID->GetText().ToString().operator*());
ITMGContextGetInstance()->Init(appid.c_str(), userId.c_str());

Triggering event callback

Event callbacks can be triggered by periodically calling the Poll API in update. The Poll API is GME's message pump and should be called periodically for GME to trigger event callbacks; otherwise, the entire SDK service will run abnormally. For more information, see the EnginePollHelper file in SDK Download Guide.
Note:
The Poll API must be called periodically and in the main thread to avoid abnormal API callbacks.

API prototype

class ITMGContext {
protected:
virtual ~ITMGContext() {}

public:
virtual void Poll()= 0;
}

Sample code

// Declaration in the header file
virtual void Tick(float DeltaSeconds);

void AUEDemoLevelScriptActor::Tick(float DeltaSeconds) {
Super::Tick(DeltaSeconds);\t
ITMGContextGetInstance()->Poll();
}

Pausing the system

When a Pause event occurs in the system, the engine should also be notified for pause. If you do not need the background to play back the audio in the room, please call Pause API to pause the GME service.

API prototype

ITMGContext int Pause()

Resuming the system

When a Resume event occurs in the system, the engine should also be notified for resumption. The Resume API only supports resuming voice chat.

API prototype

ITMGContext int Resume()

Uninitializing SDK

This API is used to uninitialize the SDK to make it uninitialized. If the game business account is bound to openid, switching game account requires uninitializing GME and then using the new openid to initialize again.

API prototype

ITMGContext int Uninit()

Voice Messaging and Speech-to-Text Services

Note:
The speech-to-text service consists of fast recording-to-text conversion and streaming speech-to-text conversion.
You do not need to enter a voice chat room when using the voice message service.
The maximum recording duration of a voice message is 58 seconds by default, and the minimum recording duration cannot be less than 1 second. If you want to customize the recording duration, for example, to modify the maximum recording duration to 10 seconds, call the SetMaxMessageLength API to set it after initialization.

\"\"



Flowchart for using the speech-to-text service


\"\"


API
Description
GenAuthBuffer
Generates the local authentication key
ApplyPTTAuthbuffer
Initializes authentication
SetMaxMessageLength
Specifies the maximum length of voice message

Generating the local authentication key

Generate AuthBuffer for encryption and authentication of relevant features. For release in the production environment, please use the backend deployment key as detailed in Authentication Key.

API prototype

int QAVSDK_AuthBuffer_GenAuthBuffer(unsigned int dwSdkAppID, const char* strRoomID, const char* strOpenID,
const char* strKey, unsigned char* strAuthBuffer, unsigned int bufferLength);
Parameter
Type
Description
dwSdkAppID
int
AppId from the Tencent Cloud console.
strRoomID
const char*
Enter null or an empty string
strOpenID
const char*
User Identifier, which is the same as openID during initialization.
strKey
const char*
Permission key from the Tencent Cloud console.
strAuthBuffer
const char*
Returned authbuff
bufferLength
int
Length of the authbuff passed in. 500 is recommended.

Application authentication

After the authentication information is generated, the authentication is assigned to the SDK.

API prototype

ITMGPTT virtual int ApplyPTTAuthbuffer(const char* authBuffer, int authBufferLen)
Parameter
Type
Description
authBuffer
const char*
Authentication
authBufferLen
int
Authentication length

Sample code

ITMGContextGetInstance()->GetPTT()->ApplyPTTAuthbuffer(authBuffer,authBufferLen);

Specifying the maximum duration of voice message

This API is used to specify the maximum duration of a voice message, which can be up to 58 seconds.

API prototype

ITMGPTT virtual int SetMaxMessageLength(int msTime)
Parameter
Type
Description
msTime
int
Audio duration in ms. Value range: 1000 < msTime <= 58000

Sample code

int msTime = 10000;
ITMGContextGetInstance()->GetPTT()->SetMaxMessageLength(msTime);

Streaming Speech Recognition

Voice message and speech-to-text APIs

API
Description
StartRecordingWithStreamingRecognition
Starts streaming recording
StopRecording
Stops recording

Starting streaming speech recognition

This API is used to start streaming speech recognition. Text obtained from speech-to-text conversion will be returned in real time in its callback. It can specify a language for recognition or translate the information recognized in speech into a specified language and return the translation. To stop recording, call Stop recording.

API prototype

ITMGPTT virtual int StartRecordingWithStreamingRecognition(const char* filePath)
ITMGPTT virtual int StartRecordingWithStreamingRecognition(const char* filePath,const char* translateLanguage,const char* translateLanguage)
Parameter
Type
Description
filePath
const char*
Path of stored audio file
speechLanguage
const char*
The language in which the audio file is to be converted to text. For parameters, see Language Parameter Reference List.
translateLanguage
const char*
The language in which the audio file is to be translated to text. For parameters, see Language Parameter Reference List.

Sample code

ITMGContextGetInstance()->GetPTT()->StartRecordingWithStreamingRecognition(filePath,"cmn-Hans-CN","cmn-Hans-CN");
Note:
Translation incurs additional fees. For more information, see Purchase Guide.

Callback for streaming speech recognition

After streaming speech recognition is started, you need to listen on callback messages in the OnEvent notification, which is as detailed below:
ITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRECOGNITION_COMPLETE returns text after the recording is stopped and the recognition is completed, which is equivalent to returning the recognized text after a paragraph of speech.
ITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRECOGNITION_IS_RUNNING returns the recognized text in real-time during the recording, which is equivalent to returning the recognized text while speaking.
The event message will be identified in the OnEvent notification based on the actual needs. The passed parameters include the following four messages.
Message Name
Description
result
Return code indicating whether streaming speech recognition is successful
text
Text converted from speech
file_path
Local path of stored recording file
file_id
Backend URL address of recording file, which will be retained for 90 days
Note:
The file_id is empty when the 'ITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRecognition_IS_RUNNING' message is listened.

Error codes

Error Code
Description
Suggested Solution
32775
Streaming speech-to-text conversion failed, but recording succeeded.
Call the UploadRecordedFile API to upload the recording file and then call the SpeechToText API to perform speech-to-text conversion.
32777
Streaming speech-to-text conversion failed, but recording and upload succeeded.
The message returned contains a backend URL after successful upload. Call the SpeechToText API to perform speech-to-text conversion.
32786
Streaming speech-to-text conversion failed.
During streaming recording, wait for the execution result of the streaming recording API to return.
32787
Speech-to-text conversion succeeded, but the text translation service was not activated.
Activate the text translation service in the console.
32788
Speech-to-text conversion succeeded, but the language parameter of the text translation service was invalid.
Check the parameter passed in.
If the error code 4098 is reported, see FAQs for solutions.

Sample code

void TMGTestScene::OnEvent(ITMG_MAIN_EVENT_TYPE eventType,const char* data){
switch (eventType) {
case ITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRECOGNITION_COMPLETE:
{
HandleSTREAM2TEXTComplete(data,true);
break;
}
...
case ITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRECOGNITION_IS_RUNNING:
{
HandleSTREAM2TEXTComplete(data, false);
break;
}
}
}

void CTMGSDK_For_AudioDlg::HandleSTREAM2TEXTComplete(const char* data, bool isComplete)
{
std::string strText = "STREAM2TEXT: ret=";
strText += data;
m_EditMonitor.SetWindowText(MByteToWChar(strText).c_str());
Json::Reader reader;
Json::Value root;
bool parseRet = reader.parse(data, root);
if (!parseRet) {
::SetWindowText(m_EditInfo.GetSafeHwnd(),MByteToWChar(std::string("parse result Json error")).c_str());
}
else
{
if (isComplete) {
::SetWindowText(m_EditUpload.GetSafeHwnd(), MByteToWChar(root["file_id"].asString()).c_str());
}
else {
std::string isruning = "STREAMINGRECOGNITION_IS_RUNNING";
::SetWindowText(m_EditUpload.GetSafeHwnd(), MByteToWChar(isruning).c_str());
}
}
}

Voice Message Recording

The recording process is as follows: start recording -> stop recording -> return recording callback -> start the next recording.

Voice message and speech-to-text APIs

API
Description
StartRecording
Starts recording
PauseRecording
Pauses recording
ResumeRecording
Resumes recording
StopRecording
Stops recording
CancelRecording
Cancels recording

Starting recording

This API is used to start recording.

API prototype

ITMGPTT virtual int StartRecording(const char* fileDir)
Parameter
Type
Description
fileDir
const char*
Path of stored audio file

Sample code

char buffer[256]={0};
snprintf(buffer, sizeof(buffer), "%sunreal_ptt_local.file", getFilePath().c_str());
ITMGContextGetInstance()->GetPTT()->StartRecording(buffer);


Stopping recording

This API is used to stop recording. It is async, and a callback for recording completion will be returned after recording stops. A recording file will be available only after recording succeeds.

API prototype

ITMGPTT virtual int StopRecording()

Sample code

ITMGContextGetInstance()->GetPTT()->StopRecording();

Callback for recording start

The recording start result will be returned through the callback.
To stop recording, call StopRecording. The callback for recording start will be returned after the recording is stopped.
Parameter
Type
Description
result
int32
0: recording is completed
filepath
FString
Path of stored recording file, which must be accessible and cannot be the fileid

Error codes

Error Code Value
Cause
Suggested Solution
4097
Parameter is empty.
Check whether the API parameters in the code are correct.
4098
Initialization error.
Check whether the device is being used, whether the permissions are normal, and whether the initialization is normal.
4099
Recording is in progress.
Ensure that the SDK recording feature is used at the right time.
4100
Audio data is not captured.
Check whether the mic is working properly.
4101
An error occurred while accessing the file during recording.
Ensure the existence of the file and the validity of the file path.
4102
The mic is not authorized.
Mic permission is required for using the SDK. To add the permission, please see the SDK project configuration document for the corresponding engine or platform.
4103
The recording duration is too short.
The recording duration should be in ms and longer than 1,000 ms.
4104
No recording operation is started.
Check whether the recording starting API has been called.

Sample code

void TMGTestScene::OnEvent(ITMG_MAIN_EVENT_TYPE eventType,const char* data){
switch (eventType) {
...
else if (eventType == ITMG_MAIN_EVNET_TYPE_PTT_RECORD_COMPLETE) {
int32 result = JsonObject->GetIntegerField(TEXT("result"));
FString filepath = JsonObject->GetStringField(TEXT("file_path"));
std::string path = TCHAR_TO_UTF8(filepath.operator*());
int duration = 0;
int filesize = 0;
if (result == 0) {
duration = ITMGContextGetInstance()->GetPTT()->GetVoiceFileDuration(path.c_str());
filesize = ITMGContextGetInstance()->GetPTT()->GetFileSize(path.c_str());
}
onPttRecordFileCompleted(result, filepath, duration, filesize);
}
}
}

Pausing recording

This API is used to pause recording. If you want to resume recording, please call the ResumeRecording API.

API prototype

ITMGPTT virtual int PauseRecording()

Sample code

ITMGContextGetInstance()->GetPTT()->PauseRecording();

Resuming recording

This API is used to resume recording.

API prototype

ITMGPTT virtual int ResumeRecording()

Sample code

ITMGContextGetInstance()->GetPTT()->ResumeRecording();

Canceling recording

This API is used to cancel recording. There is no callback after cancellation.

API prototype

ITMGPTT virtual int CancelRecording()

Sample code

ITMGContextGetInstance()->GetPTT()->CancelRecording();

Voice Message Upload, Download, and Playback

API
Description
UploadRecordedFile
Uploads the audio file
DownloadRecordedFile
Downloads the audio file
PlayRecordedFile
Plays back the audio file
StopPlayFile
Stops playing back the audio file
GetFileSize
Gets audio file size
GetVoiceFileDuration
Gets the audio file duration

Uploading an audio file

This API is used to upload an audio file.

API prototype

ITMGPTT virtual int UploadRecordedFile(const char* filePath)
Parameter
Type
Description
filePath
const char*
Path of uploaded audio file, which is a local path

Sample code

ITMGContextGetInstance()->GetPTT()->UploadRecordedFile(filePath);

Callback for audio file upload completion

After the audio file is uploaded, the event message ITMG_MAIN_EVNET_TYPE_PTT_UPLOAD_COMPLETE will be returned, which will be identified in the OnEvent function.\nThe passed parameters include result, file_path, and file_id.
Parameter
Type
Description
result
int32
0: recording is completed
filepath
FString
Path of stored recording file
fileid
FString
File URL path

Error codes

Error Code Value
Cause
Suggested Solution
8193
An error occurred while accessing the file during upload.
Ensure the existence of the file and the validity of the file path.
8194
Signature verification failed.
Check whether the authentication key is correct and whether the voice message and speech-to-text feature is initialized.
8195
A network error occurred.
Check whether the device can access the internet.
8196
The network failed while getting the upload parameters.
Check whether the authentication is correct and whether the device can access the internet.
8197
The packet returned during the process of getting the upload parameters is empty.
Check whether the authentication is correct and whether the device network can normally access the internet.
8198
Failed to decode the packet returned during the process of getting the upload parameters.
Check whether the authentication is correct and whether the device can access the internet.
8200
No appinfo is set.
Check whether the apply API is called or whether the input parameters are empty.

Sample code

void TMGTestScene::OnEvent(ITMG_MAIN_EVENT_TYPE eventType,const char* data){
switch (eventType) {
...
else if (eventType == ITMG_MAIN_EVNET_TYPE_PTT_UPLOAD_COMPLETE) {
int32 result = JsonObject->GetIntegerField(TEXT("result"));
FString filepath = JsonObject->GetStringField(TEXT("file_path"));
FString fileid = JsonObject->GetStringField(TEXT("file_id"));
onPttUploadFileCompleted(result, filepath, fileid);
}
}
}

Downloading the audio file

This API is used to download an audio file.

API prototype

ITMGPTT virtual int DownloadRecordedFile(const char* fileId, const char* filePath)
Parameter
Type
Description
fileId
const char*
URL path of file
filePath
const char*
Local path of saved file

Sample code

ITMGContextGetInstance()->GetPTT()->DownloadRecordedFile(fileID,filePath);

Callback for audio file download completion

After the audio file is downloaded, the event message ITMG_MAIN_EVNET_TYPE_PTT_DOWNLOAD_COMPLETE will be returned, which will be identified in the OnEvent function.\nThe passed parameters include result, file_path, and file_id.
Parameter
Type
Description
result
int32
0: recording is completed
filepath
FString
Path of stored recording file
fileid
FString
URL path of file, which will be retained on the server for 90 days

Error codes

Error Code Value
Cause
Suggested Solution
12289
An error occurred while accessing the file during download.
Check whether the file path is valid.
12290
Signature verification failed.
Check whether the authentication key is correct and whether the voice message and speech-to-text feature is initialized.
12291
Network storage system exception.
The server failed to get the audio file. Check whether the API parameter fileid is correct, whether the network is normal, and whether the file exists in COS.
12292
Server file system error.
Check whether the device can access the internet and whether the file exists on the server.
12293
The HTTP network failed during the process of getting the download parameters.
Check whether the device can access the internet.
12294
The packet returned during the process of getting the download parameters is empty.
Check whether the device can access the internet.
12295
Failed to decode the packet returned during the process of getting the download parameters.
Check whether the device can access the internet.
12297
No appinfo is set.
Check whether the authentication key is correct and whether the voice message and speech-to-text feature is initialized.

Sample code

void TMGTestScene::OnEvent(ITMG_MAIN_EVENT_TYPE eventType,const char* data){
switch (eventType) {
...
else if (eventType == ITMG_MAIN_EVNET_TYPE_PTT_DOWNLOAD_COMPLETE) {
int32 result = JsonObject->GetIntegerField(TEXT("result"));
FString filepath = JsonObject->GetStringField(TEXT("file_path"));
FString fileid = JsonObject->GetStringField(TEXT("file_id"));
onPttDownloadFileCompleted(result, filepath, fileid);
}
}
}

Playing back audio

This API is used to play back audio.

API prototype

ITMGPTT virtual int PlayRecordedFile(const char* filePath)
ITMGPTT virtual int PlayRecordedFile(const char* filePath, nt voiceType)
Parameter
Type
Description
filePath
const char*
Local audio file path
voicetype
int
Voice changer type. For more information, see Voice Changing Effects.

Error codes

Error Code Value
Cause
Suggested Solution
20485
Playback is not started.
Ensure the existence of the file and the validity of the file path.

Sample code

ITMGContextGetInstance()->GetPTT()->PlayRecordedFile(filePath);

Callback for audio playback

After the audio is played back, the event message ITMG_MAIN_EVNET_TYPE_PTT_PLAY_COMPLETE will be returned, which will be identified in the OnEvent function.\nThe passed parameter includes result and file_path.
Parameter
Type
Description
code
int
0: playback is completed
filepath
FString
Path of stored recording file

Error codes

Error Code Value
Cause
Suggested Solution
20481
Initialization error.
Check whether the device is being used, whether the permissions are normal, and whether the initialization is normal.
20482
During playback, the client tried to interrupt and play back the next one but failed (which should succeed normally).
Check whether the code logic is correct.
20483
Parameter is empty.
Check whether the API parameters in the code are correct.
20484
Internal error.
An error occurred while initializing the player. This error code is generally caused by failure in decoding, and the error should be located with the aid of logs.

Sample code

void TMGTestScene::OnEvent(ITMG_MAIN_EVENT_TYPE eventType,const char* data){
switch (eventType) {
...
else if (eventType == ITMG_MAIN_EVNET_TYPE_PTT_PLAY_COMPLETE) {
int32 result = JsonObject->GetIntegerField(TEXT("result"));
FString filepath = JsonObject->GetStringField(TEXT("file_path"));
onPttPlayFileCompleted(result, filepath);
}
}
}

Stopping audio playback

This API is used to stop audio playback. There will be a callback for playback completion when the playback stops.

API prototype

ITMGPTT virtual int StopPlayFile()

Sample code

ITMGContextGetInstance()->GetPTT()->StopPlayFile();

Getting audio file size

This API is used to get the size of an audio file.

API prototype

ITMGPTT virtual int GetFileSize(const char* filePath)
Parameter
Type
Description
filePath
const char*
Path of audio file, which is a local path

Sample code

ITMGContextGetInstance()->GetPTT()->GetFileSize(filePath);

Getting audio file duration

This API is used to get the duration of an audio file in milliseconds.

API prototype

ITMGPTT virtual int GetVoiceFileDuration(const char* filePath)
Parameter
Type
Description
filePath
const char*
Path of audio file, which is a local path

Sample code

ITMGContextGetInstance()->GetPTT()->GetVoiceFileDuration(filePath);

Fast Recording-to-Text Conversion

API
Description
SpeechToText
Converts speech to text

Converting audio file to text

This API is used to convert a specified audio file to text.

API prototype

ITMGPTT virtual void SpeechToText(const char* fileID)
Parameter
Type
Description
fileID
const char*
Audio file URL

Sample code

ITMGContextGetInstance()->GetPTT()->SpeechToText(fileID);

Translating audio file into text in specified language

This API can specify a language for recognition or translate the information recognized in speech into a specified language and return the translation.
Note:
Translation incurs additional fees. For more information, see Purchase Guide.

API prototype

ITMGPTT virtual int SpeechToText(const char* fileID,const char* speechLanguage)
ITMGPTT virtual int SpeechToText(const char* fileID,const char* speechLanguage,const char* translateLanguage)
Parameter
Type
Description
fileID
const char*
The URL of the audio file, which will be retained on the server for 90 days.
speechLanguage
const char*
The language in which the audio file is to be converted to text. For parameters, see Language Parameter Reference List.
translatelanguage
const char*
The language in which the audio file is to be translated to text. For parameters, see Language Parameter Reference List.

Sample code

ITMGContextGetInstance()->GetPTT()->SpeechToText(filePath,"cmn-Hans-CN","cmn-Hans-CN");

Callback for recognition

After the specified audio file is converted to text, the event message ITMG_MAIN_EVNET_TYPE_PTT_SPEECH2TEXT_COMPLETE will be returned, which will be identified in the OnEvent function.\nThe passed parameters include result, file_path and text (recognized text).
Parameter
Type
Description
result
int32
0: recording is completed
fileid
FString
URL of recording file, which will be retained on the server for 90 days
text
FString
Converted text

Error codes

Error Code Value
Cause
Suggested Solution
32769
An internal error occurred.
Analyze logs, get the actual error code returned from the backend to the client, and ask backend personnel for assistance.
32770
Network failed.
Check whether the device can access the internet.
32772
Failed to decode the returned packet.
Analyze logs, get the actual error code returned from the backend to the client, and ask backend personnel for assistance.
32774
No appinfo is set.
Check whether the authentication key is correct and whether the voice messaging and speech-to-text feature is initialized.
32776
authbuffer check failed.
Check whether authbuffer is correct.
32784
Incorrect speech-to-text conversion parameter.
Check whether the API parameter fileid in the code is empty.
32785
Speech-to-text translation returned an error.
Error with the backend of voice messaging and speech-to-text feature. Analyze logs, get the actual error code returned from the backend to the client, and ask backend personnel for assistance.
32787
Speech-to-text conversion succeeded, but the text translation service was not activated.
Activate the text translation service in the console.
32788
Speech-to-text conversion succeeded, but the language parameter of the text translation service was invalid.
Check the parameter passed in.

Sample code

void TMGTestScene::OnEvent(ITMG_MAIN_EVENT_TYPE eventType,const char* data){
switch (eventType) {
...
else if (eventType == ITMG_MAIN_EVNET_TYPE_PTT_SPEECH2TEXT_COMPLETE) {
int32 result = JsonObject->GetIntegerField(TEXT("result"));
FString text = JsonObject->GetStringField(TEXT("text"));
FString fileid = JsonObject->GetStringField(TEXT("file_id"));
onPttSpeech2TextCompleted(result, fileid, text);
}
}
}

Voice Message Volume Level APIs

API
Description
GetMicLevel
Gets real-time mic volume level
SetMicVolume
Sets recording volume level
GetMicVolume
Gets recording volume level
GetSpeakerLevel
Gets real-time speaker volume
SetSpeakerVolume
Sets playback volume level
GetSpeakerVolume
Gets playback volume level

Getting the real-time mic volume of voice message

This API is used to get the real-time mic volume. An int-type value will be returned. Value range: 0-200.

API prototype

ITMGPTT virtual int GetMicLevel()

Sample code

ITMGContext.GetInstance(this).GetPTT().GetMicLevel();

Setting the recording volume of voice message

This API is used to set the recording volume of voice message. Value range: 0-200.

API prototype

ITMGPTT virtual int SetMicVolume(int vol)

Sample code

ITMGContextGetInstance()->GetPTT()->SetMicVolume(100);

Getting the recording volume of voice message

This API is used to get the recording volume of voice message. An int-type value will be returned. Value range: 0-200.

API prototype

ITMGPTT virtual int GetMicVolume()

Sample code

ITMGContextGetInstance()->GetPTT()->GetMicVolume();

Getting the real-time speaker volume of voice message

This API is used to get the real-time speaker volume. An int-type value will be returned. Value range: 0-200.

API prototype

ITMGPTT virtual int GetSpeakerLevel()

Sample code

ITMGContextGetInstance()->GetPTT()->GetSpeakerLevel();

Setting the playback volume of voice message

This API is used to set the playback volume of voice message. Value range: 0-200.

API prototype

ITMGPTT virtual int SetSpeakerVolume(int vol)

Sample code

ITMGContextGetInstance()->GetPTT()->SetSpeakerVolume(100);

Getting the playback volume of voice message

This API is used to get the playback volume of voice message. An int-type value will be returned. Value range: 0-200.

API prototype

ITMGPTT virtual int GetSpeakerVolume()

Sample code

ITMGContextGetInstance()->GetPTT()->GetSpeakerVolume();

Advanced APIs

Getting version number

This API is used to get the SDK version number for SDK usage analysis.

API prototype

ITMGContext virtual const char* GetSDKVersion()

Sample code

ITMGContextGetInstance()->GetSDKVersion();

Setting log printing level

This API is used to set the level of logs to be printed, and needs to be called before the initialization. It is recommended to keep the default level.

API prototype

ITMGContext int SetLogLevel(ITMG_LOG_LEVEL levelWrite, ITMG_LOG_LEVEL levelPrint)

Parameter description

Parameter
Type
Description
levelWrite
ITMG_LOG_LEVEL
Sets the level of logs to be written. TMG_LOG_LEVEL_NONE indicates not to write. Default value: TMG_LOG_LEVEL_INFO
levelPrint
ITMG_LOG_LEVEL
Sets the level of logs to be printed. TMG_LOG_LEVEL_NONE indicates not to print. Default value: TMG_LOG_LEVEL_ERROR
ITMG_LOG_LEVEL description:
ITMG_LOG_LEVEL
Description
TMG_LOG_LEVEL_NONE
Does not print logs
TMG_LOG_LEVEL_ERROR
Prints error logs (default)
TMG_LOG_LEVEL_INFO
Prints info logs
TMG_LOG_LEVEL_DEBUG
Prints debug logs
TMG_LOG_LEVEL_VERBOSE
Prints verbose logs

Sample code

ITMGContextGetInstance()->SetLogLevel(TMG_LOG_LEVEL_INFO,TMG_LOG_LEVEL_INFO);

Setting the log printing path

This API is used to set the log printing path. The default path is as follows. It needs to be called before Init.
OS
Path
Windows
%appdata%\\Tencent\\GME\\ProcessName
iOS
Application/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/Documents
Android
/sdcard/Android/data/xxx.xxx.xxx/files
Mac
/Users/username/Library/Containers/xxx.xxx.xxx/Data/Documents

API prototype

ITMGContext virtual int SetLogPath(const char* logDir)
Parameter
Type
Description
logDir
const char*
Path

Sample code

cosnt char* logDir = ""// Set a path by yourself
ITMGContext* context = ITMGContextGetInstance();
context->SetLogPath(logDir);

Callback Messages

Message
Description
Parameter
Sample
ITMG_MAIN_EVENT_TYPE_ENTER_ROOM
A member entered the audio room
result; error_info
{"error_info":"","result":0}
ITMG_MAIN_EVENT_TYPE_EXIT_ROOM
A member exited the audio room
result; error_info
{"error_info":"","result":0}
ITMG_MAIN_EVENT_TYPE_ROOM_DISCONNECT
The room was disconnected for network or other reasons
result; error_info
{"error_info":"waiting timeout, please check your network","result":0}
ITMG_MAIN_EVNET_TYPE_USER_UPDATE
Room members were updated
user_list; event_id
{"event_id":1,"user_list":["0"]}
ITMG_MAIN_EVENT_TYPE_RECONNECT_START
The reconnection to the room started
result; error_info
{"error_info":"","result":0}
ITMG_MAIN_EVENT_TYPE_RECONNECT_SUCCESS
The reconnection to the room succeeded
result; error_info
{"error_info":"","result":0}
ITMG_MAIN_EVENT_TYPE_SWITCH_ROOM
The room was quickly switched
result; error_info
{"error_info":"","result":0}
ITMG_MAIN_EVENT_TYPE_CHANGE_ROOM_TYPE
The room status was changed
result; error_info; sub_event_type; new_room_type
{"error_info":"","new_room_type":0,"result":0}
ITMG_MAIN_EVENT_TYPE_ROOM_SHARING_START
Cross-room mic connect started
result;
{"result":0}
ITMG_MAIN_EVENT_TYPE_ROOM_SHARING_STOP
Cross-room mic connect stopped
result;
{"result":0}
ITMG_MAIN_EVENT_TYPE_SPEAKER_DEFAULT_DEVICE_CHANGED
The default speaker device was changed
result; error_info
{"deviceID":"{0.0.0.00000000}.{a4f1e8be-49fa-43e2-b8cf-dd00542b47ae}","deviceName":"Speaker (Realtek High Definition Audio)","error_info":"","isNewDevice":true,"isUsedDevice":false,"result":0}
ITMG_MAIN_EVENT_TYPE_SPEAKER_NEW_DEVICE
A new speaker device was added
result; error_info
{"deviceID":"{0.0.0.00000000}.{a4f1e8be-49fa-43e2-b8cf-dd00542b47ae}","deviceName":"Speaker (Realtek High Definition Audio)","error_info":"","isNewDevice":true,"isUsedDevice":false,"result":0}
ITMG_MAIN_EVENT_TYPE_SPEAKER_LOST_DEVICE
A speaker device was lost
result; error_info
{"deviceID":"{0.0.0.00000000}.{a4f1e8be-49fa-43e2-b8cf-dd00542b47ae}","deviceName":"Speaker (Realtek High Definition Audio)","error_info":"","isNewDevice":false,"isUsedDevice":false,"result":0}
ITMG_MAIN_EVENT_TYPE_MIC_NEW_DEVICE
A new mic device was added
result; error_info
{"deviceID":"{0.0.1.00000000}.{5fdf1a5b-f42d-4ab2-890a-7e454093f229}","deviceName":"Mic (Realtek High Definition Audio)","error_info":"","isNewDevice":true,"isUsedDevice":true,"result":0}
ITMG_MAIN_EVENT_TYPE_MIC_LOST_DEVICE
A mic device was lost
result; error_info
{"deviceID":"{0.0.1.00000000}.{5fdf1a5b-f42d-4ab2-890a-7e454093f229}","deviceName":"Mic (Realtek High Definition Audio)","error_info":"","isNewDevice":false,"isUsedDevice":true,"result":0}
ITMG_MAIN_EVENT_TYPE_MIC_DEFAULT_DEVICE_CHANGED
The default mic device was changed
result; error_info
{"deviceID":"{0.0.1.00000000}.{5fdf1a5b-f42d-4ab2-890a-7e454093f229}","deviceName":"Mic (Realtek High Definition Audio)","error_info":"","isNewDevice":false,"isUsedDevice":true,"result":0}
ITMG_MAIN_EVENT_TYPE_CHANGE_ROOM_QUALITY
The room quality changed
weight; loss; delay
{"weight":5,"loss":0.1,"delay":1}
ITMG_MAIN_EVNET_TYPE_PTT_RECORD_COMPLETE
Voice message recording was completed
result; file_path
{"file_path":"","result":0}
ITMG_MAIN_EVNET_TYPE_PTT_UPLOAD_COMPLETE
Voice message upload was completed
result; file_path;file_id
{"file_id":"","file_path":"","result":0}
ITMG_MAIN_EVNET_TYPE_PTT_DOWNLOAD_COMPLETE
Voice message download was completed
result; file_path;file_id
{"file_id":"","file_path":"","result":0}
ITMG_MAIN_EVNET_TYPE_PTT_PLAY_COMPLETE
Voice message playback was completed
result; file_path
{"file_path":"","result":0}
ITMG_MAIN_EVNET_TYPE_PTT_SPEECH2TEXT_COMPLETE
Fast speech-to-text conversion was completed
result; text;file_id
{"file_id":"","text":"","result":0}
ITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRECOGNITION_COMPLETE
Streaming speech-to-text conversion was completed
result; file_path; text;file_id
{"file_id":"","file_path":","text":"","result":0}
ITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRECOGNITION_IS_RUNNING
Streaming speech-to-text conversion is in progress
result; file_path; text;file_id
{"file_id":"","file_path":","text":"","result":0}
ITMG_MAIN_EVNET_TYPE_PTT_TEXT2SPEECH_COMPLETE
Text-to-speech conversion was completed
result; text;file_id
{"file_id":"","text":"","result":0}
ITMG_MAIN_EVNET_TYPE_PTT_TRANSLATE_TEXT_COMPLETE
Text translation was completed
result; text;file_id
{"file_id":"","text":"","result":0}

","recentReleaseTime":"2024-01-18 15:02:24","slate":"[{\"id\":\"dmcG7qNbBxmuZfjUA63Ic\",\"children\":[{\"text\":\"This document describes how to integrate with and debug GME client APIs for the voice messaging and speech-to-text services for Unreal Engine.\"}],\"type\":\"p\"},{\"id\":\"qIBWAQU06c7xncYFF6690\",\"children\":[{\"text\":\"Key Considerations for Using GME\"}],\"nodeId\":\"key-considerations-for-using-gme\",\"type\":\"h2\"},{\"id\":\"PemWmahY3ZvGHovf64aWm\",\"children\":[{\"text\":\"GME provides the real-time voice and voice messaging and speech-to-text services, which all depend on core APIs such as \"},{\"code\":1,\"text\":\"Init\"},{\"text\":\" and \"},{\"code\":1,\"text\":\"Poll\"},{\"text\":\".\"}],\"type\":\"p\"},{\"id\":\"dCJgU3IZJMuaYbYwW2b_t\",\"children\":[{\"text\":\"Notes\"}],\"nodeId\":\"notes\",\"type\":\"h4\"},{\"id\":\"ET-9vVJYDoLqb8W6OIOeG\",\"children\":[{\"text\":\"You have created a GME application and obtained the SDK AppID and key. For more information, see \"},{\"id\":\"u17ZJGYlSxdKJS6a_EAsI\",\"children\":[{\"text\":\"Activating Services\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://intl.cloud.tencent.com/document/product/607/10782\",\"props\":{\"type\":\"link\",\"url\":\"https://intl.cloud.tencent.com/document/product/607/10782\"},\"type\":\"ref\"},{\"text\":\".\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"T6u8NOonqX-YK-0-ziEXm\",\"children\":[{\"text\":\"You have activated \"},{\"b\":1,\"text\":\"GME real-time voice and voice messaging and speech-to-text services\"},{\"text\":\". For more information, see \"},{\"id\":\"NwAe_eZ2BgKiRu4-DCu92\",\"children\":[{\"text\":\"Activating Services\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://intl.cloud.tencent.com/document/product/607/10782\",\"props\":{\"type\":\"link\",\"url\":\"https://intl.cloud.tencent.com/document/product/607/10782\"},\"type\":\"ref\"},{\"text\":\".\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"L0KaoBHdHfHnrDJheNtem\",\"children\":[{\"text\":\"Configure your project before using GME; otherwise, the SDK will not take effect.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"wTK0Ud4xTJCnwIltL3jJL\",\"children\":[{\"text\":\"After a GME API is called successfully, \"},{\"code\":1,\"text\":\"QAVError.OK\"},{\"text\":\" will be returned with the value being 0.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"7iQfKybEWGGBlvlMyHLS3\",\"children\":[{\"text\":\"GME APIs should be called in the same thread.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"G03eW6Nzl77vqabZ4fOKY\",\"children\":[{\"text\":\"The \"},{\"code\":1,\"text\":\"Poll\"},{\"text\":\" API should be called periodically for GME to trigger event callbacks.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"0EkJxC0_lYX_EC5mWnW4C\",\"children\":[{\"text\":\"For detailed error code, see \"},{\"type\":\"ref\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/33223\"},\"children\":[{\"text\":\"Error Codes\"}],\"id\":\"k9EPwZ_56F1f3DKYF_ft9\"},{\"text\":\".\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"RhuguTPCmPz0NsqE8QiJW\",\"children\":[{\"id\":\"V1nXX0Biit8KaATCvxIFq\",\"children\":[{\"b\":1,\"color\":\"#04C8DC\",\"text\":\"Note: \"}],\"type\":\"p\"},{\"id\":\"HSXhPs4nwILZD5ZYs83fS\",\"children\":[{\"text\":\"There is a default call rate limit for speech-to-text APIs. For more information on how calls are billed within the limit, see \"},{\"id\":\"5D0DLgPf09yKD_bDkDZg3\",\"children\":[{\"text\":\"Purchase Guide\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://intl.cloud.tencent.com/document/product/607/50009\",\"props\":{\"type\":\"link\",\"url\":\"https://intl.cloud.tencent.com/document/product/607/50009\"},\"type\":\"ref\"},{\"text\":\". If you want to increase the limit or learn more about how excessive calls are billed, \"},{\"id\":\"Sqqpsx7y9vJQqrgMKdczM\",\"children\":[{\"text\":\"submit a ticket\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://console.tencentcloud.com/workorder/category?level1_id=438&level2_id=445&source=0&data_title=%E6%B8%B8%E6%88%8F%E5%A4%9A%E5%AA%92%E4%BD%93%E5%BC%95%E6%93%8EGME&step=1\",\"props\":{\"type\":\"link\",\"url\":\"https://console.tencentcloud.com/workorder/category?level1_id=438&level2_id=445&source=0&data_title=%E6%B8%B8%E6%88%8F%E5%A4%9A%E5%AA%92%E4%BD%93%E5%BC%95%E6%93%8EGME&step=1\"},\"type\":\"ref\"},{\"text\":\".\"}],\"type\":\"p\"},{\"id\":\"6KXPJ0NOLJ7x23vgL_FMy\",\"children\":[{\"text\":\"Non-streaming speech-to-text API \"},{\"b\":1,\"i\":1,\"text\":\"SpeechToText()\"},{\"text\":\": There can be up to 10 concurrent requests per account.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"yS9sLoa3RBw0Yg7-6-oY5\",\"children\":[{\"text\":\"Streaming speech-to-text API \"},{\"b\":1,\"i\":1,\"text\":\"StartRecordingWithStreamingRecognition()\"},{\"text\":\": There can be up to 50 concurrent requests per account.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"i25WjeGHEqK0K2_10vWdl\",\"children\":[{\"text\":\"Real-time streaming speech-to-text API \"},{\"b\":1,\"i\":1,\"text\":\"StartRealTimeASR()\"},{\"text\":\": There can be up to 50 concurrent requests per account.\"}],\"start\":false,\"type\":\"uli\"}],\"hintType\":\"alert\",\"type\":\"hint\"},{\"id\":\"iosXtY4ic2o8pg0FKqG3Q\",\"children\":[{\"text\":\"Integrating the SDK\"}],\"nodeId\":\"integrating-the-sdk\",\"type\":\"h2\"},{\"id\":\"n69Xgy6ZttKb9UZwtWLaF\",\"children\":[{\"text\":\"Directions\"}],\"nodeId\":\"directions\",\"type\":\"h3\"},{\"id\":\"4Ugu64uuL96r9rfkySUsd\",\"children\":[{\"text\":\"Key processes involved in SDK integration are as follows:\"}],\"type\":\"p\"},{\"type\":\"p\",\"children\":[{\"text\":\"\"},{\"id\":\"c1antyfmOQ105LgAAKJHg\",\"alt\":\"\",\"children\":[{\"text\":\"\"}],\"inline\":true,\"type\":\"image\",\"url\":\"https://cloudcache.intl.tencent-cloud.com/cms/backend-cms/b2c4226cb35311ee9939525400461a83.jpeg\",\"naturalSize\":[1560,1030],\"size\":[800,528]},{\"text\":\"\"}],\"id\":\"k7-nntN6ZOW67mcz_XnpP\"},{\"type\":\"oli\",\"children\":[{\"text\":\"\"},{\"type\":\"ref\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/44550?!editLang=en&!preview#Init\"},\"children\":[{\"text\":\"Initializing GME, API: Init\"}],\"id\":\"Ta9Fn5z57eTk8ZgLL3LzX\"},{\"text\":\"\"}],\"id\":\"_t2xdgxOfFJRnFAiqDCA8\"},{\"type\":\"oli\",\"children\":[{\"text\":\"\"},{\"type\":\"ref\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/44550?!editLang=en&!preview#Poll\"},\"children\":[{\"text\":\"Calling Poll periodically to trigger event callbacks, API: Poll\"}],\"id\":\"aY31MIYsaEVbTRv3ZRhn2\"},{\"text\":\"\"}],\"id\":\"fuI8zJLvQI0Q4PEnN8BKQ\"},{\"type\":\"oli\",\"children\":[{\"text\":\"\"},{\"type\":\"ref\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/44550?!editLang=en&!preview#ApplyPtt\"},\"children\":[{\"text\":\"Initializing authentication, API: ApplyPTTAuthbuffer\"}],\"id\":\"5-DmwcRk2TMEpsi03ZTut\"},{\"text\":\"\"}],\"id\":\"cYarKruwtDdZgRm2SlyrQ\"},{\"type\":\"oli\",\"children\":[{\"text\":\"\"},{\"type\":\"ref\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/44550?!editLang=en&!preview#StartRWSR\"},\"children\":[{\"text\":\"Starting streaming speech recognition, API: StartRecordingWithStreamingRecognition\"}],\"id\":\"ejVGZPDB30Nyo3HQwpcVm\"},{\"text\":\"\"}],\"id\":\"1Go7A6TRhIaUzaL3Zn8cn\"},{\"type\":\"oli\",\"children\":[{\"text\":\"\"},{\"type\":\"ref\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/44550?!editLang=en&!preview#Stop\"},\"children\":[{\"text\":\"Stop recording, API: StopRecording\"}],\"id\":\"ZXnvXFUtmQNWgiIcRZWVO\"},{\"text\":\"\"}],\"id\":\"N6uZimUHYxSP5irP9WTjn\"},{\"type\":\"oli\",\"children\":[{\"text\":\"\"},{\"type\":\"ref\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/44550?!editLang=en&!preview#UnInit\"},\"children\":[{\"text\":\"Uninitializing GME, API: UnInit\"}],\"id\":\"lKZnBGALlp44jnfsms6Ul\"},{\"text\":\"\"}],\"id\":\"Xs49ql7q36sPjqYdfW3hM\"},{\"id\":\"r9sQ0ZCGELg598wQXSKDa\",\"children\":[{\"text\":\"C++ classes\"}],\"nodeId\":\"c.2B.2B-classes\",\"type\":\"h3\"},{\"id\":\"weEpIfunbjHJ-1_4u3tn8\",\"children\":[{\"id\":\"mIYtk0YQRjMFWBzeOicoX\",\"children\":[{\"id\":\"N4lUkWnBzVWbrco7ZlyLg\",\"children\":[{\"id\":\"KE_Q_m4Mk7zRrHfb3q7Bw\",\"children\":[{\"text\":\"Class\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"AyzFqWHD9QmzOLRSc1e9q\",\"children\":[{\"id\":\"n10_18itsK2ppU2D1QqmP\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"2uPk4ttVo6-WLtspzGrB1\",\"children\":[{\"id\":\"dI4-LMwdk4bW-aTIZkS_t\",\"children\":[{\"id\":\"JSmNTHg8ZjPvh99wl-ksj\",\"children\":[{\"id\":\"Hc34ZLXcE5u9RBsk_I99I\",\"children\":[{\"text\":\"ITMGContext\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"KNvCruVilRNNX6W3k6K5J\",\"children\":[{\"id\":\"w9pdTEZXC2YPO_EhkQhYL\",\"children\":[{\"id\":\"I6VM581zR8jMGHEd_2WxX\",\"children\":[{\"text\":\"Key APIs\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"Q_DV6NsqIsXlrec6MPvsZ\",\"children\":[{\"id\":\"E8PdyEm-QH4CfnH17ZhSy\",\"children\":[{\"id\":\"kvSMu0CsBnUmGqkGhbm_h\",\"children\":[{\"id\":\"i7S3XdHg8xVPCBpc8jH0o\",\"children\":[{\"text\":\"ITMGPTT\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"GwPFOEymDFWIupSN-o6cl\",\"children\":[{\"id\":\"wyljjg4kjywM9Dp5eWStp\",\"children\":[{\"id\":\"H-ae7gKCeDbnCCw18kfMv\",\"children\":[{\"text\":\"Voice messaging and speech-to-text APIs\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[28,72],\"widthMode\":\"percentage\"},{\"id\":\"obEGyj2L51PgWNyLEeXX2\",\"children\":[{\"text\":\"Key APIs\"}],\"nodeId\":\"key-apis\",\"type\":\"h2\"},{\"id\":\"VtEWA4ASvtFmjHNhBaudh\",\"children\":[{\"id\":\"nD0onlcINsU9ycoUyezwd\",\"children\":[{\"id\":\"_bEzSb4sfdMeFCrgYTYqA\",\"children\":[{\"id\":\"xcNF_1DsxwVeWb_4vNRgb\",\"children\":[{\"text\":\"API\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"FVVUPnOkpnLoj8_KQ8Tsp\",\"children\":[{\"id\":\"2ZRqxcoKdbHC1EDyCJbKj\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"9Nnj3XsCSQ_G7kXT1cyiX\",\"children\":[{\"id\":\"loIWJrUxoVxMoRgMV0T9P\",\"children\":[{\"id\":\"3ckpl1f-G5oGYd-051HTK\",\"children\":[{\"id\":\"nm70jNXzzX3Xi0CgS3EPS\",\"children\":[{\"text\":\"Init\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"SYAViAmS0xVM5QIYPddGk\",\"children\":[{\"id\":\"IUFNz7u3K-bXvqLHl5KPW\",\"children\":[{\"id\":\"c7Cd30h5NWW407Zpt55EL\",\"children\":[{\"text\":\"Initializes GME\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"RR-BcFxT-MkgfdwX1cuOF\",\"children\":[{\"id\":\"no4csGjFcgog8WUXPkPkB\",\"children\":[{\"id\":\"4jhpupaBuSEF8qVzd3lQ7\",\"children\":[{\"id\":\"tuEFNnjxgDm_Gk6xJ26Mb\",\"children\":[{\"text\":\"Poll\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"okH6GmtgQYp9JunRE_H0i\",\"children\":[{\"id\":\"F_sI0vtvD2YuCEhHxmbcc\",\"children\":[{\"id\":\"eKQoMQL10S9ezH3Mqve3b\",\"children\":[{\"text\":\"Triggers event callback\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"unrjRXfnZ8ew7ZwkABtHE\",\"children\":[{\"id\":\"Z3O5RDBp8YqW5BOUSLyvT\",\"children\":[{\"id\":\"ViqRSe3A3AOeLlYBrBW_f\",\"children\":[{\"id\":\"eYctiI29mdH8xU4OCktpH\",\"children\":[{\"text\":\"Pause\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"sU0Uu_6HxVAdUJL6OF1VU\",\"children\":[{\"id\":\"PTbrfLqO3pcZMfrfWw4w9\",\"children\":[{\"id\":\"g3V2vOvo5L7XpDOGu6p3S\",\"children\":[{\"text\":\"Pauses the system\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"YXxKoLiVkaM_5R_lshXpZ\",\"children\":[{\"id\":\"rVBTj2zdo-__b9u78W7mj\",\"children\":[{\"id\":\"JU_NZU6xHW2USIOQREl5I\",\"children\":[{\"id\":\"QN_iVGR10sW3wSe0dSt4W\",\"children\":[{\"text\":\"Resume\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"68WCfSe7oMAEIve4IZC16\",\"children\":[{\"id\":\"-eq43DZRe6cK8MBJvRv6u\",\"children\":[{\"id\":\"0QovkQ4ZZXtS6P_XCnmxN\",\"children\":[{\"text\":\"Resumes the system\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"U3MaqlVcUb1Sl5hnhC57u\",\"children\":[{\"id\":\"Kj1RglADxKOFrc1F1Q9cX\",\"children\":[{\"id\":\"olDakg5w2s_AmtDYPQkMz\",\"children\":[{\"id\":\"FRFUQxPBLxWNIX4C_Z4xg\",\"children\":[{\"text\":\"Uninit\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"dE4hPnctPnzRRA0UG60cG\",\"children\":[{\"id\":\"rFLFjk9oHonjKyPjVOd9h\",\"children\":[{\"id\":\"CODFL-h8yAT6JCZNUqe2l\",\"children\":[{\"text\":\"Uninitializes GME\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[28,72],\"widthMode\":\"percentage\"},{\"id\":\"blW-kqJkIniAfH1VuGzju\",\"children\":[{\"text\":\"Preparations\"}],\"nodeId\":\"preparations\",\"type\":\"h3\"},{\"id\":\"MnO7DjCoBTS_N1Bd5N6Z2\",\"children\":[{\"text\":\"You need to import the header file \"},{\"code\":1,\"text\":\"tmg_sdk.h\"},{\"text\":\" first before you can access GME. The classes in the header file inherit \"},{\"code\":1,\"text\":\"ITMGDelegate\"},{\"text\":\" for message delivery and callback.\"}],\"type\":\"p\"},{\"id\":\"dUnW1i31qQpjCHjh4QVlk\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code\",\"type\":\"h4\"},{\"id\":\"5pZaNFyb_vOyNgNyE_wQ-\",\"children\":[{\"id\":\"NDBDnC-c9yY7XD-CqlgVT\",\"children\":[{\"text\":\"#include \\\"tmg_sdk.h\\\"\"}],\"type\":\"code-line\"},{\"id\":\"2dy2nlWrReD4WWR5lMf_R\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"},{\"id\":\"ioYJbloDfIuV_NGAPIOjh\",\"children\":[{\"text\":\"class UEDEMO1_API AUEDemoLevelScriptActor : public ALevelScriptActor, public ITMGDelegate\"}],\"type\":\"code-line\"},{\"id\":\"ufskWRgEP77Zmu3cdrTp5\",\"children\":[{\"text\":\"{\"}],\"type\":\"code-line\"},{\"id\":\"5sRgA4edlG6BTwnF4YmzP\",\"children\":[{\"text\":\"public:\"}],\"type\":\"code-line\"},{\"id\":\"beRzwqavgVcoLX1gOzlKq\",\"children\":[{\"text\":\"...\"}],\"type\":\"code-line\"},{\"id\":\"vBL0dlpbwURyTPQAwUUDt\",\"children\":[{\"text\":\"private:\"}],\"type\":\"code-line\"},{\"id\":\"S2-3_afw9ss8tc5UkyjeS\",\"children\":[{\"text\":\"...\"}],\"type\":\"code-line\"},{\"id\":\"36jSN3WuyeGo63bzUW-tw\",\"children\":[{\"text\":\"}\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"fftn8Ls36TV74QV3KIfLI\",\"children\":[{\"text\":\"Setting singleton\"}],\"nodeId\":\"setting-singleton\",\"type\":\"h3\"},{\"id\":\"xeuBKgT1W370ApSXhV6Pg\",\"children\":[{\"text\":\"You need to get \"},{\"code\":1,\"text\":\"ITMGContext\"},{\"text\":\" first before you can call the \"},{\"code\":1,\"text\":\"EnterRoom\"},{\"text\":\" function, because all calls begin with \"},{\"code\":1,\"text\":\"ITMGContext\"},{\"text\":\" and callbacks are passed to the application through \"},{\"code\":1,\"text\":\"ITMGDelegate\"},{\"text\":\".\"}],\"type\":\"p\"},{\"id\":\"h0WjPcWZClNUUKpMrKt8n\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code2\",\"type\":\"h4\"},{\"id\":\"vSR3KlP4YW_KP5k9RBvdv\",\"children\":[{\"id\":\"2wA3dKAqtwuokXmE09mNb\",\"children\":[{\"text\":\"ITMGContext* context = ITMGContextGetInstance();\"}],\"type\":\"code-line\"},{\"id\":\"MXfimorc5xstDfbk7Kysj\",\"children\":[{\"text\":\"context->SetTMGDelegate(this);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"en2s88LBN1vXp8K6hpeCD\",\"children\":[{\"text\":\"Message delivery\"}],\"nodeId\":\"message-delivery\",\"type\":\"h3\"},{\"id\":\"oj7T2SXU2lXaaDTR1t6RB\",\"children\":[{\"text\":\"The API class uses the \"},{\"code\":1,\"text\":\"Delegate\"},{\"text\":\" method to send callback notifications to the application. \"},{\"code\":1,\"text\":\"ITMG_MAIN_EVENT_TYPE\"},{\"text\":\" indicates the message type. The data on Windows is in json string format. For the key-value pairs, please see the relevant documentation.\"}],\"type\":\"p\"},{\"id\":\"RMrQuY9GAVjiW4tKIHmjg\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code3\",\"type\":\"h4\"},{\"id\":\"SjY724_9XwYE5JOJtvG4p\",\"children\":[{\"id\":\"Xbd9ypLBBcTHBtiNgvzun\",\"children\":[{\"text\":\"// Function implementation:\"}],\"type\":\"code-line\"},{\"id\":\"1Pt5Tm3lt8Zmp4a-JZkhL\",\"children\":[{\"text\":\"//UEDemoLevelScriptActor.h:\"}],\"type\":\"code-line\"},{\"id\":\"ijmk1-iBOiUNhyGSBI8IN\",\"children\":[{\"text\":\"class UEDEMO1_API AUEDemoLevelScriptActor : public ALevelScriptActor, public SetTMGDelegate\"}],\"type\":\"code-line\"},{\"id\":\"A-j0pr_mmRjoSKX2aDJLz\",\"children\":[{\"text\":\"{\"}],\"type\":\"code-line\"},{\"id\":\"w3vqGglO6iwefJFHl1GR_\",\"children\":[{\"text\":\"public:\"}],\"type\":\"code-line\"},{\"id\":\"pKI7X0YDe5dORbjYvwj1V\",\"children\":[{\"text\":\" void OnEvent(ITMG_MAIN_EVENT_TYPE eventType, const char* data);\"}],\"type\":\"code-line\"},{\"id\":\"HzIDloFRZ5PH2j9eN0CAv\",\"children\":[{\"text\":\"}\"}],\"type\":\"code-line\"},{\"id\":\"y3plRIOwnezWbilxKGEVa\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"},{\"id\":\"KvEJw2xPv8Agpik9KB9gp\",\"children\":[{\"text\":\"//UEDemoLevelScriptActor.cpp:\"}],\"type\":\"code-line\"},{\"id\":\"GtUI8ICvvruFTxB0Fy26I\",\"children\":[{\"text\":\"void AUEDemoLevelScriptActor::OnEvent(ITMG_MAIN_EVENT_TYPE eventType, const char* data){\"}],\"type\":\"code-line\"},{\"id\":\"GpDj0cMOz6QPO4iWOHTaM\",\"children\":[{\"text\":\" // Identify and manipulate `eventType` here\"}],\"type\":\"code-line\"},{\"id\":\"nMpZmjPL_W_X3sweP-Kyz\",\"children\":[{\"text\":\"}\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"dus-MfHMdqY8KboG-k9UV\",\"children\":[{\"id\":\"oFLqgxZ4t3kvHUEQqxAfJ\",\"children\":[{\"text\":\"Initializing SDK\"}],\"nodeId\":\"Init\",\"type\":\"p\"}],\"nodeId\":\".3Ca-id.3D.22init.22.3Einitializing-sdk.3C.2Fa.3E\",\"type\":\"h3\"},{\"id\":\"4z-_x70zzsI1QqTVWNJ2q\",\"children\":[{\"b\":1,\"text\":\"You need to initialize the SDK through the \"},{\"b\":1,\"code\":1,\"text\":\"Init\"},{\"b\":1,\"text\":\" API\"},{\"text\":\" before you can use the real-time voice, voice message, and speech-to-text services. The \"},{\"code\":1,\"text\":\"Init\"},{\"text\":\" API must be called in the same thread as other APIs. We recommend you call all APIs in the main thread.\"}],\"type\":\"p\"},{\"id\":\"wXuRO00OooTqi_m6DFURk\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype\",\"type\":\"h4\"},{\"id\":\"fZMLbRfXG4oyyyhT0B3Bh\",\"children\":[{\"id\":\"QC0ZuDWJvnlB3HBk0Ms3T\",\"children\":[{\"text\":\"ITMGContext virtual int Init(const char* sdkAppId, const char* openId)\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"7N7sxGz2iVmyqlMTy7fnt\",\"children\":[{\"id\":\"rJxb_hyXTVIziBG0o514Y\",\"children\":[{\"id\":\"cOPznC2uJ0Av0QNblDr6U\",\"children\":[{\"id\":\"jOjSVWS4IftsREqmDBZLs\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"4kVRddKyZtFA7PVQLnOs8\",\"children\":[{\"id\":\"NcoNI6qFdiHipAsGgbPkC\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"pj75Bmwue9Eclf1cEo3ro\",\"children\":[{\"id\":\"CUoLsXElvs23mNc6Kf2LM\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"IdWppZEHC-PWN5Z1O_CRu\",\"children\":[{\"id\":\"2NjecXWPotLLdAVvDPTKb\",\"children\":[{\"id\":\"PuBHFwOiffDHlF25SCcAg\",\"children\":[{\"id\":\"A6lOv2_kzSHmVs5bg9Gf7\",\"children\":[{\"text\":\"sdkAppId\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"rkC5QtmqcEmTglG2PQuuZ\",\"children\":[{\"id\":\"e9Dwido6pGOlpvJBLIbfk\",\"children\":[{\"id\":\"C2L4lKAAe_EIT3hCxZ8vN\",\"children\":[{\"text\":\"const char*\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"-ywvESlZdocIzFqb6yftU\",\"children\":[{\"id\":\"SArMHM_aqSv3AB3JcP9ro\",\"children\":[{\"id\":\"YjAEI188zv_SeSE58TWna\",\"children\":[{\"code\":1,\"text\":\"AppID\"},{\"text\":\" provided in the \"},{\"id\":\"54MY_HA9X-G1Pju92el4J\",\"children\":[{\"text\":\"GME console\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://console.tencentcloud.com/gamegme\",\"props\":{\"type\":\"link\",\"url\":\"https://console.tencentcloud.com/gamegme\"},\"type\":\"ref\"},{\"text\":\", which can be obtained as instructed in \"},{\"id\":\"jLJoT-W__t_7Zz38Kutcs\",\"children\":[{\"text\":\"Activating Services\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://intl.cloud.tencent.com/document/product/607/10782#.E9.87.8D.E7.82.B9.E5.8F.82.E6.95.B0\",\"props\":{\"type\":\"link\",\"url\":\"https://intl.cloud.tencent.com/document/product/607/10782#.E9.87.8D.E7.82.B9.E5.8F.82.E6.95.B0\"},\"type\":\"ref\"},{\"text\":\".\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"yLAzkV8hubQL56dk3zUMC\",\"children\":[{\"id\":\"m-AoDEywKfKVymxIfBUaf\",\"children\":[{\"id\":\"RnQrw0jGNYrzz15pkD4Lr\",\"children\":[{\"id\":\"G_7C1h9Mt-Kp_0ioZ2uXr\",\"children\":[{\"text\":\"openID\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ATX7gobiqMrqCKQpCwJTJ\",\"children\":[{\"id\":\"pg_u9h2aT-RiuJiKbsSOo\",\"children\":[{\"id\":\"MBgJkGhoBEbl93obRtcsz\",\"children\":[{\"text\":\"const char*\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"lOrDMNatITN9052POQW5c\",\"children\":[{\"id\":\"UowLp6r5YbfG-Ku_RmkI7\",\"children\":[{\"id\":\"DitY89VX0NxaYOJK_VbNq\",\"children\":[{\"code\":1,\"text\":\"openID\"},{\"text\":\" can only be in \"},{\"code\":1,\"text\":\"Int64\"},{\"text\":\" type, which is passed in after being converted to a \"},{\"code\":1,\"text\":\"const char*\"},{\"text\":\". You can customize its rules, and it must be unique in the application. To pass in \"},{\"code\":1,\"text\":\"openID\"},{\"text\":\" as a string, \"},{\"id\":\"b2jLfkdaowt0CTsZDa7E8\",\"children\":[{\"text\":\"submit a ticket\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://console.tencentcloud.com/workorder/category?level1_id=438&level2_id=445&source=0&data_title=%E6%B8%B8%E6%88%8F%E5%A4%9A%E5%AA%92%E4%BD%93%E5%BC%95%E6%93%8EGME&step=1\",\"props\":{\"type\":\"link\",\"url\":\"https://console.tencentcloud.com/workorder/category?level1_id=438&level2_id=445&source=0&data_title=%E6%B8%B8%E6%88%8F%E5%A4%9A%E5%AA%92%E4%BD%93%E5%BC%95%E6%93%8EGME&step=1\"},\"type\":\"ref\"},{\"text\":\" for application.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[12,14,74],\"widthMode\":\"percentage\"},{\"id\":\"tjlSoAWG3kJkVOZ1dq0VD\",\"children\":[{\"text\":\"Returned values\"}],\"nodeId\":\"returned-values\",\"type\":\"h4\"},{\"id\":\"awWlwPaKUrE53B2UwcstI\",\"children\":[{\"id\":\"xjSMSyv-UMqg_oJgguJcb\",\"children\":[{\"id\":\"XMMYeoT_GlVsTwVJ9-qpC\",\"children\":[{\"id\":\"BX8ykA1iyndLKD_2qA-NK\",\"children\":[{\"text\":\"Returned Value\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"SjXEZAURx1WLWPd-vCV89\",\"children\":[{\"id\":\"HqkjE7VZlRIFMXyAu93yQ\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"MUggYKq1NogVSYGcYcpt9\",\"children\":[{\"id\":\"ZgJ2WHROXzeAmn-4bE6jL\",\"children\":[{\"id\":\"cHUFKom7JC9aXBuB9UtxH\",\"children\":[{\"id\":\"so0pTlVVhorDLUaemk3FM\",\"children\":[{\"text\":\"AV_OK = 0\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ZyCUyq8b8WADp1teOfe-L\",\"children\":[{\"id\":\"i6JRQqcLkSMaFIwKAKvd9\",\"children\":[{\"id\":\"T5JzKRRlu2v5eNIz_i4Wp\",\"children\":[{\"text\":\"Initialized SDK successfully.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"4IIr5u7PS9CLKGA5oYnzK\",\"children\":[{\"id\":\"zNGonkLDXPX1v3Dn3DJCK\",\"children\":[{\"id\":\"5NsfaS61ojVy8ZmKBlPxT\",\"children\":[{\"id\":\"kMYm00nLK8LVCI8J7cB_j\",\"children\":[{\"text\":\"AV_ERR_SDK_NOT_FULL_UPDATE=7015\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Ql_Vzolso2qwEZ70hkkaH\",\"children\":[{\"id\":\"x_fEWIh8sMBf2Nhi4K1ax\",\"children\":[{\"id\":\"r-4Ei64Tvc5CXUi8VFnQh\",\"children\":[{\"text\":\"Checks whether the SDK file is complete. It is recommended to delete it and then import the SDK again.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[34,66],\"widthMode\":\"percentage\"},{\"id\":\"htaq0vf31UEko6tikEuSb\",\"children\":[{\"id\":\"6lHCHxKtwoN6fogrwjQYH\",\"children\":[{\"b\":1,\"color\":\"#04C8DC\",\"text\":\"Notes on 7015 error code\"}],\"type\":\"p\"},{\"id\":\"oNf_CceaKXVb-8cvy6gxr\",\"children\":[{\"text\":\"The 7015 error code is judged by md5. If this error is reported during integration, please check the integrity and version of the SDK file as prompted.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"h1znXkixc1Y_6ceHsuxGb\",\"children\":[{\"text\":\"The returned value \"},{\"code\":1,\"text\":\"AV_ERR_SDK_NOT_FULL_UPDATE\"},{\"text\":\" is \"},{\"b\":1,\"text\":\"only a reminder\"},{\"text\":\" but will not cause an initialization failure.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"LGaO4b9i4ElBDOJqdRNvR\",\"children\":[{\"text\":\"Due to the third-party reinforcement, Unity packaging mechanism and other factors, the md5 of the library file will be affected, resulting in misjudgment. \"},{\"b\":1,\"text\":\"Please ignore this error in the logic for official release\"},{\"text\":\", and try to avoid displaying it in the UI.\"}],\"start\":false,\"type\":\"uli\"}],\"hintType\":\"alert\",\"type\":\"hint\"},{\"id\":\"-kJsAWijQ4z8ZM_7vpOnW\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code4\",\"type\":\"h4\"},{\"id\":\"8WSIMR8KoItDZ0c-nepDy\",\"children\":[{\"id\":\"GHwBt2l_JOrT1_CQfAplO\",\"children\":[{\"text\":\"std::string appid = TCHAR_TO_UTF8(CurrentWidget->editAppID->GetText().ToString().operator*());\"}],\"type\":\"code-line\"},{\"id\":\"gxpZMdaQHwR4dcfIhRSxJ\",\"children\":[{\"text\":\"std::string userId = TCHAR_TO_UTF8(CurrentWidget->editUserID->GetText().ToString().operator*());\"}],\"type\":\"code-line\"},{\"id\":\"SjrKz4reDwYPVDcq3S1m8\",\"children\":[{\"text\":\"ITMGContextGetInstance()->Init(appid.c_str(), userId.c_str());\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"2Xr4ZwjzKghS3PWKDT5Kf\",\"children\":[{\"text\":\"Triggering event callback\"}],\"nodeId\":\"triggering-event-callback\",\"type\":\"h3\"},{\"id\":\"pIWyqc-bStp3gC7W14qHl\",\"children\":[{\"text\":\"Event callbacks can be triggered by periodically calling the \"},{\"code\":1,\"text\":\"Poll\"},{\"text\":\" API in \"},{\"code\":1,\"text\":\"update\"},{\"text\":\". The \"},{\"code\":1,\"text\":\"Poll\"},{\"text\":\" API is GME's message pump and should be called periodically for GME to trigger event callbacks; otherwise, the entire SDK service will run abnormally. For more information, see the \"},{\"code\":1,\"text\":\"EnginePollHelper\"},{\"text\":\" file in \"},{\"id\":\"SLR5R8tUoEDChW-5fTFOW\",\"children\":[{\"text\":\"SDK Download Guide\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://intl.cloud.tencent.com/document/product/607/18521\",\"props\":{\"type\":\"link\",\"url\":\"https://intl.cloud.tencent.com/document/product/607/18521\"},\"type\":\"ref\"},{\"text\":\".\"}],\"nodeId\":\"Poll\",\"type\":\"p\"},{\"id\":\"ge7i8_SbnWvnvAP2Y5D6-\",\"children\":[{\"id\":\"T-7IXT4chShbO-LCgEm1p\",\"children\":[{\"b\":1,\"color\":\"#04C8DC\",\"text\":\"Note: \"}],\"type\":\"p\"},{\"id\":\"l1us3MxDlG-CoXfs63VQ9\",\"children\":[{\"text\":\"The \"},{\"code\":1,\"text\":\"Poll\"},{\"text\":\" API must be called periodically and in the main thread to avoid abnormal API callbacks.\"}],\"type\":\"p\"}],\"hintType\":\"alert\",\"type\":\"hint\"},{\"id\":\"9CEWn94XIqHXVif9fx8hW\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype2\",\"type\":\"h4\"},{\"id\":\"_bf8G3hXkVxka_-WmkZBe\",\"children\":[{\"id\":\"PXwkGOYy8QYOv-bP4WsBn\",\"children\":[{\"text\":\"class ITMGContext {\"}],\"type\":\"code-line\"},{\"id\":\"SXCq57j3JxYXrXSu6mfE0\",\"children\":[{\"text\":\"protected:\"}],\"type\":\"code-line\"},{\"id\":\"QL38Zds32czj0kHDUhWL0\",\"children\":[{\"text\":\" virtual ~ITMGContext() {}\"}],\"type\":\"code-line\"},{\"id\":\"C3AIUdvBaixfzuTQinmIq\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"},{\"id\":\"nRU4gbC5BSInvzuY3tyiQ\",\"children\":[{\"text\":\"public: \"}],\"type\":\"code-line\"},{\"id\":\"d4eVxuEwBkAzOjpH9xpqF\",\"children\":[{\"text\":\" virtual void Poll()= 0;\"}],\"type\":\"code-line\"},{\"id\":\"18DJzQQsCZgpfD-MhPUiv\",\"children\":[{\"text\":\"}\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"zXW3_iQ4N0M2doBJxK8Lp\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code5\",\"type\":\"h4\"},{\"id\":\"0JCBgwXOJWDGrsr1JTxSR\",\"children\":[{\"id\":\"2KG0YJZnYV-PvcBGGp5lM\",\"children\":[{\"text\":\"// Declaration in the header file\"}],\"type\":\"code-line\"},{\"id\":\"Y1fwWnycmWOZM7xBFBai4\",\"children\":[{\"text\":\"virtual void Tick(float DeltaSeconds);\"}],\"type\":\"code-line\"},{\"id\":\"Ar_3In9mSHCISkm_fGkIx\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"},{\"id\":\"EnTG1Khi79KDkF-5WL73w\",\"children\":[{\"text\":\"void AUEDemoLevelScriptActor::Tick(float DeltaSeconds) {\"}],\"type\":\"code-line\"},{\"id\":\"mzPCWq0J6oT6ak_qKmuaf\",\"children\":[{\"text\":\" Super::Tick(DeltaSeconds);\\t\"}],\"type\":\"code-line\"},{\"id\":\"FOXC4jAXynLl0m-F7Q_13\",\"children\":[{\"text\":\" ITMGContextGetInstance()->Poll();\"}],\"type\":\"code-line\"},{\"id\":\"Mn17ZM-2fNas7iTVYUN6E\",\"children\":[{\"text\":\"}\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"JPqaSEDGsqYiUC--YGPKt\",\"children\":[{\"text\":\"Pausing the system\"}],\"nodeId\":\"pausing-the-system\",\"type\":\"h3\"},{\"id\":\"yih0u2whScuqNcuUE_oER\",\"children\":[{\"text\":\"When a \"},{\"code\":1,\"text\":\"Pause\"},{\"text\":\" event occurs in the system, the engine should also be notified for pause. If you do not need the background to play back the audio in the room, please call \"},{\"code\":1,\"text\":\"Pause\"},{\"text\":\" API to pause the GME service.\"}],\"type\":\"p\"},{\"id\":\"LUxQlqirfo2v6pz81m8PT\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype3\",\"type\":\"h4\"},{\"id\":\"aOKVbzwGEGKNV-xdsHTfH\",\"children\":[{\"id\":\"1AGqsANTEmKUV8sCkZT1P\",\"children\":[{\"text\":\"ITMGContext int Pause()\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"TFgQmntpAP6Lmivv-imPa\",\"children\":[{\"text\":\"Resuming the system\"}],\"nodeId\":\"resuming-the-system\",\"type\":\"h3\"},{\"id\":\"ZN58oGF8e2-aSKcu2vWYM\",\"children\":[{\"text\":\"When a \"},{\"code\":1,\"text\":\"Resume\"},{\"text\":\" event occurs in the system, the engine should also be notified for resumption. The \"},{\"code\":1,\"text\":\"Resume\"},{\"text\":\" API only supports resuming voice chat.\"}],\"type\":\"p\"},{\"id\":\"5pcqczRQrgPlo5arIfAn8\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype4\",\"type\":\"h4\"},{\"id\":\"94pQbG0khv_iEBjMTUsc2\",\"children\":[{\"id\":\"Czy8PExFV_pLGekdqrQGN\",\"children\":[{\"text\":\"ITMGContext int Resume()\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"6xJVaFd_ZaGLCHmNg3Dpf\",\"children\":[{\"text\":\"Uninitializing SDK\"}],\"nodeId\":\"uninitializing-sdk\",\"type\":\"h3\"},{\"id\":\"MdgFSKzGYMNxtfrEgtnEg\",\"children\":[{\"text\":\"This API is used to uninitialize the SDK to make it uninitialized. \"},{\"b\":1,\"text\":\"If the game business account is bound to \"},{\"b\":1,\"code\":1,\"text\":\"openid\"},{\"b\":1,\"text\":\", switching game account requires uninitializing GME and then using the new \"},{\"b\":1,\"code\":1,\"text\":\"openid\"},{\"b\":1,\"text\":\" to initialize again.\"}],\"nodeId\":\"UnInit\",\"type\":\"p\"},{\"id\":\"h5wxvJAxlRbQ136JN4Eh7\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype5\",\"type\":\"h4\"},{\"id\":\"EHoNQHFkRGI-n7e3PifNx\",\"children\":[{\"id\":\"ZO-1fTFkqomwPtScbgH2P\",\"children\":[{\"text\":\"ITMGContext int Uninit()\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"03P8dEnadTmoxzvHfFxkq\",\"children\":[{\"text\":\"Voice Messaging and Speech-to-Text Services\"}],\"nodeId\":\"voice-messaging-and-speech-to-text-services\",\"type\":\"h2\"},{\"id\":\"1uRilHMiIJba2nVbeP8N6\",\"children\":[{\"id\":\"Nz5HMWDbG8HTKrVU1uzTI\",\"children\":[{\"b\":1,\"color\":\"inherit\",\"text\":\"Note: \"}],\"type\":\"p\"},{\"id\":\"dFUNaO_g-w2SUEdtCfGQm\",\"children\":[{\"text\":\"The speech-to-text service consists of fast recording-to-text conversion and streaming speech-to-text conversion.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"3-Wko0Z5l8fidCSsXSWex\",\"children\":[{\"text\":\"You do not need to enter a voice chat room when using the voice message service.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"uUwtGLJvML7y_0BBNp8RB\",\"children\":[{\"text\":\"The maximum recording duration of a voice message is 58 seconds by default, and the minimum recording duration cannot be less than 1 second. If you want to customize the recording duration, for example, to modify the maximum recording duration to 10 seconds, call the \"},{\"code\":1,\"text\":\"SetMaxMessageLength\"},{\"text\":\" API to set it after initialization.\"}],\"start\":false,\"type\":\"uli\"}],\"hintType\":\"info\",\"type\":\"hint\"},{\"type\":\"p\",\"children\":[{\"text\":\"\"},{\"id\":\"iL_LKvkmkRPn5vaKdES4F\",\"alt\":\"\",\"children\":[{\"text\":\"\"}],\"inline\":true,\"type\":\"image\",\"url\":\"https://cloudcache.intl.tencent-cloud.com/cms/backend-cms/b2c38b31b35311eeae9a525400c26da5.jpeg\",\"naturalSize\":[923,675],\"size\":[801,585]},{\"text\":\"\"}],\"id\":\"j4aGE4hAhVAUAGzUvILbn\"},{\"id\":\"7LjI8idwXq2aE7GDerzZb\",\"children\":[{\"text\":\"Flowchart for using the speech-to-text service\"}],\"nodeId\":\"flowchart-for-using-the-speech-to-text-service\",\"type\":\"h3\"},{\"type\":\"p\",\"children\":[{\"text\":\"\"},{\"id\":\"n8t6mkOC2x2AJ4rAwXwgB\",\"alt\":\"\",\"children\":[{\"text\":\"\"}],\"inline\":true,\"type\":\"image\",\"url\":\"https://cloudcache.intl.tencent-cloud.com/cms/backend-cms/b2d62f06b35311eeae9a525400c26da5.jpeg\",\"naturalSize\":[1138,1043],\"size\":[800,733]},{\"text\":\"\"}],\"id\":\"b0Q0BtDrD-A7HlNmm0_nZ\"},{\"id\":\"i7THDwLk9rjVWLuQ1U0m8\",\"children\":[{\"id\":\"1bpHx36nIeleS3-EsUx53\",\"children\":[{\"id\":\"-wg_H4sUErJCfz5NFVXTR\",\"children\":[{\"id\":\"nKqQE7XWoHFW_qiiojkO9\",\"children\":[{\"text\":\"API\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"w86jgr-J7WDka8EvvAJaj\",\"children\":[{\"id\":\"Rorvai8YwyRc_6UhxmCr6\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"3YKo79VctwJZl_Bz4TBnu\",\"children\":[{\"id\":\"pqM-HEKG8J2NZ27xKTgln\",\"children\":[{\"id\":\"vZ5T7CepTXh25U68R5O0O\",\"children\":[{\"id\":\"Xq4V9KaVOC3nt6oQxW-85\",\"children\":[{\"text\":\"GenAuthBuffer\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Aj9BCayWMWdyv2_TG2CpP\",\"children\":[{\"id\":\"CZUKy1bLFeNQnAr_6xvCi\",\"children\":[{\"id\":\"NzhzQKzIt1KFC66mON_Dz\",\"children\":[{\"text\":\"Generates the local authentication key\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"tjzoH0OzNByer9cJvkoL1\",\"children\":[{\"id\":\"hC52L0rdYnUe21MPOvHT3\",\"children\":[{\"id\":\"JFr7-pp6t5Yln5XNe-YkZ\",\"children\":[{\"id\":\"je_8bJ2UHBBBtUsAorUx3\",\"children\":[{\"text\":\"ApplyPTTAuthbuffer\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"bdAmwGh7noOBWHG6zuZku\",\"children\":[{\"id\":\"6aLs3LMoKPoj64PqRobaS\",\"children\":[{\"id\":\"Q_EjzrQPcbV5dX5Lzlfex\",\"children\":[{\"text\":\"Initializes authentication\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"4TGKXXGiAiFVOwLTMYOrX\",\"children\":[{\"id\":\"HS044X3yVVVn1O1llThmE\",\"children\":[{\"id\":\"DoworyCBxtl9hvpduUmlR\",\"children\":[{\"id\":\"NBLr2ieI-zqcs2XJuDgaA\",\"children\":[{\"text\":\"SetMaxMessageLength\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"X5659O4zgECBIwzX1bOG0\",\"children\":[{\"id\":\"TWABWyhF1McaTq9Hs9BSP\",\"children\":[{\"id\":\"7eUWoIhuy9DA-syAntANY\",\"children\":[{\"text\":\"Specifies the maximum length of voice message\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[35,65],\"widthMode\":\"percentage\"},{\"id\":\"7OQoWATSPxgqK8i-PAqKY\",\"children\":[{\"text\":\"Generating the local authentication key\"}],\"nodeId\":\"generating-the-local-authentication-key\",\"type\":\"h3\"},{\"id\":\"3pXbW4jvg7xKUYwwT54VK\",\"children\":[{\"text\":\"Generate \"},{\"code\":1,\"text\":\"AuthBuffer\"},{\"text\":\" for encryption and authentication of relevant features. For release in the production environment, please use the backend deployment key as detailed in \"},{\"id\":\"GI2izXAG_xK3jR9aeaw1W\",\"children\":[{\"text\":\"Authentication Key\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://intl.cloud.tencent.com/document/product/607/12218\",\"props\":{\"type\":\"link\",\"url\":\"https://intl.cloud.tencent.com/document/product/607/12218\"},\"type\":\"ref\"},{\"text\":\". \"}],\"type\":\"p\"},{\"id\":\"9Q5ZTst6sU9aU1OwT2YJA\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype6\",\"type\":\"h4\"},{\"id\":\"cxd7SaQ0DjoXDerRcGsP2\",\"children\":[{\"id\":\"bVKmDRqM4cI6B8AhiQ9xW\",\"children\":[{\"text\":\"int QAVSDK_AuthBuffer_GenAuthBuffer(unsigned int dwSdkAppID, const char* strRoomID, const char* strOpenID,\"}],\"type\":\"code-line\"},{\"id\":\"iAfUnoyA0U3Dz7fAmbKQ9\",\"children\":[{\"text\":\" const char* strKey, unsigned char* strAuthBuffer, unsigned int bufferLength);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"MZZuLywfIvZ7mHqjd7Fgy\",\"children\":[{\"id\":\"z55lSKCvzNFhouZjc8eSq\",\"children\":[{\"id\":\"Ac10WjB24tSw8N8lLq7jO\",\"children\":[{\"id\":\"IU7LAYnsBE_swgPHWIr8I\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"uzn6a1cCTqAgbMuOo_s8S\",\"children\":[{\"id\":\"Kv6pZwSHYa94LUsnMx0hA\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"1n4A11XHYByCnYQlG-eUk\",\"children\":[{\"id\":\"0qOApbWo2zy7ZHoQqJnJk\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"G_OdlygMEqz9g_ivKhhOb\",\"children\":[{\"id\":\"Rcz6_2acugoKq-PrSN25Q\",\"children\":[{\"id\":\"IV7dFSnWE-iJqQFwUFl3y\",\"children\":[{\"id\":\"Jsc6oYDLXwSdwi_S2ug_N\",\"children\":[{\"text\":\"dwSdkAppID\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Lq_cfjfrloxlPeeVkeDbA\",\"children\":[{\"id\":\"6_f4b_HnulzSdARhqKByn\",\"children\":[{\"id\":\"4GLoIaVmkuDLMXKoUCIbc\",\"children\":[{\"text\":\"int\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"vsKwa3Ybmey7surDGfYPm\",\"children\":[{\"id\":\"QcQjVxelgLqoDwpgkGcHH\",\"children\":[{\"id\":\"IewyRqISBoZ9T8Ju9gRNq\",\"children\":[{\"code\":1,\"text\":\"AppId\"},{\"text\":\" from the Tencent Cloud console.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"us6QVplWNLmaKP1NcrKoL\",\"children\":[{\"id\":\"UJrDXGGx62buJDJX52Ukq\",\"children\":[{\"id\":\"y_K3f2d1gjKspuwe_WGeR\",\"children\":[{\"id\":\"f_5_sRcIrrPTQbFg8iOXK\",\"children\":[{\"text\":\"strRoomID\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"8DYeHwv6tAUOiU2p0OWWl\",\"children\":[{\"id\":\"CmmsVpqUpqogFF9I-g6qR\",\"children\":[{\"id\":\"Jdi7QC1igZpni0p-61W70\",\"children\":[{\"text\":\"const char*\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"SsB4PGlHITnENYKp2c70r\",\"children\":[{\"id\":\"ubb5qcBM2DkD01cZErdxe\",\"children\":[{\"id\":\"3jWcqHZiesTzFApc7yeax\",\"children\":[{\"text\":\"Enter \"},{\"code\":1,\"text\":\"null\"},{\"text\":\" or an empty string\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"9mzFf_rQv_CMK0BiVcWVV\",\"children\":[{\"id\":\"SHzM-Bvn0P-k8rgf44Ccp\",\"children\":[{\"id\":\"pH7fSeHENX8nHx3QhqsUb\",\"children\":[{\"id\":\"BnKdxPMOCK_uh6pz0Xu9e\",\"children\":[{\"text\":\"strOpenID\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"cv0niVNo5r9-wRpklUMk5\",\"children\":[{\"id\":\"kygQKJmOIYcPZ9oteLRmB\",\"children\":[{\"id\":\"jEP0WQsRrb3Dv2spW9yAy\",\"children\":[{\"text\":\"const char*\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"dI1Sl-7L8yFlzhCk3ORi2\",\"children\":[{\"id\":\"8YT8srnpoSarLGUGuoxps\",\"children\":[{\"id\":\"XIIM2XqZMCa6cWOmt8JJD\",\"children\":[{\"text\":\"User Identifier, which is the same as \"},{\"code\":1,\"text\":\"openID\"},{\"text\":\" during initialization.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"sWOtVOTABus8q9v6kvYQ-\",\"children\":[{\"id\":\"1CCxQSGNVfjtqCvsJ9gsJ\",\"children\":[{\"id\":\"Msm0M5kBs6K0uZdwcgAf9\",\"children\":[{\"id\":\"feBEl-jxNWb4hMfsMcaBU\",\"children\":[{\"text\":\"strKey\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"S1yhPo3DdD9JvY_qZQbmu\",\"children\":[{\"id\":\"mpZ5H5tRBawQhR8oNapfZ\",\"children\":[{\"id\":\"LaS01GT27SnrkydQi-rdQ\",\"children\":[{\"text\":\"const char*\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"lgiN3fCKN4kByjZPS03Np\",\"children\":[{\"id\":\"tulcGowLmdSa2iHb_7Z_H\",\"children\":[{\"id\":\"piZs2oW4WoFf6csRxuUOf\",\"children\":[{\"text\":\"Permission key from the Tencent Cloud \"},{\"id\":\"80-Cyah6uzy-12IEwpHyj\",\"children\":[{\"text\":\"console\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://console.tencentcloud.com/gamegme\",\"props\":{\"type\":\"link\",\"url\":\"https://console.tencentcloud.com/gamegme\"},\"type\":\"ref\"},{\"text\":\".\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"4Qiycv49umVQSFGuoV27K\",\"children\":[{\"id\":\"2We208MEZkD9zvdk_cE6F\",\"children\":[{\"id\":\"7RhgG-ouz96pWfEwxwLc-\",\"children\":[{\"id\":\"Iy0F9KlXfBywZyxNNVLvi\",\"children\":[{\"text\":\"strAuthBuffer\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"5pwfaiGnPUvzPqW02myML\",\"children\":[{\"id\":\"_gULZ7ZLvHKX5zZR46F3r\",\"children\":[{\"id\":\"mJFYsXC2yQcdqT7htgU33\",\"children\":[{\"text\":\"const char*\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"hrSSUhPxeEEB-gcrTK4YV\",\"children\":[{\"id\":\"3C7D9yOzt-hJ-OqbThyJK\",\"children\":[{\"id\":\"_pcItvzyMHfXzAKK68u3n\",\"children\":[{\"text\":\"Returned \"},{\"code\":1,\"text\":\"authbuff\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"L8iylc9kZwvL3cuC-WvSV\",\"children\":[{\"id\":\"JieB6JYmal4LL_pXyKhre\",\"children\":[{\"id\":\"nwG8E0JDjIqPhXmhMdSQE\",\"children\":[{\"id\":\"9s9zP9oZEIwpz2lmVIIic\",\"children\":[{\"text\":\"bufferLength\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"vGtCrmqdQKc0D2JeXMgsB\",\"children\":[{\"id\":\"Yk9fk3xggApKGvL-vOqOv\",\"children\":[{\"id\":\"uRBYgH43hoICfZmXK5LC6\",\"children\":[{\"text\":\"int\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"bz8gBlVuhch1-kubPYq0s\",\"children\":[{\"id\":\"r0VF5egO89v4dG8Nfv25P\",\"children\":[{\"id\":\"62-efNab6GvknL0nXsMzo\",\"children\":[{\"text\":\"Length of the \"},{\"code\":1,\"text\":\"authbuff\"},{\"text\":\" passed in. 500 is recommended.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[17,15,68],\"widthMode\":\"percentage\"},{\"id\":\"eFjgRZyRtYijFmpO191Y4\",\"children\":[{\"text\":\"Application authentication\"}],\"nodeId\":\"application-authentication\",\"type\":\"h3\"},{\"id\":\"Bi4o6UiV0ih9z05UyiCz9\",\"children\":[{\"text\":\"After the authentication information is generated, the authentication is assigned to the SDK. \"}],\"type\":\"p\"},{\"id\":\"JRfHX8UcKZiHgvpx6zMnV\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype7\",\"type\":\"h4\"},{\"id\":\"m9BmgdgEgzeu9qvx4K-xv\",\"children\":[{\"id\":\"9rC5G1ojdwcGYWhvQz3mn\",\"children\":[{\"text\":\"ITMGPTT virtual int ApplyPTTAuthbuffer(const char* authBuffer, int authBufferLen)\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"-3SAuGrU2FLdP0-tyxbHA\",\"children\":[{\"id\":\"NKWvcziTxkObENZrKw8Ou\",\"children\":[{\"id\":\"gEccVzClAjpShZyAtsdHj\",\"children\":[{\"id\":\"e7RSsbBksP6hP7cg3l9ou\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"-5CMGiqe2LU7GKsUYP9Bw\",\"children\":[{\"id\":\"YMpq8acJImEzqVsHXdSW8\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"AMK9OIplPK0hjhl-9CzZ1\",\"children\":[{\"id\":\"LTHAZ497Dibon6RLw32ks\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"SFIFqCpRwDlZu4YuMUzFb\",\"children\":[{\"id\":\"yXSU4YRr4rdZPaJlgO9OW\",\"children\":[{\"id\":\"81UqwCWrxM3kRLMkp4BPS\",\"children\":[{\"id\":\"caV_hm21JWs2NGXlKmarf\",\"children\":[{\"text\":\"authBuffer\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"RnliSEUsOgdloaYh16qRo\",\"children\":[{\"id\":\"QFJfVhTS8zNBpkwYTM4Il\",\"children\":[{\"id\":\"33zbswb67aOvnaYnzjA_Z\",\"children\":[{\"text\":\"const char*\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"flF-UVzlZmB6OCTJ50agD\",\"children\":[{\"id\":\"lRxdhOFu7jO2N5vZ7nJ4i\",\"children\":[{\"id\":\"gizDQgjLyylyoTUv5QhJ4\",\"children\":[{\"text\":\"Authentication\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"E8h0Fc55Ok4-zy78vqFqB\",\"children\":[{\"id\":\"rkcxO8pUYAGVU3_M2bx4T\",\"children\":[{\"id\":\"i3UCL9JXfMXplJI98WJ2a\",\"children\":[{\"id\":\"7vFbD8Sk16ZfitCQdDSbT\",\"children\":[{\"text\":\"authBufferLen\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"d5QxYT91VwF_05_tf9twR\",\"children\":[{\"id\":\"6JTpHcCIInya7EPuMPfIb\",\"children\":[{\"id\":\"GqmperRrYCEbzkMNUE3Pz\",\"children\":[{\"text\":\"int\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Tx5Ssvj4SxdaOLQtjwtkF\",\"children\":[{\"id\":\"R8yG8CoL6chRGxiieAOdv\",\"children\":[{\"id\":\"DH7I6FYQ6Bj2ClpRqg2pM\",\"children\":[{\"text\":\"Authentication length\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[31,26,43],\"widthMode\":\"percentage\"},{\"id\":\"eXp2ZUtSPsR4pr_WNMo7I\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code6\",\"type\":\"h4\"},{\"id\":\"YkSDsiBFK1vWNcEz-jSfH\",\"children\":[{\"id\":\"9yLgqsGtdD3tvoLfezCEo\",\"children\":[{\"text\":\"ITMGContextGetInstance()->GetPTT()->ApplyPTTAuthbuffer(authBuffer,authBufferLen);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"wrY187uoJmNu-0x9u7JOh\",\"children\":[{\"text\":\"Specifying the maximum duration of voice message\"}],\"nodeId\":\"specifying-the-maximum-duration-of-voice-message\",\"type\":\"h3\"},{\"id\":\"4M6piq-cxuryE4cqr6_Pr\",\"children\":[{\"text\":\"This API is used to specify the maximum duration of a voice message, which can be up to 58 seconds.\"}],\"type\":\"p\"},{\"id\":\"YvDPbAwHkJ_DIgBfXhNpy\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype8\",\"type\":\"h4\"},{\"id\":\"92TSGy769nZ8GtYJsycQE\",\"children\":[{\"id\":\"yOdthxm5RMe2fmqBhGqL-\",\"children\":[{\"text\":\"ITMGPTT virtual int SetMaxMessageLength(int msTime)\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"HwCu3cQQn1X2-RMsBP86K\",\"children\":[{\"id\":\"Ugxw5ydCyB-NrTWe0Xu2m\",\"children\":[{\"id\":\"9AHpK_MFzHWXNEjeTFPi6\",\"children\":[{\"id\":\"hBRSoNTeAnc4iGIrRyuxB\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"fvSySpVc3QiO3mjTWiZ57\",\"children\":[{\"id\":\"oU6jWMEh6bH8LCqxODWTJ\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"DoaHDYYhS1UsFe4YSAAVe\",\"children\":[{\"id\":\"eRbo8loqkabLjXdoc4Dlw\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"h0El0l5JuWyxP4UiQpD1k\",\"children\":[{\"id\":\"gg87ESGpIJsCMyLIMQMuZ\",\"children\":[{\"id\":\"kMrUargmCdHNRLj5gzJ0y\",\"children\":[{\"id\":\"zry4lfF4pgkkd-0flzbo-\",\"children\":[{\"text\":\"msTime\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"JCowFKbYB_E573-jzWaH2\",\"children\":[{\"id\":\"hN00wEbeHQP_xyo7oM62F\",\"children\":[{\"id\":\"F7xmdtbqMAUcEc8WGHRhR\",\"children\":[{\"text\":\"int\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"zrCZsTGdMbUBhaa4l1DtD\",\"children\":[{\"id\":\"pwPEhLAVNr9qZcOfVKFS6\",\"children\":[{\"id\":\"Yqj6YRws7qKTpryUezFNp\",\"children\":[{\"text\":\"Audio duration in ms. Value range: 1000 < msTime <= 58000\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[17,11,72],\"widthMode\":\"percentage\"},{\"id\":\"wWnuKFl5alZk9bU-bjNPG\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code7\",\"type\":\"h4\"},{\"id\":\"bZg1FvMSXEgMnK2x1b9Sd\",\"children\":[{\"id\":\"zMKS75S40GyM1h72vvOHp\",\"children\":[{\"text\":\"int msTime = 10000;\"}],\"type\":\"code-line\"},{\"id\":\"myhVxNwJTwVQ7Kr2W45hf\",\"children\":[{\"text\":\"ITMGContextGetInstance()->GetPTT()->SetMaxMessageLength(msTime);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"BgmlLsBrIOghSLPJ5iX3y\",\"children\":[{\"text\":\"Streaming Speech Recognition\"}],\"nodeId\":\"streaming-speech-recognition\",\"type\":\"h2\"},{\"id\":\"9i8TSwgQ2jKztKVdCbJN2\",\"children\":[{\"text\":\"Voice message and speech-to-text APIs\"}],\"nodeId\":\"voice-message-and-speech-to-text-apis\",\"type\":\"h3\"},{\"id\":\"Xm5Kon5o9oi8NrD6GpxMq\",\"children\":[{\"id\":\"1g9Hs5ptIX0kWQxnX8yCR\",\"children\":[{\"id\":\"8jxrLaZly1uBYfrMTLP2C\",\"children\":[{\"id\":\"tgInZdpd9GMaLqJsYScit\",\"children\":[{\"text\":\"API\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Ko3G0OjMWRKlNMZrXMgh1\",\"children\":[{\"id\":\"59Yg0N36EDJzr4gwL8-3B\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"se7wFNrNcor3VNX1wAliT\",\"children\":[{\"id\":\"grxxe5WE33AuyDnhhqBAo\",\"children\":[{\"id\":\"it8bQHTmBlY2YTLZ6aHd1\",\"children\":[{\"id\":\"WWi_-RC_5Xt7-oAnVCIh8\",\"children\":[{\"text\":\"StartRecordingWithStreamingRecognition\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"j5lbizNn6DpUBIM0EPV_o\",\"children\":[{\"id\":\"Y2MHYPA6v4vi5plhneiQa\",\"children\":[{\"id\":\"IIsZfJNsMoBk-wUBTo7mK\",\"children\":[{\"text\":\"Starts streaming recording\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"tM4TkLKCha5RqfAMroBOe\",\"children\":[{\"id\":\"iqPtYNwKmPthEDzXKjMKt\",\"children\":[{\"id\":\"NkBT0A2oCez9-fbOKd61P\",\"children\":[{\"id\":\"TryQUe-hs-rrbDkh3KaCF\",\"children\":[{\"text\":\"StopRecording\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ks13TJOW2QMJooUWdIdj7\",\"children\":[{\"id\":\"_Yw0e2M1JyzLEMKjROcy0\",\"children\":[{\"text\":\"Stops recording\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[59,41],\"widthMode\":\"percentage\"},{\"id\":\"JIiYltzIJZ0Q3nkkwbz88\",\"children\":[{\"text\":\"Starting streaming speech recognition\"}],\"nodeId\":\"starting-streaming-speech-recognition\",\"type\":\"h3\"},{\"id\":\"INWEzXcpeGTNowNFZNiix\",\"children\":[{\"text\":\"This API is used to start streaming speech recognition. Text obtained from speech-to-text conversion will be returned in real time in its callback. It can specify a language for recognition or translate the information recognized in speech into a specified language and return the translation. \"},{\"b\":1,\"text\":\"To stop recording, call \"},{\"type\":\"ref\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/44550?!editLang=en&!preview#Stop\"},\"children\":[{\"text\":\"Stop recording\"}],\"id\":\"hjZb0Kc_VvpFW0dj3ZDUD\"},{\"text\":\".\"}],\"type\":\"p\"},{\"id\":\"R3D8x0CRqEcW6qTqCtrhJ\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype9\",\"type\":\"h4\"},{\"id\":\"HKQeUVqIuNDoUHgA0nYcf\",\"children\":[{\"id\":\"KuvNn5MbYZd6XBoOD9Rz_\",\"children\":[{\"text\":\"ITMGPTT virtual int StartRecordingWithStreamingRecognition(const char* filePath) \"}],\"type\":\"code-line\"},{\"id\":\"K0jeLWZt_qz3CDC8uA3J9\",\"children\":[{\"text\":\"ITMGPTT virtual int StartRecordingWithStreamingRecognition(const char* filePath,const char* translateLanguage,const char* translateLanguage) \"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"i3H4fGtgMLbL71l0l-sgR\",\"children\":[{\"id\":\"jCvj_axWa9rYZ_2tYnXi7\",\"children\":[{\"id\":\"lP1HrtNxkHXzjYXkyaNm2\",\"children\":[{\"id\":\"NnDGZRJJsTP3Xd3n6JxuY\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"1V79YMRaRncDGYncymg-6\",\"children\":[{\"id\":\"Q3CMTo0A_ukHCcwvhmo1O\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"kz_B8URqh9hjf1Z7nKVSn\",\"children\":[{\"id\":\"c1hwx29kN1YROpsrRx2Mi\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"WrRc_yA_1-i9LMipmkhic\",\"children\":[{\"id\":\"ieTU1l_n6v_plUPRxY_J8\",\"children\":[{\"id\":\"6XjNSfTjSSVNB1bUPK7FI\",\"children\":[{\"id\":\"spNv_ELfNhUGO-l81Db5T\",\"children\":[{\"text\":\"filePath\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"aqOGd3EbZM8wrGikBZCOL\",\"children\":[{\"id\":\"UOAjc0zBzWGQdRMpWKq3x\",\"children\":[{\"id\":\"u_bn0f0weGVnEkRVXUpNz\",\"children\":[{\"text\":\"const char*\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"bY61EvI0rt-XKncVauOzE\",\"children\":[{\"id\":\"9pQSCrdlJWODIl9Ge2okW\",\"children\":[{\"id\":\"Uw6YJrZ4ogYPtNbgy3SUt\",\"children\":[{\"text\":\"Path of stored audio file\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"BGwRfkZEh0PZuthtpRrQV\",\"children\":[{\"id\":\"1jxwoOFgwu8HHjvqyOL6M\",\"children\":[{\"id\":\"9B6qqyAUGuYSQT_Yc2lAd\",\"children\":[{\"id\":\"NJO2fTNBkZ3rmcJakKfxz\",\"children\":[{\"text\":\"speechLanguage\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"5WxYNETMOVQqq9xbp8Ush\",\"children\":[{\"id\":\"NjEHQdJ4wm_znJAvJTDrA\",\"children\":[{\"id\":\"DrJyU4fDUO9bHBbAFLBE7\",\"children\":[{\"text\":\"const char*\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"JJ-rvjrllBRENy4C9b2ic\",\"children\":[{\"id\":\"S69vVEI-M-QlWBEaNeTVp\",\"children\":[{\"id\":\"JxKfXpbOlVZI7QI7efETs\",\"children\":[{\"text\":\"The language in which the audio file is to be converted to text. For parameters, see \"},{\"id\":\"ErqEo8-Fvk4rtshN7dar7\",\"children\":[{\"text\":\"Language Parameter Reference List\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://intl.cloud.tencent.com/document/product/607/30260\",\"props\":{\"type\":\"link\",\"url\":\"https://intl.cloud.tencent.com/document/product/607/30260\"},\"type\":\"ref\"},{\"text\":\".\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"3GQgDRWbv8egzQNr8q-Wg\",\"children\":[{\"id\":\"akgoyYURpy8C7bZnlzk8M\",\"children\":[{\"id\":\"X70ft1dLH5IMPgwAU0SDh\",\"children\":[{\"id\":\"6NroohqMZE5plTiMHbLnU\",\"children\":[{\"text\":\"translateLanguage\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"XGhiUMVMpREkix9gBB6j6\",\"children\":[{\"id\":\"0A4yz0wnNdgRqTSGnxuH5\",\"children\":[{\"id\":\"-Mg7XikwZ9giUn-3Dr1qX\",\"children\":[{\"text\":\"const char*\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Y8CKP7WysBy5xcQJUoL5D\",\"children\":[{\"id\":\"1C6BCQjiJLtnpRFdKDV84\",\"children\":[{\"id\":\"nftosf9e80NclZyGTcJxG\",\"children\":[{\"text\":\"The language in which the audio file is to be translated to text. For parameters, see \"},{\"id\":\"cysCyASNqCfpACvo6Addp\",\"children\":[{\"text\":\"Language Parameter Reference List\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://intl.cloud.tencent.com/document/product/607/30260\",\"props\":{\"type\":\"link\",\"url\":\"https://intl.cloud.tencent.com/document/product/607/30260\"},\"type\":\"ref\"},{\"text\":\".\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[17,14,69],\"widthMode\":\"percentage\"},{\"id\":\"MmRnLrpkrCX0TBslKaHxl\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code8\",\"type\":\"h4\"},{\"id\":\"2nSsQCE578uyUrFlfopqn\",\"children\":[{\"id\":\"OhKvtnw7hXL6VkbVWvLwm\",\"children\":[{\"text\":\"ITMGContextGetInstance()->GetPTT()->StartRecordingWithStreamingRecognition(filePath,\\\"cmn-Hans-CN\\\",\\\"cmn-Hans-CN\\\");\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"7qxzwzPiHlIhEAfAZYYiB\",\"children\":[{\"id\":\"ynpSDZAoR9MM7GCvnnjbf\",\"children\":[{\"b\":1,\"color\":\"#04C8DC\",\"text\":\"Note: \",\"type\":\"text\"}],\"type\":\"p\"},{\"id\":\"a8EuvS42_ziYcYQOSPUw1\",\"children\":[{\"text\":\"Translation incurs additional fees. For more information, see \"},{\"id\":\"kPJ-Bfyvq-9Iwai1j5YIF\",\"children\":[{\"text\":\"Purchase Guide\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://intl.cloud.tencent.com/document/product/607/50009\",\"props\":{\"type\":\"link\",\"url\":\"https://intl.cloud.tencent.com/document/product/607/50009\"},\"type\":\"ref\"},{\"text\":\".\"}],\"type\":\"p\"}],\"hintType\":\"alert\",\"type\":\"hint\"},{\"id\":\"TEA_a-emyLslTuE68pmmF\",\"children\":[{\"text\":\"Callback for streaming speech recognition\"}],\"nodeId\":\"callback-for-streaming-speech-recognition\",\"type\":\"h3\"},{\"id\":\"tqLOVfluw7HhziNcg53WD\",\"children\":[{\"text\":\"After streaming speech recognition is started, you need to listen on callback messages in the \"},{\"code\":1,\"text\":\"OnEvent\"},{\"text\":\" notification, which is as detailed below:\"}],\"type\":\"p\"},{\"id\":\"MrnjRHkhW2OTWk8v0tI-w\",\"children\":[{\"code\":1,\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRECOGNITION_COMPLETE\"},{\"text\":\" returns text after the recording is stopped and the recognition is completed, which is equivalent to returning the recognized text after a paragraph of speech.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"Ey0AQ7Fjh8PuYY1EBGEiu\",\"children\":[{\"code\":1,\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRECOGNITION_IS_RUNNING\"},{\"text\":\" returns the recognized text in real-time during the recording, which is equivalent to returning the recognized text while speaking.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"eAVSEBuuQd0IIo9FXLyBD\",\"children\":[{\"text\":\"The event message will be identified in the \"},{\"code\":1,\"text\":\"OnEvent\"},{\"text\":\" notification based on the actual needs. The passed parameters include the following four messages.\"}],\"type\":\"p\"},{\"id\":\"blbAXP7acg5n9MhX9BkAM\",\"children\":[{\"id\":\"qdVo7E6GR_hEOTdWtm9tU\",\"children\":[{\"id\":\"vYJ-cK-wVIpQ7meLOE8VT\",\"children\":[{\"id\":\"KpC-talqAIdgaMhKJwtak\",\"children\":[{\"text\":\"Message Name\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"bC4bBrLQRhE-YijG5Sgkn\",\"children\":[{\"id\":\"bypx9AqbQr79gDTmzM48S\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"9xpgBEk4z3Y0iPWiwJ7lB\",\"children\":[{\"id\":\"P1bR26wdUQNHvm6Urnib0\",\"children\":[{\"id\":\"EIEO7Tt_jJqRzsuiS5Y3r\",\"children\":[{\"id\":\"XUU0j2bKheuErzXeQab4e\",\"children\":[{\"text\":\"result\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"527MhfRh4v7j9k_r1rdY3\",\"children\":[{\"id\":\"DDrdMGEVxV-FDYCAd5bQ2\",\"children\":[{\"id\":\"oA_2X-7qpZXC-1Inu3pDk\",\"children\":[{\"text\":\"Return code indicating whether streaming speech recognition is successful\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"76sx7JnzEeLZ1McmjzaV3\",\"children\":[{\"id\":\"sw04rqTLk9-fF7F0yE5v4\",\"children\":[{\"id\":\"av1-veDUOJQ_aiJKOnL3V\",\"children\":[{\"id\":\"CVHehXtb8O1ROzrXpEL5y\",\"children\":[{\"text\":\"text\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"tOQLnMuN3hPErgB8mqqQk\",\"children\":[{\"id\":\"pOcGDQk4vR7YmwwYZWUQK\",\"children\":[{\"id\":\"cMLk6B5twcgs6XHkD5n2w\",\"children\":[{\"text\":\"Text converted from speech\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"xLrI8O_-bxNIHJJYE8EGV\",\"children\":[{\"id\":\"APL9buDkurdYzwTpy8X_y\",\"children\":[{\"id\":\"suYBB8jC6RW-bweL9JiQy\",\"children\":[{\"id\":\"Zd77aZ_xDq3dlHI0LvCKi\",\"children\":[{\"text\":\"file_path\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"0kwO8b76o__Wl8qydXK18\",\"children\":[{\"id\":\"RqCwx9RcxBrREbRhdZRjp\",\"children\":[{\"id\":\"Mk0-5KgqsZT2JXOxumCt0\",\"children\":[{\"text\":\"Local path of stored recording file\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"oiC3_Dq9zcAGXTVrmVOYf\",\"children\":[{\"id\":\"EDrMRIqmwrpT4qsb7T2oQ\",\"children\":[{\"id\":\"DU25d89e_SNITwYo1m2mo\",\"children\":[{\"id\":\"Ie9BhKoCLQbbFb0XEhg9F\",\"children\":[{\"text\":\"file_id\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"DfnwaTMQOHxjtVi6nel__\",\"children\":[{\"id\":\"3lPeKabzzIRE3M7vnZs4S\",\"children\":[{\"id\":\"JH1XrUmvlG_Qc6jPFygKJ\",\"children\":[{\"text\":\"Backend URL address of recording file, which will be retained for 90 days\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[20,80],\"widthMode\":\"percentage\"},{\"id\":\"JAaympSpVJpBO1fkNbfN_\",\"children\":[{\"id\":\"ACn8A-LfDR6lB1avsvSAz\",\"children\":[{\"b\":1,\"color\":\"#04C8DC\",\"text\":\"Note: \"}],\"type\":\"p\"},{\"id\":\"7Q3a0EikPr_FWJ83oIDTV\",\"children\":[{\"text\":\"The file_id is empty when the 'ITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRecognition_IS_RUNNING' message is listened.\"}],\"type\":\"p\"}],\"hintType\":\"alert\",\"type\":\"hint\"},{\"id\":\"OGxAbiE3dU6t052BLurQ-\",\"children\":[{\"text\":\"Error codes\"}],\"nodeId\":\"error-codes\",\"type\":\"h4\"},{\"id\":\"3Z_tW1CoXDTK0YlCODQss\",\"children\":[{\"id\":\"Hpmmh9-eHgV18BEjn087Z\",\"children\":[{\"id\":\"0cH-MlQaeR_LNhnTrQO4G\",\"children\":[{\"id\":\"npMgOHqjnWA9corDQuLg-\",\"children\":[{\"text\":\"Error Code\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"kGPERIrCJQM38wDAyR_tX\",\"children\":[{\"id\":\"3nANfe3lbpiv361J_I2It\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"E0t1WGW9K-t9RHZ5dFIBD\",\"children\":[{\"id\":\"JrYBVoUWcQMdz_nC8k4M9\",\"children\":[{\"text\":\"Suggested Solution\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"FJ2l-pubpmpyvfBS2W75N\",\"children\":[{\"id\":\"AKcZCOmKEen8fv3VWT8M0\",\"children\":[{\"id\":\"cnkG7V4rvwa60z51aeT6m\",\"children\":[{\"id\":\"CU-gf94P7WpKovPAt6Wvx\",\"children\":[{\"text\":\"32775\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"LTkmZbkQAQQKnXtnLgqJP\",\"children\":[{\"id\":\"JyLYqaggGEW2ma-YQAghe\",\"children\":[{\"id\":\"RH2qOSbZq8noxjQaKMxen\",\"children\":[{\"text\":\"Streaming speech-to-text conversion failed, but recording succeeded.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"3ZxPevmvdJisCr3A2Hvfy\",\"children\":[{\"id\":\"TUqIma09xPzCyA9AuUtSn\",\"children\":[{\"id\":\"Ypf65JUWx9sVxpOTu_MrG\",\"children\":[{\"text\":\"Call the \"},{\"code\":1,\"text\":\"UploadRecordedFile\"},{\"text\":\" API to upload the recording file and then call the \"},{\"code\":1,\"text\":\"SpeechToText\"},{\"text\":\" API to perform speech-to-text conversion.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"H4YqK_gr68_2KBBjYcrna\",\"children\":[{\"id\":\"JSXihLFHfbbkpJ0ihxLfZ\",\"children\":[{\"id\":\"SHSBLW1Jy9vMRhexqZypA\",\"children\":[{\"id\":\"fAHNfs1OIub_66v56hoQ2\",\"children\":[{\"text\":\"32777\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"baJE25Qad499kPUGml57B\",\"children\":[{\"id\":\"S6OhqxHpiGtHmfFKKY1K5\",\"children\":[{\"id\":\"l7UEarcA3JVz4hVw8ldGe\",\"children\":[{\"text\":\"Streaming speech-to-text conversion failed, but recording and upload succeeded.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Obf-Ik7tUGcTPg0TXfTD0\",\"children\":[{\"id\":\"EOEcWbUsS9XHobsHJs6tN\",\"children\":[{\"id\":\"-TkmqveZHf0t8ySLWhNE1\",\"children\":[{\"text\":\"The message returned contains a backend URL after successful upload. Call the \"},{\"code\":1,\"text\":\"SpeechToText\"},{\"text\":\" API to perform speech-to-text conversion.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"-wOywnnVzhF6ELYUMG1I5\",\"children\":[{\"id\":\"N81t8pRv_RdvL2DdchKhI\",\"children\":[{\"id\":\"D5F9YjKUa0zx20VzD_i4-\",\"children\":[{\"id\":\"2qj6NUd5SvqEpECifTsBQ\",\"children\":[{\"text\":\"32786\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"L0WUg_OBJddvhgHogOJUl\",\"children\":[{\"id\":\"vSlLGERFYwIy0C1SknTTy\",\"children\":[{\"id\":\"phQsJYtbcyfrstF0p59be\",\"children\":[{\"text\":\"Streaming speech-to-text conversion failed.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"TBybw4S7w3f7CKoltWULI\",\"children\":[{\"id\":\"f94wbcJfR3ysHod78XBlS\",\"children\":[{\"id\":\"8-EbvXRG589Z8Rg1kttMZ\",\"children\":[{\"text\":\"During streaming recording, wait for the execution result of the streaming recording API to return.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"NLsszuEXue0RA-Y2LACeT\",\"children\":[{\"id\":\"MbfMgafNBI4LnZapv-X8i\",\"children\":[{\"id\":\"s5w-aEB0p0OFqnetxX6OU\",\"children\":[{\"id\":\"AyQjzJnLcYortfLaIY0Nj\",\"children\":[{\"text\":\"32787\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"jPbQGTb_u4JiJ7KebsprV\",\"children\":[{\"id\":\"WaWQyF6Fks0_cU3EJX9B0\",\"children\":[{\"id\":\"dQ922VwL1QPrDSH0Nqc8B\",\"children\":[{\"text\":\"Speech-to-text conversion succeeded, but the text translation service was not activated.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"yg4HQKz2BacetZKdlo9ru\",\"children\":[{\"id\":\"cZl4EcKvdmAG5XJFXMdRn\",\"children\":[{\"id\":\"OYLKJYtYK4Ei4lYC-2tDy\",\"children\":[{\"text\":\"Activate the text translation service in the console.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"5EFqlbrXhRydvXIpjNkab\",\"children\":[{\"id\":\"QsS-Cj-o2gCpHnfnacg04\",\"children\":[{\"id\":\"t09wQZmTGub4UStuSQ4hN\",\"children\":[{\"id\":\"wb_K0af9ETdiRN-wbco7H\",\"children\":[{\"text\":\"32788\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"6xXrUXWNcft04d7cyY5vd\",\"children\":[{\"id\":\"tBWa3zBZLLo2Urf-BaQQw\",\"children\":[{\"id\":\"J9nfI-p_HPJ5qKJmDPSlo\",\"children\":[{\"text\":\"Speech-to-text conversion succeeded, but the language parameter of the text translation service was invalid.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"8RlSelYQeYNOROWPwsfip\",\"children\":[{\"id\":\"NzXpckbNY9HfhkyIE-50b\",\"children\":[{\"id\":\"C1nZfK7AGP5bkaYil03KS\",\"children\":[{\"text\":\"Check the parameter passed in.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[13,38,49],\"widthMode\":\"percentage\"},{\"id\":\"w1aKeCnrh_yMqmXt1lm5e\",\"children\":[{\"text\":\"If the error code 4098 is reported, see \"},{\"id\":\"74MsuLZ0k87a2yz1pR1lM\",\"children\":[{\"text\":\"FAQs\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://intl.cloud.tencent.com/document/product/607/39716\",\"props\":{\"type\":\"link\",\"url\":\"https://intl.cloud.tencent.com/document/product/607/39716\"},\"type\":\"ref\"},{\"text\":\" for solutions.\"}],\"type\":\"p\"},{\"id\":\"0lMYjauI3WcA2w0FVrs5z\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code9\",\"type\":\"h4\"},{\"id\":\"xd8CxNJwKPHl8y1jkpOfk\",\"children\":[{\"id\":\"j1MEPJ1ECr6BxQfj57GIq\",\"children\":[{\"text\":\"void TMGTestScene::OnEvent(ITMG_MAIN_EVENT_TYPE eventType,const char* data){\"}],\"type\":\"code-line\"},{\"id\":\"VLJQXVEqZGoyQv81LKEhT\",\"children\":[{\"text\":\" switch (eventType) {\"}],\"type\":\"code-line\"},{\"id\":\"hzY-9BapVGY4IJozWv1ZI\",\"children\":[{\"text\":\" case ITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRECOGNITION_COMPLETE:\"}],\"type\":\"code-line\"},{\"id\":\"QdyDOPdU60iDrMPkcbJJC\",\"children\":[{\"text\":\" {\"}],\"type\":\"code-line\"},{\"id\":\"RkBBq6A1QPIQkLv3_tVG2\",\"children\":[{\"text\":\" HandleSTREAM2TEXTComplete(data,true);\"}],\"type\":\"code-line\"},{\"id\":\"_zxhmrr_Rpt6RWDxojQrC\",\"children\":[{\"text\":\" break;\"}],\"type\":\"code-line\"},{\"id\":\"g0RiZQ9waT0fxEvLZzdXd\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"8WfTL72mm2zMmE8HY58GT\",\"children\":[{\"text\":\" ...\"}],\"type\":\"code-line\"},{\"id\":\"t_6F-GzfWusMz30-SrH1A\",\"children\":[{\"text\":\" case ITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRECOGNITION_IS_RUNNING:\"}],\"type\":\"code-line\"},{\"id\":\"MSpMKxdAMo1IHgsVaFztq\",\"children\":[{\"text\":\" {\"}],\"type\":\"code-line\"},{\"id\":\"y-1_Zjgo3WzkfZWD093sw\",\"children\":[{\"text\":\" HandleSTREAM2TEXTComplete(data, false);\"}],\"type\":\"code-line\"},{\"id\":\"q1q6RCh4v7cKomTeKdPQC\",\"children\":[{\"text\":\" break;\"}],\"type\":\"code-line\"},{\"id\":\"0xubHuIl6JRqijG5ADv9X\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"lpwAEg_cmagt2O9-SFo_H\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"uQzJo3RBSSifFZ8DJJ8E0\",\"children\":[{\"text\":\"}\"}],\"type\":\"code-line\"},{\"id\":\"jDbzIJebwaZ5OjevYW5yM\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"},{\"id\":\"EJPBtzjr1sWrV9AqF3EeB\",\"children\":[{\"text\":\"void CTMGSDK_For_AudioDlg::HandleSTREAM2TEXTComplete(const char* data, bool isComplete)\"}],\"type\":\"code-line\"},{\"id\":\"YHQ0rDxqzH5L0s9uz00cu\",\"children\":[{\"text\":\"{\"}],\"type\":\"code-line\"},{\"id\":\"loPoyxlW3pQLw8eYWFjLb\",\"children\":[{\"text\":\" std::string strText = \\\"STREAM2TEXT: ret=\\\";\"}],\"type\":\"code-line\"},{\"id\":\"JYQhI7GBtlY4Q1IYZo9OX\",\"children\":[{\"text\":\" strText += data;\"}],\"type\":\"code-line\"},{\"id\":\"E-sKHKH8eesGHcO1IzEFq\",\"children\":[{\"text\":\" m_EditMonitor.SetWindowText(MByteToWChar(strText).c_str());\"}],\"type\":\"code-line\"},{\"id\":\"0_BeEJaxhSULnBH3XpPmk\",\"children\":[{\"text\":\" Json::Reader reader;\"}],\"type\":\"code-line\"},{\"id\":\"aJpFQ5BGYlkSSbCTWPYI7\",\"children\":[{\"text\":\" Json::Value root;\"}],\"type\":\"code-line\"},{\"id\":\"cEQlMRBLi2FTgkvmYzx-4\",\"children\":[{\"text\":\" bool parseRet = reader.parse(data, root);\"}],\"type\":\"code-line\"},{\"id\":\"et7KqGqhCfL-tBa1hqzEu\",\"children\":[{\"text\":\" if (!parseRet) {\"}],\"type\":\"code-line\"},{\"id\":\"4Z7SL1kF4A5uSHiB6Zq6q\",\"children\":[{\"text\":\" ::SetWindowText(m_EditInfo.GetSafeHwnd(),MByteToWChar(std::string(\\\"parse result Json error\\\")).c_str());\"}],\"type\":\"code-line\"},{\"id\":\"AnMq7FcqkySqxM1Ar6CF2\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"OMn_-Uoh031FX559DJ0zZ\",\"children\":[{\"text\":\" else\"}],\"type\":\"code-line\"},{\"id\":\"T4kO-hlRFOT5ibMLE5h5w\",\"children\":[{\"text\":\" {\"}],\"type\":\"code-line\"},{\"id\":\"Sanu2iY5fl5hfEcoy0bqP\",\"children\":[{\"text\":\" if (isComplete) {\"}],\"type\":\"code-line\"},{\"id\":\"XnH0_LG7FD0bn1_WUznl_\",\"children\":[{\"text\":\" ::SetWindowText(m_EditUpload.GetSafeHwnd(), MByteToWChar(root[\\\"file_id\\\"].asString()).c_str());\"}],\"type\":\"code-line\"},{\"id\":\"opL5gLbSpZ83HPSdKedvb\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"x9FiRJHzRHilcbbuQwvQd\",\"children\":[{\"text\":\" else {\"}],\"type\":\"code-line\"},{\"id\":\"ikq26r1P73ErRW2y-cJr3\",\"children\":[{\"text\":\" std::string isruning = \\\"STREAMINGRECOGNITION_IS_RUNNING\\\";\"}],\"type\":\"code-line\"},{\"id\":\"h8DOa74I74XbnStClUYmT\",\"children\":[{\"text\":\" ::SetWindowText(m_EditUpload.GetSafeHwnd(), MByteToWChar(isruning).c_str());\"}],\"type\":\"code-line\"},{\"id\":\"PBb7UhmLvJIZFeRTNgX5f\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"RgQF-133oPiK37U_IPGYI\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"r-rsmvq97SpBdULSI-c5A\",\"children\":[{\"text\":\"}\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"EIxZG12MhnP0c4lBGLw0i\",\"children\":[{\"text\":\"Voice Message Recording\"}],\"nodeId\":\"voice-message-recording\",\"type\":\"h2\"},{\"id\":\"3q9hvqXeygzvzj7NX0Zq8\",\"children\":[{\"b\":1,\"text\":\"The recording process is as follows: start recording -> stop recording -> return recording callback -> start the next recording.\"}],\"type\":\"p\"},{\"id\":\"bNso_flcHb3HEHSDxk12k\",\"children\":[{\"text\":\"Voice message and speech-to-text APIs\"}],\"nodeId\":\"voice-message-and-speech-to-text-apis2\",\"type\":\"h3\"},{\"id\":\"PDMTmE-P8vHi7lWiUn2qC\",\"children\":[{\"id\":\"av-gmMkPIWBzTOdp4Boqq\",\"children\":[{\"id\":\"Pt9_GGIvE4gfTwjRWUcn1\",\"children\":[{\"id\":\"eBhoNF942OvRanKUG1a5l\",\"children\":[{\"text\":\"API\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"7SACLd5feZWu_fyasO9EH\",\"children\":[{\"id\":\"dOcITHNdV3xZ3ZipDPmwT\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"Y_77t63FtB-7apyiFhn_8\",\"children\":[{\"id\":\"IbXAZVDYHafZGBjFfB2gt\",\"children\":[{\"id\":\"QgMBPixB3kPHn9UF__cWX\",\"children\":[{\"id\":\"_vt9GI6buY_dnDhaxCArr\",\"children\":[{\"text\":\"StartRecording\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"f1y3ZcfYQDN8ROHzjqOom\",\"children\":[{\"id\":\"ZqSWai-dVLTbEfuX-yDn6\",\"children\":[{\"id\":\"x6RuY93B__B7nqVoL9ztb\",\"children\":[{\"text\":\"Starts recording\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"MxkRQ4LSiT-Px-nma0yIH\",\"children\":[{\"id\":\"CHTRzwHCGL-5K4ZCmRrOX\",\"children\":[{\"id\":\"jqaNLBLj2_botwnMPp5KS\",\"children\":[{\"id\":\"UL-ZESqsYf13xxPWoEal3\",\"children\":[{\"text\":\"PauseRecording\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"5BEof0ZqWaVelmvclrMmd\",\"children\":[{\"id\":\"0HmPn6L7mELhA5YWtfJ5Z\",\"children\":[{\"id\":\"iSJscvGjz_82h8gAdr5oj\",\"children\":[{\"text\":\"Pauses recording\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"rzl2ktsy3VT9NAzgefVQ5\",\"children\":[{\"id\":\"ll-r_7GUCMaMLzIokuXTt\",\"children\":[{\"id\":\"K9RxIH1gICZ95edQG-WPP\",\"children\":[{\"id\":\"_J7LVJ007px3LYKSmT0Ev\",\"children\":[{\"text\":\"ResumeRecording\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"678dRiu23LukuWP7T-umZ\",\"children\":[{\"id\":\"UPAS-k5cjchdU8aoM-v_-\",\"children\":[{\"id\":\"cKqaW3fNzJQnuWZrEmJOB\",\"children\":[{\"text\":\"Resumes recording\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"Szep28MgPH0UWoBKJmSOJ\",\"children\":[{\"id\":\"wcR29pUCAnxjN82I9pQSR\",\"children\":[{\"id\":\"ismqcx0RwBRsV4qIoWZ2C\",\"children\":[{\"id\":\"Wy_JrwteE8lyxcMhEvtDM\",\"children\":[{\"text\":\"StopRecording\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"R8qYq1GZKeXLOPzs6WF-G\",\"children\":[{\"id\":\"2f9qFYSmpSXeWCC49gojU\",\"children\":[{\"id\":\"LLD0xKvu3l3B_WYxQkKaD\",\"children\":[{\"text\":\"Stops recording\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"fHjxh1WXKk-hffUyWaL5k\",\"children\":[{\"id\":\"d1dKC226j53fL4KJrB7ll\",\"children\":[{\"id\":\"LIzpDBsCurMbwcvrBRy3E\",\"children\":[{\"id\":\"tWE30qDa81YP38dp078Os\",\"children\":[{\"text\":\"CancelRecording\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"-FwTf6oR-5dcv7sIt82ls\",\"children\":[{\"id\":\"0qxWImNSRbJLNecAAH1UB\",\"children\":[{\"id\":\"mu5MbyI-cLzQZ-cqyAYHA\",\"children\":[{\"text\":\"Cancels recording\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[49,51],\"widthMode\":\"percentage\"},{\"id\":\"QePekq3-74VW4F5_ef6Fc\",\"children\":[{\"text\":\"Starting recording\"}],\"nodeId\":\"starting-recording\",\"type\":\"h3\"},{\"id\":\"y6NFUl2aqIJeiijwCSnd0\",\"children\":[{\"text\":\"This API is used to start recording.\"}],\"type\":\"p\"},{\"id\":\"NKvl_1gQrz02EIGRLH2Wk\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype10\",\"type\":\"h4\"},{\"id\":\"dNalC_j9_VxXingwm47lj\",\"children\":[{\"id\":\"vYi9FwSmNpIcgCmUO-AbO\",\"children\":[{\"text\":\"ITMGPTT virtual int StartRecording(const char* fileDir)\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"juA43E6s8oNQlZ2pg0uJ-\",\"children\":[{\"id\":\"9Im6lcrbRbUUS7w1hFMgB\",\"children\":[{\"id\":\"TZlv_d5dF98zBjnGf8xKm\",\"children\":[{\"id\":\"2YT-bpYKGdTOKqTiYUpcC\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"hK_UR0ZRa8uPi40ypDWgr\",\"children\":[{\"id\":\"USwAfUi-jdq3CB-bV7gLO\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"piEVLmrNvDPj7bLeTGkM8\",\"children\":[{\"id\":\"ZbLa1pO38Z0bfL1fngNQX\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"RHiuqwuKSy-iM94LB6Q08\",\"children\":[{\"id\":\"GPxXeKmoUA24JHlgazPLY\",\"children\":[{\"id\":\"RVDxe_VvKchVXFtAdU8yF\",\"children\":[{\"id\":\"rRX6FUNli7aQZuEyzzoH9\",\"children\":[{\"text\":\"fileDir\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"-JowpI6pgfXm7NOg1kw2O\",\"children\":[{\"id\":\"ayy0l6m5iXBpNx0mx0MBD\",\"children\":[{\"id\":\"59jjfue4zey4wSrnazw5z\",\"children\":[{\"text\":\"const char*\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"i7uqx39PVANY49eGDONUW\",\"children\":[{\"id\":\"piiVYqCf_bierczBaZJVZ\",\"children\":[{\"id\":\"M9tKDVsfkzoD-8Kdw4N4y\",\"children\":[{\"text\":\"Path of stored audio file\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[25,27,48],\"widthMode\":\"percentage\"},{\"id\":\"qFYKQ-Kgc33jILtB_MgFt\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code10\",\"type\":\"h4\"},{\"id\":\"iz6t7xy22zYWWxqcQQgSN\",\"children\":[{\"id\":\"iJ4WRe7jG6dE-Mt5DjSOU\",\"children\":[{\"text\":\"char buffer[256]={0};\"}],\"type\":\"code-line\"},{\"id\":\"kbfiLRiQapshhUf_CTxSi\",\"children\":[{\"text\":\"snprintf(buffer, sizeof(buffer), \\\"%sunreal_ptt_local.file\\\", getFilePath().c_str());\"}],\"type\":\"code-line\"},{\"id\":\"70HpKw7VsxK7v9G860Ty6\",\"children\":[{\"text\":\"ITMGContextGetInstance()->GetPTT()->StartRecording(buffer);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"onfJuIaYko0cA4q86YzWp\",\"children\":[{\"text\":\"\"}],\"type\":\"p\"},{\"id\":\"OlxW9JrePBZznO6Wt90uO\",\"children\":[{\"text\":\"Stopping recording\"}],\"nodeId\":\"stopping-recording\",\"type\":\"h3\"},{\"id\":\"MfB18Aw6wC0OGWRbRvIZd\",\"children\":[{\"text\":\"This API is used to stop recording. It is async, and a callback for recording completion will be returned after recording stops. A recording file will be available only after recording succeeds.\"}],\"nodeId\":\"Stop\",\"type\":\"p\"},{\"id\":\"9SqiTtlHuaiNDCHIYVzTW\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype11\",\"type\":\"h4\"},{\"id\":\"AC5W7v-FyJhSwrcs3ppAV\",\"children\":[{\"id\":\"-N5mbxu7LMd3uhp6TAFgB\",\"children\":[{\"text\":\"ITMGPTT virtual int StopRecording()\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"z1clsVlLYEVUCvB0Xr3j8\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code11\",\"type\":\"h4\"},{\"id\":\"0ZWVU2akNBdJV07kFWCyZ\",\"children\":[{\"id\":\"eN000j1jOOjSoTesLxrJQ\",\"children\":[{\"text\":\"ITMGContextGetInstance()->GetPTT()->StopRecording();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"LqFuDc4Ce5f3FwKFFyYzO\",\"children\":[{\"text\":\"Callback for recording start\"}],\"nodeId\":\"callback-for-recording-start\",\"type\":\"h3\"},{\"id\":\"7hGOzyvXqZuyfdaYsr8FV\",\"children\":[{\"text\":\"The recording start result will be returned through the callback.\"}],\"type\":\"p\"},{\"id\":\"Pi7mqCozZHAWi15FEFfvT\",\"children\":[{\"b\":1,\"text\":\"To stop recording, call \"},{\"b\":1,\"code\":1,\"text\":\"StopRecording\"},{\"text\":\". The callback for recording start will be returned after the recording is stopped.\"}],\"type\":\"p\"},{\"id\":\"IEdjMTHKs3xwERJ6XgDEp\",\"children\":[{\"id\":\"Pm0PQ8vnGCpV8OyyBwugW\",\"children\":[{\"id\":\"4ajhnTwmQ2bNP8KtGsxRB\",\"children\":[{\"id\":\"D7OSrXYpJupIDVeWH-uO3\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"gJP6nXCYkFPEsTMp561g4\",\"children\":[{\"id\":\"oeyLTkV-q2Y2WZZLeyyOU\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"xJFw40VpuEXKt2MaciJVG\",\"children\":[{\"id\":\"K8lMZAoz5zzcCmn-sL8hl\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"EcqJQ1cAVabILHSlOmy3w\",\"children\":[{\"id\":\"gIVGMX9xWJsRAK3-RaUfS\",\"children\":[{\"id\":\"PK8vRZIopu-x5rxDeXEBk\",\"children\":[{\"id\":\"RJXh2vsHrA8LdrMK55fw_\",\"children\":[{\"text\":\"result\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"vdFBXrm5MBLdW8Ky4r1ij\",\"children\":[{\"id\":\"1DeDbPkT40wpQak74r3bz\",\"children\":[{\"id\":\"Si4cKtIdkXXUAugYWoW8x\",\"children\":[{\"text\":\"int32\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Q-2r8ph9-nwg7EGlM9mlI\",\"children\":[{\"id\":\"fNse2z9_7CP8IzULd0FlL\",\"children\":[{\"id\":\"8VDf2fEnZd-5mvlo1CRtP\",\"children\":[{\"text\":\"0: recording is completed\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"Mc0IiB7uEyll2duB6W35t\",\"children\":[{\"id\":\"5-ysgukHpdcb5kJdcfaA_\",\"children\":[{\"id\":\"EBhBaH6J-375lTmSVraZu\",\"children\":[{\"id\":\"qCTICKDZ49PR3Vb4xqReQ\",\"children\":[{\"text\":\"filepath\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"nuoGARECeo9A8dlm8BbJR\",\"children\":[{\"id\":\"N-G4lzkfLN1B9UFMXPHxl\",\"children\":[{\"id\":\"oDhO8agbQTO61zE9od-j5\",\"children\":[{\"text\":\"FString\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"XRk2isc53EngpJaiAFbZa\",\"children\":[{\"id\":\"BojujJnc3QVS3LTgBXG4z\",\"children\":[{\"id\":\"FPDDOW6nS1PgRRgB2qlR5\",\"children\":[{\"text\":\"Path of stored recording file, which must be accessible and cannot be the \"},{\"code\":1,\"text\":\"fileid\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[13,10,77],\"widthMode\":\"percentage\"},{\"id\":\"wJxVd7tOmob5YpbLo8By7\",\"children\":[{\"text\":\"Error codes\"}],\"nodeId\":\"error-codes2\",\"type\":\"h4\"},{\"id\":\"lFjLDcAdgS7Voi_Ilg5Y3\",\"children\":[{\"id\":\"HXbtUI0lg3bscjDhF7tiQ\",\"children\":[{\"id\":\"8mUqOKhdxR_ySCdFSYSrR\",\"children\":[{\"id\":\"o6f7EMVBU1O35Yiqh19w7\",\"children\":[{\"text\":\"Error Code Value\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"3XYnnOy34ajY_y3Edn5aM\",\"children\":[{\"id\":\"xM4lAJYIrCTjv-CeJzWdk\",\"children\":[{\"text\":\"Cause\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"i6sIzM-zGHc87hN2GFsCs\",\"children\":[{\"id\":\"kjIWOTOqkpPr2yoU3om8F\",\"children\":[{\"text\":\"Suggested Solution\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"kKx6fbcq9Sbj9K-gkb2hT\",\"children\":[{\"id\":\"i-Bnw4m6OmmyXqntOUsBa\",\"children\":[{\"id\":\"TsfuObmcZMwQ-uSp3GNZc\",\"children\":[{\"id\":\"bV7QK9uAGJaaS5E3MZWxy\",\"children\":[{\"text\":\"4097\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"BMG_k3qpSVDmg1BpoFZYu\",\"children\":[{\"id\":\"AyPFDBe6yexYA-YUUkLRn\",\"children\":[{\"id\":\"NE4fzt7NKMDPdATXw-snc\",\"children\":[{\"text\":\"Parameter is empty.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"PSbfu6ha0NSP8SwA3VcDD\",\"children\":[{\"id\":\"yp45otF0_9GPWQpCkirCh\",\"children\":[{\"id\":\"VZfis7sVK0aR5PZOY6yid\",\"children\":[{\"text\":\"Check whether the API parameters in the code are correct.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"I4DM6_S1u4oe6LxvoNydT\",\"children\":[{\"id\":\"4doTmD96ukrJzGwib2ScQ\",\"children\":[{\"id\":\"jZ5sc_UQ8itr19RusoTun\",\"children\":[{\"id\":\"p4eCdW5QfBW7_KH7pKwSu\",\"children\":[{\"text\":\"4098\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"BcX-phn9EQXG_o36Td3Ik\",\"children\":[{\"id\":\"tnOTlN6tTaCQDg7dhILQy\",\"children\":[{\"id\":\"EypVF3i3sLQdV_BZZUHYB\",\"children\":[{\"text\":\"Initialization error.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"SXkJf6ep7m4LLnahbNqM1\",\"children\":[{\"id\":\"5MKdNeucNW-r1m0Q5P3vl\",\"children\":[{\"id\":\"RVyunqtAJOtABzINjNy-Q\",\"children\":[{\"text\":\"Check whether the device is being used, whether the permissions are normal, and whether the initialization is normal.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"hQcYcELRPhU0taGqFaeFn\",\"children\":[{\"id\":\"o4bI7zyZGnM7f7g_xpIP_\",\"children\":[{\"id\":\"0Q67FmcHOYCctjEqnDgqw\",\"children\":[{\"id\":\"sURfKAtKyDRSp4uKmemV1\",\"children\":[{\"text\":\"4099\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"r-lYCS2pYIkYswelOAtQR\",\"children\":[{\"id\":\"5OiGX6D4Luv4zcDIFacNu\",\"children\":[{\"id\":\"g2MYDljvQ3nNzsvdZ0nnx\",\"children\":[{\"text\":\"Recording is in progress.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"GsUB6gEawGBZPV9yuC4Wk\",\"children\":[{\"id\":\"HQFtvnJcs0nxc_Ynu9j6l\",\"children\":[{\"id\":\"fYg9SIlaI96EngYgDAfCS\",\"children\":[{\"text\":\"Ensure that the SDK recording feature is used at the right time.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"FaN2qmpp1wSV5Ks22NPSK\",\"children\":[{\"id\":\"Zza1_2KSuQsjC6R5ai6yx\",\"children\":[{\"id\":\"F291SuPzdWYa8NUHDJWpx\",\"children\":[{\"id\":\"TkKI-VF0r9TEUiVksEb9q\",\"children\":[{\"text\":\"4100\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"gWNI5jstCVI-Fss0ETtYL\",\"children\":[{\"id\":\"sYwCvXSyclXSs2GmNZPee\",\"children\":[{\"id\":\"mXAxuZv_qAjba2NcFaxBX\",\"children\":[{\"text\":\"Audio data is not captured.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"bXwpG_dDxBh3VQC4MaaX5\",\"children\":[{\"id\":\"wHcUsITB4GXLauetJbMwY\",\"children\":[{\"id\":\"Kq3xKgqlPXzfnL8I1K4GS\",\"children\":[{\"text\":\"Check whether the mic is working properly.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"B7BJzYHAsz8y3nroSv8Lm\",\"children\":[{\"id\":\"-ZM9XhrE09iWn8gf5Xf9W\",\"children\":[{\"id\":\"EzfmT39dK4GjouSDuLdu5\",\"children\":[{\"id\":\"uuWzI2cvx7FximwCS-21m\",\"children\":[{\"text\":\"4101\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"KfC46AyT3pn6PqNBVmowC\",\"children\":[{\"id\":\"OfkAsHoO4_fl69tuFfI7z\",\"children\":[{\"id\":\"Y_y5bRT2toz-VHnsGmD--\",\"children\":[{\"text\":\"An error occurred while accessing the file during recording.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"qgS_T_dnPrxv_CgpPvvyL\",\"children\":[{\"id\":\"zEcC2idaT7jgaLIiC6f81\",\"children\":[{\"id\":\"1WPJKI2kAcFog3b3DnwY9\",\"children\":[{\"text\":\"Ensure the existence of the file and the validity of the file path.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"cLs8BmDySCYd1JqMQC5fG\",\"children\":[{\"id\":\"tVNUCpLsG4dmH6ELzJSYG\",\"children\":[{\"id\":\"AlZL9u5QoRgzjQbeF5rbh\",\"children\":[{\"id\":\"PULtqatfUC9KcrEVoCInz\",\"children\":[{\"text\":\"4102\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"GO8SnKW2DXqfnDWjmzU5C\",\"children\":[{\"id\":\"t_yH89mviJEAgi8ue-wrx\",\"children\":[{\"id\":\"e696C-wdUbCVrm71iuvxR\",\"children\":[{\"text\":\"The mic is not authorized.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"EkKMtTec9aAL2PSEe8y8k\",\"children\":[{\"id\":\"LMaw3O2KR8USJS2bJ3u5i\",\"children\":[{\"id\":\"LDr3xzomElH65v14-0eE9\",\"children\":[{\"text\":\"Mic permission is required for using the SDK. To add the permission, please see the SDK project configuration document for the corresponding engine or platform.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"_wakVsnZzU2us2I7Welwv\",\"children\":[{\"id\":\"dkEuG-aIARdYBoXG5cNyW\",\"children\":[{\"id\":\"JRYGOHraegjklrnHpIWOO\",\"children\":[{\"id\":\"olDdiRmRZuNet0qPOlWpi\",\"children\":[{\"text\":\"4103\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"pQjmmN40LAyEeXXDi9UPA\",\"children\":[{\"id\":\"Ab9rQ1Y5yE_RJvjWC2hIG\",\"children\":[{\"id\":\"zEUkRGq4ff0c58oomRb-u\",\"children\":[{\"text\":\"The recording duration is too short.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"zR-dkRWwx5b1BSOVDTUU6\",\"children\":[{\"id\":\"35FxBDwtsZTP2eQbNMU5g\",\"children\":[{\"id\":\"6h1XOmmRT2PYIYCSg9Zln\",\"children\":[{\"text\":\"The recording duration should be in ms and longer than 1,000 ms.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"e_b5LZDcWyHErPqLwnKfU\",\"children\":[{\"id\":\"Uw_t7k9D4CO4Yk6trCauv\",\"children\":[{\"id\":\"zkNR2aEiEawAF3d_2Veg1\",\"children\":[{\"id\":\"3Hk5-iygNUX1eQOeOr05b\",\"children\":[{\"text\":\"4104\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"d8mA2SMHEmwx43k9a1y9P\",\"children\":[{\"id\":\"O-mbMzf6GUpl90r9w1p8M\",\"children\":[{\"id\":\"Lfll3Z1mdqxwcHnCtlBCP\",\"children\":[{\"text\":\"No recording operation is started.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"th9DJ7xxG4_1CcnjN6CVm\",\"children\":[{\"id\":\"1gqI-lUY-CdbG4BYzGj7E\",\"children\":[{\"id\":\"ZOmtyh0OAqVA1KlKMjzO4\",\"children\":[{\"text\":\"Check whether the recording starting API has been called.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[18,29,53],\"widthMode\":\"percentage\"},{\"id\":\"qlz78EJa7iOuC11Z3s6Bb\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code12\",\"type\":\"h4\"},{\"id\":\"Nm2QkCe5OmntbyKwSa97k\",\"children\":[{\"id\":\"-hfzSA6MFvjg3f5Pmfm_r\",\"children\":[{\"text\":\"void TMGTestScene::OnEvent(ITMG_MAIN_EVENT_TYPE eventType,const char* data){\"}],\"type\":\"code-line\"},{\"id\":\"2Rry2b4mJD534e3R8goy8\",\"children\":[{\"text\":\" switch (eventType) {\"}],\"type\":\"code-line\"},{\"id\":\"prtQj6z_HVi_64k2EuL3H\",\"children\":[{\"text\":\" ...\"}],\"type\":\"code-line\"},{\"id\":\"38g9UQt2eG0oPEeQQ6S0b\",\"children\":[{\"text\":\" else if (eventType == ITMG_MAIN_EVNET_TYPE_PTT_RECORD_COMPLETE) {\"}],\"type\":\"code-line\"},{\"id\":\"k7XbeqSuEmxccT5rV3L4B\",\"children\":[{\"text\":\" int32 result = JsonObject->GetIntegerField(TEXT(\\\"result\\\"));\"}],\"type\":\"code-line\"},{\"id\":\"TYReT20vpB7hqZHubSaxa\",\"children\":[{\"text\":\" FString filepath = JsonObject->GetStringField(TEXT(\\\"file_path\\\"));\"}],\"type\":\"code-line\"},{\"id\":\"xPwrl9CxGb1lArWmR75wQ\",\"children\":[{\"text\":\" std::string path = TCHAR_TO_UTF8(filepath.operator*());\"}],\"type\":\"code-line\"},{\"id\":\"ohJToHSxK4wn3IJjrPTIu\",\"children\":[{\"text\":\" int duration = 0;\"}],\"type\":\"code-line\"},{\"id\":\"-6LwPYjK99mpSA4PM1V1t\",\"children\":[{\"text\":\" int filesize = 0;\"}],\"type\":\"code-line\"},{\"id\":\"sQlwZ71N_S-0CXi4Mfe_J\",\"children\":[{\"text\":\" if (result == 0) {\"}],\"type\":\"code-line\"},{\"id\":\"8lOzf_tjGWi9lJ3CO7Yac\",\"children\":[{\"text\":\" duration = ITMGContextGetInstance()->GetPTT()->GetVoiceFileDuration(path.c_str());\"}],\"type\":\"code-line\"},{\"id\":\"jGFsNRg6Miz63z8isNrpe\",\"children\":[{\"text\":\" filesize = ITMGContextGetInstance()->GetPTT()->GetFileSize(path.c_str());\"}],\"type\":\"code-line\"},{\"id\":\"wDrdytP1Dr_DVY-jE53sV\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"SjT54kCjk4QZbqg-MxLBz\",\"children\":[{\"text\":\" onPttRecordFileCompleted(result, filepath, duration, filesize);\"}],\"type\":\"code-line\"},{\"id\":\"GLnBaigwC6h2WWroa6h_X\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"Iqly1YJgrdewPAVAmsXdB\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"Kv0UpPyUEMeHvy9Zuom-7\",\"children\":[{\"text\":\"}\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"oO81Vh5O7RzQZD2LNxADg\",\"children\":[{\"text\":\"Pausing recording\"}],\"nodeId\":\"pausing-recording\",\"type\":\"h3\"},{\"id\":\"aMmi5nbfkPrjJlycLV6eC\",\"children\":[{\"text\":\"This API is used to pause recording. If you want to resume recording, please call the \"},{\"code\":1,\"text\":\"ResumeRecording\"},{\"text\":\" API.\"}],\"type\":\"p\"},{\"id\":\"ZvnfRDQPUTM-SlTxFKDZq\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype12\",\"type\":\"h4\"},{\"id\":\"CywPB_IhlcMltmn9H4Hb1\",\"children\":[{\"id\":\"FzSP97RLMkQ38AEgHLsAP\",\"children\":[{\"text\":\"ITMGPTT virtual int PauseRecording()\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"c0dkFLOosfPCN4CDjCD7d\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code13\",\"type\":\"h4\"},{\"id\":\"fwM8AI0xmHzadgWTlDPn4\",\"children\":[{\"id\":\"6u4fuQXX-mm7-ZxRqgC4i\",\"children\":[{\"text\":\"ITMGContextGetInstance()->GetPTT()->PauseRecording();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"C5AHo9uFgz-dN_rSE2ZUU\",\"children\":[{\"text\":\"Resuming recording\"}],\"nodeId\":\"resuming-recording\",\"type\":\"h3\"},{\"id\":\"47KFX6lW9KfkQ2y38loK9\",\"children\":[{\"text\":\"This API is used to resume recording.\"}],\"type\":\"p\"},{\"id\":\"-y9qak11iN0gbgfbooml5\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype13\",\"type\":\"h4\"},{\"id\":\"YI2y2P-C3n7zSy00Z4f_c\",\"children\":[{\"id\":\"RgVDNhh_4rRConcsGjVEd\",\"children\":[{\"text\":\"ITMGPTT virtual int ResumeRecording()\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"zEeVSFuufxRC-8lm2Ttu2\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code14\",\"type\":\"h4\"},{\"id\":\"h5XpWyGz4lwrkDVi8hLzW\",\"children\":[{\"id\":\"sccy_yRp7wjdAIq_LMfwm\",\"children\":[{\"text\":\"ITMGContextGetInstance()->GetPTT()->ResumeRecording();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"LT_L2H0ntp-I0xHgAZiF7\",\"children\":[{\"text\":\"Canceling recording\"}],\"nodeId\":\"canceling-recording\",\"type\":\"h3\"},{\"id\":\"_pY_vqxYLY3N6Ps1hGNx0\",\"children\":[{\"text\":\"This API is used to cancel recording. \"},{\"b\":1,\"text\":\"There is no callback after cancellation\"},{\"text\":\".\"}],\"type\":\"p\"},{\"id\":\"MCZ9K2VGWfRmau8MQ2M_L\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype14\",\"type\":\"h4\"},{\"id\":\"i9UYvUdbCd1ytrCott475\",\"children\":[{\"id\":\"KzWALiadvjUHPuY_yQrAD\",\"children\":[{\"text\":\"ITMGPTT virtual int CancelRecording()\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"XmREMZV9HttY62ILlJJgf\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code15\",\"type\":\"h4\"},{\"id\":\"1KfHmiiqj1B662eqg4q4d\",\"children\":[{\"id\":\"z6PXiPvOgHZ9uFlszF9FM\",\"children\":[{\"text\":\"ITMGContextGetInstance()->GetPTT()->CancelRecording();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"FndoCGmnoVHlyY_srsasP\",\"children\":[{\"text\":\"Voice Message Upload, Download, and Playback\"}],\"nodeId\":\"voice-message-upload.2C-download.2C-and-playback\",\"type\":\"h2\"},{\"id\":\"jCU8fBHPxJ8X3WS-hx-qu\",\"children\":[{\"id\":\"aZ-HruYT1grl0IrHGyJQ1\",\"children\":[{\"id\":\"zlaZRzjJLXPyiclHXYwCc\",\"children\":[{\"id\":\"PzL4dcZ7_KBENJhNpvYtv\",\"children\":[{\"text\":\"API\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"KlCoNY2KqRFTNN9hdrkpW\",\"children\":[{\"id\":\"9-_5eQCbceozXNEkQG-bD\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"dd2_bT3IveiR-Ji5GhwmM\",\"children\":[{\"id\":\"N0fVk9PKISssePGDXnMhH\",\"children\":[{\"id\":\"jkFUCBxJUGnxyT7fSTMaX\",\"children\":[{\"id\":\"jgXbGw2w_F9mJr52sfPiz\",\"children\":[{\"text\":\"UploadRecordedFile\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"sIzy7crt-cKcr9_P6809-\",\"children\":[{\"id\":\"8Vh0PaQw1jzCsk74mJipg\",\"children\":[{\"id\":\"MHKd8LCwuRIWOQW1HSdJF\",\"children\":[{\"text\":\"Uploads the audio file\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"ibiR-p8mLIsQgEuuzsWJ7\",\"children\":[{\"id\":\"Y17ZuqsQZoKeaedNj4pKs\",\"children\":[{\"id\":\"E5vz2jUT9flTkxFvT3-D9\",\"children\":[{\"id\":\"ePUkyysYGrOUleg-ANAPl\",\"children\":[{\"text\":\"DownloadRecordedFile\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"gTXCplLBywjnPnxmF3DKQ\",\"children\":[{\"id\":\"T9A61J_Rux_Gw7VjmknZr\",\"children\":[{\"id\":\"WV8qxAxB7HZRxQcyMzWHq\",\"children\":[{\"text\":\"Downloads the audio file\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"3b8wOk55naAHAykw_ktfB\",\"children\":[{\"id\":\"J0_5GchmjiaH7o7yfUQ8o\",\"children\":[{\"id\":\"gcV6noXXGuE2tz5tdUM-R\",\"children\":[{\"id\":\"HC4uWw0Bm8fCxAvU0MvtW\",\"children\":[{\"text\":\"PlayRecordedFile\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Zr6-7egO1-8wa_owkQ_if\",\"children\":[{\"id\":\"xR6x46-8F8UZmCoX6RJrx\",\"children\":[{\"id\":\"ORZiW8qCvHEJ-SN7SeNTy\",\"children\":[{\"text\":\"Plays back the audio file\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"kgNY1PPRGv6IZi3ufmoqL\",\"children\":[{\"id\":\"0jQUQtqv_CfRh30L6CJXZ\",\"children\":[{\"id\":\"MnCzkpvwOUI9dCXaSxDDh\",\"children\":[{\"id\":\"4PJ-PKBlLoF3VSXBEaPls\",\"children\":[{\"text\":\"StopPlayFile\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"eJncCoq1NBWe_M1MIpRy5\",\"children\":[{\"id\":\"3tECurob8uXHV9meYFbqj\",\"children\":[{\"id\":\"D8QUhjk6lXagoH_azmZ_T\",\"children\":[{\"text\":\"Stops playing back the audio file\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"THwcIyNo8yRpkqJlpj3CJ\",\"children\":[{\"id\":\"OHIc2FgI7WIdY0XHE4U4O\",\"children\":[{\"id\":\"L3ggm3faiPcgsBcK22CMX\",\"children\":[{\"id\":\"4ShvPTXYULEzsDj24Y0Cu\",\"children\":[{\"text\":\"GetFileSize\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"w8FBCbLTRdLqKlzErUK44\",\"children\":[{\"id\":\"Rc3m_5RS1GVB73cYE3yCb\",\"children\":[{\"id\":\"i9xxMNh7h6_KwoJluy6-S\",\"children\":[{\"text\":\"Gets audio file size\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"IkOQhGIXVdqPff0pyTL_8\",\"children\":[{\"id\":\"VYm1F_zLmtOtCQa9PIZqN\",\"children\":[{\"id\":\"fZxJf5ziqv_Ut6RT2fbv3\",\"children\":[{\"id\":\"nIDcnBY0Q_TAB5EDJ5XMG\",\"children\":[{\"text\":\"GetVoiceFileDuration\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"WX7osju89vL5BBZf2PJRX\",\"children\":[{\"id\":\"6fVj8HexoO1Z2VUUVENpq\",\"children\":[{\"id\":\"XttpVAC9bNlqs7E0GYey4\",\"children\":[{\"text\":\"Gets the audio file duration\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[43,57],\"widthMode\":\"percentage\"},{\"id\":\"kYjlLyBwUdh5RYtJhDezl\",\"children\":[{\"text\":\"Uploading an audio file\"}],\"nodeId\":\"uploading-an-audio-file\",\"type\":\"h3\"},{\"id\":\"TOWQwcYf2peMYgVCOvOAZ\",\"children\":[{\"text\":\"This API is used to upload an audio file.\"}],\"type\":\"p\"},{\"id\":\"-Qbdk-8HDffe0YY79-K6T\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype15\",\"type\":\"h4\"},{\"id\":\"Mui3ke9Ph3ahX9UR3O6Lc\",\"children\":[{\"id\":\"Wu5qru4t4tRXXQHYWkNKC\",\"children\":[{\"text\":\"ITMGPTT virtual int UploadRecordedFile(const char* filePath)\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"xkz1fTOYagIdhoulUPT2g\",\"children\":[{\"id\":\"Xu4NbqP08-rYoJ6Ewq5sx\",\"children\":[{\"id\":\"E6hZd-E9ZFLGlQPdtP-WY\",\"children\":[{\"id\":\"7iWuwVjLJVdk99cMeGjdR\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"IQoTTOv6gFgv_8H7I6Vzc\",\"children\":[{\"id\":\"kJ87Uw8G_-JqpeCkBKexg\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"qKw__I3Ib6MUz48EVJZcp\",\"children\":[{\"id\":\"oWBOB9ztXX9PXO_ItLO6o\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"4vC4rmy1i5NdTwdyNy5-W\",\"children\":[{\"id\":\"pP1jzhR81A6pox21zxpfE\",\"children\":[{\"id\":\"JBxsYg0LXUDoVk8DZiHAr\",\"children\":[{\"id\":\"WKej2jc0d_RHZ1CkkangC\",\"children\":[{\"text\":\"filePath\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ZKQKaBepNEiKmCiQA-6Ic\",\"children\":[{\"id\":\"ocsT7Ko-8nCy8Ooj2erzu\",\"children\":[{\"id\":\"7mJqX_S-nQBnOngpiMP_T\",\"children\":[{\"text\":\"const char*\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"sk8DaB0O3f9IAMVoJIt8k\",\"children\":[{\"id\":\"m_kVZTP5p7G8_qRYrZj2R\",\"children\":[{\"id\":\"Yjc0Od1sIH2vRPy6vxSOn\",\"children\":[{\"text\":\"Path of uploaded audio file, which is a local path\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[18,19,63],\"widthMode\":\"percentage\"},{\"id\":\"A8kPnY5Lnh_Cdpq4ykWFF\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code16\",\"type\":\"h4\"},{\"id\":\"h4m_YbVGTcSX8hQ9DLkGl\",\"children\":[{\"id\":\"tQW5jsDd5NzXozyDbyKYJ\",\"children\":[{\"text\":\"ITMGContextGetInstance()->GetPTT()->UploadRecordedFile(filePath);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"E_K4rCyaurCgTNsVip_H9\",\"children\":[{\"text\":\"Callback for audio file upload completion\"}],\"nodeId\":\"callback-for-audio-file-upload-completion\",\"type\":\"h3\"},{\"id\":\"BBvyRVvpqDdMI0ZFkfWpd\",\"children\":[{\"text\":\"After the audio file is uploaded, the event message \"},{\"code\":1,\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_UPLOAD_COMPLETE\"},{\"text\":\" will be returned, which will be identified in the \"},{\"code\":1,\"text\":\"OnEvent\"},{\"text\":\" function.\\nThe passed parameters include \"},{\"code\":1,\"text\":\"result\"},{\"text\":\", \"},{\"code\":1,\"text\":\"file_path\"},{\"text\":\", and \"},{\"code\":1,\"text\":\"file_id\"},{\"text\":\".\"}],\"type\":\"p\"},{\"id\":\"VloarUNsCY0XXXafeFHwW\",\"children\":[{\"id\":\"4LwjtkGvouNfFy7c2ukyk\",\"children\":[{\"id\":\"pqlY-qfK1YtIrcIdVObNo\",\"children\":[{\"id\":\"UNDg5RtA5jAuvaIt_HZOE\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"p7JmirPvzol-bSPzaxznu\",\"children\":[{\"id\":\"GAVEeaVIqSstF8TC6tbMa\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"8egU89LSNjfaXUh1DChzu\",\"children\":[{\"id\":\"sfeFMs4IyTDT5QhHAlQZB\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"xT1xjc_DXM4IXQUCFsuPv\",\"children\":[{\"id\":\"990bPsqk9lqDGE7iyX0fu\",\"children\":[{\"id\":\"_ivpErleLz16Q79o_i8WA\",\"children\":[{\"id\":\"X9uaBUlmMiPSqO1IS9WPn\",\"children\":[{\"text\":\"result\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"gDpReGH0YTLTX8b_C-q7V\",\"children\":[{\"id\":\"PuBnKqsfogpu4Cc9wQbJd\",\"children\":[{\"id\":\"bCLEoEwSC9Q7aG_Lmbnt_\",\"children\":[{\"text\":\"int32\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"SlKVDlSKDLlYaeSZrMcsz\",\"children\":[{\"id\":\"EWdP4u6n5NQ7GS2We0LO4\",\"children\":[{\"id\":\"3hXV7TjHX2HJMvc3odANt\",\"children\":[{\"text\":\"0: recording is completed\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"VfOhrkxz3kIA9lSuz40gO\",\"children\":[{\"id\":\"nVfm4oLBAhOJhZN2x7ofF\",\"children\":[{\"id\":\"APhJAQGXHOygu-Lg35kXr\",\"children\":[{\"id\":\"KtUzbN-70CtmYGRHqnT1h\",\"children\":[{\"text\":\"filepath\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Mh_ZQEvkyHzo9rySLFDBD\",\"children\":[{\"id\":\"WOVR_64g-kFDOnNmfMBBG\",\"children\":[{\"id\":\"2qVIOC00jekKcJw3uoU6V\",\"children\":[{\"text\":\"FString\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"_ntGvYp7NStmfZj9k07JS\",\"children\":[{\"id\":\"TqXVXjO_d2nx-BZaIGj1O\",\"children\":[{\"id\":\"O8ctxzv3FF8xYJYuq6zhq\",\"children\":[{\"text\":\"Path of stored recording file\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"TID1cMZXDcO0ycdA7k3Em\",\"children\":[{\"id\":\"sLeOz-nqxl2ATSbKAVxaA\",\"children\":[{\"id\":\"Akuf5GVgbDH08TwjLxM27\",\"children\":[{\"id\":\"5WX0d55goec7r1LftE1ZB\",\"children\":[{\"text\":\"fileid\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"rwqqdK9CRkNQbovvsAj-0\",\"children\":[{\"id\":\"iKDEXkgK_0lBtIVq4U3v3\",\"children\":[{\"id\":\"9ElPIUEsmJiFlk64ikNx4\",\"children\":[{\"text\":\"FString\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Qri1gL_3euNwFX1Nctxgg\",\"children\":[{\"id\":\"dU47wrpwIuV9jgzZqezra\",\"children\":[{\"id\":\"W1VkVk4DVeoEzROB1YLOf\",\"children\":[{\"text\":\"File URL path\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[25,20,55],\"widthMode\":\"percentage\"},{\"id\":\"quUGFDGjmmm8ltroGVwXK\",\"children\":[{\"text\":\"Error codes\"}],\"nodeId\":\"error-codes3\",\"type\":\"h4\"},{\"id\":\"IHbrGUcRR6s3o3rbUA7FN\",\"children\":[{\"id\":\"fl22_9poWHCto6V5DDwrT\",\"children\":[{\"id\":\"BDtovgYMsXF4I-lG3UW-7\",\"children\":[{\"id\":\"oVSbhlIDmtCWwJocjmelK\",\"children\":[{\"text\":\"Error Code Value\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"oiEKHmePn9HiNLEBUCw-c\",\"children\":[{\"id\":\"SRLgZMVxCZOM26Ik8O9-H\",\"children\":[{\"text\":\"Cause\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"hV5OiiMfOb3krHs0hpUHl\",\"children\":[{\"id\":\"yQTenD46opmSq6y36TOjy\",\"children\":[{\"text\":\"Suggested Solution\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"ugNb1nMFGKF_3qBUzDT7x\",\"children\":[{\"id\":\"DxSw0jiY-RSvG6i84lasr\",\"children\":[{\"id\":\"2V4siUbdknwT8NBYZuZ_O\",\"children\":[{\"id\":\"mxOPBA91TFfCxxaL3Ve73\",\"children\":[{\"text\":\"8193\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"LWzxL5lF-YYh56-pLkZhG\",\"children\":[{\"id\":\"NQYLDf5HP7PcIShGPFM2U\",\"children\":[{\"id\":\"NqnfzBFk8beu4eTtW45zc\",\"children\":[{\"text\":\"An error occurred while accessing the file during upload.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"BKv7wHfc8qPJUNK-IKf8p\",\"children\":[{\"id\":\"mG1MSN5b56CaXcj5kgnex\",\"children\":[{\"id\":\"_DHpBtx03v16zupc61zM8\",\"children\":[{\"text\":\"Ensure the existence of the file and the validity of the file path.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"4l4PDoMV9MZQk8-SKsK2M\",\"children\":[{\"id\":\"tNtdgoSlSm1PtNlJJiDm0\",\"children\":[{\"id\":\"Gg3LLkqxZHKJZJDBmEwcj\",\"children\":[{\"id\":\"ZHLPj9vZWR1xttMQlpVs-\",\"children\":[{\"text\":\"8194\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"TSNOSUPR5iwrBXKo_B7Su\",\"children\":[{\"id\":\"qWU5uDegQgytdutgUumNA\",\"children\":[{\"id\":\"SyTi6YWdPwC94k9xhIqGf\",\"children\":[{\"text\":\"Signature verification failed.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ektue3NJd6A6pRTeFN9xG\",\"children\":[{\"id\":\"rBwO5ZJgJ4KWSAIYKbWHc\",\"children\":[{\"id\":\"O_g78urp7yLPFYhZYpH41\",\"children\":[{\"text\":\"Check whether the authentication key is correct and whether the voice message and speech-to-text feature is initialized.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"GxcGw6r3zPC17jApYXBQ0\",\"children\":[{\"id\":\"3JQTIDWGKSWQAZuqYa3MB\",\"children\":[{\"id\":\"qBul4EjxOoFSmGiQkI_xN\",\"children\":[{\"id\":\"P-ptWpCVrejQI1jfhaM2A\",\"children\":[{\"text\":\"8195\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"A9rDYbaMkU2AuZ7LH1g5g\",\"children\":[{\"id\":\"IEAE7Gw20jM6k-CljESzK\",\"children\":[{\"id\":\"bQEjguD23NDKwNscXnHxM\",\"children\":[{\"text\":\"A network error occurred.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"k0yPuW2yEavBUQGJPibtz\",\"children\":[{\"id\":\"YtsmzNyP_O_L6AQLX5vU3\",\"children\":[{\"id\":\"aONMqGJxDl0moPRSRN6Lz\",\"children\":[{\"text\":\"Check whether the device can access the internet.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"etiikZ5ExsXr6zmtk2Nfn\",\"children\":[{\"id\":\"CgljVSaLLzZ45FmoUX3UK\",\"children\":[{\"id\":\"PU77tNYgbhIIFU_Y_UauV\",\"children\":[{\"id\":\"va_-CV5jBxpZN6pIPIxat\",\"children\":[{\"text\":\"8196\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"oYnPbk9fA5wKGuVBplmWT\",\"children\":[{\"id\":\"TJAIfmkon3Pmnm2VKFs28\",\"children\":[{\"id\":\"ImRWVAVUDcd2Om32_Rj2T\",\"children\":[{\"text\":\"The network failed while getting the upload parameters.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"KgdJR5TdKp6jwM1e3K83q\",\"children\":[{\"id\":\"sN1FruoTaTnCWDvR8aJYd\",\"children\":[{\"id\":\"QGpTua5eJQ0sTnqnSrFT4\",\"children\":[{\"text\":\"Check whether the authentication is correct and whether the device can access the internet.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"BAXE5NpSTDPTkuBCpS3dP\",\"children\":[{\"id\":\"y7DqvBp2qS1lFuVlQruN7\",\"children\":[{\"id\":\"o5YtDRNwhJJ34GhaLt43-\",\"children\":[{\"id\":\"fhrDSbtEvScmTLqMo1Q_s\",\"children\":[{\"text\":\"8197\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"hDA3dhPK1vVJmrvnygX3r\",\"children\":[{\"id\":\"gjr3_nrCfgIa17Djq8-hr\",\"children\":[{\"id\":\"xxq_Z2MnF8d5F_R1FN8Av\",\"children\":[{\"text\":\"The packet returned during the process of getting the upload parameters is empty.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"FTzFQmumYLcDM8KuWD5Qe\",\"children\":[{\"id\":\"vWujwizU_mYc3vTBMbJJd\",\"children\":[{\"id\":\"ZDnaY18ux3Smf9j8LJ3EW\",\"children\":[{\"text\":\"Check whether the authentication is correct and whether the device network can normally access the internet.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"fCZae62yUul46Qa_l_ZE1\",\"children\":[{\"id\":\"RsmwfRuFgr32iK4AjAIYB\",\"children\":[{\"id\":\"zNR5WpxVocfG91t3YnRNZ\",\"children\":[{\"id\":\"JReDYiA64Exi8Q2cbp__W\",\"children\":[{\"text\":\"8198\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"zxWNxIIm0oXBPTKESxPvo\",\"children\":[{\"id\":\"YtrqgUkGRpuCIYftTUqw4\",\"children\":[{\"id\":\"cG1ZFo7qLeM16kjC-nTl0\",\"children\":[{\"text\":\"Failed to decode the packet returned during the process of getting the upload parameters.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"5k1550iUyd4K6xYKRwU0n\",\"children\":[{\"id\":\"IMsRhNY-U1-XMTC7RMjGd\",\"children\":[{\"id\":\"2I6O7j55SFXg5yJftuSNH\",\"children\":[{\"text\":\"Check whether the authentication is correct and whether the device can access the internet.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"scIrImXbiJmWLLqOwWDnF\",\"children\":[{\"id\":\"Nshi_JMBXuRWCxOoNDFkQ\",\"children\":[{\"id\":\"4OWE8cytUdp-Wjb6gku7G\",\"children\":[{\"id\":\"HcejBs-agyypdtoV_HaYK\",\"children\":[{\"text\":\"8200\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"UM70GqxXRdQhyFGpLStMD\",\"children\":[{\"id\":\"mNT_JAV_0iBF2OGQi2zpA\",\"children\":[{\"id\":\"4E2c0ryFYaz6BXYfr3LFE\",\"children\":[{\"text\":\"No \"},{\"code\":1,\"text\":\"appinfo\"},{\"text\":\" is set.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Xq-GmDuFuE08wLpuIX4dc\",\"children\":[{\"id\":\"uv6LkZ15ic2oF8BeeKqbD\",\"children\":[{\"id\":\"MwyGPtXLB4cOs7SdoeQyh\",\"children\":[{\"text\":\"Check whether the \"},{\"code\":1,\"text\":\"apply\"},{\"text\":\" API is called or whether the input parameters are empty.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[15,36,49],\"widthMode\":\"percentage\"},{\"id\":\"BBaLR9JFkyCDuf5fLSSOj\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code17\",\"type\":\"h4\"},{\"id\":\"akF_ZbqLCbqk8XsKDr3SW\",\"children\":[{\"id\":\"g9zHXs2ZiEpdSTSjS6O_G\",\"children\":[{\"text\":\"void TMGTestScene::OnEvent(ITMG_MAIN_EVENT_TYPE eventType,const char* data){\"}],\"type\":\"code-line\"},{\"id\":\"w3j4sEXKBWWTx971Z64uz\",\"children\":[{\"text\":\" switch (eventType) {\"}],\"type\":\"code-line\"},{\"id\":\"MH2yw74xYR0VRXBtKc51U\",\"children\":[{\"text\":\" ...\"}],\"type\":\"code-line\"},{\"id\":\"Fywp508g0m9IC5dIAqyQ8\",\"children\":[{\"text\":\" else if (eventType == ITMG_MAIN_EVNET_TYPE_PTT_UPLOAD_COMPLETE) {\"}],\"type\":\"code-line\"},{\"id\":\"p2ccKCzku-cUWHJFQS7Xl\",\"children\":[{\"text\":\" int32 result = JsonObject->GetIntegerField(TEXT(\\\"result\\\"));\"}],\"type\":\"code-line\"},{\"id\":\"7EePfMHr4hecd_D4bkJTL\",\"children\":[{\"text\":\" FString filepath = JsonObject->GetStringField(TEXT(\\\"file_path\\\"));\"}],\"type\":\"code-line\"},{\"id\":\"rkwnsQMO5qCBNAMoa6vB7\",\"children\":[{\"text\":\" FString fileid = JsonObject->GetStringField(TEXT(\\\"file_id\\\"));\"}],\"type\":\"code-line\"},{\"id\":\"TqAp6Lv1N4f2_ml9rp_Cn\",\"children\":[{\"text\":\" onPttUploadFileCompleted(result, filepath, fileid);\"}],\"type\":\"code-line\"},{\"id\":\"KIs-uuV86_whnI0YS6Pzz\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"B5P1R_jIK9-W4Rd-xhMm5\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"zbmTZ7XJbwL7Pp6bx-VMb\",\"children\":[{\"text\":\"}\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"srS3ZZt9t201uV1TBZIbD\",\"children\":[{\"text\":\"Downloading the audio file\"}],\"nodeId\":\"downloading-the-audio-file\",\"type\":\"h3\"},{\"id\":\"O1N3JvKq17nXwM_Gx2nqk\",\"children\":[{\"text\":\"This API is used to download an audio file.\"}],\"type\":\"p\"},{\"id\":\"dyP7rCdGW-SFM6GjHrmII\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype16\",\"type\":\"h4\"},{\"id\":\"iZNXZopCQunVBpBsNgR_a\",\"children\":[{\"id\":\"RJU50qGPRbZlsqW4v9Lg6\",\"children\":[{\"text\":\"ITMGPTT virtual int DownloadRecordedFile(const char* fileId, const char* filePath) \"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"jdtMo-EcCWwDUnSRnfweQ\",\"children\":[{\"id\":\"TjGElAQr804qfV6z-ZQhs\",\"children\":[{\"id\":\"ZvlR_jg4zfVAph-Kgs4Te\",\"children\":[{\"id\":\"7SPZMYV3YIyAfzStvnP4o\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"BAmQAQyO5R7AVByvTndyW\",\"children\":[{\"id\":\"1W3oevN02_JiudyYWIgnk\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"biR--h5AQ4IJ9Jug-WJ3G\",\"children\":[{\"id\":\"VZFxEHR2oCfzbxB1dr2_c\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"SOc43dQ5q6g9WRC-hEa-z\",\"children\":[{\"id\":\"4FSTikrWcFk1FsoX1l5Pe\",\"children\":[{\"id\":\"tLZzU9GjS4Y1PSNPzvGkA\",\"children\":[{\"id\":\"Qo5VvOUBCL5jjEgYZNd58\",\"children\":[{\"text\":\"fileId\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ATzX7UNYb1ebPFCoDaj0Y\",\"children\":[{\"id\":\"7JvRw6n-mIR-mVuoGv1jV\",\"children\":[{\"id\":\"zTXySUy7cDdnYdAckTCH4\",\"children\":[{\"text\":\"const char*\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"uQG2RiMn0TuPhjgW1Olnt\",\"children\":[{\"id\":\"vv-zXh44T275kgL5n81P6\",\"children\":[{\"id\":\"7XmMJD6gT5FiI7DovohAq\",\"children\":[{\"text\":\"URL path of file\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"VYqj5Gr8av2hBDxKm2u0y\",\"children\":[{\"id\":\"KARjXbt1xBk1OiPM5nciQ\",\"children\":[{\"id\":\"sinAXd1k4wV6_QpjKkiD_\",\"children\":[{\"id\":\"J2YevSVPDJVhCKn-jMFyt\",\"children\":[{\"text\":\"filePath\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"FpJSLig7occFe7VVyHL3F\",\"children\":[{\"id\":\"1FacukcSW9UZ8Z49NAeKH\",\"children\":[{\"id\":\"PzvDbskSkSYXxN5y7D29M\",\"children\":[{\"text\":\"const char*\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"gKxKMxSfYfm9B0m3A_ohl\",\"children\":[{\"id\":\"Mtvxtc3hHlviWCuVfcPNU\",\"children\":[{\"id\":\"bs3gEDueXZsB5ZzenHf_V\",\"children\":[{\"text\":\"Local path of saved file\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[25,27,48],\"widthMode\":\"percentage\"},{\"id\":\"mof3YGXUWeqoGh6mZYbZU\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code18\",\"type\":\"h4\"},{\"id\":\"JoF6oEfdqyDNFmVtLWlOf\",\"children\":[{\"id\":\"3NPcOGHb8BMNVrXP3T4L1\",\"children\":[{\"text\":\"ITMGContextGetInstance()->GetPTT()->DownloadRecordedFile(fileID,filePath);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"OA9nXbYtUAEAhUGUS4643\",\"children\":[{\"text\":\"Callback for audio file download completion\"}],\"nodeId\":\"callback-for-audio-file-download-completion\",\"type\":\"h3\"},{\"id\":\"GjP-huEnDqCveA_Ra-YIY\",\"children\":[{\"text\":\"After the audio file is downloaded, the event message \"},{\"code\":1,\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_DOWNLOAD_COMPLETE\"},{\"text\":\" will be returned, which will be identified in the \"},{\"code\":1,\"text\":\"OnEvent\"},{\"text\":\" function.\\nThe passed parameters include \"},{\"code\":1,\"text\":\"result\"},{\"text\":\", \"},{\"code\":1,\"text\":\"file_path\"},{\"text\":\", and \"},{\"code\":1,\"text\":\"file_id\"},{\"text\":\".\"}],\"type\":\"p\"},{\"id\":\"5VvH84CLGt61fXLVwlxJH\",\"children\":[{\"id\":\"imtK9cBkzJauOJokPFcwM\",\"children\":[{\"id\":\"-GgTYZ-ihiEPqm7vS7ram\",\"children\":[{\"id\":\"V4dT0cYVrnrvfi0n-W8lJ\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"vqyRMkgiqaqpZZUQvmI0_\",\"children\":[{\"id\":\"QhejyCvuU8_lQjaZvvv1o\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"GMv2gnLzkZcXNoZzeMVX_\",\"children\":[{\"id\":\"CFU5vUu4msr-Awsd2zQiw\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"RqNfzfHu5jywQ5e7qtu0M\",\"children\":[{\"id\":\"lOFxSM-5WNaWzD_4zhvRE\",\"children\":[{\"id\":\"MqARzlO4S-69HAMIMxNjj\",\"children\":[{\"id\":\"pYSsmGEKDF1FVs7lksO18\",\"children\":[{\"text\":\"result\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"rhUJbhc8RIEirOAx55pvG\",\"children\":[{\"id\":\"9iI4BXVHmQXUpq8ByotJH\",\"children\":[{\"id\":\"tPQvJIECWVDMCTiRiGMkO\",\"children\":[{\"text\":\"int32\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"DAQq1YSU0jrajTZP6KLXQ\",\"children\":[{\"id\":\"AdOmgzEOOH-7KehedOjk2\",\"children\":[{\"id\":\"d2RLu-SDGOGkHsLZ3TaRU\",\"children\":[{\"text\":\"0: recording is completed\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"Fd1e64fALpJN9y9fPRlOx\",\"children\":[{\"id\":\"qElB3NfntBJ3PCBQtnaJC\",\"children\":[{\"id\":\"uq1pMhry5F6VX7aQT1XTc\",\"children\":[{\"id\":\"naHYasnTp7IjvKwdlgYiE\",\"children\":[{\"text\":\"filepath\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"GYOW4rhdB74hZhVFl4XrP\",\"children\":[{\"id\":\"V_-_oWqEfiH6r9rBQsk8a\",\"children\":[{\"id\":\"9YLXe9TohpCISgqAypDL9\",\"children\":[{\"text\":\"FString\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"V2kVCnx9JCA1sbV_MvAzo\",\"children\":[{\"id\":\"GM4s2-Ux3JbfrifZDEqaL\",\"children\":[{\"id\":\"sr0MWRwKen8pXInnzLUXI\",\"children\":[{\"text\":\"Path of stored recording file\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"SUHLnDN-e3jJiVNbIPiPw\",\"children\":[{\"id\":\"XxKuEjusQf0vh0VUjXsVh\",\"children\":[{\"id\":\"iv7u3ZrhkqkTiYzf70ht5\",\"children\":[{\"id\":\"25MBgMW_yzR1W1gXIeTy_\",\"children\":[{\"text\":\"fileid\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"GbQcLSf03z6CeZ9I7IX9S\",\"children\":[{\"id\":\"_4Xe-n4YR4nRpkmzGRuoo\",\"children\":[{\"id\":\"0WVVmjcw07rPi8c24X060\",\"children\":[{\"text\":\"FString\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"UdXv9AHvkG4tDO9kdjm0-\",\"children\":[{\"id\":\"pfRn0XaHZNJT2qmL1HxOc\",\"children\":[{\"id\":\"hoMDNKC-e8iRa123YwOax\",\"children\":[{\"text\":\"URL path of file, which will be retained on the server for 90 days\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[16,12,72],\"widthMode\":\"percentage\"},{\"id\":\"mqiqpXzlXVLD9rqMYZuid\",\"children\":[{\"text\":\"Error codes\"}],\"nodeId\":\"error-codes4\",\"type\":\"h4\"},{\"id\":\"jk0JB_iLM08gL3tM7Jwwc\",\"children\":[{\"id\":\"ZAwyamRoh-GKxJaSgpJzc\",\"children\":[{\"id\":\"xCwl-hf8RblBl_KQKcIGV\",\"children\":[{\"id\":\"tu0H7OynFZ07t_zsNMxGg\",\"children\":[{\"text\":\"Error Code Value\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"kXlqYZCMyxBifWaUJ5d5L\",\"children\":[{\"id\":\"Ia3mI8RXQ3y0SztHw09hx\",\"children\":[{\"text\":\"Cause\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"69TyMlzRnx13opIQb77u-\",\"children\":[{\"id\":\"0FLuQ_XozkKYRqkFe8c_J\",\"children\":[{\"text\":\"Suggested Solution\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"5m5DyIt9tnVqa-tpAki1r\",\"children\":[{\"id\":\"LBZ0JDoZPxPy-tdw_EMtd\",\"children\":[{\"id\":\"IOGBbuJqaP_CNJzPz4UAP\",\"children\":[{\"id\":\"hRN68DmkUrJPQN2aGekMj\",\"children\":[{\"text\":\"12289\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"9_4x2bijbQM0w3YQ6Pa3J\",\"children\":[{\"id\":\"zRUoeN1O5Go86EeenoSLj\",\"children\":[{\"id\":\"qPbjXc7KycI9sHOCPn1Vg\",\"children\":[{\"text\":\"An error occurred while accessing the file during download.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"UC8CHbFe41b84HEPtWqTb\",\"children\":[{\"id\":\"ODEpLUbrwo5ddgM3mUrXK\",\"children\":[{\"id\":\"71p5GpSWdf-N1blCchJEW\",\"children\":[{\"text\":\"Check whether the file path is valid.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"4PzhEIzyZU4umFXAHEv1V\",\"children\":[{\"id\":\"ivrPobsME7DYAA5SemdTj\",\"children\":[{\"id\":\"B46-4MImQUqriZSiHdMdh\",\"children\":[{\"id\":\"whl8hZmM6en-KWcup1NH4\",\"children\":[{\"text\":\"12290\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Cpj-1F4Sv03VEWKyvr0KN\",\"children\":[{\"id\":\"0Vovd7MxMPRZXA5fNpXSG\",\"children\":[{\"id\":\"cGDkTcfjjbR9tXy1YusNQ\",\"children\":[{\"text\":\"Signature verification failed.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"PRJOzkHIVcq0bW9ZstXK1\",\"children\":[{\"id\":\"MzsBeu45RaqbzoUQ23A3d\",\"children\":[{\"id\":\"9Q8NsovReq-DijCOMXhSL\",\"children\":[{\"text\":\"Check whether the authentication key is correct and whether the voice message and speech-to-text feature is initialized.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"lLNgpnw4dv-zb6BcaRnp6\",\"children\":[{\"id\":\"7uJ5xBuoAr3LO-Vl_vmo4\",\"children\":[{\"id\":\"6kux_SZSG-IO68EBFzH1e\",\"children\":[{\"id\":\"JeAmFTth72qcmehN1bUkQ\",\"children\":[{\"text\":\"12291\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"NtQJoG-mDjnlCqm69yk-y\",\"children\":[{\"id\":\"P-Or3VKZItjtynobxN3P8\",\"children\":[{\"id\":\"O61GW7R7EGMLlPKHHQoEs\",\"children\":[{\"text\":\"Network storage system exception.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"gEOm-dKAA1FN_F7v8Xoqy\",\"children\":[{\"id\":\"ECDIAoyiRlJYHcsZM2d5R\",\"children\":[{\"id\":\"iTu0Ev5g9XvtPluiAtEwQ\",\"children\":[{\"text\":\"The server failed to get the audio file. Check whether the API parameter \"},{\"code\":1,\"text\":\"fileid\"},{\"text\":\" is correct, whether the network is normal, and whether the file exists in COS.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"ESAtXuaUXSUBVUi88xqix\",\"children\":[{\"id\":\"1gHc8pRxvC0p1MYrN4F2j\",\"children\":[{\"id\":\"zQOFMkkhwsvflMhF3FvJD\",\"children\":[{\"id\":\"rWGIwed9nQQ7CAE1HP-dq\",\"children\":[{\"text\":\"12292\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"HSQHlcoUjwMD9f1CoQmIT\",\"children\":[{\"id\":\"XWNhxKImQOyDdXWJBNlag\",\"children\":[{\"id\":\"85yfZYWEsNocDTvV7Olxm\",\"children\":[{\"text\":\"Server file system error.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ctzNLm8BRq13araKvwRgK\",\"children\":[{\"id\":\"tOtT7QBlwil3ZZ-hsQOZb\",\"children\":[{\"id\":\"4vP2SS9FGAFNkQb_NSeUk\",\"children\":[{\"text\":\"Check whether the device can access the internet and whether the file exists on the server.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"CKJ7COLWvVkqEZUcjvMsj\",\"children\":[{\"id\":\"KVEpKkbCLNCPRMJBPMF3w\",\"children\":[{\"id\":\"FVPXLEnf14X17LCOsT79s\",\"children\":[{\"id\":\"E6JNcQRhAb4PdsWCuiFGF\",\"children\":[{\"text\":\"12293\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"5mqdbk1dPvsIb_hOwgW2u\",\"children\":[{\"id\":\"Y3qTfI40CLd1eWM72bUpO\",\"children\":[{\"id\":\"vn7U7LcS4w1XUm0fL3y5l\",\"children\":[{\"text\":\"The HTTP network failed during the process of getting the download parameters.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"c5oNNKkaERvYs1fn--FFD\",\"children\":[{\"id\":\"zqQHkgnf4if1N3LgPKgmC\",\"children\":[{\"id\":\"ClNwzUDFo0cO9Atq1QjgW\",\"children\":[{\"text\":\"Check whether the device can access the internet.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"rPxCJn79pEs1kog8Wbp2W\",\"children\":[{\"id\":\"eYGYPoyE5XTPpUfNpc9yn\",\"children\":[{\"id\":\"WeqjCAptUd4uKv-jACZBk\",\"children\":[{\"id\":\"cfXBbHSkmWIcekYDvhdls\",\"children\":[{\"text\":\"12294\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"RVW7mY8jSpgP7Ma7Vf28R\",\"children\":[{\"id\":\"MtpDWvj2VWgv_Z7eIQTeb\",\"children\":[{\"id\":\"HPZvaPa9kk8Rpe9KnStw2\",\"children\":[{\"text\":\"The packet returned during the process of getting the download parameters is empty.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"p71mEmo2StOFP2OIbM8lT\",\"children\":[{\"id\":\"VcodcEn57ezdQO-GDn-GU\",\"children\":[{\"id\":\"v_mAuoOeD_uLlSFxI4hp_\",\"children\":[{\"text\":\"Check whether the device can access the internet.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"YvNRUvaU19RTKHbOGT9e9\",\"children\":[{\"id\":\"Kzzru9nWr_tEQFO3k28jP\",\"children\":[{\"id\":\"Uom1xOFvQmHEo6oTa-EdQ\",\"children\":[{\"id\":\"W27AmsE5WAk1uT5OoGPzJ\",\"children\":[{\"text\":\"12295\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"H7L03XzQEeYENNzitoV5R\",\"children\":[{\"id\":\"JAQT3ILDYzXwAQFUBTsmE\",\"children\":[{\"id\":\"JNsR5HFZJKdyFiX2b1XgO\",\"children\":[{\"text\":\"Failed to decode the packet returned during the process of getting the download parameters.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"BnsIAUpKmfCko6xfEUWYg\",\"children\":[{\"id\":\"YDBAOh1DY3jMjJximpDhH\",\"children\":[{\"id\":\"98lISBFK-oo-Q_-RKwIDK\",\"children\":[{\"text\":\"Check whether the device can access the internet.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"x-eVv_SU_lGQfiiAOqkiT\",\"children\":[{\"id\":\"e6B4dFP6Gkxirhlyid0NE\",\"children\":[{\"id\":\"DTc7ssNNfI4j9xmEiyy9u\",\"children\":[{\"id\":\"oECm4O7uaNZ8L2TVt4xYP\",\"children\":[{\"text\":\"12297\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"lY_P4Bqx_ld3AHZ5T5vRd\",\"children\":[{\"id\":\"5ycP09MkoMQbA1q4Iho1Y\",\"children\":[{\"id\":\"VryxyyxzruPfl7Gflni2a\",\"children\":[{\"text\":\"No \"},{\"code\":1,\"text\":\"appinfo\"},{\"text\":\" is set.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"CHe7LtlphBsI4PaV_lyiR\",\"children\":[{\"id\":\"_3B8boVd2E1WhWzlbf8AL\",\"children\":[{\"id\":\"ppVNUXlBHfjgjD3NsTf-R\",\"children\":[{\"text\":\"Check whether the authentication key is correct and whether the voice message and speech-to-text feature is initialized.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[15,36,49],\"widthMode\":\"percentage\"},{\"id\":\"5LlmE9GrjBF27fcXlpsDJ\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code19\",\"type\":\"h4\"},{\"id\":\"wWOqozRhJWWkUqTHWW3Lu\",\"children\":[{\"id\":\"PVOJhKfMQZd5-wE3NWqC5\",\"children\":[{\"text\":\"void TMGTestScene::OnEvent(ITMG_MAIN_EVENT_TYPE eventType,const char* data){\"}],\"type\":\"code-line\"},{\"id\":\"i-PqMNLR0owiBKIA1gXcl\",\"children\":[{\"text\":\" switch (eventType) {\"}],\"type\":\"code-line\"},{\"id\":\"KT7gWMlj-KRrPTKf5sVIs\",\"children\":[{\"text\":\" ...\"}],\"type\":\"code-line\"},{\"id\":\"Ig7mtN5qs4b1intwyPLP5\",\"children\":[{\"text\":\" else if (eventType == ITMG_MAIN_EVNET_TYPE_PTT_DOWNLOAD_COMPLETE) {\"}],\"type\":\"code-line\"},{\"id\":\"HrRIKZLDnD_ZaPCQ6J3Ny\",\"children\":[{\"text\":\" int32 result = JsonObject->GetIntegerField(TEXT(\\\"result\\\"));\"}],\"type\":\"code-line\"},{\"id\":\"7WhK_5k-NGeno-Pqt3Yhl\",\"children\":[{\"text\":\" FString filepath = JsonObject->GetStringField(TEXT(\\\"file_path\\\"));\"}],\"type\":\"code-line\"},{\"id\":\"-gYeMnNNNDLwAlt4jE5iT\",\"children\":[{\"text\":\" FString fileid = JsonObject->GetStringField(TEXT(\\\"file_id\\\"));\"}],\"type\":\"code-line\"},{\"id\":\"F0PYGBSZmGfkZkNvdT7wo\",\"children\":[{\"text\":\" onPttDownloadFileCompleted(result, filepath, fileid);\"}],\"type\":\"code-line\"},{\"id\":\"Ag8vdSNPj1TY9IXSoPXG0\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"Q2_F_xJSy7UY5I-NeX9mC\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"OzoRUrb8mDcWAo7ujbEtv\",\"children\":[{\"text\":\"}\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"_Ogmeom9kppixC4zMpFpO\",\"children\":[{\"text\":\"Playing back audio\"}],\"nodeId\":\"playing-back-audio\",\"type\":\"h3\"},{\"id\":\"jgoqokbdF2jEITKSQhlCz\",\"children\":[{\"text\":\"This API is used to play back audio.\"}],\"type\":\"p\"},{\"id\":\"kqLGUvfKotEVfyYtaz5fh\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype17\",\"type\":\"h4\"},{\"id\":\"NcQa7mXIof-XwqEf3WcQd\",\"children\":[{\"id\":\"nHX1GaQfkhJ8dvyOIX0xx\",\"children\":[{\"text\":\"ITMGPTT virtual int PlayRecordedFile(const char* filePath)\"}],\"type\":\"code-line\"},{\"id\":\"Nkyh3_I3dIgkUC9UWlUBM\",\"children\":[{\"text\":\"ITMGPTT virtual int PlayRecordedFile(const char* filePath, nt voiceType)\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"-2waniahUwYnhzhKgfjrq\",\"children\":[{\"id\":\"NB11exa4XcuAG9dEPdrPS\",\"children\":[{\"id\":\"WteFzgB6Z_1IHH2Fgo8-s\",\"children\":[{\"id\":\"GJ9g5XjDJ4w6M8T6bMPS5\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"h-pb6fKpRtlwSfE7oTHgY\",\"children\":[{\"id\":\"1hoSspznl2Qk2zrlE1G-X\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"XRAGRYILAk1r-46HDefnV\",\"children\":[{\"id\":\"PphLboLLNwSCEmsV0Oxpp\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"cEppOh26lzMs4nOt-gEKO\",\"children\":[{\"id\":\"27XsHa_nCVjAA57lJOjoy\",\"children\":[{\"id\":\"92BeS45a7E-bA67J9B8LN\",\"children\":[{\"id\":\"_m3RiP2zLqEXcEpcjn7tJ\",\"children\":[{\"text\":\"filePath\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"XiO_WwbLA4Cb-06xIgdg0\",\"children\":[{\"id\":\"TJexrj5cOxwG4nLQAFg2v\",\"children\":[{\"id\":\"mRCSA6CuLzGeZyryVD682\",\"children\":[{\"text\":\"const char\"},{\"text\":\"*\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"dPRjzf_LNJt6ZI2vt22YE\",\"children\":[{\"id\":\"NaPA-D_u22Q_4-bkvB4sd\",\"children\":[{\"id\":\"a8_wKbSj7O9MZ3VM3MTAt\",\"children\":[{\"text\":\"Local audio file path\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"vbGRCKxa7hZybcFl46I5S\",\"children\":[{\"id\":\"N5gQfAGy9E-qn0e2_bwDp\",\"children\":[{\"id\":\"zVSxI-BBnw615QWpoPvjZ\",\"children\":[{\"id\":\"Muk_rivo5SPTU6k32nQsW\",\"children\":[{\"text\":\"voicetype\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"u52d2FFF93Sht3OWGfuUG\",\"children\":[{\"id\":\"paSm1dB0hBCDhcw77ks4O\",\"children\":[{\"id\":\"JolBf15CNEu8t9HOOe3hx\",\"children\":[{\"text\":\"int\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"pM2GE-WDRVXz0E_mz6iDx\",\"children\":[{\"id\":\"4jBtB2hThtdwQDOS6zlie\",\"children\":[{\"id\":\"mnzgbl3GAb5jSkXH51Qg1\",\"children\":[{\"text\":\"Voice changer type. For more information, see \"},{\"id\":\"38f8xEXAhanQd5Rudkm8G\",\"children\":[{\"text\":\"Voice Changing Effects\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://intl.cloud.tencent.com/document/product/607/44995\",\"props\":{\"type\":\"link\",\"url\":\"https://intl.cloud.tencent.com/document/product/607/44995\"},\"type\":\"ref\"},{\"text\":\".\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[14,15,71],\"widthMode\":\"percentage\"},{\"id\":\"e0PI2p4w8t1iEhyJfa84U\",\"children\":[{\"text\":\"Error codes\"}],\"nodeId\":\"error-codes5\",\"type\":\"h4\"},{\"id\":\"SLemTq3mk2MvaCAxLL0_l\",\"children\":[{\"id\":\"iYg98q-96TSMtonVrFkzs\",\"children\":[{\"id\":\"02IJAd3tlXGNPXIyAfu0e\",\"children\":[{\"id\":\"YN-9oCMspV-YwoQZHgINi\",\"children\":[{\"text\":\"Error Code Value\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"4x9_6DE8-CyXDMcG5sv9w\",\"children\":[{\"id\":\"gwu7ElkRNsEsxfGo5DfNh\",\"children\":[{\"text\":\"Cause\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"xapR921XV5OHr4a1taUN4\",\"children\":[{\"id\":\"sWzSmzrKZnUKQV6e6EWS-\",\"children\":[{\"text\":\"Suggested Solution\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"O3lvvW87LhyMKbUwUtcg7\",\"children\":[{\"id\":\"Rjxoe8kAzsPlAUmBfNyfl\",\"children\":[{\"id\":\"CI-dKIH4YBsIWRdlVYLel\",\"children\":[{\"id\":\"UA_vAHAGBsIgydAKMrrrr\",\"children\":[{\"text\":\"20485\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"6Lo2MvoOORdMxuIlffZ_N\",\"children\":[{\"id\":\"vIvH-4nXmcpYd8V_hHnLe\",\"children\":[{\"id\":\"6AFGC0ZkuQ7KKyIkc7ncm\",\"children\":[{\"text\":\"Playback is not started.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"D1AxQmGmWp9XvxEikIqh5\",\"children\":[{\"id\":\"3xJZ7wuEqFKHIsp77x3ft\",\"children\":[{\"id\":\"q85_uoxgRmdt1DtFGO-EA\",\"children\":[{\"text\":\"Ensure the existence of the file and the validity of the file path.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[19,24,57],\"widthMode\":\"percentage\"},{\"id\":\"4UFMG5od3S5EgtS6t09tD\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code20\",\"type\":\"h4\"},{\"id\":\"Jde4tp7sFzhNP7Tvgz5rz\",\"children\":[{\"id\":\"asXSd_85Mv3-u1ZFZRmpn\",\"children\":[{\"text\":\"ITMGContextGetInstance()->GetPTT()->PlayRecordedFile(filePath);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"LGBHWNRegTJ1Uq6MCfWWk\",\"children\":[{\"text\":\"Callback for audio playback\"}],\"nodeId\":\"callback-for-audio-playback\",\"type\":\"h3\"},{\"id\":\"-w4ucVv48tT35nAnkJcL0\",\"children\":[{\"text\":\"After the audio is played back, the event message \"},{\"code\":1,\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_PLAY_COMPLETE\"},{\"text\":\" will be returned, which will be identified in the \"},{\"code\":1,\"text\":\"OnEvent\"},{\"text\":\" function.\\nThe passed parameter includes \"},{\"code\":1,\"text\":\"result\"},{\"text\":\" and \"},{\"code\":1,\"text\":\"file_path\"},{\"text\":\".\"}],\"type\":\"p\"},{\"id\":\"OsKIqdbQNtY8ww4yNGyg9\",\"children\":[{\"id\":\"NGVmi4yqKq8Hdp5wlVRbY\",\"children\":[{\"id\":\"_8T9vUvvdfCW61sCkTIAR\",\"children\":[{\"id\":\"To84IBQuDT1vFdnjwOl3O\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"-wySkZVweJ1OfIiRmE0OO\",\"children\":[{\"id\":\"zQrgkPFLulXm1BzkrQrru\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"KF26-yWyAZI1221buDgz0\",\"children\":[{\"id\":\"z6t7ZEhw81nnexvg9pkla\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"eLFSBBhbOtRy593li1h41\",\"children\":[{\"id\":\"fhsk1TcEJUWo9DKCwJZJD\",\"children\":[{\"id\":\"TsJWZuMd4mViaPaK6Tq2i\",\"children\":[{\"id\":\"5WXc5E3Ye8iVx76jM6GzE\",\"children\":[{\"text\":\"code\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ip7UcBNcSBTvyI5JqNpRY\",\"children\":[{\"id\":\"8f1izWL19HZg918uGw1kK\",\"children\":[{\"id\":\"iKzl-3KZ02NagL5NE_xqu\",\"children\":[{\"text\":\"int\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"iwVU3n2Hz8ehIttm74F-M\",\"children\":[{\"id\":\"cUdiLt3-P_2ueMTPWy2yl\",\"children\":[{\"id\":\"Ln3IPfoR0CANwzWVDJENu\",\"children\":[{\"text\":\"0: playback is completed\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"jTzOWTjhHPHUSzs8PiKpn\",\"children\":[{\"id\":\"_F3Po52t7O5zKbNeZVWMJ\",\"children\":[{\"id\":\"JGxVxOj9jSzQRiuoWzFZK\",\"children\":[{\"id\":\"l3QPnEHC5bFJ-XE71RhVz\",\"children\":[{\"text\":\"filepath\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"etnvay-DgImIsyjHEwl1Z\",\"children\":[{\"id\":\"6DVpdLOxOS1t3Dw3QlxZ7\",\"children\":[{\"id\":\"i5eZ5LME6xqduXErXGOaR\",\"children\":[{\"text\":\"FString\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"6tv0u6TiZh9wYH02gIxHa\",\"children\":[{\"id\":\"_UOF6ELozAMwl0dnV29vw\",\"children\":[{\"id\":\"eMa3_doasomySXG0mLPhz\",\"children\":[{\"text\":\"Path of stored recording file\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[25,20,55],\"widthMode\":\"percentage\"},{\"id\":\"H26qQq_5GH1jdXaLoQUR9\",\"children\":[{\"text\":\"Error codes\"}],\"nodeId\":\"error-codes6\",\"type\":\"h4\"},{\"id\":\"n38kgQaV0S1Ftq_vJwfrP\",\"children\":[{\"id\":\"gPUv41eqsPjOAXVNqWay2\",\"children\":[{\"id\":\"2wtB94wVGPOxyrGAWi-gj\",\"children\":[{\"id\":\"c7Vzv9dFrYQN5UF5l_rHq\",\"children\":[{\"text\":\"Error Code Value\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"W4xevmFyeBbtT59kpN7C3\",\"children\":[{\"id\":\"OZ3yKHWqal2IcrxAJerMd\",\"children\":[{\"text\":\"Cause\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"SX-AUwUoMhQ_Pt-w1TXaF\",\"children\":[{\"id\":\"CqDZ06paVlXDX-GRZgOER\",\"children\":[{\"text\":\"Suggested Solution\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"FOrdQbmmLnlb3FpH_JFF7\",\"children\":[{\"id\":\"-P78mYLzDyhIb__c78cB3\",\"children\":[{\"id\":\"7Bs_qHCDRHaHpPyzAiI8S\",\"children\":[{\"id\":\"EkickLEbq3ifzk_vv_s67\",\"children\":[{\"text\":\"20481\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"lPgOtH9niuFh3XpQZIThI\",\"children\":[{\"id\":\"EMzspr_oqiTSEfGCK8rJn\",\"children\":[{\"id\":\"Yf80Zr-Bifuuux8IisaW7\",\"children\":[{\"text\":\"Initialization error.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"bYBvM52DXt03H5rcOKs1W\",\"children\":[{\"id\":\"NxvHO4AzcZrGkBEMzaUAa\",\"children\":[{\"id\":\"6mSWn5hea0QpjjRF28bYw\",\"children\":[{\"text\":\"Check whether the device is being used, whether the permissions are normal, and whether the initialization is normal.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"_FVGv6lDt7q-e2UTlBKpV\",\"children\":[{\"id\":\"dHGlrgzAYCrOPyBuJ4bLM\",\"children\":[{\"id\":\"teo5HyVV5Z7rXYQ2Gk9br\",\"children\":[{\"id\":\"vnMWyfrph8X4uQ6et2Q8P\",\"children\":[{\"text\":\"20482\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"LFTPNX7QuD-G9_9n4_rvx\",\"children\":[{\"id\":\"bkbgnEPVtdKzIrP3o3lZw\",\"children\":[{\"id\":\"pzo-DBjOjlE30C5-SJNFz\",\"children\":[{\"text\":\"During playback, the client tried to interrupt and play back the next one but failed (which should succeed normally).\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"U3QsN4BQnv4AnvgEdtHDD\",\"children\":[{\"id\":\"P0bh2jzHDR9H6-X9j2RHA\",\"children\":[{\"id\":\"C5dCQRtJx0r25wm8XSHqF\",\"children\":[{\"text\":\"Check whether the code logic is correct.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"G55VotWlIcnpO3WOKQjSR\",\"children\":[{\"id\":\"CL0QcB_x_-9KvKxQpV4B-\",\"children\":[{\"id\":\"ObGiXHtjF4lJJViqQAw3J\",\"children\":[{\"id\":\"uPbjJe2X0rK1BF_6T-iNx\",\"children\":[{\"text\":\"20483\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"wpjHjjXa3HYVnmN6ZTkQC\",\"children\":[{\"id\":\"5fRcgBRaIoi_KAnZmViEO\",\"children\":[{\"id\":\"iZWZPaF1ZGqfpRR9VKLeV\",\"children\":[{\"text\":\"Parameter is empty.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Hyx_MQ1hKEHZAYNkiyn8v\",\"children\":[{\"id\":\"_idJWpJMK7MqddYSskaBv\",\"children\":[{\"id\":\"m29Ko4-z3bXYjQbXlDnkz\",\"children\":[{\"text\":\"Check whether the API parameters in the code are correct.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"HMThxvED9m3GtkoEo3qLy\",\"children\":[{\"id\":\"zNINpFvjo09uR2RLDOWSz\",\"children\":[{\"id\":\"pQOcG4IdMUAkFEVEs__Xn\",\"children\":[{\"id\":\"A8NA9_Zpep3mgG8aRNnd6\",\"children\":[{\"text\":\"20484\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"PXwjEHiX55tS4v9MlQ-kf\",\"children\":[{\"id\":\"orKsWSLGQMqVGCbIlwR5w\",\"children\":[{\"id\":\"UJXps2qyV79MQKXcQghtk\",\"children\":[{\"text\":\"Internal error.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"-EmGAecWoBO3W33XWYOIJ\",\"children\":[{\"id\":\"3918x0CgBp40xIMpAz1Wh\",\"children\":[{\"id\":\"8JOJs2A_QzAHgsMK6aH0-\",\"children\":[{\"text\":\"An error occurred while initializing the player. This error code is generally caused by failure in decoding, and the error should be located with the aid of logs.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[16,36,48],\"widthMode\":\"percentage\"},{\"id\":\"kFPTXSJnWVkxyyjV53yuH\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code21\",\"type\":\"h4\"},{\"id\":\"gUzw7tF4S_KOp8cC3UWa1\",\"children\":[{\"id\":\"UQefclyTTHGXT_QjHDWVc\",\"children\":[{\"text\":\"void TMGTestScene::OnEvent(ITMG_MAIN_EVENT_TYPE eventType,const char* data){\"}],\"type\":\"code-line\"},{\"id\":\"63t58_s99i_6k2Y3yrtot\",\"children\":[{\"text\":\" switch (eventType) {\"}],\"type\":\"code-line\"},{\"id\":\"xyEAbGYKbN7cSqdlBb0Ll\",\"children\":[{\"text\":\" ...\"}],\"type\":\"code-line\"},{\"id\":\"vJeq8H1MqFsQ0UKIRtu5I\",\"children\":[{\"text\":\" else if (eventType == ITMG_MAIN_EVNET_TYPE_PTT_PLAY_COMPLETE) {\"}],\"type\":\"code-line\"},{\"id\":\"NydELmF84fEslcNXglkXu\",\"children\":[{\"text\":\" int32 result = JsonObject->GetIntegerField(TEXT(\\\"result\\\"));\"}],\"type\":\"code-line\"},{\"id\":\"gbOWHDuK3uXOuQQcnXoFY\",\"children\":[{\"text\":\" FString filepath = JsonObject->GetStringField(TEXT(\\\"file_path\\\"));\"}],\"type\":\"code-line\"},{\"id\":\"q296f6Y2j3mtDoDR9jYik\",\"children\":[{\"text\":\" onPttPlayFileCompleted(result, filepath);\"}],\"type\":\"code-line\"},{\"id\":\"QDG_X2JEAXh04jzb7rWPW\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"ydCVfDk3fYQpaiC8Hgffn\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"owmB3noNZTY7MpZEAb1U2\",\"children\":[{\"text\":\"}\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"9ntB8dAXMNJoq7vjTLSs8\",\"children\":[{\"text\":\"Stopping audio playback\"}],\"nodeId\":\"stopping-audio-playback\",\"type\":\"h3\"},{\"id\":\"pu3SNEYJdXBPjmHagKH1W\",\"children\":[{\"text\":\"This API is used to stop audio playback. There will be a callback for playback completion when the playback stops.\"}],\"type\":\"p\"},{\"id\":\"bsBJKy_ath9dlZRO-GSrY\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype18\",\"type\":\"h4\"},{\"id\":\"jDW_zwJlk_60vhoCYFMfO\",\"children\":[{\"id\":\"RWBqRpjgiu_79ePz8OUvi\",\"children\":[{\"text\":\"ITMGPTT virtual int StopPlayFile()\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"g_Qm3m8YaxO9G1nbtUVq2\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code22\",\"type\":\"h4\"},{\"id\":\"BABS4Z1l9FROjg5-5phdS\",\"children\":[{\"id\":\"_UVhLYlwY8P0s4BKSxEsA\",\"children\":[{\"text\":\"ITMGContextGetInstance()->GetPTT()->StopPlayFile();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"rQQ6N_zDwKmZE7mkmxkBA\",\"children\":[{\"text\":\"Getting audio file size\"}],\"nodeId\":\"getting-audio-file-size\",\"type\":\"h3\"},{\"id\":\"yItG3LXFbb1lRM3wUs7Tq\",\"children\":[{\"text\":\"This API is used to get the size of an audio file.\"}],\"type\":\"p\"},{\"id\":\"5poH1WM5eLNqCNqB8CPDq\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype19\",\"type\":\"h4\"},{\"id\":\"eejuHYjyNa8twhBIzD69o\",\"children\":[{\"id\":\"WtqH915CS8kSG1_D4nr6h\",\"children\":[{\"text\":\"ITMGPTT virtual int GetFileSize(const char* filePath)\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"1Gw4QCy4YHLByZH6qsP0N\",\"children\":[{\"id\":\"ePKkzDmCRCNdab49nOrmi\",\"children\":[{\"id\":\"iECkXuKnqplnUFdKnNX8Y\",\"children\":[{\"id\":\"4EXA8LfEoEiNKaW47dYf4\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"j0juNe3ta7OgbHfdywN0j\",\"children\":[{\"id\":\"KeMqllCIhgH2tnjlnc8OV\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"poU4GwOki7mw2dA3UnkFW\",\"children\":[{\"id\":\"Dd7do0_CqaBdsmzCUdvTe\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"vG9AELsYSoHe-7FEpXemh\",\"children\":[{\"id\":\"t2nEV9G6rgSgCgSLtgOdD\",\"children\":[{\"id\":\"HNCFX9xyZ81sQkRkgWmDD\",\"children\":[{\"id\":\"wRVWLB805S_-h_rJvGCWa\",\"children\":[{\"text\":\"filePath\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"pqhHKgfPnmWzVSQN9VcKt\",\"children\":[{\"id\":\"QXh0neLQLSXx53Rz6_ueC\",\"children\":[{\"id\":\"kXfyL1PErc9zb4bbc7K-o\",\"children\":[{\"text\":\"const char*\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"HUd7shDllIHweFpFV4A2A\",\"children\":[{\"id\":\"H4heQvJEkx4PQcuxPfpvf\",\"children\":[{\"id\":\"EBIm1-z_gvkusMx124HXy\",\"children\":[{\"text\":\"Path of audio file, which is a local path\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[20,21,59],\"widthMode\":\"percentage\"},{\"id\":\"rNfgM1IxzbQLyJ2B9A2Zk\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code23\",\"type\":\"h4\"},{\"id\":\"Zq1sItEDsIaNfbE2DIun8\",\"children\":[{\"id\":\"4oIMWmsmIcxjSGwalYG4_\",\"children\":[{\"text\":\"ITMGContextGetInstance()->GetPTT()->GetFileSize(filePath);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"SigX1B_Eh8HisWDEhZDBf\",\"children\":[{\"text\":\"Getting audio file duration\"}],\"nodeId\":\"getting-audio-file-duration\",\"type\":\"h3\"},{\"id\":\"SO3vwrt5tyMerI8lflSfZ\",\"children\":[{\"text\":\"This API is used to get the duration of an audio file in milliseconds.\"}],\"type\":\"p\"},{\"id\":\"NJXhkp4W4FImd0Sk3ZdPi\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype20\",\"type\":\"h4\"},{\"id\":\"ZPXMJywha1Ksf9ZQR-6YJ\",\"children\":[{\"id\":\"JvnobwZobMncgVQ-LTHxk\",\"children\":[{\"text\":\"ITMGPTT virtual int GetVoiceFileDuration(const char* filePath)\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"qnUnk2asaiU1gZOAR17K3\",\"children\":[{\"id\":\"SGe31-qHybl3O9fPwn0dY\",\"children\":[{\"id\":\"FZ_IOuKkl51e7lkE22BPd\",\"children\":[{\"id\":\"zqcRvvotZTD2fUpoNGUSl\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Ne2Z2Umv5reG6aX3cSlXK\",\"children\":[{\"id\":\"wP5ohGWmwfLZ5JcGFUsm0\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"hk5JYJO0B55N00YTA0Wid\",\"children\":[{\"id\":\"cRBOdPzgVyXhALhFF6p7E\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"yy9bW9JegcucCsR1GExtV\",\"children\":[{\"id\":\"r5mjFoo5zle8f9IRq_Tr_\",\"children\":[{\"id\":\"-dWTz46YlpsSnjeINFFnR\",\"children\":[{\"id\":\"-NZGya5J0Icci6YgkdF4y\",\"children\":[{\"text\":\"filePath\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"76I6sPJobU2YIA3qU4qwZ\",\"children\":[{\"id\":\"HJt8-hcxppU6gL9SOZ0OZ\",\"children\":[{\"id\":\"Zd9MB7bMwZU307rOKbjGr\",\"children\":[{\"text\":\"const char*\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"_jVroKfBWsL9L_vIgZF6t\",\"children\":[{\"id\":\"Arp79NnHsvlUL2EtXBp0k\",\"children\":[{\"id\":\"-eueSwa0WBcdUJj6eRRIb\",\"children\":[{\"text\":\"Path of audio file, which is a local path\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[20,21,59],\"widthMode\":\"percentage\"},{\"id\":\"nN7fiPRw5-vPJOWQU8vap\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code24\",\"type\":\"h4\"},{\"id\":\"8MbG0octkQXsnZ2xDaWCP\",\"children\":[{\"id\":\"l6x4y8s7jp0hMtAU8PIcv\",\"children\":[{\"text\":\"ITMGContextGetInstance()->GetPTT()->GetVoiceFileDuration(filePath);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"ZxhLMFlWRQSUe8boyD4iQ\",\"children\":[{\"text\":\"Fast Recording-to-Text Conversion\"}],\"nodeId\":\"fast-recording-to-text-conversion\",\"type\":\"h2\"},{\"id\":\"3XsI5NK1KhaEJMeNo-gEj\",\"children\":[{\"id\":\"oy2Cv6550FJvhE72UwSK0\",\"children\":[{\"id\":\"Ci7wh6nQHUHYkUMMQLkI8\",\"children\":[{\"id\":\"r5mzbIANjKfJwZWQ3IeJx\",\"children\":[{\"text\":\"API\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"hlw-bNUVOBZzsXTCHFY_j\",\"children\":[{\"id\":\"6yyUe2okZA3FJNpqdi4SZ\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"AJcfakcxo3F_2hboGUHRI\",\"children\":[{\"id\":\"OkuNk8P5saAtrcbDZ6Acw\",\"children\":[{\"id\":\"T02-GmU9FF5H2niBCwVfP\",\"children\":[{\"id\":\"ai14gDZtUmzNmpDN6qRfq\",\"children\":[{\"text\":\"SpeechToText\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"61etnLIUVAk9JViuHnTfz\",\"children\":[{\"id\":\"GUOQc0K-7-DWWZB21P__d\",\"children\":[{\"id\":\"dGwahQjS0E8w5BJ5pmvAT\",\"children\":[{\"text\":\"Converts speech to text\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[40,60],\"widthMode\":\"percentage\"},{\"id\":\"IYlY000N93UmyoosI9S5F\",\"children\":[{\"text\":\"Converting audio file to text\"}],\"nodeId\":\"converting-audio-file-to-text\",\"type\":\"h3\"},{\"id\":\"povHMn5Nvz1rEGZNsZv97\",\"children\":[{\"text\":\"This API is used to convert a specified audio file to text.\"}],\"type\":\"p\"},{\"id\":\"6MxDXboN5z_pEztjfbOWs\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype21\",\"type\":\"h4\"},{\"id\":\"HHeVLBeQIBjW_nVSg30eM\",\"children\":[{\"id\":\"1p23F76TG8X4ce1pQzcXj\",\"children\":[{\"text\":\"ITMGPTT virtual void SpeechToText(const char* fileID)\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"TmDebprKYW-_pkUta5p2m\",\"children\":[{\"id\":\"aD-3rNLGfqJpFJ5Vo7eWy\",\"children\":[{\"id\":\"tka3qJiZKABvneoB6qW6r\",\"children\":[{\"id\":\"FKqsSp1M2jMHjYKS-bEeS\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"1LJLUGTNZojifaog4kaTY\",\"children\":[{\"id\":\"uBWNSG2ODQPfKctj0-He4\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"yHsNZjvvTOQSx6Q9zi_Oy\",\"children\":[{\"id\":\"PZISjbF_VvuUJRlvzcWKh\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"_hUQ859bPyF1iUYmR8mTa\",\"children\":[{\"id\":\"k3ju0IvoKp3TpZ9ikmh_T\",\"children\":[{\"id\":\"JqK59WyQ-sHj0Qts8_ozQ\",\"children\":[{\"id\":\"Xpy9EbShKlQH063STyLkR\",\"children\":[{\"text\":\"fileID\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"tNwqK0403ryls_sQhnGtz\",\"children\":[{\"id\":\"rhP-kYEMdlmRuseJaz3d3\",\"children\":[{\"id\":\"k1bAjier0mySlgESjGDnW\",\"children\":[{\"text\":\"const char*\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"pD59JHScWnHGMVI3jl4to\",\"children\":[{\"id\":\"7bOxF_YudVJkpDtd4xaAr\",\"children\":[{\"id\":\"vrWvKJPHaFtdA3ngvxHVr\",\"children\":[{\"text\":\"Audio file URL\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[30,31,39],\"widthMode\":\"percentage\"},{\"id\":\"mKnaG5DgAbYumRIKlgFh9\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code25\",\"type\":\"h4\"},{\"id\":\"-CP9T6CZOod0TkdbSf9sB\",\"children\":[{\"id\":\"0azyMGzoCzm1eEiGpzqA8\",\"children\":[{\"text\":\"ITMGContextGetInstance()->GetPTT()->SpeechToText(fileID);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"ut-qVhzIYPS17MOY8grLF\",\"children\":[{\"text\":\"Translating audio file into text in specified language\"}],\"nodeId\":\"translating-audio-file-into-text-in-specified-language\",\"type\":\"h3\"},{\"id\":\"jy1crqCSomwIeWz07nJbo\",\"children\":[{\"text\":\"This API can specify a language for recognition or translate the information recognized in speech into a specified language and return the translation.\"}],\"type\":\"p\"},{\"id\":\"_X-tMp_FAP4PRLic85TMp\",\"children\":[{\"id\":\"z98ZHmDTUVSdMUv8dPk1D\",\"children\":[{\"b\":1,\"color\":\"#04C8DC\",\"text\":\"Note: \",\"type\":\"text\"}],\"type\":\"p\"},{\"id\":\"YBeDTLRWyCEHGTMvoPLtJ\",\"children\":[{\"text\":\"Translation incurs additional fees. For more information, see \"},{\"id\":\"z7CAjBJUN6lZ1Bm7QZPCS\",\"children\":[{\"text\":\"Purchase Guide\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://intl.cloud.tencent.com/document/product/607/50009\",\"props\":{\"type\":\"link\",\"url\":\"https://intl.cloud.tencent.com/document/product/607/50009\"},\"type\":\"ref\"},{\"text\":\".\"}],\"type\":\"p\"}],\"hintType\":\"alert\",\"type\":\"hint\"},{\"id\":\"mTVTiiZeL1Ne4R147jjzo\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype22\",\"type\":\"h4\"},{\"id\":\"OkdQtl2UcCg4rUYRkAGCk\",\"children\":[{\"id\":\"drU4yMsl64iNFMM-QOxtL\",\"children\":[{\"text\":\"ITMGPTT virtual int SpeechToText(const char* fileID,const char* speechLanguage)\"}],\"type\":\"code-line\"},{\"id\":\"kkFyRLtYLca4TFPVRZPeU\",\"children\":[{\"text\":\"ITMGPTT virtual int SpeechToText(const char* fileID,const char* speechLanguage,const char* translateLanguage)\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"uYDCQqI6_4g4-yYKah-x2\",\"children\":[{\"id\":\"vfjJlB4vxqkrdhjWLbG-0\",\"children\":[{\"id\":\"JOo0utTQepWfh_VjaZ7GO\",\"children\":[{\"id\":\"FJtbdIz_ogYgAKMN0jjGR\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"-NZ1SFox2QD5k0UoLB4Bv\",\"children\":[{\"id\":\"YrJ8Iu9tX1zf-6fpHLLaN\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"2U_ZqW9YqGk7wBIwiByaE\",\"children\":[{\"id\":\"Uov4H5GNkYjigtKNekVYl\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"_Kdb93NkhMmm8LhMQUVuu\",\"children\":[{\"id\":\"Wq5yhwlYiyqAwoLEA_B2D\",\"children\":[{\"id\":\"5RGk6k9-Z61r4Tvk31ftX\",\"children\":[{\"id\":\"ynr-E4zUJnusE4hBLxFnB\",\"children\":[{\"text\":\"fileID\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"UG0Q91tbmjjMWGGaEEMAA\",\"children\":[{\"id\":\"gU1ZICInlfqJ2Y0s4flhx\",\"children\":[{\"id\":\"Nsr8hZWwdfCAkmMDgvLlf\",\"children\":[{\"text\":\"const char*\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"RobxUGAdshcd8v0JmF-24\",\"children\":[{\"id\":\"ovncnKOsBuUUDpBrwCMSo\",\"children\":[{\"id\":\"MDhvQwdTHSwTBJkjVgvq1\",\"children\":[{\"text\":\"The URL of the audio file, which will be retained on the server for 90 days.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"4k_i_Hu_GO4cOilWOTHR0\",\"children\":[{\"id\":\"Y6dG4Lf0KsbHxsm0Ki4tb\",\"children\":[{\"id\":\"An702pPBE1Tjl3IoqQ4ts\",\"children\":[{\"id\":\"Z3Y6ZdkNhdidvwEKz2fV4\",\"children\":[{\"text\":\"speechLanguage\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"aOti3jsRNxsCGxX6TPCRK\",\"children\":[{\"id\":\"9M-ZTmud4GWX3YC_0DT0j\",\"children\":[{\"id\":\"etLW_kolQYknsZbbwakWV\",\"children\":[{\"text\":\"const char*\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Is2NYQXX04PYFlTQgE-y2\",\"children\":[{\"id\":\"RISKwcynQ4B0b5WiwPVMl\",\"children\":[{\"id\":\"7QOFeNHOMulzbDjf05r42\",\"children\":[{\"text\":\"The language in which the audio file is to be converted to text. For parameters, see \"},{\"id\":\"4j9JDI3FH60_wcC1sqj0W\",\"children\":[{\"text\":\"Language Parameter Reference List\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://intl.cloud.tencent.com/document/product/607/30260\",\"props\":{\"type\":\"link\",\"url\":\"https://intl.cloud.tencent.com/document/product/607/30260\"},\"type\":\"ref\"},{\"text\":\".\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"Dpm5yyr3jZYXF154Ckcpk\",\"children\":[{\"id\":\"P_Gtx5ZTkesP42sguCRSw\",\"children\":[{\"id\":\"kDZ5fdTgNCnLEr1O2Yi9T\",\"children\":[{\"id\":\"d5mI2hi1Wp8s-xNUa39jY\",\"children\":[{\"text\":\"translatelanguage\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"vXH5UCLIcTej4C-GQ1B7j\",\"children\":[{\"id\":\"A9ATNDvkf6U5BvkLhjMLO\",\"children\":[{\"id\":\"5E-PYQIYcBEBIuvfEQDO1\",\"children\":[{\"text\":\"const char*\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"OrFRureE7ZT2D_qTlRlC6\",\"children\":[{\"id\":\"Gpjwd9e0d5Fit3jy7k2VW\",\"children\":[{\"id\":\"rsfV7nrPcG-bfIrYij95q\",\"children\":[{\"text\":\"The language in which the audio file is to be translated to text. For parameters, see \"},{\"id\":\"UAKr-Lik1009ydKFOXDN1\",\"children\":[{\"text\":\"Language Parameter Reference List\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://intl.cloud.tencent.com/document/product/607/30260\",\"props\":{\"type\":\"link\",\"url\":\"https://intl.cloud.tencent.com/document/product/607/30260\"},\"type\":\"ref\"},{\"text\":\".\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[17,16,67],\"widthMode\":\"percentage\"},{\"id\":\"3jlFUn3PLhvn431c6xYK2\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code26\",\"type\":\"h4\"},{\"id\":\"0gU0t72WhoMRgV-h-DoRM\",\"children\":[{\"id\":\"Jua2ori44GxcCRhFjEy8D\",\"children\":[{\"text\":\"ITMGContextGetInstance()->GetPTT()->SpeechToText(filePath,\\\"cmn-Hans-CN\\\",\\\"cmn-Hans-CN\\\");\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"uy_Ly21skj5qqAyIZ0Cqe\",\"children\":[{\"text\":\"Callback for recognition\"}],\"nodeId\":\"callback-for-recognition\",\"type\":\"h3\"},{\"id\":\"_p4DvxDU7SRipgJEhpBRr\",\"children\":[{\"text\":\"After the specified audio file is converted to text, the event message ITMG_MAIN_EVNET_TYPE_PTT_SPEECH2TEXT_COMPLETE will be returned, which will be identified in the \"},{\"code\":1,\"text\":\"OnEvent\"},{\"text\":\" function.\\nThe passed parameters include \"},{\"code\":1,\"text\":\"result\"},{\"text\":\", \"},{\"code\":1,\"text\":\"file_path\"},{\"text\":\" and \"},{\"code\":1,\"text\":\"text\"},{\"text\":\" (recognized text).\"}],\"type\":\"p\"},{\"id\":\"qDs1M7MQSAnc7ir8dIpaH\",\"children\":[{\"id\":\"kE5skS0Pcq46kWLoxUX-p\",\"children\":[{\"id\":\"YwopNH334SBsAZv4fsxi8\",\"children\":[{\"id\":\"pTNUNQlG2p9CXny2ZXuKl\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"_hV6TfHQd_uvLWpTKrgqf\",\"children\":[{\"id\":\"hlqAXsWVDV43nvvlr4Xn-\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"lzGLzjIAEOPVjKuXk9iHE\",\"children\":[{\"id\":\"xduL01GOw-5NgcoCh3J_1\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"_UdBk_CwRjFxepYmZpaNE\",\"children\":[{\"id\":\"mQmJCD8Zng_A_ucsGxeiJ\",\"children\":[{\"id\":\"KoJLo4QJB5VDXYg_mYEZ9\",\"children\":[{\"id\":\"9rryqg_2m44JB9tE9apT7\",\"children\":[{\"text\":\"result\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"jfG8dQm6iJ3AbNB509N5l\",\"children\":[{\"id\":\"Om7Ks3tgdQRGeTXVcQN11\",\"children\":[{\"id\":\"wbaIcRIPqYUz2qDNH2mAi\",\"children\":[{\"text\":\"int32\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"F7BHOkCdJCiMACslOxOEq\",\"children\":[{\"id\":\"FNdTjv8d1fO6P2mrmBl8g\",\"children\":[{\"id\":\"SZU6rQmj9pc7bH6v3zSY-\",\"children\":[{\"text\":\"0: recording is completed\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"pq9ARQ4imaWpKe30RMss1\",\"children\":[{\"id\":\"fpypvc8Pe6SpBexV2TQMr\",\"children\":[{\"id\":\"HoUcZYff1YgR7RNyRtgTI\",\"children\":[{\"id\":\"tm9Xr4A3CWC6292RsrqUT\",\"children\":[{\"text\":\"fileid\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"w6wN-HImh1q9Y85boc56W\",\"children\":[{\"id\":\"zsmAtv6c1v9o6lMfTzg0t\",\"children\":[{\"id\":\"YZsS5dpfL6gN8X5rTPWnE\",\"children\":[{\"text\":\"FString\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"_kAlcIF5z95S4YE6ZE4JJ\",\"children\":[{\"id\":\"zVQx8GuPCuVp3R4-isAvT\",\"children\":[{\"id\":\"hDvjN92TwulUI6w-EeheH\",\"children\":[{\"text\":\"URL of recording file, which will be retained on the server for 90 days\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"zBYRG6-51SpKNEVdlqdsc\",\"children\":[{\"id\":\"NESYl2YJ_S1p3bO-xqCz0\",\"children\":[{\"id\":\"mWn5D6lpYyLO6Gpj4koi5\",\"children\":[{\"id\":\"nynwcgoQ5SCARa6FvCFCQ\",\"children\":[{\"text\":\"text\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"6xJah_HzAV2UL9P7wosGl\",\"children\":[{\"id\":\"FU3Z2qGI2SNe4LJjejSCQ\",\"children\":[{\"id\":\"3H3bCRmJ24KdLbtgCyc9c\",\"children\":[{\"text\":\"FString\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"0ixsivWoTrgzdnYiCoM6Z\",\"children\":[{\"id\":\"tq-nAeX2rpw63XbdE-kRE\",\"children\":[{\"id\":\"3KmqWt8IU-d6L6f7ge07W\",\"children\":[{\"text\":\"Converted text\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[15,12,73],\"widthMode\":\"percentage\"},{\"id\":\"PSyqHLJ_KsWCuHNZPz2ti\",\"children\":[{\"text\":\"Error codes\"}],\"nodeId\":\"error-codes7\",\"type\":\"h4\"},{\"id\":\"rZwGoEyIY_8qdACgDdOzi\",\"children\":[{\"id\":\"vVGg_mKVEgZlmmLPL_K22\",\"children\":[{\"id\":\"3c4XAidUxs6cZ-ITXsKZC\",\"children\":[{\"id\":\"QBqdG8VpZCgctmuy2VLli\",\"children\":[{\"text\":\"Error Code Value\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"-ytkbR9Xay4Oz3_y8rLCC\",\"children\":[{\"id\":\"mHhaMGp-6861gyPZCzNfm\",\"children\":[{\"text\":\"Cause\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"rLXLbAs7Dv-PcUSKQ9Nnz\",\"children\":[{\"id\":\"KHltxMl7FnKbCy3jFh6Pk\",\"children\":[{\"text\":\"Suggested Solution\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"d0xNCS_PGdexkezONE8Uz\",\"children\":[{\"id\":\"RZyXIPnhR_BdWP8TuijXA\",\"children\":[{\"id\":\"dAjEnX9vri8T66DQ3iAwz\",\"children\":[{\"id\":\"Fgh2uZnNs0ktBSDke-tch\",\"children\":[{\"text\":\"32769\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"eznwrxUSaYmBsE8j_kkrA\",\"children\":[{\"id\":\"6-623mcagUlZnv1jCiCBb\",\"children\":[{\"id\":\"Zm2EDwYsiyz1XcwX6C3Go\",\"children\":[{\"text\":\"An internal error occurred.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"h7PRlfE3hFaq2YwpiEz3a\",\"children\":[{\"id\":\"u2GtdDgxE9HncRqVXoGGc\",\"children\":[{\"id\":\"xHz7tjkzxiwEpz355LkZh\",\"children\":[{\"text\":\"Analyze logs, get the actual error code returned from the backend to the client, and ask backend personnel for assistance.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"YFakZSS5N_jfEVoHSXLjJ\",\"children\":[{\"id\":\"QnWFoZU_r1WJ8Xgbc5szh\",\"children\":[{\"id\":\"Q71GfZ_z6eS8HEsCuZfvD\",\"children\":[{\"id\":\"gfM1XjCP0UOdcYCDfA7yO\",\"children\":[{\"text\":\"32770\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"IoiE9lAVsYL29j-5yQOyJ\",\"children\":[{\"id\":\"KmawnE2zYQb5dKsy2CZAU\",\"children\":[{\"id\":\"QEwv0nOrUFTAxxR9H2JUG\",\"children\":[{\"text\":\"Network failed.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"9oTkTFauomewmsUm-Vq0v\",\"children\":[{\"id\":\"v_bpOd_cntogRvjdx6WxN\",\"children\":[{\"id\":\"NP1jH2pUvNZeYpHTnNZNC\",\"children\":[{\"text\":\"Check whether the device can access the internet.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"_2J2cEOrjDaZuT-4b8O3q\",\"children\":[{\"id\":\"cHzN6T5IwQirWGLQsYfF9\",\"children\":[{\"id\":\"8jChcGBWsZKcj_Ov1vIxq\",\"children\":[{\"id\":\"VoCcFWh0RB31DhCtXWy9k\",\"children\":[{\"text\":\"32772\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"gqolWIccO1WMShioOsXsp\",\"children\":[{\"id\":\"GzDxaRZqTiMs4tQVWkVb_\",\"children\":[{\"id\":\"LQD7o916EoKgWDxuL5ntz\",\"children\":[{\"text\":\"Failed to decode the returned packet.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"EV9KL22TVHg1cMROjza3F\",\"children\":[{\"id\":\"hfr9chbpJp3LIGwG2ONte\",\"children\":[{\"id\":\"ysNe9UqSignM_UllydaSX\",\"children\":[{\"text\":\"Analyze logs, get the actual error code returned from the backend to the client, and ask backend personnel for assistance.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"xc9W5ganNJ3CQLfeiNXFW\",\"children\":[{\"id\":\"0cQ3Z5EzP118qXF8C5PMx\",\"children\":[{\"id\":\"AGmZJTh3SusYIkCDYKl6c\",\"children\":[{\"id\":\"E9FOe_IA6OEvkViIlmWV4\",\"children\":[{\"text\":\"32774\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"5Uj3OLVBaBvub6HLyanor\",\"children\":[{\"id\":\"UaWwRXPIxEvrRF04KUX7W\",\"children\":[{\"id\":\"yktoZTMtUThZbBb23z7p8\",\"children\":[{\"text\":\"No \"},{\"code\":1,\"text\":\"appinfo\"},{\"text\":\" is set.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"cd8fGWQz2tRw7ulXNuvc4\",\"children\":[{\"id\":\"XW_N3z-8axzkbRBcOk7dF\",\"children\":[{\"id\":\"RqQ2PbJdmvKFWySmFQFCb\",\"children\":[{\"text\":\"Check whether the authentication key is correct and whether the voice messaging and speech-to-text feature is initialized.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"j6qT78deMma4Lv6vhRb8u\",\"children\":[{\"id\":\"0jD7kqUjJiHKMb5FWhiMB\",\"children\":[{\"id\":\"FA3MvZYy2X3DVS4DmrAad\",\"children\":[{\"id\":\"Nrv4mgwu-0djoC3Rk_ywC\",\"children\":[{\"text\":\"32776\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Ay1IwkaffEh_HGutHbzh8\",\"children\":[{\"id\":\"l2_5TGA6dDVST22djyoy3\",\"children\":[{\"id\":\"he-11Rrkvt4B5qHU4uZBV\",\"children\":[{\"code\":1,\"text\":\"authbuffer\"},{\"text\":\" check failed.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"H2duyDHaDO1iBNlIIIN2D\",\"children\":[{\"id\":\"yrcpU3S1mqAwisgZevzkq\",\"children\":[{\"id\":\"m-nd1JiCnj3sx293Sj3c7\",\"children\":[{\"text\":\"Check whether \"},{\"code\":1,\"text\":\"authbuffer\"},{\"text\":\" is correct.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"eg4k_l3N3gd5c04EGk_yg\",\"children\":[{\"id\":\"59sKZe-dE6XBOA5ENtErm\",\"children\":[{\"id\":\"YUYLM5HfR0rY5Fl56EZyJ\",\"children\":[{\"id\":\"1lurJ3_KbyZ2csWvOVZea\",\"children\":[{\"text\":\"32784\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"_roIpMpRtEfCrdEL8FFzC\",\"children\":[{\"id\":\"XrFJjF3mo7E18JxVTT15E\",\"children\":[{\"id\":\"k5f0bEs_rFrAxXWQDGH2g\",\"children\":[{\"text\":\"Incorrect speech-to-text conversion parameter.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"NDLphl7K5Q1Bh3NZyLpKk\",\"children\":[{\"id\":\"lPN67LAiNsY3yy-ggjyIM\",\"children\":[{\"id\":\"S-Ooke8OhGOUXub8VOCKY\",\"children\":[{\"text\":\"Check whether the API parameter \"},{\"code\":1,\"text\":\"fileid\"},{\"text\":\" in the code is empty.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"L_41M0Oq25VWveHEWkCap\",\"children\":[{\"id\":\"klaq2ctwPm1sA23q0UnwR\",\"children\":[{\"id\":\"XafkY3L4YuYE1TdWW6DIC\",\"children\":[{\"id\":\"-QghHewqERjE-Yw4iabC_\",\"children\":[{\"text\":\"32785\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"-I_pCPwzBV3ew7_fX_SU3\",\"children\":[{\"id\":\"cjFwndwN5SJpayIOD6Tur\",\"children\":[{\"id\":\"dPIHvdum_RJpSdPqjxiFA\",\"children\":[{\"text\":\"Speech-to-text translation returned an error.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"o_2zr9f9SY-K3Ixf17gbT\",\"children\":[{\"id\":\"InAUJGsMh318p8GJ-mczY\",\"children\":[{\"id\":\"2-x_XZsqXy8sBSaCDIyzf\",\"children\":[{\"text\":\"Error with the backend of voice messaging and speech-to-text feature. Analyze logs, get the actual error code returned from the backend to the client, and ask backend personnel for assistance.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"rsHWkEAhUyEHfKMXz-f7I\",\"children\":[{\"id\":\"kRkczqDDwwDxge1NYCzN-\",\"children\":[{\"id\":\"HjRAy4M9p0v1XzJmYgXEV\",\"children\":[{\"id\":\"zjpCEWFccxS7GrY3ZXQ_r\",\"children\":[{\"text\":\"32787\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"2QZRPMekhjMqdPtvBZhCB\",\"children\":[{\"id\":\"vC7cF0Zi-vDA5pQlyJg7p\",\"children\":[{\"id\":\"X2n_1LymtOsNeeUkBxKUP\",\"children\":[{\"text\":\"Speech-to-text conversion succeeded, but the text translation service was not activated.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"eMDlBePRhG9XZuUKanT18\",\"children\":[{\"id\":\"1uJmHuTrSDAPb3ElHupTA\",\"children\":[{\"id\":\"jG7DFeigu15Kiy-7irvD0\",\"children\":[{\"text\":\"Activate the text translation service in the console.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"2mNV3eipymRiUbfxDtMaA\",\"children\":[{\"id\":\"369Bt_ywiHHzQyiZF5k4q\",\"children\":[{\"id\":\"DABVCnUP1fvexMp52sAXf\",\"children\":[{\"id\":\"KKgm7v96LXMFzz3qqtnkr\",\"children\":[{\"text\":\"32788\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Z00nDFmQ-QILpP_Iu8hht\",\"children\":[{\"id\":\"BWalRkun4suNJxq40kdPO\",\"children\":[{\"id\":\"pcMg1uV5ClnDYTCyEAdhu\",\"children\":[{\"text\":\"Speech-to-text conversion succeeded, but the language parameter of the text translation service was invalid.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"jSKonN1A1lsaKYfeMFEdb\",\"children\":[{\"id\":\"XvRNE9WbTxWHaFitEMbcf\",\"children\":[{\"id\":\"r6WTz1T5HvoLJxpWirUe8\",\"children\":[{\"text\":\"Check the parameter passed in.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[17,36,47],\"widthMode\":\"percentage\"},{\"id\":\"hU0NQatuy_p5VzazeQKty\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code27\",\"type\":\"h4\"},{\"id\":\"c7jFk2E1Y9mk1DtWbSlWh\",\"children\":[{\"id\":\"-PfLNCO-ACTlcobZ0AdNJ\",\"children\":[{\"text\":\"void TMGTestScene::OnEvent(ITMG_MAIN_EVENT_TYPE eventType,const char* data){\"}],\"type\":\"code-line\"},{\"id\":\"fYG3MAw1uBdrMU-uTA8YZ\",\"children\":[{\"text\":\" switch (eventType) {\"}],\"type\":\"code-line\"},{\"id\":\"WkVDqZhRVY42IRO8iLZyX\",\"children\":[{\"text\":\" ...\"}],\"type\":\"code-line\"},{\"id\":\"UNtMx6s4di83SRAfVMcAj\",\"children\":[{\"text\":\" else if (eventType == ITMG_MAIN_EVNET_TYPE_PTT_SPEECH2TEXT_COMPLETE) {\"}],\"type\":\"code-line\"},{\"id\":\"1PEx8uEt-ipdJ39M7AIHG\",\"children\":[{\"text\":\" int32 result = JsonObject->GetIntegerField(TEXT(\\\"result\\\"));\"}],\"type\":\"code-line\"},{\"id\":\"_y1RM8IqbCAisJM0S_SOD\",\"children\":[{\"text\":\" FString text = JsonObject->GetStringField(TEXT(\\\"text\\\"));\"}],\"type\":\"code-line\"},{\"id\":\"O0M0IyZfFxIA0nLUiv5Jq\",\"children\":[{\"text\":\" FString fileid = JsonObject->GetStringField(TEXT(\\\"file_id\\\"));\"}],\"type\":\"code-line\"},{\"id\":\"VjsA11oCMkzPb1pJS49As\",\"children\":[{\"text\":\" onPttSpeech2TextCompleted(result, fileid, text);\"}],\"type\":\"code-line\"},{\"id\":\"OrzRU74Bn1AJ_2-yiT6Iz\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"wS-PdnsvDxqXIjlPGhA0K\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"K4K2tn2FL7C_jzslENmLs\",\"children\":[{\"text\":\"}\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"W9QM6bZLAktiRDmSUImU0\",\"children\":[{\"text\":\"Voice Message Volume Level APIs\"}],\"nodeId\":\"voice-message-volume-level-apis\",\"type\":\"h2\"},{\"id\":\"BGaTvw-UIcTw5kMHOi8S7\",\"children\":[{\"id\":\"gr0A9wY21xWPWI4tR70xP\",\"children\":[{\"id\":\"uvOekjBG8vhl7dPLATDAF\",\"children\":[{\"id\":\"4hzkNCY-LKFkbrfZOjLUS\",\"children\":[{\"text\":\"API\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"5d_k6SaZz0lzKLGTr5YgK\",\"children\":[{\"id\":\"ROeGFFL926BJyRDEwm0D7\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"pq6vNGnFT7SA9kaueGAii\",\"children\":[{\"id\":\"mLm2-sGap0L1P0pk2TZGm\",\"children\":[{\"id\":\"lgpXigGxdCXlhrRl7nrhH\",\"children\":[{\"id\":\"ahd34fdrs4B_hMtqkZtDB\",\"children\":[{\"text\":\"GetMicLevel\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"zmsaqOT5YNS3l3MJUjYNS\",\"children\":[{\"id\":\"bhuiFn-FnmhSgIHl3p00M\",\"children\":[{\"id\":\"2-81oeVhSz4yZzekZRoJn\",\"children\":[{\"text\":\"Gets real-time mic volume level\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"wQfw0j6liob1-YGUJV15u\",\"children\":[{\"id\":\"BqhFtwSVhKG7OvSmMT8HU\",\"children\":[{\"id\":\"UBSf1woMfCeZpaJRCqtHZ\",\"children\":[{\"id\":\"oXshqpgANQv_QhFFbgGrP\",\"children\":[{\"text\":\"SetMicVolume\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"vZykmPSe58ZlameSFXjio\",\"children\":[{\"id\":\"K908xamAMU5jHNeWhqZwG\",\"children\":[{\"id\":\"P8235iZL4nJihce_wv35U\",\"children\":[{\"text\":\"Sets recording volume level\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"ue4ar0IPlch8NBczpy973\",\"children\":[{\"id\":\"LqHoxL3gtE9caT4LfhrgC\",\"children\":[{\"id\":\"H3X__JhZHH1TBWhHSCASo\",\"children\":[{\"id\":\"7pwngtvXNS5tlRUBNsQbH\",\"children\":[{\"text\":\"GetMicVolume\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"QjHCo-4-0hslFzwCqrMRS\",\"children\":[{\"id\":\"vbqV0_NDnsCH9glL8UDSh\",\"children\":[{\"id\":\"odUnAy8WL1lmaDYUnu-5u\",\"children\":[{\"text\":\"Gets recording volume level\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"f42PA8hTzyvB9CEuR-a4V\",\"children\":[{\"id\":\"4mPfN-9U2rG-QxXHhGuTW\",\"children\":[{\"id\":\"dUwCu4k2i_Vgy7m_KXDLM\",\"children\":[{\"id\":\"ZD1-Kg3xv_JC6oFYv2AC2\",\"children\":[{\"text\":\"GetSpeakerLevel\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"wRe-QKexuawSoGlNTwMaA\",\"children\":[{\"id\":\"0H9GFq84LCTz9KQCTFmAd\",\"children\":[{\"id\":\"CaoY5zYyaa_GTZhqqI6as\",\"children\":[{\"text\":\"Gets real-time speaker volume\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"0N9xiivlsylpbNfD5uDpJ\",\"children\":[{\"id\":\"yyAkuiTHcR-tmYwjtNWon\",\"children\":[{\"id\":\"yLmhjSbJuFePY-Fgbb7A_\",\"children\":[{\"id\":\"XJbqwux6wTC-2CQ8I3L6M\",\"children\":[{\"text\":\"SetSpeakerVolume\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"poVwgkM_YXM-PQxG9J5p9\",\"children\":[{\"id\":\"d48nKyLa-vWP6V7_sJJqE\",\"children\":[{\"id\":\"JTvbwF2nxlBEGjePRfI4v\",\"children\":[{\"text\":\"Sets playback volume level\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"Om03mvUagCVCTx4wjLu_e\",\"children\":[{\"id\":\"xypcKNm9KYZ56d71H7GcZ\",\"children\":[{\"id\":\"6J3VJktQWRmuFHnm4herS\",\"children\":[{\"id\":\"ON8EnWtG9GYcbNm0z_9kn\",\"children\":[{\"text\":\"GetSpeakerVolume\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"AEKTf5qQiFKlrtjgv7jRs\",\"children\":[{\"id\":\"cxzvBCTERAXw69d7-cKCx\",\"children\":[{\"id\":\"iacPyIElKmE7DU5O5Ejrz\",\"children\":[{\"text\":\"Gets playback volume level\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[40,60],\"widthMode\":\"percentage\"},{\"id\":\"ZNLlVVpKbScpvETRhfMLn\",\"children\":[{\"text\":\"Getting the real-time mic volume of voice message\"}],\"nodeId\":\"getting-the-real-time-mic-volume-of-voice-message\",\"type\":\"h3\"},{\"id\":\"zTJyXuVJExedC6CU4S96-\",\"children\":[{\"text\":\"This API is used to get the real-time mic volume. An int-type value will be returned. Value range: 0-200.\"}],\"type\":\"p\"},{\"id\":\"BTL-enksaJBw_US5_fDfb\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype23\",\"type\":\"h4\"},{\"id\":\"R1e--kW58M9KZo3hE6a0x\",\"children\":[{\"id\":\"cCMbVt0JLMSTn1KZ2Z4rr\",\"children\":[{\"text\":\"ITMGPTT virtual int GetMicLevel()\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"G-Gjj-w4sax45LY8S1zDo\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code28\",\"type\":\"h4\"},{\"id\":\"czK8o_mvjUTo1cgO0wdMo\",\"children\":[{\"id\":\"4w9ao2vaCgvGOTPZ-_IPc\",\"children\":[{\"text\":\"ITMGContext.GetInstance(this).GetPTT().GetMicLevel();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"Sgrbwj5WmVDrSla0pOa8a\",\"children\":[{\"text\":\"Setting the recording volume of voice message\"}],\"nodeId\":\"setting-the-recording-volume-of-voice-message\",\"type\":\"h3\"},{\"id\":\"jV-XC5fpjPuKcgZf1z1J1\",\"children\":[{\"text\":\"This API is used to set the recording volume of voice message. Value range: 0-200.\"}],\"type\":\"p\"},{\"id\":\"kDzXDFos_DYI8A7kv6zSZ\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype24\",\"type\":\"h4\"},{\"id\":\"_35W1grZT0JkvGfMzQBBZ\",\"children\":[{\"id\":\"NhQcW_VzS5vFPNTY2YxKt\",\"children\":[{\"text\":\"ITMGPTT virtual int SetMicVolume(int vol)\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"9vKDnqnTDARnlahPqgOU6\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code29\",\"type\":\"h4\"},{\"id\":\"CQ1ii1sKuZIAvMV3ZjlTW\",\"children\":[{\"id\":\"SOySM-YyXq6p52NZ7pgTp\",\"children\":[{\"text\":\"ITMGContextGetInstance()->GetPTT()->SetMicVolume(100);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"MS7jjBu9eYINzgq_d_c0m\",\"children\":[{\"text\":\"Getting the recording volume of voice message\"}],\"nodeId\":\"getting-the-recording-volume-of-voice-message\",\"type\":\"h3\"},{\"id\":\"Cv9xhBNoFpVTWEafwr0l1\",\"children\":[{\"text\":\"This API is used to get the recording volume of voice message. An int-type value will be returned. Value range: 0-200.\"}],\"type\":\"p\"},{\"id\":\"ltXJjypGYWVtZQ2kP0j0V\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype25\",\"type\":\"h4\"},{\"id\":\"Tqrk0FsmIkDiW47q_RUdl\",\"children\":[{\"id\":\"_EiVF-xZb_fOwZtKgDodv\",\"children\":[{\"text\":\"ITMGPTT virtual int GetMicVolume()\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"CpMHmnT98Jw9wXDMzMzqU\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code30\",\"type\":\"h4\"},{\"id\":\"rk580FU18mx1mLztnVlzz\",\"children\":[{\"id\":\"9g78iOGAlgx74SOqKk7r5\",\"children\":[{\"text\":\"ITMGContextGetInstance()->GetPTT()->GetMicVolume();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"6afgc-nz-LXFu2iE_s6zC\",\"children\":[{\"text\":\"Getting the real-time speaker volume of voice message\"}],\"nodeId\":\"getting-the-real-time-speaker-volume-of-voice-message\",\"type\":\"h3\"},{\"id\":\"X4k3eErEBkzEK5iQxpwD5\",\"children\":[{\"text\":\"This API is used to get the real-time speaker volume. An int-type value will be returned. Value range: 0-200.\"}],\"type\":\"p\"},{\"id\":\"yJRrOLkdcOWs8KsM3hPmn\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype26\",\"type\":\"h4\"},{\"id\":\"r5tsYMvBVknzFj4W-mltq\",\"children\":[{\"id\":\"3sirCSRv694I2-FcJ8QeC\",\"children\":[{\"text\":\"ITMGPTT virtual int GetSpeakerLevel()\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"HbV7XjE6AmjY9VleLlCDe\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code31\",\"type\":\"h4\"},{\"id\":\"hqqYEHCTO_Nz1yfgl5JcH\",\"children\":[{\"id\":\"k4T7giEI5tC52Alb6_faz\",\"children\":[{\"text\":\"ITMGContextGetInstance()->GetPTT()->GetSpeakerLevel();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"b9C7VDOF3LLRV3TG_pFAe\",\"children\":[{\"text\":\"Setting the playback volume of voice message\"}],\"nodeId\":\"setting-the-playback-volume-of-voice-message\",\"type\":\"h3\"},{\"id\":\"40EKPUinq07Gq8wSkiDoO\",\"children\":[{\"text\":\"This API is used to set the playback volume of voice message. Value range: 0-200.\"}],\"type\":\"p\"},{\"id\":\"ASJXXFUfxTn35l9tfzgOS\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype27\",\"type\":\"h4\"},{\"id\":\"AYidxqTJo6rCWwRp-9dtv\",\"children\":[{\"id\":\"-uKOyVBj13pCb8L-40-eZ\",\"children\":[{\"text\":\"ITMGPTT virtual int SetSpeakerVolume(int vol)\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"M6lQPV21Yjm6vmbgNRbqC\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code32\",\"type\":\"h4\"},{\"id\":\"O5mAHJ5Bh43VyzgkGN1Ov\",\"children\":[{\"id\":\"uZBwFmpYpz2dDlcQF9d5U\",\"children\":[{\"text\":\"ITMGContextGetInstance()->GetPTT()->SetSpeakerVolume(100);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"SK0K4s-GhPiwy7DVsZn1z\",\"children\":[{\"text\":\"Getting the playback volume of voice message\"}],\"nodeId\":\"getting-the-playback-volume-of-voice-message\",\"type\":\"h3\"},{\"id\":\"dKVp7DwZXahkBth-fsg9Q\",\"children\":[{\"text\":\"This API is used to get the playback volume of voice message. An int-type value will be returned. Value range: 0-200.\"}],\"type\":\"p\"},{\"id\":\"dCJx0_QI7ynC0nWNndQmO\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype28\",\"type\":\"h4\"},{\"id\":\"d3YUHTgtPCt9fQ6JNzud4\",\"children\":[{\"id\":\"i1rN5XuS37Lzo7eS8pH2s\",\"children\":[{\"text\":\"ITMGPTT virtual int GetSpeakerVolume()\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"ets8IEnHlZBf6mqtXGbmk\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code33\",\"type\":\"h4\"},{\"id\":\"hEAzgf0vJsiM9_9v1AbX8\",\"children\":[{\"id\":\"r4HBTTTHZLTiDIAAzeEg2\",\"children\":[{\"text\":\"ITMGContextGetInstance()->GetPTT()->GetSpeakerVolume();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"7K8cNnThWg3YYA_cQKNd8\",\"children\":[{\"text\":\"Advanced APIs\"}],\"nodeId\":\"advanced-apis\",\"type\":\"h2\"},{\"id\":\"SGgYi14BWuWJrCTMInpjt\",\"children\":[{\"text\":\"Getting version number\"}],\"nodeId\":\"getting-version-number\",\"type\":\"h3\"},{\"id\":\"BkBo6H_dMPAXFUd258tJ-\",\"children\":[{\"text\":\"This API is used to get the SDK version number for SDK usage analysis.\"}],\"type\":\"p\"},{\"id\":\"os72MlFlg0gOoandPH8Bl\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype29\",\"type\":\"h4\"},{\"id\":\"eHP_9T4n1OxDuNszrtDAN\",\"children\":[{\"id\":\"XyN2RaNzOsVCDHgkFiA_P\",\"children\":[{\"text\":\"ITMGContext virtual const char* GetSDKVersion()\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"WPrxxg8VV9zk-jmmVT98G\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code34\",\"type\":\"h4\"},{\"id\":\"LNNhu9oRz6F448QMZv6iN\",\"children\":[{\"id\":\"_ePLhhz_xeUygzZ3f6FvM\",\"children\":[{\"text\":\"ITMGContextGetInstance()->GetSDKVersion();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"j9JC86l39vZ4mh4lOR1fs\",\"children\":[{\"text\":\"Setting log printing level\"}],\"nodeId\":\"setting-log-printing-level\",\"type\":\"h3\"},{\"id\":\"dgZ_H3KfICwLYTfPGvwEI\",\"children\":[{\"text\":\"This API is used to set the level of logs to be printed, and needs to be called before the initialization. It is recommended to keep the default level.\"}],\"type\":\"p\"},{\"id\":\"pyHwX7pbldnjV-dOKaxqX\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype30\",\"type\":\"h4\"},{\"id\":\"NL8vsybu2UwBEEFrA2-Mg\",\"children\":[{\"id\":\"rUSt_2sNrWeaRHlQjcXcI\",\"children\":[{\"text\":\"ITMGContext int SetLogLevel(ITMG_LOG_LEVEL levelWrite, ITMG_LOG_LEVEL levelPrint)\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"9VLbUhAxFUPAwCiS2c3-U\",\"children\":[{\"text\":\"Parameter description\"}],\"nodeId\":\"parameter-description\",\"type\":\"h4\"},{\"id\":\"yEFPTUyz4-qE0iKdQojwL\",\"children\":[{\"id\":\"LOiOh-Ihnf_E3SxYmGB4m\",\"children\":[{\"id\":\"sAEgIQTcmuO0ltSEqGjCh\",\"children\":[{\"id\":\"W4kB4Fmqjc6OLDZJIYalh\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"7oFp9XoGaDvNTh16vchYR\",\"children\":[{\"id\":\"xkiK6LAuDn4W0X0pdSBNO\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"dTfWLpHlUhsIMwMQvPhkM\",\"children\":[{\"id\":\"dfq4Kxh7w50dO_RH0PXlr\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"7tmi6dPxLngbvFxZhaJRq\",\"children\":[{\"id\":\"DtHbF2jGqHXskfc83xDff\",\"children\":[{\"id\":\"Bue92RduBDqA2d21zMpxP\",\"children\":[{\"id\":\"TGxED33enQv0F73cNiDXR\",\"children\":[{\"text\":\"levelWrite\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"eqgO2-LQdCpH-N4Yz7aTN\",\"children\":[{\"id\":\"Db6sr-xQINuMD289FTMAt\",\"children\":[{\"id\":\"WZxhW2Ckf71sbzV9veNKk\",\"children\":[{\"text\":\"ITMG_LOG_LEVEL\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"JmY_KO7vBHita-15ps5c1\",\"children\":[{\"id\":\"S6HTDGvOJXvgG4uq_2zNi\",\"children\":[{\"id\":\"WHS50qe5pKnUERZeBPvOo\",\"children\":[{\"text\":\"Sets the level of logs to be written. \"},{\"code\":1,\"text\":\"TMG_LOG_LEVEL_NONE\"},{\"text\":\" indicates not to write. Default value: TMG_LOG_LEVEL_INFO\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"4hN4EGaAo1nCYddExGGBL\",\"children\":[{\"id\":\"45u43u8Jq2vyMy2qI4iQe\",\"children\":[{\"id\":\"gAF58Rm-2E97n7Hneb1RE\",\"children\":[{\"id\":\"jijtQPUWmh7i8virg2xIB\",\"children\":[{\"text\":\"levelPrint\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"x6K7MTRCyrfNohyoGTtN5\",\"children\":[{\"id\":\"uR2ql16K_OAi_pFWJfQC1\",\"children\":[{\"id\":\"E9A_pA_Nc-iKL1z5nC8UN\",\"children\":[{\"text\":\"ITMG_LOG_LEVEL\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"fgXK-rPsvI1oBQSCEli42\",\"children\":[{\"id\":\"eBWk1iVMqCizcW4N1t8It\",\"children\":[{\"id\":\"kwMMxaf7Y5ggcupW1s-ir\",\"children\":[{\"text\":\"Sets the level of logs to be printed. \"},{\"code\":1,\"text\":\"TMG_LOG_LEVEL_NONE\"},{\"text\":\" indicates not to print. Default value: TMG_LOG_LEVEL_ERROR\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[12,19,69],\"widthMode\":\"percentage\"},{\"id\":\"ha6Jvr3ZHkcnC1bymQFMN\",\"children\":[{\"code\":1,\"text\":\"ITMG_LOG_LEVEL\"},{\"text\":\" description:\"}],\"type\":\"p\"},{\"id\":\"HWDWtrD9y-HmCIbSxlkaI\",\"children\":[{\"id\":\"6-gUc7lfKNXf8gcawzs2F\",\"children\":[{\"id\":\"7--_FQR4sWZ9KYpDXbqbH\",\"children\":[{\"id\":\"6L5LLtL8tqzUXrTbG8GEV\",\"children\":[{\"text\":\"ITMG_LOG_LEVEL\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"g2EvoPjJQlzGds5_DMI9q\",\"children\":[{\"id\":\"41ZqeUe0YbqQPVjtwH47b\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"kob57YYMTUs4NmxBVXIfZ\",\"children\":[{\"id\":\"UG0HH32Kn3QIcURJT1dMG\",\"children\":[{\"id\":\"c-5cY51LK9Ucvu0AbCWWO\",\"children\":[{\"id\":\"LMysfVqJrgvaM35QeB1-A\",\"children\":[{\"text\":\"TMG_LOG_LEVEL_NONE\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"QzHqX10T3DwJvwoZdCIql\",\"children\":[{\"id\":\"yy-IxiUUtPj6gW9FDS96L\",\"children\":[{\"id\":\"tGMAoRwP8-gBVJXcnNJWN\",\"children\":[{\"text\":\"Does not print logs\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"6Ul5pWfW1lf3geJaQrwVH\",\"children\":[{\"id\":\"wTRRzmGiDDrNQpL774IKt\",\"children\":[{\"id\":\"bZe5oit5sKd1XyORqd9s6\",\"children\":[{\"id\":\"aw2qIaGS4QrEliSQWUbki\",\"children\":[{\"text\":\"TMG_LOG_LEVEL_ERROR\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"KcJzqqeGrwa-7Sg6iS2jE\",\"children\":[{\"id\":\"6AhStzKsufya0CIxPkidj\",\"children\":[{\"id\":\"C5DGbzBWKQs_55N-N7tfK\",\"children\":[{\"text\":\"Prints error logs (default)\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"8vTIsuNtCiAr43XWwMCGk\",\"children\":[{\"id\":\"tp8lrSQj7GBwKjVZjdrVk\",\"children\":[{\"id\":\"l3Fx8ixzZ3uzGLkQ-LeQP\",\"children\":[{\"id\":\"cDS-Yqjhv9CSTGhr8m8Jg\",\"children\":[{\"text\":\"TMG_LOG_LEVEL_INFO\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ZTXha_gqPSgCgZKzB3MUX\",\"children\":[{\"id\":\"E8Tkp8QmXaK3b24sBLLcG\",\"children\":[{\"id\":\"UN-LYv04-oMTQ3D7hh7BY\",\"children\":[{\"text\":\"Prints info logs\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"WkG-wastuEPVJ4rgofIoy\",\"children\":[{\"id\":\"aXWB0cPSG2UjsiizpoiBX\",\"children\":[{\"id\":\"R-eEBNOCjfy-PcieiVdN9\",\"children\":[{\"id\":\"G5sfNXZ-K0DiRt126NH9t\",\"children\":[{\"text\":\"TMG_LOG_LEVEL_DEBUG\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"6X6BiUcwS9IRk8Ub7Aq8h\",\"children\":[{\"id\":\"j8DyzrQbyE969dA4TV5Cz\",\"children\":[{\"id\":\"Z6b3rZuDYHINBPNtHq-EA\",\"children\":[{\"text\":\"Prints debug logs\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"zigDim_1nnouNqMgzQLst\",\"children\":[{\"id\":\"GQ5SQ_IcRuBDMEEecqVrz\",\"children\":[{\"id\":\"YgmnENj2OAlEOvUepycB2\",\"children\":[{\"id\":\"OepxhAaPfafUM_GF-1pyw\",\"children\":[{\"text\":\"TMG_LOG_LEVEL_VERBOSE\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"7Zp3cN0-n6fnmqj4uySZ-\",\"children\":[{\"id\":\"pNq4wg-XtgShkmcU5vfuz\",\"children\":[{\"id\":\"9h7xaWhnha7F1BnOplwvL\",\"children\":[{\"text\":\"Prints verbose logs\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[54,46],\"widthMode\":\"percentage\"},{\"id\":\"txi26vw6eLx7DN9N0g6YU\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code35\",\"type\":\"h4\"},{\"id\":\"BYjsvu5O3c1lglaPPUYue\",\"children\":[{\"id\":\"bK2LrJR_TlymzMbMA98BA\",\"children\":[{\"text\":\"ITMGContextGetInstance()->SetLogLevel(TMG_LOG_LEVEL_INFO,TMG_LOG_LEVEL_INFO);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"VV5a-fCpUrkOBVdbIGUCo\",\"children\":[{\"text\":\"Setting the log printing path\"}],\"nodeId\":\"setting-the-log-printing-path\",\"type\":\"h3\"},{\"id\":\"Y-mNCy2OhllfW-J-fgplG\",\"children\":[{\"text\":\"This API is used to set the log printing path. The default path is as follows. It needs to be called before Init.\"}],\"type\":\"p\"},{\"id\":\"8mo_U629HVwWJlDfXY7fv\",\"children\":[{\"id\":\"jNBAz_bNZnYiGM43RpOEI\",\"children\":[{\"id\":\"DdpLwpXsulx_fOtZRtm_y\",\"children\":[{\"id\":\"Qh_GKh5b1KS4ww789-JoR\",\"children\":[{\"text\":\"OS\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Lr-MGbw-llQTEbAbrV1Qx\",\"children\":[{\"id\":\"bo7_-vWJcVCOJJbT6ccZO\",\"children\":[{\"text\":\"Path\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"rT157RZ_zjN2Eh5XQyuo4\",\"children\":[{\"id\":\"I9C8opJ5_Z9EHqjj37m6A\",\"children\":[{\"id\":\"iXCQ5xa4qEJPuXgWFK4RJ\",\"children\":[{\"id\":\"P1R_gVLoQ9yMFE6SPMnkv\",\"children\":[{\"text\":\"Windows\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Sx4_vz4TmJpm4C--LX3dV\",\"children\":[{\"id\":\"Q3MRk-PWr2eYvKSHzBf-o\",\"children\":[{\"id\":\"A-RbZTlrAtMdCIYJvyOzY\",\"children\":[{\"text\":\"%appdata%\\\\Tencent\\\\GME\\\\ProcessName\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"T7pq6TFuJYaHrs6HcV2gB\",\"children\":[{\"id\":\"dbIX2jCigtGZbmRB2HKyX\",\"children\":[{\"id\":\"4130AOqQs4Xfvzw80gBmD\",\"children\":[{\"id\":\"ocX1DIOLExrUvvlZIr-sq\",\"children\":[{\"text\":\"iOS\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"uKwtQ4AnFdVHuwS4sQl14\",\"children\":[{\"id\":\"GByQ3ysPe1Q44nntXbbYr\",\"children\":[{\"id\":\"es2IoLQYPgKCY2KX0uNb2\",\"children\":[{\"text\":\"Application/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/Documents\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"0CVTs6fHR4QXQdWtLhMqp\",\"children\":[{\"id\":\"Z0IEru1IK05pOhTb0eRCA\",\"children\":[{\"id\":\"tyFsYw-tLx6jLCXp5LKxU\",\"children\":[{\"id\":\"zAyVZ-YKc_ubcxLe_gvJ8\",\"children\":[{\"text\":\"Android\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ygPTT_liDUHWPgReLBRga\",\"children\":[{\"id\":\"ZH1Q2V7FiYwUiMHfnoQlZ\",\"children\":[{\"id\":\"opVca_nv9-WpB2THFkJR1\",\"children\":[{\"text\":\"/sdcard/Android/data/xxx.xxx.xxx/files\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"wFrWWmL50vNI-VOEs_hYD\",\"children\":[{\"id\":\"_cxiiejTquqiMpihm2PFu\",\"children\":[{\"id\":\"YBRMmtZUlcADZFMTwVlI8\",\"children\":[{\"id\":\"ZamsS4arVE0-sWxC5F7NW\",\"children\":[{\"text\":\"Mac\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"CpVYd9ouliYhlndz88b2l\",\"children\":[{\"id\":\"o3WYVcNeV0dsGCJIzw_2y\",\"children\":[{\"id\":\"gWGoQNCdPvXbrklVbfXDO\",\"children\":[{\"text\":\"/Users/username/Library/Containers/xxx.xxx.xxx/Data/Documents\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[16,84],\"widthMode\":\"percentage\"},{\"id\":\"WNyPK0Q7tl0B0I_9AEY3-\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype31\",\"type\":\"h4\"},{\"id\":\"aJQWdkBo12BmdKKAZ27qU\",\"children\":[{\"id\":\"MEZ7pOEVTKMhJu1hFeLo7\",\"children\":[{\"text\":\"ITMGContext virtual int SetLogPath(const char* logDir) \"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"UYFPA9auomdHT5r6t334H\",\"children\":[{\"id\":\"FBlqSdMzjKSK6LqNp6SAS\",\"children\":[{\"id\":\"vFE1a4HoXOjYQiWfEfJOc\",\"children\":[{\"id\":\"DOjzo9PS-GM59343KU4MZ\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"pmWDuirmpE7_aNFin0PWv\",\"children\":[{\"id\":\"tluZFjGPj_5yw3g7GhMvD\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"CcUTUIfT5JWErl8V28hK6\",\"children\":[{\"id\":\"rBjphNzQyYPyl-6ZK-96k\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"B6MWH0Ol2Jtd12XDIPwkG\",\"children\":[{\"id\":\"fZMm_ZTiYfdyM3-5GB485\",\"children\":[{\"id\":\"eSK28W3zOomI8aFUdGcFO\",\"children\":[{\"id\":\"kfm9Gy6UpmzkJovO1C4mX\",\"children\":[{\"text\":\"logDir\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"cM8s_wpFVqHx7TQWzQQbX\",\"children\":[{\"id\":\"E7vAhaUuXUp1GyNZ_WrD2\",\"children\":[{\"id\":\"ITHI7KGI5KKDN1ixh3UuE\",\"children\":[{\"text\":\"const char*\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"zImW04iSs3FI8V2E5kJiK\",\"children\":[{\"id\":\"IWoKLhMDSNSzAFCvRPju4\",\"children\":[{\"id\":\"WDiOYyUQDzsvXqRHSnS7h\",\"children\":[{\"text\":\"Path\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[32,33,35],\"widthMode\":\"percentage\"},{\"id\":\"eDCEBjSJoI9n_PZ1FtKE0\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code36\",\"type\":\"h4\"},{\"id\":\"YcEGYNHN23i0KPY2PdErD\",\"children\":[{\"id\":\"DvTMUJFqit4gzF04qDtIF\",\"children\":[{\"text\":\"cosnt char* logDir = \\\"\\\"// Set a path by yourself\"}],\"type\":\"code-line\"},{\"id\":\"BAbG2fc8jnxfKjr7pr82h\",\"children\":[{\"text\":\"ITMGContext* context = ITMGContextGetInstance();\"}],\"type\":\"code-line\"},{\"id\":\"ducxLtEbZ4315hKDKi2Mc\",\"children\":[{\"text\":\"context->SetLogPath(logDir);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"btF0AOldKqRRM8Twn1KRo\",\"children\":[{\"text\":\"Callback Messages\"}],\"nodeId\":\"callback-messages\",\"type\":\"h2\"},{\"type\":\"table\",\"rowHeader\":true,\"children\":[{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"Message\"}],\"id\":\"wpoczPhZq_YTEpVOPOY6h\"}],\"id\":\"tLXeAPymvfIkqaF5OUsbz\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"Description\"}],\"id\":\"LE1rM0I1VS8UOe3nSgZ7S\"}],\"id\":\"VGnGOT4YZWywlDUSR458W\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"Parameter\"}],\"id\":\"9PPQ66H34EBKMjZETFAOG\"}],\"id\":\"znaac040yTyY94clkIHLZ\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"Sample\"}],\"id\":\"deizs3PckphhNCkeiCEAx\"}],\"id\":\"gqXgaPxmTqAfC9-e1YL4b\"}],\"id\":\"iQwU0GTVyn_c3wmXSOhBl\"},{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_ENTER_ROOM\"}],\"id\":\"At7bzVD9EvHbDNy2WaBir\"}],\"id\":\"Uch8mOmFoLyJgm-kJYTQK\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"A member entered the audio room\"}],\"id\":\"8E7Q0iMz4eCEQfdhfl1Z9\"}],\"id\":\"SPf5oicO3FM4lBzzkdfuP\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"result; error_info\"}],\"id\":\"39Gd2BuSCPUfBznTOtmv6\"}],\"id\":\"XmDVyIeaR3TFJ2iVEWWEd\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"{\\\"error_info\\\":\\\"\\\",\\\"result\\\":0}\"}],\"id\":\"nznCXBuTj_X4_Qi0xwOiJ\"}],\"id\":\"cgBP-teXHUkv85qjosU48\"}],\"id\":\"mv8p9OL2Si1kjSZuB0o0O\"},{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_EXIT_ROOM\"}],\"id\":\"0bzdmhLYHLep5h6zkz4jS\"}],\"id\":\"sNI8zomD45gMAn3ChkWxv\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"A member exited the audio room\"}],\"id\":\"SDEC31wJNE49QXHbxoz6k\"}],\"id\":\"ZlZ6BwnSC7gZVh6FqSM5r\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"result; error_info\"}],\"id\":\"19NWKkxUaKdAh6X4Jti0O\"}],\"id\":\"JXmIiniMk3TklUEZ2ftbS\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"{\\\"error_info\\\":\\\"\\\",\\\"result\\\":0}\"}],\"id\":\"byqqInkW8NAaTg1USDGm-\"}],\"id\":\"WhNlNPrGUvs9tNmmVodre\"}],\"id\":\"vT8PwuExQ2VlNL4MZC0z8\"},{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_ROOM_DISCONNECT\"}],\"id\":\"BzNgzzd_8LgSD8ESHnoAF\"}],\"id\":\"v-_PSrRQNoAHLgQjgsx8s\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"The room was disconnected for network or other reasons\"}],\"id\":\"CDrhVdm3of0GAfRFAq9Kc\"}],\"id\":\"GCl9_KpLQ2R074fH9OEfW\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"result; error_info\"}],\"id\":\"3U-6BmpXL5cJ7UGcB7KFj\"}],\"id\":\"YgagBECygNRvcthaNAXVr\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"{\\\"error_info\\\":\\\"waiting timeout, please check your network\\\",\\\"result\\\":0}\"}],\"id\":\"vHLCoXjG1Aka6ql2tIRTM\"}],\"id\":\"iKjkVYQ67lWAU73rUGCk_\"}],\"id\":\"fWbAnOXdRM53LGYXaTPTZ\"},{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"ITMG_MAIN_EVNET_TYPE_USER_UPDATE\"}],\"id\":\"cSf_rx_zLb58BYOhBgN1t\"}],\"id\":\"J1YxSVnmqeYe6lj1Zhwxq\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"Room members were updated\"}],\"id\":\"vRZ4nClHnTwtY1q1ipDti\"}],\"id\":\"nm_lGjhonnNpXBi3UdUZG\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"user_list; event_id\"}],\"id\":\"92YCryEaMB3xRqNJWEA_r\"}],\"id\":\"stcvnk1qkwJjOj0nXjfVm\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"{\\\"event_id\\\":1,\\\"user_list\\\":[\\\"0\\\"]}\"}],\"id\":\"Gs3WaOP-rW1VsGF2N3pAd\"}],\"id\":\"M8qjGAvdi4tPViqNY8x6_\"}],\"id\":\"b0Ij_l84JAncFOVJikyQ7\"},{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_RECONNECT_START\"}],\"id\":\"O6hCFk542ISwOCzqREzdp\"}],\"id\":\"RSvfe9NIq5nnFMWn4MnSK\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"The reconnection to the room started\"}],\"id\":\"V566-wireAmH8g4jaL_ei\"}],\"id\":\"zb16UVGi179dJAIsVdWqs\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"result; error_info\"}],\"id\":\"GVliubwpfp8QOfIcyhnzu\"}],\"id\":\"NCVObnTnHB-R0-eO-v3_D\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"{\\\"error_info\\\":\\\"\\\",\\\"result\\\":0}\"}],\"id\":\"ettxSbIXWwxdLDt3-JQRY\"}],\"id\":\"ZU2OA9c8dVuqsMsrtrBTV\"}],\"id\":\"CYFW1t389pDR9QY4oS6Bb\"},{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_RECONNECT_SUCCESS\"}],\"id\":\"vDQPM1X2Oc2KpEG-7um4c\"}],\"id\":\"Oaapj0m3cZwT9LRbTpT3F\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"The reconnection to the room succeeded\"}],\"id\":\"_w3dzxLb7u3C9KBwFTH0P\"}],\"id\":\"QwCmj8stsvIBYkVX5hgnp\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"result; error_info\"}],\"id\":\"_ypU8spwjuGRjK7kXXOC_\"}],\"id\":\"yJvpbdAjKd6ZuPRJwj6oD\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"{\\\"error_info\\\":\\\"\\\",\\\"result\\\":0}\"}],\"id\":\"EPzkA_4YkzvHTIfuNbN9E\"}],\"id\":\"3838MTlqoIP0B8k9Xc6j7\"}],\"id\":\"2p3Ts6vrHl5QJGzncHzZ-\"},{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_SWITCH_ROOM\"}],\"id\":\"po-s0uAi98MH85ROpKe5K\"}],\"id\":\"g_UobF3wTRE_2davtbh0w\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"The room was quickly switched\"}],\"id\":\"s--PbKxFjVciFm21vjaNw\"}],\"id\":\"t70peJZ1FgRgkTtiizDb8\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"result; error_info\"}],\"id\":\"-djVPorpdzeAPtUoAnXdq\"}],\"id\":\"vIbvD4lrYLU8owq6_GMiq\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"{\\\"error_info\\\":\\\"\\\",\\\"result\\\":0}\"}],\"id\":\"wP1kn-sS2VFbp5Kti9X63\"}],\"id\":\"Xea0Brer35b_l0AeBTHBd\"}],\"id\":\"PZ-P-FEBWnirq8El849zU\"},{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_CHANGE_ROOM_TYPE\"}],\"id\":\"ozSk92uV-ZVHRs3H_8k7_\"}],\"id\":\"qvkXGRjUeN-rR-EHFw0Iq\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"The room status was changed\"}],\"id\":\"BjP7iZT7jQXUnLXGMvqBM\"}],\"id\":\"hlsOvwDZpoga7GhOeLZ8d\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"result; error_info; sub_event_type; new_room_type\"}],\"id\":\"gTuFVWJHGOkMcRkHPH4bK\"}],\"id\":\"FUtvLHbu3CuwRFmj2wWl_\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"{\\\"error_info\\\":\\\"\\\",\\\"new_room_type\\\":0,\\\"result\\\":0}\"}],\"id\":\"BiCdkW5PgKfwwifGO8aT6\"}],\"id\":\"n9DjLOUfSxzWx7whAlKhL\"}],\"id\":\"qbnMZVDfQlKzVTIgjjDNh\"},{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_ROOM_SHARING_START\"}],\"id\":\"gCB4fmNkWtIlIFpkfeNmZ\"}],\"id\":\"14y8BnpillYJAoLRCgYC2\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"Cross-room mic connect started\"}],\"id\":\"bK7XaI9N08rjKxohj6Ulk\"}],\"id\":\"8g3h5ZAsBylBAvE42C4ew\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"result;\"}],\"id\":\"WnWAZCgRbqzUAAd75RCd5\"}],\"id\":\"Ot33qpyhE4SvLw1uAow8n\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"{\\\"result\\\":0}\"}],\"id\":\"tCOabX7uTNDjhr29IOylL\"}],\"id\":\"t2BrpMsHFdXyBcktBqQf2\"}],\"id\":\"Nbavu05YLnZFqvF9aWtrA\"},{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_ROOM_SHARING_STOP\"}],\"id\":\"AoLJhK7nwUacKl_Jy_oee\"}],\"id\":\"u1Jf3DASiVh05nhBSchy0\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"Cross-room mic connect stopped\"}],\"id\":\"gMuYZcw_fXBJeuijRWTZ0\"}],\"id\":\"XMRr-xGxfIvFZKSt0Nf5H\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"result;\"}],\"id\":\"VdgdNyDI9hE-jTgecO2df\"}],\"id\":\"uKGzpaIqXIJ86cqGVXfrh\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"{\\\"result\\\":0}\"}],\"id\":\"bmMlHq6ZQl5HucId_AMdW\"}],\"id\":\"2f4W9Ry_LZrgh-FSk5gH4\"}],\"id\":\"Z5hoY4DN4ka_ZiD2t0aZz\"},{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_SPEAKER_DEFAULT_DEVICE_CHANGED\"}],\"id\":\"pEoWipuzG7ohRlgTs_7n-\"}],\"id\":\"IDqR4qMgVqmIKWhx5AQt7\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"The default speaker device was changed\"}],\"id\":\"EEvP98QcGXhLsM4uabqIl\"}],\"id\":\"inmg7Dipx7iMlsCYv_TMu\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"result; error_info\"}],\"id\":\"lQBBPPEg9KOu6RyWd2ZxY\"}],\"id\":\"i05ppP4suXH_pDJ_n0WVe\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"{\\\"deviceID\\\":\\\"{0.0.0.00000000}.{a4f1e8be-49fa-43e2-b8cf-dd00542b47ae}\\\",\\\"deviceName\\\":\\\"Speaker (Realtek High Definition Audio)\\\",\\\"error_info\\\":\\\"\\\",\\\"isNewDevice\\\":true,\\\"isUsedDevice\\\":false,\\\"result\\\":0}\"}],\"id\":\"Yzdh8ekOFYo1rwsnuBU9A\"}],\"id\":\"OelJ-G7sIMrcrVNlSJM4z\"}],\"id\":\"k0Qxl9TtN9pwIQYWt3qxH\"},{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_SPEAKER_NEW_DEVICE\"}],\"id\":\"anU1HVKNLLQ5sf0xMxHOt\"}],\"id\":\"AQ8rr6u2MJpPC_S_y-YYW\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"A new speaker device was added\"}],\"id\":\"7dOkbrYJJBrnUT5PK5nGl\"}],\"id\":\"UFd5HrcAG92wdVv8rVzme\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"result; error_info\"}],\"id\":\"b1kbriiC8bt-9JptGXd5f\"}],\"id\":\"sG4hAmQxlkqCeX4XudVtL\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"{\\\"deviceID\\\":\\\"{0.0.0.00000000}.{a4f1e8be-49fa-43e2-b8cf-dd00542b47ae}\\\",\\\"deviceName\\\":\\\"Speaker (Realtek High Definition Audio)\\\",\\\"error_info\\\":\\\"\\\",\\\"isNewDevice\\\":true,\\\"isUsedDevice\\\":false,\\\"result\\\":0}\"}],\"id\":\"MNXc60R8thaSIO8H7-_8X\"}],\"id\":\"g1vzW85tPBGu6OSn-QVUX\"}],\"id\":\"JwfNv_qbiuiI8O8hU-oKt\"},{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_SPEAKER_LOST_DEVICE\"}],\"id\":\"rUfsOPhiLz_p62-TW5PVk\"}],\"id\":\"bJpgRu7HlIisQcVS-aO1p\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"A speaker device was lost\"}],\"id\":\"TnOoBzAewfKzRGljBtqgZ\"}],\"id\":\"_WqSDXw5g6AXEyR4q23qO\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"result; error_info\"}],\"id\":\"a7YlfOl9PMhCW7UXBLx7u\"}],\"id\":\"OX8QCetREjWR5rXATvJRG\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"{\\\"deviceID\\\":\\\"{0.0.0.00000000}.{a4f1e8be-49fa-43e2-b8cf-dd00542b47ae}\\\",\\\"deviceName\\\":\\\"Speaker (Realtek High Definition Audio)\\\",\\\"error_info\\\":\\\"\\\",\\\"isNewDevice\\\":false,\\\"isUsedDevice\\\":false,\\\"result\\\":0}\"}],\"id\":\"jOBp7g4lUCpJlg2fU5I7I\"}],\"id\":\"awQKhHHEXNhV3d3uXGtaq\"}],\"id\":\"RQ8Fi8R7M2jM46Ej2-uj2\"},{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_MIC_NEW_DEVICE\"}],\"id\":\"pROuF6UECo8enDbYtbMyZ\"}],\"id\":\"Mcq2Kyd8lmux3LPwSACZj\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"A new mic device was added\"}],\"id\":\"TXuKYv-9N8MCOXZPpcwMM\"}],\"id\":\"9NrFff5eNi6IvVpraF96c\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"result; error_info\"}],\"id\":\"5MvyFgeDlPpB77ejK73pa\"}],\"id\":\"zUtiyag8Jg95umq13PH4h\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"{\\\"deviceID\\\":\\\"{0.0.1.00000000}.{5fdf1a5b-f42d-4ab2-890a-7e454093f229}\\\",\\\"deviceName\\\":\\\"Mic (Realtek High Definition Audio)\\\",\\\"error_info\\\":\\\"\\\",\\\"isNewDevice\\\":true,\\\"isUsedDevice\\\":true,\\\"result\\\":0}\"}],\"id\":\"aEvCD_CGcw8ICSrI4fyuS\"}],\"id\":\"P4Mz-p_1N4lj4cFrOug41\"}],\"id\":\"6WVI6SSgaOL_cULr7uX0j\"},{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_MIC_LOST_DEVICE\"}],\"id\":\"GCc8hHHAgJec96jSgJGCL\"}],\"id\":\"yo38aAw0wgnuvbmcIS1Xv\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"A mic device was lost\"}],\"id\":\"KvEuUbZw_LQcNtWF3d8Tb\"}],\"id\":\"N8t-1gDcm-spxzx4bD7n8\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"result; error_info\"}],\"id\":\"QC2OSOV_sHODgVfbyUkAg\"}],\"id\":\"jjeqtMlNrdVWNLl9uxyz0\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"{\\\"deviceID\\\":\\\"{0.0.1.00000000}.{5fdf1a5b-f42d-4ab2-890a-7e454093f229}\\\",\\\"deviceName\\\":\\\"Mic (Realtek High Definition Audio)\\\",\\\"error_info\\\":\\\"\\\",\\\"isNewDevice\\\":false,\\\"isUsedDevice\\\":true,\\\"result\\\":0}\"}],\"id\":\"f2As1Kw7eGhg4MCk7CwUG\"}],\"id\":\"vQmtHF6lEKY7lhgiWIK8i\"}],\"id\":\"WCJGhnY7YinLsUtJA-Xiz\"},{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_MIC_DEFAULT_DEVICE_CHANGED\"}],\"id\":\"VkHSSSoiN8qCTw216ngxx\"}],\"id\":\"LT4roV5-3pxds7akiDJl6\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"The default mic device was changed\"}],\"id\":\"HTJmUzex-WscUvP9JSnCk\"}],\"id\":\"E8LbQ5XtspBgZSdpbCM1T\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"result; error_info\"}],\"id\":\"pUS0hBmv6Mn-DFEMkIlsx\"}],\"id\":\"tPPlCM_i2R4ztQoaIKDaY\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"{\\\"deviceID\\\":\\\"{0.0.1.00000000}.{5fdf1a5b-f42d-4ab2-890a-7e454093f229}\\\",\\\"deviceName\\\":\\\"Mic (Realtek High Definition Audio)\\\",\\\"error_info\\\":\\\"\\\",\\\"isNewDevice\\\":false,\\\"isUsedDevice\\\":true,\\\"result\\\":0}\"}],\"id\":\"Vh0CFLPCKDfmPLXw6s8Lx\"}],\"id\":\"ewtKMQ-zB2z8t8-mxm5vG\"}],\"id\":\"gCWi2lfuiOP0BXzbm6zCI\"},{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_CHANGE_ROOM_QUALITY\"}],\"id\":\"8CcmWcMXw5IkYLJy6frZK\"}],\"id\":\"5upNmPcBBPeTjY9mFGuF5\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"The room quality changed\"}],\"id\":\"CQLOMwAYN5BOnc0nsaCXc\"}],\"id\":\"MAQkWuNL0az4n2UnbeVyd\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"weight; loss; delay\"}],\"id\":\"N6UultAVYxsjAXpAOGUJm\"}],\"id\":\"sTEP44oq636uxqqtg2lPi\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"{\\\"weight\\\":5,\\\"loss\\\":0.1,\\\"delay\\\":1}\"}],\"id\":\"u6OI4VExDpO64kfB9je40\"}],\"id\":\"mtJ1c-8UmMq16vmJBCyeZ\"}],\"id\":\"rG-DUAZtDG9vYPb-LaOjh\"},{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_RECORD_COMPLETE\"}],\"id\":\"gKHMWs-uwrQbjxp7iqR_u\"}],\"id\":\"nqU5akPhr4BxPfAnTlUSI\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"Voice message recording was completed\"}],\"id\":\"wwzp5I75ECopzJBYL2Uy-\"}],\"id\":\"5qBh8ciiTrjQErC5FHiwo\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"result; file_path\"}],\"id\":\"XWvZ1Z4cJHiier7oKF1s9\"}],\"id\":\"wku7XMvod7f3aaKUk-wCb\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"{\\\"file_path\\\":\\\"\\\",\\\"result\\\":0}\"}],\"id\":\"9NV_NW6MH1yxT9gH92HwY\"}],\"id\":\"sCc_tlJ4_SSmVnagYoyBM\"}],\"id\":\"5y82LcDYQZaO141FuSn45\"},{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_UPLOAD_COMPLETE\"}],\"id\":\"8xzr02ThucK7YH6FgjNYR\"}],\"id\":\"XbVA5pNo5iqihd0zuE_3g\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"Voice message upload was completed\"}],\"id\":\"C7oupy8pwSge-9z-tQu_u\"}],\"id\":\"YnL5zYbUBVj8a9HxNJXWZ\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"result; file_path;file_id\"}],\"id\":\"onaASFnw3N0uZqqlQcj-E\"}],\"id\":\"mxfWy-hVWf0ZxhU3WBow1\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"{\\\"file_id\\\":\\\"\\\",\\\"file_path\\\":\\\"\\\",\\\"result\\\":0}\"}],\"id\":\"26VEKdTHX3azapWYhuhu6\"}],\"id\":\"VMVEwLkb-k9lAmCOnrI2c\"}],\"id\":\"VxMPsxnb8Ca19ypCCEERf\"},{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_DOWNLOAD_COMPLETE\"}],\"id\":\"kKOULiVpo9FkKZ8IoVgLa\"}],\"id\":\"FWjnUUQn7u3Uf-sVHciM_\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"Voice message download was completed\"}],\"id\":\"hUpVj2TrJNLbNZhDxn7vD\"}],\"id\":\"LjtwoYsnkd0kLk0XJ9P2g\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"result; file_path;file_id\"}],\"id\":\"VHb1rUF6m6sMX9-85U6r_\"}],\"id\":\"uq0T5vYoKufvdfgP7djM2\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"{\\\"file_id\\\":\\\"\\\",\\\"file_path\\\":\\\"\\\",\\\"result\\\":0}\"}],\"id\":\"5DhpGVIxAG6zIrF2NUdl2\"}],\"id\":\"BCQ25cCrgSSKCa_srFrR7\"}],\"id\":\"LKj4ah1tloAfhwIrjkUjc\"},{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_PLAY_COMPLETE\"}],\"id\":\"-yeo_v45wP8LHRf0TloDs\"}],\"id\":\"G7i_3yM1PlwwoTHDqkN2k\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"Voice message playback was completed\"}],\"id\":\"WgYRql68T1STLxHov5pz6\"}],\"id\":\"h9yw1tf1QZGdtbM9PVPKt\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"result; file_path\"}],\"id\":\"xqPm8s5flRffDNMVMTUAn\"}],\"id\":\"SNgFXt9bsF_zg2XubcO1y\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"{\\\"file_path\\\":\\\"\\\",\\\"result\\\":0}\"}],\"id\":\"7RQi5ES5YqqxnghCxdKcQ\"}],\"id\":\"bXaNeAxr7BbQ4SXgMu3aV\"}],\"id\":\"OVuEbK5J0yuc_KzRMIjiE\"},{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_SPEECH2TEXT_COMPLETE\"}],\"id\":\"ms1Q9R3N5FqAqolEPccsb\"}],\"id\":\"ZbktkUOWQ7F3hR-Pv_tot\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"Fast speech-to-text conversion was completed\"}],\"id\":\"oMD6Jd05v4a33sIAJmO91\"}],\"id\":\"J7JimNOpSatAlSX_iUSSD\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"result; text;file_id\"}],\"id\":\"BmXVpxFv-1tCWLESA_2g4\"}],\"id\":\"xy7qXpts0xKQiaUWR-xlg\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"{\\\"file_id\\\":\\\"\\\",\\\"text\\\":\\\"\\\",\\\"result\\\":0}\"}],\"id\":\"WTFhUFTIVXBxKIoA8ZtwW\"}],\"id\":\"2lX5rFQf7oikZe3Dj0PNN\"}],\"id\":\"L5Rsf-4rpUwgXagOWpqra\"},{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRECOGNITION_COMPLETE\"}],\"id\":\"KtRHGtB-5Xk8RfUIFZPIi\"}],\"id\":\"Dwzrjm44Hd2W9FPS-ux_m\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"Streaming speech-to-text conversion was completed\"}],\"id\":\"BHmw_6CEXlZwba_RrIGDo\"}],\"id\":\"Q4RDNm8rXZH4JTuabvsHA\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"result; file_path; text;file_id\"}],\"id\":\"61728u8JTRgUx1g1E3W3b\"}],\"id\":\"Y8ZqgxUXPN0cump_UruZK\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"{\\\"file_id\\\":\\\"\\\",\\\"file_path\\\":\\\",\\\"text\\\":\\\"\\\",\\\"result\\\":0}\"}],\"id\":\"AR35HR2R8Agg1RSLnvFpu\"}],\"id\":\"1gsueAv5RBRTRL-RJvAdH\"}],\"id\":\"uOa3JeZ-i-yhrsKXHksWF\"},{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRECOGNITION_IS_RUNNING\"}],\"id\":\"Oba4cnJjzcFZzp65MHmxI\"}],\"id\":\"l0YdkmmMNN72aqen_hbOf\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"Streaming speech-to-text conversion is in progress\"}],\"id\":\"xR5OTiP25FYxqEGPJFYBG\"}],\"id\":\"yUyJBEc5x4OmLvMQNmPQp\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"result; file_path; text;file_id\"}],\"id\":\"RD5doOev1bT9jbe8r5TV0\"}],\"id\":\"sWQPbngpmgeeaPvug-PKi\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"{\\\"file_id\\\":\\\"\\\",\\\"file_path\\\":\\\",\\\"text\\\":\\\"\\\",\\\"result\\\":0}\"}],\"id\":\"BH3ppi0GDGrM-kOt_cL0G\"}],\"id\":\"l7DWTCGCtux9CtQmX6wvN\"}],\"id\":\"4WboxhN1Pt6Otb2cw_coO\"},{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_TEXT2SPEECH_COMPLETE\"}],\"id\":\"P2wooaNfLKR9q2cHeYTO_\"}],\"id\":\"i-klSfCnOuyZ_sXn2ah0o\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"Text-to-speech conversion was completed\"}],\"id\":\"Ah2wpxPJBK4GI7OV9f8Xy\"}],\"id\":\"25_R7ArBm-nczigWIRku0\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"result; text;file_id\"}],\"id\":\"NhWPDojCwlqiOgd9WcoAF\"}],\"id\":\"d8ewOgB8y8j3qndnpHB3R\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"{\\\"file_id\\\":\\\"\\\",\\\"text\\\":\\\"\\\",\\\"result\\\":0}\"}],\"id\":\"bMSuvAn1TuG_SsWvD_DtD\"}],\"id\":\"hmlNN-QUsdFnh5CzLc7v2\"}],\"id\":\"R4-7ppgCbPoZy55y2-Z-c\"},{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_TRANSLATE_TEXT_COMPLETE\"}],\"id\":\"hunuAOpvbUAq-MHISaYHD\"}],\"id\":\"RBQRZDMrRmdGs4ZVPAXgj\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"Text translation was completed\"}],\"id\":\"PCMMKoA8Ea7LC85WWiQoA\"}],\"id\":\"XNTKXBbDbvxBJLfvWKV5k\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"result; text;file_id\"}],\"id\":\"NvqzWa3oCsgMbB8cEvwF7\"}],\"id\":\"hkpRloyVVtFYO31ECHDfO\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"{\\\"file_id\\\":\\\"\\\",\\\"text\\\":\\\"\\\",\\\"result\\\":0}\"}],\"id\":\"BVoXIOsjfAfJm4nzBxjQr\"}],\"id\":\"Tl3fhhI6UvcUQyraq2Zq1\"}],\"id\":\"3efRTzuDQ33mjN8Mt785a\"}],\"id\":\"9Qw1Sh7wLD7J1CtvQN_6m\",\"widths\":[22,23,18,37],\"widthMode\":\"percentage\"},{\"type\":\"p\",\"children\":[{\"text\":\"\"}],\"id\":\"4a6cAvbUcKqrDl1c5T3J1\"}]"}},"46015":{"categoryId":607,"weight":110,"type":"page","extension":"","pid":15179,"id":46015,"lang":"en","title":"iOS Project Upgrade Guide","pdfUrl":"","docType":"default","children":[],"firstReleaseTime":"2022-03-25 02:50:29","recentReleaseTime":"2022-03-25 02:50:29","content":{"title":"iOS Project Upgrade Guide","body":"

Overview

The GME SDK has been upgraded to v2.9. To implement this upgrade, perform the following steps in your Xcode project:

Upgrade Directions

1. Download the SDK

In the new version, the dynamic libraries of the SDK are split into the following files:
libgmefdkaac.framework
libgmeogg.framework
libgmelamemp3.framework
libgmesoundtouch.framework
Make sure that the downloaded SDK contains these files. After downloading, put them together with GMESDK.framework in the project directory. Release-iphoneos is the SDK file used for real devices, while Release-iphonesimulator is the SDK file used for simulators.

\"\"



2. Import the SDK into the project

Import all frameworks into the project as shown below:

\"\"



3. Configure frameworks and sign

1. In the Xcode project, click Build Phases, expand Link Binary With Libraries, and import all GME frameworks.
2. Expand Embed Framework, import all GME frameworks, and select Code Sign On Copy.

\"\"



4. Modify the rpath

You need to add @executable_path/Frameworks in the rpath. If it has already been added, there is no need for modification.

\"\"


","recentReleaseTime":"2024-01-18 15:11:45","slate":"[{\"id\":\"07hWUEPSjWigoOnfaH_oW\",\"children\":[{\"text\":\"Overview\"}],\"nodeId\":\"overview\",\"type\":\"h2\"},{\"id\":\"dym_YC5pTA69qP6Fn6m7q\",\"children\":[{\"text\":\"The GME SDK has been upgraded to v2.9. To implement this upgrade, perform the following steps in your Xcode project:\"}],\"type\":\"p\"},{\"id\":\"iNPA230RYsqHxMZ-Z513V\",\"children\":[{\"text\":\"Upgrade Directions\"}],\"nodeId\":\"upgrade-directions\",\"type\":\"h2\"},{\"id\":\"CT48LTKw1fpI8TSzGxJeN\",\"children\":[{\"text\":\"1. Download the SDK\"}],\"nodeId\":\"1.-download-the-sdk\",\"type\":\"h3\"},{\"id\":\"eBtC4Z571MiRYHAdIU2Dw\",\"children\":[{\"text\":\"In the new version, the dynamic libraries of the SDK are split into the following files:\"}],\"type\":\"p\"},{\"id\":\"48jIaHJTF-6RhZqcNl7vj\",\"children\":[{\"text\":\"libgmefdkaac.framework\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"YIjbQvUzvkNetntMNTdow\",\"children\":[{\"text\":\"libgmeogg.framework\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"55-1oSoqMSpOdQbJZkkVA\",\"children\":[{\"text\":\"libgmelamemp3.framework\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"DHXmuaQk3ckj313UxIgkl\",\"children\":[{\"text\":\"libgmesoundtouch.framework\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"yMVCHaQgyA3Pef_JOFwGd\",\"children\":[{\"text\":\"Make sure that the downloaded SDK contains these files. After downloading, put them together with \"},{\"code\":1,\"text\":\"GMESDK.framework\"},{\"text\":\" in the project directory. \"},{\"code\":1,\"text\":\"Release-iphoneos\"},{\"text\":\" is the SDK file used for real devices, while \"},{\"code\":1,\"text\":\"Release-iphonesimulator\"},{\"text\":\" is the SDK file used for simulators.\"}],\"type\":\"p\"},{\"type\":\"p\",\"children\":[{\"text\":\"\"},{\"id\":\"u1PJyhfeRRVH8kTEiPzsK\",\"alt\":\"\",\"children\":[{\"text\":\"\"}],\"inline\":true,\"type\":\"image\",\"url\":\"https://cloudcache.intl.tencent-cloud.com/cms/backend-cms/119d2a88b37211ee9fd6525400bb593a.png\",\"naturalSize\":[1460,312],\"size\":[901,192]},{\"text\":\"\"}],\"id\":\"dGuaOGuNmbsmLomwGbyMO\"},{\"id\":\"atRoicR9zpQLFmVzkTzPk\",\"children\":[{\"text\":\"2. Import the SDK into the project\"}],\"nodeId\":\"2.-import-the-sdk-into-the-project\",\"type\":\"h3\"},{\"id\":\"c5ODmm2_bDt5kCkWlgsTs\",\"children\":[{\"text\":\"Import all frameworks into the project as shown below:\"}],\"type\":\"p\"},{\"type\":\"p\",\"children\":[{\"text\":\"\"},{\"id\":\"GvItRf3rKxCm1cIX6NrtF\",\"alt\":\"\",\"children\":[{\"text\":\"\"}],\"inline\":true,\"type\":\"image\",\"url\":\"https://cloudcache.intl.tencent-cloud.com/cms/backend-cms/11a80d2db37211eeae9a525400c26da5.png\",\"naturalSize\":[1028,724],\"size\":[601,423]},{\"text\":\"\"}],\"id\":\"Oqin-6oThOXlz2l2iZEdb\"},{\"id\":\"TE1DhVNbHGDobX3gOJpCm\",\"children\":[{\"text\":\"3. Configure frameworks and sign\"}],\"nodeId\":\"3.-configure-frameworks-and-sign\",\"type\":\"h3\"},{\"id\":\"RuLml0_CURSXdOmbjk6jw\",\"children\":[{\"text\":\"In the Xcode project, click \"},{\"b\":1,\"text\":\"Build Phases\"},{\"text\":\", expand \"},{\"b\":1,\"text\":\"Link Binary With Libraries\"},{\"text\":\", and import all GME frameworks.\"}],\"start\":true,\"type\":\"oli\"},{\"id\":\"am6mJ-fR1N9WpfikjwXzJ\",\"children\":[{\"text\":\"Expand \"},{\"b\":1,\"text\":\"Embed Framework\"},{\"text\":\", import all GME frameworks, and select \"},{\"b\":1,\"text\":\"Code Sign On Copy\"},{\"text\":\".\"}],\"start\":false,\"type\":\"oli\"},{\"type\":\"p\",\"children\":[{\"text\":\"\"},{\"id\":\"OPvvLfvyAd-gIZk8N1i2e\",\"alt\":\"\",\"children\":[{\"text\":\"\"}],\"inline\":true,\"type\":\"image\",\"url\":\"https://cloudcache.intl.tencent-cloud.com/cms/backend-cms/11f72fb3b37211ee9939525400461a83.png\",\"naturalSize\":[2308,1910],\"size\":[901,745]},{\"text\":\"\"}],\"id\":\"vqemiyEzAQuFSu1i7hWEj\"},{\"id\":\"n_veHta8Nc4gwt2FZA6Lx\",\"children\":[{\"text\":\"4. Modify the rpath\"}],\"nodeId\":\"4.-modify-the-rpath\",\"type\":\"h3\"},{\"id\":\"dw9fPq8pST_tlBEM5kZ9q\",\"children\":[{\"text\":\"You need to add \"},{\"code\":1,\"text\":\"@executable_path/Frameworks\"},{\"text\":\" in the \"},{\"code\":1,\"text\":\"rpath\"},{\"text\":\". If it has already been added, there is no need for modification.\"}],\"type\":\"p\"},{\"type\":\"p\",\"children\":[{\"text\":\"\"},{\"id\":\"J2-MWGsjwACz20P0yZHrK\",\"alt\":\"\",\"children\":[{\"text\":\"\"}],\"inline\":true,\"type\":\"image\",\"url\":\"https://cloudcache.intl.tencent-cloud.com/cms/backend-cms/11a6a345b37211ee9fd6525400bb593a.png\",\"naturalSize\":[1994,452],\"size\":[976,221]},{\"text\":\"\"}],\"id\":\"jhfChKhKwXvn8luwXJeMi\"}]"}},"46711":{"categoryId":607,"weight":7,"type":"page","extension":"","pid":10780,"id":46711,"lang":"en","title":"Toolchain","pdfUrl":"","docType":"default","children":[],"firstReleaseTime":"2022-05-16 22:40:02","recentReleaseTime":"2022-05-16 22:40:02","content":{"title":"Toolchain","body":"
This document lists the toolchain for GME integration.

V2.9.1

Platform
Description
Win32
Windows Software Development Kit (Visual Studio 2015): 10.0.14393.0
Platform Toolset: v140_xp
macOS
MacOS Minimum Deployment Target: 10.10
macOS SDK: 12.0
Xcode®: 13.1
Target Architectures: x86_64
iOS
iOS Minimum Deployment Target: 9.0
iOS SDK: 15.0
Xcode®: 13.1
Target Architectures: arm64, armv7, arm64(simulator), x86_64(simulator)
Android
Android SDK: Minimum API 16
Android SDK Tools: 30.0.3
Android NDK: r23
PS4
SDK: SDK 6.000
PS5
SDK: SDK 3.000
Switch
SDK: DevEnv8.3.0
XboxOne
Microsoft® XDK: 10.0.17134.5055 (July 2018 qfe7)

","recentReleaseTime":"2024-01-18 15:15:48","slate":"[{\"id\":\"7aDnYBQnpVTgGKx6ncqIH\",\"children\":[{\"text\":\"This document lists the toolchain for GME integration.\"}],\"type\":\"p\"},{\"id\":\"7bHKpKMwwYCJUucuCnB9c\",\"children\":[{\"text\":\"V2.9.1\"}],\"nodeId\":\"v2.9.1\",\"type\":\"h2\"},{\"id\":\"YwkUzzmjLDzeqFmJ_Xev7\",\"children\":[{\"id\":\"Dg7OjXg3rtXCwr7VvDQLi\",\"children\":[{\"id\":\"Vdh4KqMo9cJm0T-DtfFVO\",\"children\":[{\"id\":\"4LM6YZ2JQ2aSW9DWR_aVH\",\"children\":[{\"text\":\"Platform\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Y6H9TSQc6Tu3XZxXepPBA\",\"children\":[{\"id\":\"XItEu4_sDSPjwkqY_wPa8\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"M66S2fi8thBTTWtNSOhsF\",\"children\":[{\"id\":\"38oGuQil8ZWW7e89Wxx1d\",\"children\":[{\"id\":\"Xmsrr4IDgxIytDpImaF8e\",\"children\":[{\"id\":\"O3nYR7jS2m4TzyDTmhk0M\",\"children\":[{\"text\":\"Win32\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"3jj-2ht2v7AonBqPowFPL\",\"children\":[{\"id\":\"PRB06aPHdnWXIsiRpZ8dS\",\"children\":[{\"text\":\"Windows Software Development Kit (Visual Studio 2015): 10.0.14393.0 \"}],\"type\":\"uli\"},{\"id\":\"o-AjmHncH8DG__XUjgyP9\",\"type\":\"uli\",\"children\":[{\"text\":\"Platform Toolset: v140_xp\"}]}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"aLpdCPo8MaxMHizhztp8n\",\"children\":[{\"id\":\"IjBnATkeBpMzg_48tpe-3\",\"children\":[{\"id\":\"Ne5sv_1xOOrGpr7Fliult\",\"children\":[{\"id\":\"ND5vBBkLpNPhuC8QAgO5P\",\"children\":[{\"text\":\"macOS\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"wR9vrqmJeEjspgj_HbudE\",\"children\":[{\"id\":\"dLLCgEEOyWuhLGRS0OTAv\",\"children\":[{\"text\":\"MacOS Minimum Deployment Target: 10.10\"}],\"type\":\"uli\"},{\"id\":\"hYuWD9yaB0JlGmJh090TN\",\"type\":\"uli\",\"children\":[{\"text\":\"macOS SDK: 12.0\"}]},{\"id\":\"2OTzhrPQ8BKiMSp9kodV7\",\"type\":\"uli\",\"children\":[{\"text\":\"Xcode®: 13.1\"}]},{\"id\":\"FBa36xZYvjwju83TlXelM\",\"type\":\"uli\",\"children\":[{\"text\":\"Target Architectures: x86_64\"}]}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"SeXX8C1mkUVzYJOUsfuDV\",\"children\":[{\"id\":\"y6JQSDrF0PKmnjgAZC2DT\",\"children\":[{\"id\":\"qAS-h_ZGl3_A3GSnWsoT1\",\"children\":[{\"id\":\"ag6iIOkAv7RwSh1rVXfxJ\",\"children\":[{\"text\":\"iOS\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"17kPvP3MQ9F3hUFBgC6_s\",\"children\":[{\"id\":\"BqZkWYVn3nj2ZBMlsnu2H\",\"children\":[{\"text\":\"iOS Minimum Deployment Target: 9.0\"}],\"type\":\"uli\"},{\"id\":\"FUDBKU49YDzeDh_3R3nd_\",\"type\":\"uli\",\"children\":[{\"text\":\"iOS SDK: 15.0\"}]},{\"id\":\"9QgAa9N0rD-JMgbewohvw\",\"type\":\"uli\",\"children\":[{\"text\":\"Xcode®: 13.1\"}]},{\"id\":\"c6onDqHPFAWLtmbqeN3bZ\",\"type\":\"uli\",\"children\":[{\"text\":\"Target Architectures: arm64, armv7, arm64(simulator), x86_64(simulator)\"}]}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"rDbsfgiyr0AISkanzrgcF\",\"children\":[{\"id\":\"tDb6mGklH1xfdWHpEkhSb\",\"children\":[{\"id\":\"lqmmOqh0uunz1lKf8FVuO\",\"children\":[{\"id\":\"lrnU-10RpjOMkdSnweHTn\",\"children\":[{\"text\":\"Android\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"NRDIG9rGtOt8SToe0m019\",\"children\":[{\"id\":\"4vNus1Ty0imXe_Rde3meA\",\"children\":[{\"text\":\"Android SDK: Minimum API 16\"}],\"type\":\"uli\"},{\"id\":\"3O8VZrJBCM315cZoy1f4B\",\"type\":\"uli\",\"children\":[{\"text\":\"Android SDK Tools: 30.0.3\"}]},{\"id\":\"SW4M6CZL34LNsD0EWOK7z\",\"type\":\"uli\",\"children\":[{\"text\":\"Android NDK: r23\"}]}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"ZYJbw2k3cerLgG4gfI1uV\",\"children\":[{\"id\":\"dQ3EAUFMcjiEfMCj0aX6C\",\"children\":[{\"id\":\"ZtpYjcW6ZPPKVezex_KC-\",\"children\":[{\"id\":\"9AhgiNCWQScoO-80pBcb8\",\"children\":[{\"text\":\"PS4\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ph7xDUrRJSp_e85s_XzGz\",\"children\":[{\"id\":\"Ch2LHYluxZ2Zy5K6-eJjX\",\"children\":[{\"id\":\"IfnqEraT9xFI553town-r\",\"children\":[{\"text\":\"SDK: SDK 6.000\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"O3IwyAQ9Vi9Y_kPXNO_3I\",\"children\":[{\"id\":\"mKSm1rT18HZSEhmOI9-a1\",\"children\":[{\"id\":\"eE3pcRwMN7Mw1AIquQp4T\",\"children\":[{\"id\":\"U7aRHOfTLmJx6ro6Zi2u7\",\"children\":[{\"text\":\"PS5\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"CGsRaqXyDk9pgkemcD3pu\",\"children\":[{\"id\":\"igTfGn9uHStqf3rMovhee\",\"children\":[{\"id\":\"P0n2Fw0_grkycDOameAoq\",\"children\":[{\"text\":\"SDK: SDK 3.000\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"nXRlgKUjWpjzEN94NVgOT\",\"children\":[{\"id\":\"wOayaTPF9on-Ulj0fs6qh\",\"children\":[{\"id\":\"issF2WSL-gWJVheniCVEw\",\"children\":[{\"id\":\"_Gdvbvc57PK1vHYNVtIih\",\"children\":[{\"text\":\"Switch\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"lx4wYwbDVRCspGofQbFbQ\",\"children\":[{\"id\":\"sC4BPliF_9k448GHprCXj\",\"children\":[{\"id\":\"BmO9vGwF8wvSp2TJOAmCT\",\"children\":[{\"text\":\"SDK: DevEnv8.3.0\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"qvt0L0EaS7ATOMAfr4yZS\",\"children\":[{\"id\":\"tBB_VjofHfSXA4uyfKrET\",\"children\":[{\"id\":\"mzQ6XX9MHjlikN4o6ddcu\",\"children\":[{\"id\":\"nY_HPOJi6svK6wEWlFdl-\",\"children\":[{\"text\":\"XboxOne\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"5BXYMZfLOQfTeYj1g7Ed6\",\"children\":[{\"id\":\"iAoz6H3kibGGr-8rCnR2t\",\"children\":[{\"id\":\"bStp4zn-CL2kCU3aLb7wB\",\"children\":[{\"text\":\"Microsoft® XDK: 10.0.17134.5055 (July 2018 qfe7)\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[24,76],\"widthMode\":\"percentage\"},{\"type\":\"p\",\"children\":[{\"text\":\"\"}],\"id\":\"V5nzsFRz4FwRJ-s-zII4-\"}]"}},"46714":{"categoryId":607,"weight":60,"type":"page","extension":"","pid":18737,"id":46714,"lang":"en","title":"Speech-to-Text Service","pdfUrl":"","docType":"default","children":[],"firstReleaseTime":"2022-05-18 01:15:02","recentReleaseTime":"2022-05-18 01:15:02","content":{"title":"Speech-to-Text Service","body":"
This document describes how to integrating with and debug the GME APIs for macOS.
Note:
This document applies to GME SDK version 2.9.

Key Considerations for Using GME

GME provides two services: Voice chat service and voice messaging and speech-to-text service, both of which rely on key APIs such as Init and Poll.
Note:
There is a default call rate limit for speech-to-text APIs. For more information on how calls are billed within the limit, see Purchase Guide. If you want to increase the limit or learn more about how excessive calls are billed, submit a ticket.
Non-streaming speech-to-text API SpeechToText(): There can be up to 10 concurrent requests per account.
Streaming speech-to-text API StartRecordingWithStreamingRecognition(): There can be up to 50 concurrent requests per account.
Real-time streaming speech-to-text API StartRealTimeASR(): There can be up to 50 concurrent requests per account.
Note on Init API
If you need to use voice chat and voice messaging services at the same time, you only need to call Init API once.\nThe billing will not start after initialization. Receiving or sending a voice message in speech-to-text service is counted as a voice message DAU.

\"image\"



Directions

Important notes

Configure your project before using GME; otherwise, the SDK will not take effect.
After a GME API is called successfully, QAVError.OK will be returned with the value being 0.
GME APIs should be called in the same thread.
The Poll API should be called periodically for GME to trigger event callbacks.
For detailed error code, see Error Codes.

Core APIs

Before the initialization, the SDK is in the uninitialized status, and you need to initialize it through the Init API before you can use the voice chat and speech-to-text services.
Call the Init API before calling any APIs of GME.
If you have any questions when using the service, see General.
API
Description
InitEngine
Initializes GME
Poll
Triggers event callback
Pause
Pauses the system
Resume
Resumes the system
Uninit
Uninitializes GME
SetDefaultAudienceAudioCategory
Sets audio playback in background on device

Imported header files

#import "GMESDK/TMGEngine.h"
#import "GMESDK/QAVAuthBuffer.h"

Getting singleton

To use the voice feature, get the ITMGContext object first.
+ (ITMGContext*) GetInstance;

Sample code

//TMGSampleViewController.m
ITMGContext* _context = [ITMGContext GetInstance];

Setting callbacks

The API class uses the Delegate method to send callback notifications to the application. Register the callback function to the SDK for receiving callback messages.

Sample code

ITMGDelegate is used for declaration.
@interface TMGDemoViewController ()<ITMGDelegate>{}
ITMGDelegate < NSObject >

//TMGSampleViewController.m
ITMGContext* _context = [ITMGContext GetInstance];
_context.TMGDelegate = [DispatchCenter getInstance];
The API callback messages is processed in OnEvent. For the message type, see ITMG_MAIN_EVENT_TYPE. The message content is a dictionary for parsing the API callback contents.

Function prototype

- (void)OnEvent:(ITMG_MAIN_EVENT_TYPE)eventType data:(NSDictionary*)data;

Sample code

//TMGRealTimeViewController.m
TMGRealTimeViewController ()< ITMGDelegate >


- (void)OnEvent:(ITMG_MAIN_EVENT_TYPE)eventType data:(NSDictionary *)data {
NSString *log = [NSString stringWithFormat:@"OnEvent:%d,data:%@", (int)eventType, data];
[self showLog:log];
NSLog(@"====%@====", log);
switch (eventType) {
// Step 6/11 : Perform the enter room event
case ITMG_MAIN_EVENT_TYPE_ENTER_ROOM: {
int result = ((NSNumber *)[data objectForKey:@"result"]).intValue;
NSString *error_info = [data objectForKey:@"error_info"];

[self showLog:[NSString stringWithFormat:@"OnEnterRoomComplete:%d msg:(%@)", result, error_info]];

if (result == 0) {
[self updateStatusEnterRoom:YES];
}
}
break;
}
}

// Refer to DispatchCenter.h and DispatchCenter.m

Initializing SDK

This API is used to initialize the GME service. It is recommended to call it when initializing the application. No fee is incurred for calling this API.
For more information on how to get the sdkAppID parameter, see Activating Services.
The openID uniquely identifies a user with the rules stipulated by the application developer and unique in the application (currently, only INT64 is supported).
Note:
The Init API must be called in the same thread with other APIs. It is recommended to call all APIs in the main thread.

Function prototype

-(int)InitEngine:(NSString*)sdkAppID openID:(NSString*)openID;
Parameter
Type
Description
sdkAppId
String
AppId provided by the GME service from the Tencent Cloud console
OpenId
String
OpenId can only be in Int64 type, which is passed after being converted to a string.
Returned Value
Description
QAV_OK= 0
Initialized SDK successfully.
QAV_ERR_SDK_NOT_FULL_UPDATE= 7015
Checks whether the SDK file is complete. It is recommended to delete it and then import the SDK again.
The returned value AV_ERR_SDK_NOT_FULL_UPDATE is only a reminder but will not cause an initialization failure.
If this error is reported during integration, please check the integrity and version of the SDK file as prompted.
If this error is returned after executable file export, please ignore it and try to avoid displaying it in the UI.

Sample code

_openId = _userIdText.text;
_appId = _appIdText.text;
[[ITMGContext GetInstance] InitEngine:SDKAPPID openID:_openId];

Triggering event callback

Event callbacks can be triggered by periodically calling the Poll API in update. The Poll API should be called periodically for GME to trigger event callbacks; otherwise, the entire SDK service will run exceptionally.\nFor more information, see the EnginePollHelper.m file in Demo.
Note:
The Poll API must be called periodically and in the main thread to avoid abnormal API callbacks.

Function prototype

-(void)Poll;


Sample code

[[ITMGContext GetInstance] Poll];


Pausing the system

When a Pause event occurs in the system, the engine should also be notified for pause.\nIf you need to pause the audio when switching to the background, you can call the Pause API in the listening code used to switch to the background, and call the Resume API in the listening event used to resume the foreground.

Function prototype

-(QAVResult)Pause;


Resuming the system

When a Resume event occurs in the system, the engine should also be notified for resumption. The Resume API only supports resuming voice chat.

Function prototype

-(QAVResult)Resume;


Uninitializing SDK

This API is used to uninitialize the SDK to make it uninitialized. Switching accounts requires uninitialization.

Function prototype

-(int)Uninit;


Sample code

[[ITMGContext GetInstance] Uninit];


Voice Messaging and Speech-to-Text

Voice messaging refers to recording and sending a voice message. At the same time, the voice message can be converted to text and translated, as shown below:

\"\"


Note:
It is recommended to use the streaming speech-to-text service.
You do not need to enter a voice chat room when using the voice message service.

Voice messaging and speech-to-text conversion flowchart


\"\"



Integrating Voice Messaging and Speech-to-Text Service

Voice messaging and speech-to-text APIs

API
Description
ApplyPTTAuthbuffer
Initializes authentication
SetMaxMessageLength
Specifies the maximum length of voice message
StartRecording
Starts recording
StartRecordingWithStreamingRecognition
Starts streaming recording
PauseRecording
Pauses recording
ResumeRecording
Resumes recording
StopRecording
Stops recording
CancelRecording
Cancels recording
GetMicLevel
Gets the real-time mic volume
SetMicVolume
Sets the recording volume
GetMicVolume
Gets the recording volume
GetSpeakerLevel
Gets the real-time speaker volume
SetSpeakerVolume
Sets the playback volume
GetSpeakerVolume
Gets the playback volume
UploadRecordedFile
Uploads the audio file
DownloadRecordedFile
Downloads the audio file
PlayRecordedFile
Plays back audio
StopPlayFile
Stops playing back audio
GetFileSize
Gets the audio file size
GetVoiceFileDuration
Gets the audio file duration
SpeechToText
Converts speech to text
Maximum recording duration
The maximum recording duration of a voice message is 58 seconds by default, and the minimum recording duration cannot be less than 1 second. If you want to customize the recording duration, for example, to modify the maximum recording duration to 10 seconds, please call the SetMaxMessageLength API to set it after initialization.

Initializing the SDK

Before the initialization, the SDK is in the uninitialized status, and you need to initialize it through the Init API before you can use the voice chat and voice message services.
If you have any questions when using the service, see Speech-to-text Conversion.

Authentication information

Generate AuthBuffer for encryption and authentication of relevant features. For release in the production environment, please use the backend deployment key as detailed in Authentication Key.
To get authentication for voice message and speech-to-text, the room ID parameter must be set to null.

Function prototype

@interface QAVAuthBuffer : NSObject
+ (NSData*) GenAuthBuffer:(unsigned int)appId roomId:(NSString*)roomId openID:(NSString*)openID key:(NSString*)key;
+ @end

Parameter
Type
Description
appId
int
AppId from the Tencent Cloud console.
roomId
NSString
Enter null.
openID
NSString
User ID, which is the same as openID during initialization.
key
NSString
Permission key from the Tencent Cloud console.

Sample code

#import "GMESDK/QAVAuthBuffer.h"
NSData* authBuffer = [QAVAuthBuffer GenAuthBuffer:SDKAPPID3RD.intValue roomId:_roomId openID:_openId key:AUTHKEY];


Initializing authentication

Call authentication initialization after initializing the SDK. For more information on how to get the authBuffer, see genAuthBuffer (the voice chat authentication information API).

Function prototype

public abstract int ApplyPTTAuthbuffer(byte[] authBuffer);

Parameter
Type
Description
authBuffer
NSData*
Authentication

Sample code

[[[ITMGContext GetInstance]GetPTT]ApplyPTTAuthbuffer:(NSData *)authBuffer];


Streaming Speech Recognition

Starting streaming speech recognition

This API is used to start streaming speech recognition. Text obtained from speech-to-text conversion will be returned in real time in its callback. It can specify a language for recognition or translate the information recognized in speech into a specified language and return the translation. To stop recording, call StopRecording. The callback will be returned after the recording is stopped.

Function prototype

-(int)StartRecordingWithStreamingRecognition:(NSString *)filePath;
-(int)StartRecordingWithStreamingRecognition:(NSString *)filePath language:(NSString*)speechLanguage translatelanguage:(NSString*)translateLanguage;

Parameter
Type
Description
filePath
String
Path of stored audio file
speechLanguage
String
The language in which the audio file is to be converted to text. For parameters, see Language Parameter Reference List
translateLanguage
String
The language into which the audio file will be translated. For parameters, see Language Parameter Reference List (This parameter is currently unavailable. Enter the same value as that of speechLanguage)

Sample code

recordfilePath = [docDir stringByAppendingFormat:@"/test_%d.ptt",index++];
[[[ITMGContext GetInstance] GetPTT] StartRecordingWithStreamingRecognition:recordfilePath language:@"cmn-Hans-CN"];


Callback for streaming speech recognition

After streaming speech recognition is started, you need to listen for callback messages in the callback function onEvent. Event messages are divided into:
ITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRECOGNITION_COMPLETE returns text after the recording is stopped and the recognition is completed, which is equivalent to returning the recognized text after a paragraph of speech.
ITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRECOGNITION_IS_RUNNING returns the recognized text in real-time during the recording, which is equivalent to returning the recognized text while speaking.
The event message will be identified in the OnEvent function based on the actual needs. The passed parameters include the following four messages.
Message Name
Description
result
A return code for judging whether the streaming speech recognition is successful.
text
Text converted from speech
file_path
Local path of stored recording file
file_id
Backend URL address of recording file, which will be retained for 90 days. fileid is fixed at http://gme-v2-
Note:
The file_id is empty when the 'ITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRecognition_IS_RUNNING' message is listened.

Error codes

Error Code
Description
Suggested Solution
32775
Streaming speech-to-text conversion failed, but recording succeeded.
Call the UploadRecordedFile API to upload the recording file and then call the SpeechToText API to perform speech-to-text conversion.
32777
Streaming speech-to-text conversion failed, but recording and upload succeeded.
The message returned contains a backend URL after successful upload. Call the SpeechToText API to perform speech-to-text conversion.
32786
Streaming speech-to-text conversion failed.
During streaming recording, wait for the execution result of the streaming recording API to return.

Sample code

- (void)OnEvent:(ITMG_MAIN_EVENT_TYPE)eventType data:(NSDictionary*)data
{
NSNumber *number = [data objectForKey:@"result"];
switch (eventType)
{
case ITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRECOGNITION_COMPLETE:
{
if (data != NULL &&[[data objectForKey:@"result"] intValue]== 0)
{
donwLoadUrlPath = data[@"file_id"];

recordfilePath = [data objectForKey:@"file_path"];
_localFileField.text = recordfilePath;

_donwloadUrlField.text = [data objectForKey:@"file_id"] ;

UITextField *_audiotoTextField =(UITextField*)objc_getAssociatedObject(self, [PTT_AUDIO_TO_TEXT UTF8String]);
_audiotoTextField.text = [data objectForKey:@"text"] ;
}

}
break;
}
}\t


Voice Message Recording

The recording process is as follows: start recording -> stop recording -> return recording callback -> start the next recording.

Specifying the maximum duration of voice message

This API is used to specify the maximum duration of a voice message, which can be up to 58 seconds.

Function prototype

-(QAVResult)SetMaxMessageLength:(int)msTime

Parameter
Type
Description
msTime
int
Audio duration in ms. Value range: 1000 < msTime <= 58000

Sample code

[[[ITMGContext GetInstance]GetPTT]SetMaxMessageLength:(int)msTime];


Starting recording

This API is used to start recording. The recording file must be uploaded first before you can perform operations such as speech-to-text conversion. To stop recording, call StopRecording.

Function prototype

-(int)StartRecording:(NSString*)filePath;

Parameter
Type
Description
filePath
NSString
Path of stored audio file

Sample code

recordfilePath =[docDir stringByAppendingFormat:@"/test_%d.ptt",index++];
[[[ITMGContext GetInstance]GetPTT]StartRecording:recordfilePath];


Stopping recording

This API is used to stop recording. It is async, and a callback for recording completion will be returned after recording stops. A recording file will be available only after recording succeeds.

Function prototype

-(QAVResult)StopRecording;


Sample code

[[[ITMGContext GetInstance]GetPTT]StopRecording];


Callback for recording start

A callback will be executed through a delegate function to pass a message when recording is completed.
To stop recording, call StopRecording. The callback for recording start will be returned after the recording is stopped.
The callback function OnEvent will be called after recording is started. The event message ITMG_MAIN_EVNET_TYPE_PTT_RECORD_COMPLETE will be returned, which will be identified in the OnEvent function.\nThe passed parameter includes result and file_path.

Error codes

Error Code Value
Cause
Suggested Solution
4097
Parameter is empty.
Check whether the API parameters in the code are correct.
4098
Initialization error.
Check whether the device is being used, whether the permissions are normal, and whether the initialization is normal.
4099
Recording is in progress.
Ensure that the SDK recording feature is used at the right time.
4100
Audio data is not captured.
Check whether the mic is working properly.
4101
An error occurred while accessing the file during recording.
Ensure the existence of the file and the validity of the file path.
4102
The mic is not authorized.
Mic permission is required for using the SDK. To add the permission, see the SDK project configuration document for the corresponding engine or platform.
4103
The recording duration is too short.
The recording duration should be in ms and longer than 1,000 ms.
4104
No recording operation is started.
Check whether the recording starting API has been called.

Sample code

-(void)OnEvent:(ITMG_MAIN_EVENT_TYPE)eventType data:(NSDictionary *)data{
NSLog(@"OnEvent:%lu,data:%@",(unsigned long)eventType,data);
switch (eventType) {
case ITMG_MAIN_EVNET_TYPE_PTT_RECORD_COMPLETE:
{
//Recording callback
}
break;
}
}


Pausing recording

This API is used to pause recording. If you want to resume recording, please call the ResumeRecording API.

Function prototype

-(int)PauseRecording;


Sample code

[[[ITMGContext GetInstance]GetPTT]PauseRecording;


Resuming recording

This API is used to resume recording.

Function prototype

-(int)ResumeRecording;


Sample code

[[[ITMGContext GetInstance]GetPTT]ResumeRecording;


Canceling recording

This API is used to cancel recording. There is no callback after cancellation.

Function prototype

-(QAVResult)CancelRecording;


Sample code

[[[ITMGContext GetInstance]GetPTT]CancelRecording];


Getting the real-time mic volume of voice message

This API is used to get the real-time mic volume. An int-type value will be returned. Value range: 0-200.
Note:
This API is different from the voice chat API and is in ITMGPTT.

Function prototype

-(QAVResult)GetMicLevel;


Sample code

[[[ITMGContext GetInstance]GetPTT]GetMicLevel];


Setting the recording volume of voice message

This API is used to set the recording volume of voice message. Value range: 0-200.
Note:
This API is different from the voice chat API and is in ITMGPTT.

Function prototype

-(QAVResult)SetMicVolume:(int) volume;


Sample code

[[[ITMGContext GetInstance]GetPTT]SetMicVolume:100];


Getting the recording volume of voice message

This API is used to get the recording volume of voice message. An int-type value will be returned. Value range: 0-200.
Note:
This API is different from the voice chat API and is in ITMGPTT.

Function prototype

-(int)GetMicVolume;


Sample code

[[[ITMGContext GetInstance]GetPTT]GetMicVolume];


Getting the real-time speaker volume of voice message

This API is used to get the real-time speaker volume. An int-type value will be returned. Value range: 0-200.
Note:
This API is different from the voice chat API and is in ITMGPTT.

Function prototype

-(QAVResult)GetSpeakerLevel;


Sample code

[[[ITMGContext GetInstance]GetPTT]GetSpeakerLevel];


Setting the playback volume of voice message

This API is used to set the playback volume of voice messaging. Value range: 0-200.
Note:
This API is different from the voice chat API and is in ITMGPTT.

Function prototype

-(QAVResult)SetSpeakerVolume:(int)volume;


Sample code

[[[ITMGContext GetInstance]GetPTT]SetSpeakerVolume:100];


Getting the playback volume of voice message

This API is used to get the playback volume of voice messaging. An int-type value will be returned. Value range: 0-200.
Note:
This API is different from the voice chat API and is in ITMGPTT.

Function prototype

-(int)GetSpeakerVolume;


Sample code

[[[ITMGContext GetInstance]GetPTT]GetSpeakerVolume];


Voice Message Playback

Playing back audio

This API is used to play back audio.

Function prototype

-(int)PlayRecordedFile:(NSString*)filePath;
-(int)PlayRecordedFile:(NSString*)filePath VoiceType:(ITMG_VOICE_TYPE) type;

Parameter
Type
Description
downloadFilePath
NSString
Local audio file path
type
ITMG_VOICE_TYPE
Voice changer type. For more information, see Voice Changing Effects.

Error codes

Error Code Value
Cause
Suggested Solution
20485
Playback is not started.
Ensure the existence of the file and the validity of the file path.

Sample code

[[[ITMGContext GetInstance]GetPTT]PlayRecordedFile:path];


Callback for audio playback

After the audio is played back, the event message ITMG_MAIN_EVNET_TYPE_PTT_PLAY_COMPLETE will be returned, which will be identified in the OnEvent function.\nThe passed parameter includes result and file_path.

Error codes

Error Code Value
Cause
Suggested Solution
20481
Initialization error.
Check whether the device is being used, whether the permissions are normal, and whether the initialization is normal.
20482
During playback, the client tried to interrupt and play back the next one but failed (which should succeed normally).
Check whether the code logic is correct.
20483
Parameter is empty.
Check whether the API parameters in the code are correct.
20484
Internal error.
An error occurred while initializing the player. This error code is generally caused by failure in decoding, and the error should be located with the aid of logs.

Sample code

-(void)OnEvent:(ITMG_MAIN_EVENT_TYPE)eventType data:(NSDictionary *)data{
NSLog(@"OnEvent:%lu,data:%@",(unsigned long)eventType,data);
switch (eventType) {
case ITMG_MAIN_EVNET_TYPE_PTT_PLAY_COMPLETE:
{
// Callback for audio playback
}
break;
}
}


Stopping audio playback

This API is used to stop audio playback. There will be a callback for playback completion when the playback stops.

Function prototype

-(int)StopPlayFile;


Sample code

[[[ITMGContext GetInstance]GetPTT]StopPlayFile];


Getting audio file size

This API is used to get the size of an audio file.

Function prototype

-(int)GetFileSize:(NSString*)filePath;

Parameter
Type
Description
filePath
NSString
Path of audio file, which is a local path.

Sample code

[[[ITMGContext GetInstance]GetPTT]GetFileSize:path];


Getting audio file duration

This API is used to get the duration of an audio file in milliseconds.

Function prototype

-(int)GetVoiceFileDuration:(NSString*)filePath;

Parameter
Type
Description
filePath
NSString
Path of audio file, which is a local path.

Sample code

[[[ITMGContext GetInstance]GetPTT]GetVoiceFileDuration:path];


Voice Message Upload and Download

Uploading an audio file

This API is used to upload an audio file.

Function prototype

-(void)UploadRecordedFile:(NSString*)filePath;

Parameter
Type
Description
filePath
NSString
Path of uploaded audio file, which is a local path.

Sample code

[[[ITMGContext GetInstance]GetPTT]UploadRecordedFile:path];


Callback for audio file upload completion

After the audio file is uploaded, the event message ITMG_MAIN_EVNET_TYPE_PTT_UPLOAD_COMPLETE will be returned, which will be identified in the OnEvent function.\nThe passed parameters include result, file_path, and file_id.

Error codes

Error Code Value
Cause
Suggested Solution
8193
An error occurred while accessing the file during upload.
Ensure the existence of the file and the validity of the file path.
8194
Signature verification failed.
Check whether the authentication key is correct and whether the voice message and speech-to-text feature is initialized.
8195
A network error occurred.
Check whether the device can access the internet.
8196
The network failed while getting the upload parameters.
Check whether the authentication is correct and whether the device can access the internet.
8197
The packet returned during the process of getting the upload parameters is empty.
Check whether the authentication is correct and whether the device network can normally access the internet.
8198
Failed to decode the packet returned during the process of getting the upload parameters.
Check whether the authentication is correct and whether the device can access the internet.
8200
No appinfo is set.
Check whether the apply API is called or whether the input parameters are empty.

Sample code

-(void)OnEvent:(ITMG_MAIN_EVENT_TYPE)eventType data:(NSDictionary *)data{
NSLog(@"OnEvent:%lu,data:%@",(unsigned long)eventType,data);
switch (eventType) {
case ITMG_MAIN_EVNET_TYPE_PTT_UPLOAD_COMPLETE:
{
if (data != NULL &&[[data objectForKey:@"result"] intValue]== 0)
{
_donwloadUrlField.text = [data objectForKey:@"file_id"] ;
donwLoadUrlPath = [data objectForKey:@"file_id"] ;
}
}
break;
}
}


Downloading the audio file

This API is used to download an audio file.

Function prototype

-(void)DownloadRecordedFile:(NSString*)fileId downloadFilePath:(NSString*)downloadFilePath

Parameter
Type
Description
fileID
NSString
File URL path
downloadFilePath
NSString
Local path of saved file

Sample code

[[[ITMGContext GetInstance]GetPTT]DownloadRecordedFile:fileIdpath downloadFilePath:path];


Callback for audio file download completion

After the audio file is downloaded, the event message ITMG_MAIN_EVNET_TYPE_PTT_DOWNLOAD_COMPLETE will be returned, which will be identified in the OnEvent function.\nThe passed parameters include result, file_path, and file_id.

Error codes

Error Code Value
Cause
Suggested Solution
12289
An error occurred while accessing the file during download.
Check whether the file path is valid.
12290
Signature verification failed.
Check whether the authentication key is correct and whether the voice message and speech-to-text feature is initialized.
12291
Network storage system exception
The server failed to get the audio file. Check whether the API parameter fileid is correct, whether the network is normal, and whether the file exists in COS.
12292
Server file system error.
Check whether the device can access the internet and whether the file exists on the server.
12293
The HTTP network failed during the process of getting the download parameters.
Check whether the device can access the internet.
12294
The packet returned during the process of getting the download parameters is empty.
Check whether the device can access the internet.
12295
Failed to decode the packet returned during the process of getting the download parameters.
Check whether the device can access the internet.
12297
No appinfo is set.
Check whether the authentication key is correct and whether the voice message and speech-to-text feature is initialized.

Sample code

-(void)OnEvent:(ITMG_MAIN_EVENT_TYPE)eventType data:(NSDictionary *)data{
NSLog(@"OnEvent:%lu,data:%@",(unsigned long)eventType,data);
switch (eventType) {
case ITMG_MAIN_EVNET_TYPE_PTT_DOWNLOAD_COMPLETE:
{
if (data != NULL &&[[data objectForKey:@"result"] intValue]== 0)
{
_audiofileToPlayField.text = [data objectForKey:@"file_path"] ;
donwLoadLocalPath = [data objectForKey:@"file_path"];
}
else
{
donwLoadLocalPath = NULL;
}
}
break;
}
}


Speech-to-Text Service

Converting audio file to text

This API is used to convert a specified audio file to text.

Function prototype

-(void)SpeechToText:(NSString*)fileID;

Parameter
Type
Description
fileID
NSString
URL of audio file

Sample code

[[[ITMGContext GetInstance]GetPTT]SpeechToText:fileID];


Translating audio file into text in specified language

This API can specify a language for recognition or translate the information recognized in speech into a specified language and return the translation.

Function prototype

-(void)SpeechToText:(NSString*)fileID (NSString*)speechLanguage (NSString*)translateLanguage;

Parameter
Type
Description
fileID
NSString*
URL of audio file, which will be retained on the server for 90 days
speechLanguage
NSString*
The language in which the audio file is to be converted to text. For parameters, see Language Parameter Reference List.
translateLanguage
NSString*
The language into which the audio file will be translated. For parameters, see Language Parameter Reference List. This parameter is currently unavailable. Enter the same value as that of speechLanguage.

Sample code

[[[ITMGContext GetInstance]GetPTT]SpeechToText:fileID speechLanguage:"cmn-Hans-CN" translateLanguage:"cmn-Hans-CN"];


Callback for recognition

After the specified audio file is converted to text, the event message ITMG_MAIN_EVNET_TYPE_PTT_SPEECH2TEXT_COMPLETE will be returned, which will be identified in the OnEvent function.\nThe passed parameters include result, file_path and text (recognized text).

Error codes

Error Code Value
Cause
Suggested Solution
32769
An internal error occurred.
Analyze logs, get the actual error code returned from the backend to the client, and ask backend personnel for assistance.
32770
Network failed.
Check whether the device can access the internet.
32772
Failed to decode the returned packet.
Analyze logs, get the actual error code returned from the backend to the client, and ask backend personnel for assistance.
32774
No appinfo is set.
Check whether the authentication key is correct and whether the voice message and speech-to-text feature is initialized.
32776
authbuffer check failed.
Check whether authbuffer is correct.
32784
Incorrect speech-to-text conversion parameter.
Check whether the API parameter fileid in the code is empty.
32785
Speech-to-text translation returned an error.
Error with the backend of voice message and speech-to-text feature. Analyze logs, get the actual error code returned from the backend to the client, and ask backend personnel for assistance.

Sample code

-(void)OnEvent:(ITMG_MAIN_EVENT_TYPE)eventType data:(NSDictionary *)data{
NSLog(@"OnEvent:%lu,data:%@",(unsigned long)eventType,data);
switch (eventType) {
case ITMG_MAIN_EVNET_TYPE_PTT_SPEECH2TEXT_COMPLETE:
{
if (data != NULL &&[[data objectForKey:@"result"] intValue]== 0)
{
UITextField *_audiotoTextField =(UITextField*)objc_getAssociatedObject(self, [PTT_AUDIO_TO_TEXT UTF8String]);
_audiotoTextField.text = [data objectForKey:@"text"] ;
}
}
break;
}
}


Advanced APIs

Getting version number

This API is used to get the SDK version number for analysis.

Function prototype

-(NSString*)GetSDKVersion;


Sample code

[[ITMGContext GetInstance] GetSDKVersion];


Checking mic permission

This API is used to return the mic permission status.

Function prototype

-(ITMG_RECORD_PERMISSION)CheckMicPermission;


Parameter description

Parameter
Value
Description
ITMG_PERMISSION_GRANTED
0
Mic permission is granted.
ITMG_PERMISSION_Denied
1
Mic is disabled.
ITMG_PERMISSION_NotDetermined
2
No authorization box has been popped up to request the permission.
ITMG_PERMISSION_ERROR
3
An error occurred while calling the API.

Sample code

[[ITMGContext GetInstance] CheckMicPermission];


Setting log printing level

This API is used to set the level of logs to be printed, and needs to be called before the initialization. It is recommended to keep the default level.

Function prototype

-(void)SetLogLevel:(ITMG_LOG_LEVEL)levelWrite (ITMG_LOG_LEVEL)levelPrint;


Parameter description

Parameter
Type
Description
levelWrite
ITMG_LOG_LEVEL
Sets the level of logs to be written. TMG_LOG_LEVEL_NONE indicates not to write. Default value: TMG_LOG_LEVEL_INFO
levelPrint
ITMG_LOG_LEVEL
Sets the level of logs to be printed. TMG_LOG_LEVEL_NONE indicates not to print. Default value: TMG_LOG_LEVEL_ERROR

ITMG_LOG_LEVEL

ITMG_LOG_LEVEL
Description
TMG_LOG_LEVEL_NONE
Does not print logs
TMG_LOG_LEVEL_ERROR
Prints error logs (default)
TMG_LOG_LEVEL_INFO
Prints info logs
TMG_LOG_LEVEL_DEBUG
Prints debug logs
TMG_LOG_LEVEL_VERBOSE
Prints verbose logs

Sample code

[[ITMGContext GetInstance] SetLogLevel:TMG_LOG_LEVEL_INFO TMG_LOG_LEVEL_INFO];


Setting the log printing path

. This API is used to set the log printing path, which is /Users/username/Library/Containers/xxx.xxx.xxx/Data/Documents by default.. Call before Init.

Function prototype

-(void)SetLogPath:(NSString*)logDir;

Parameter
Type
Description
logDir
NSString
Path

Sample code

[[ITMGContext GetInstance] SetLogPath:Path];


Callback Messages

Message list

Message
Description
ITMG_MAIN_EVNET_TYPE_PTT_RECORD_COMPLETE
Indicates that PTT recording is completed.
ITMG_MAIN_EVNET_TYPE_PTT_UPLOAD_COMPLETE
Indicates that PTT upload is completed.
ITMG_MAIN_EVNET_TYPE_PTT_DOWNLOAD_COMPLETE
Indicates that PTT download is completed.
ITMG_MAIN_EVNET_TYPE_PTT_PLAY_COMPLETE
Indicates that PTT playback is completed.
ITMG_MAIN_EVNET_TYPE_PTT_SPEECH2TEXT_COMPLETE
Indicates that speech-to-text conversion is completed.

Data list

Message
Data
Sample
ITMG_MAIN_EVNET_TYPE_PTT_RECORD_COMPLETE
result; file_path
{"file_path":"","result":0}
ITMG_MAIN_EVNET_TYPE_PTT_UPLOAD_COMPLETE
result; file_path;file_id
{"file_id":"","file_path":"","result":0}
ITMG_MAIN_EVNET_TYPE_PTT_DOWNLOAD_COMPLETE
result; file_path;file_id
{"file_id":"","file_path":"","result":0}
ITMG_MAIN_EVNET_TYPE_PTT_PLAY_COMPLETE
result; file_path
{"file_path":"","result":0}
ITMG_MAIN_EVNET_TYPE_PTT_SPEECH2TEXT_COMPLETE
result; text;file_id
{"file_id":"","text":"","result":0}
ITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRECOGNITION_COMPLETE
result; file_path; text;file_id
{"file_id":"","file_path":","text":"","result":0}

","recentReleaseTime":"2024-01-18 15:13:51","slate":"[{\"id\":\"q5cmSEl3grBr9tF3EszqB\",\"children\":[{\"text\":\"This document describes how to integrating with and debug the GME APIs for macOS.\"}],\"type\":\"p\"},{\"id\":\"F_jHsFF4DRIRpNSeVgWt7\",\"children\":[{\"id\":\"6PqN_JFGg051U41DawfRK\",\"children\":[{\"b\":1,\"color\":\"inherit\",\"text\":\"Note: \"}],\"type\":\"p\"},{\"id\":\"SU5JmgQI-qr8f8xrDAZJ5\",\"children\":[{\"text\":\"This document applies to GME SDK version 2.9.\"}],\"type\":\"p\"}],\"hintType\":\"info\",\"type\":\"hint\"},{\"id\":\"q3cXv-r_zEysZeY5bbaSu\",\"children\":[{\"text\":\"Key Considerations for Using GME\"}],\"nodeId\":\"key-considerations-for-using-gme\",\"type\":\"h2\"},{\"id\":\"02ROSNSMATEbzTKSkOzl6\",\"children\":[{\"text\":\"GME provides two services: Voice chat service and voice messaging and speech-to-text service, both of which rely on key APIs such as Init and Poll.\"}],\"type\":\"p\"},{\"id\":\"2KYx6CiqTeIfwBVGQLqWL\",\"children\":[{\"id\":\"PIh3cCWMAEZNSbu3iuT2s\",\"children\":[{\"b\":1,\"color\":\"#04C8DC\",\"text\":\"Note: \"}],\"type\":\"p\"},{\"id\":\"CAqNmAZEb-fdnGIO2Kmho\",\"children\":[{\"text\":\"There is a default call rate limit for speech-to-text APIs. For more information on how calls are billed within the limit, see \"},{\"id\":\"5N51-en3vjr0updumXNEf\",\"children\":[{\"text\":\"Purchase Guide\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://intl.cloud.tencent.com/document/product/607/50009\",\"props\":{\"type\":\"link\",\"url\":\"https://intl.cloud.tencent.com/document/product/607/50009\"},\"type\":\"ref\"},{\"text\":\". If you want to increase the limit or learn more about how excessive calls are billed, \"},{\"id\":\"jhXD6r3i1gCNF1COzHWBx\",\"children\":[{\"text\":\"submit a ticket\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://console.tencentcloud.com/workorder/category?level1_id=438&level2_id=445&source=0&data_title=%E6%B8%B8%E6%88%8F%E5%A4%9A%E5%AA%92%E4%BD%93%E5%BC%95%E6%93%8EGME&step=1\",\"props\":{\"type\":\"link\",\"url\":\"https://console.tencentcloud.com/workorder/category?level1_id=438&level2_id=445&source=0&data_title=%E6%B8%B8%E6%88%8F%E5%A4%9A%E5%AA%92%E4%BD%93%E5%BC%95%E6%93%8EGME&step=1\"},\"type\":\"ref\"},{\"text\":\".\"}],\"type\":\"p\"},{\"id\":\"-S5TL784YX1TVanilEi_-\",\"children\":[{\"text\":\"Non-streaming speech-to-text API \"},{\"b\":1,\"i\":1,\"text\":\"SpeechToText()\"},{\"text\":\": There can be up to 10 concurrent requests per account.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"_yhfioAhcjUvrmvwlD3nv\",\"children\":[{\"text\":\"Streaming speech-to-text API \"},{\"b\":1,\"i\":1,\"text\":\"StartRecordingWithStreamingRecognition()\"},{\"text\":\": There can be up to 50 concurrent requests per account.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"ikjaGK5t00LYZmwMac4wD\",\"children\":[{\"text\":\"Real-time streaming speech-to-text API \"},{\"b\":1,\"i\":1,\"text\":\"StartRealTimeASR()\"},{\"text\":\": There can be up to 50 concurrent requests per account.\"}],\"start\":false,\"type\":\"uli\"}],\"hintType\":\"alert\",\"type\":\"hint\"},{\"id\":\"RQdmgnX80iEEchOX3X2hX\",\"children\":[{\"id\":\"I-3tPffqhtDhEMNp6OSpB\",\"children\":[{\"b\":1,\"color\":\"#04C8DC\",\"text\":\"Note on Init API\"}],\"type\":\"p\"},{\"id\":\"95hjZADX9zC3W-tnJDCLs\",\"children\":[{\"text\":\"If you need to use voice chat and voice messaging services at the same time, \"},{\"b\":1,\"text\":\"you only need to call \"},{\"b\":1,\"code\":1,\"text\":\"Init\"},{\"b\":1,\"text\":\" API once\"},{\"text\":\".\\nThe billing will not start after initialization. Receiving or sending a voice message in speech-to-text service is counted as a voice message DAU.\"}],\"type\":\"p\"}],\"hintType\":\"alert\",\"type\":\"hint\"},{\"type\":\"p\",\"children\":[{\"text\":\"\"},{\"id\":\"3JGZmkD2GgRQi6v6qZK5Y\",\"alt\":\"image\",\"children\":[{\"text\":\"\"}],\"inline\":true,\"type\":\"image\",\"url\":\"https://cloudcache.intl.tencent-cloud.com/cms/backend-cms/e2104cf4b34c11eeb2a1525400170219.png\",\"naturalSize\":[674,427],\"size\":[674,427]},{\"text\":\"\"}],\"id\":\"EXeb2AuZOsVQWQMYkru2P\"},{\"id\":\"dqf9DlsAc1cpbZE53r0dI\",\"children\":[{\"text\":\"Directions\"}],\"nodeId\":\"directions\",\"type\":\"h3\"},{\"type\":\"oli\",\"children\":[{\"text\":\"\"},{\"type\":\"ref\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/46714?!editLang=en&!preview#Init\"},\"children\":[{\"text\":\"Initializing GME, API: Init\"}],\"id\":\"WKgc2HgWOoefE725cS8dg\"},{\"text\":\"\"}],\"id\":\"8b6AEHo7Br1GAc0MasRax\"},{\"type\":\"oli\",\"children\":[{\"text\":\"\"},{\"type\":\"ref\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/46714?!editLang=en&!preview#Poll\"},\"children\":[{\"text\":\"Calling Poll periodically to trigger event callbacks, API: Poll\"}],\"id\":\"r-ikEygMcvmVWhwxbBT8m\"},{\"text\":\"\"}],\"id\":\"gtchwnE3MM8NxozQKL6-X\"},{\"type\":\"oli\",\"children\":[{\"text\":\"\"},{\"type\":\"ref\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/46714?!editLang=en&!preview#ApplyPtt\"},\"children\":[{\"text\":\"Initializing authentication, API: ApplyPTTAuthbuffer\"}],\"id\":\"ecsa2kglk4RhPrHghHXDx\"},{\"text\":\"\"}],\"id\":\"4DjmMy5y7N8-RrtYiVe6k\"},{\"type\":\"oli\",\"children\":[{\"text\":\"\"},{\"type\":\"ref\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/46714?!editLang=en&!preview#StartRWSR\"},\"children\":[{\"text\":\"Starting streaming speech recognition, API: StartRecordingWithStreamingRecognition\"}],\"id\":\"twXGOPoZeB3VQ_mKDu2S1\"},{\"text\":\"\"}],\"id\":\"kc6GacB2si-xIpyeqEnh-\"},{\"type\":\"oli\",\"children\":[{\"text\":\"\"},{\"type\":\"ref\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/46714?!editLang=en&!preview#Stop\"},\"children\":[{\"text\":\"Stop recording, API: StopRecording\"}],\"id\":\"_TLN1TqBgUU7L6IKVtFN7\"},{\"text\":\"\"}],\"id\":\"UlLSemqXe2ho69QfX4Ec-\"},{\"type\":\"oli\",\"children\":[{\"text\":\"\"},{\"type\":\"ref\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/46714?!editLang=en&!preview#UnInit\"},\"children\":[{\"text\":\"Uninitializing GME, API: UnInit\"}],\"id\":\"KzNFjSjyV_OcWZSIp925S\"},{\"text\":\"\"}],\"id\":\"Vf6njJNSepu2Ea0f_vDIH\"},{\"id\":\"dHO92jidAWIzJAwkoWTZj\",\"children\":[{\"text\":\"Important notes\"}],\"nodeId\":\"important-notes\",\"type\":\"h3\"},{\"id\":\"_hoCKU_27TVrRnFpb6XZh\",\"children\":[{\"text\":\"Configure your project before using GME; otherwise, the SDK will not take effect.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"-StDstWAvsINyN-sUwuIc\",\"children\":[{\"text\":\"After a GME API is called successfully, \"},{\"code\":1,\"text\":\"QAVError.OK\"},{\"text\":\" will be returned with the value being 0.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"QHO-qxU8-lmXXDrTrIDAT\",\"children\":[{\"text\":\"GME APIs should be called in the same thread.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"KPLaNMmnuQZY28Y8_KwsB\",\"children\":[{\"text\":\"The \"},{\"code\":1,\"text\":\"Poll\"},{\"text\":\" API should be called periodically for GME to trigger event callbacks.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"LeRLmYcBmyzz_z7_AKRxM\",\"children\":[{\"text\":\"For detailed error code, see \"},{\"type\":\"ref\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/33223\"},\"children\":[{\"text\":\"Error Codes\"}],\"id\":\"X-JLb9ltCMumZ_Y_dc1rb\"},{\"text\":\".\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"RosJy0i_OFcEFmMJz9PDC\",\"children\":[{\"text\":\"Core APIs\"}],\"nodeId\":\"core-apis\",\"type\":\"h2\"},{\"id\":\"1uq_g91LhjA4HMjraaTsH\",\"children\":[{\"text\":\"Before the initialization, the SDK is in the uninitialized status, and \"},{\"b\":1,\"text\":\"you need to initialize it through the \"},{\"b\":1,\"code\":1,\"text\":\"Init\"},{\"b\":1,\"text\":\" API\"},{\"text\":\" before you can use the voice chat and speech-to-text services.\"}],\"type\":\"p\"},{\"id\":\"2CuCLZj35lw4FCxSy2zvh\",\"children\":[{\"b\":1,\"text\":\"Call the \"},{\"b\":1,\"code\":1,\"text\":\"Init\"},{\"b\":1,\"text\":\" API before calling any APIs of GME.\"}],\"type\":\"p\"},{\"id\":\"uR5c635aO-WRxwXpjp2HT\",\"children\":[{\"text\":\"If you have any questions when using the service, see \"},{\"id\":\"847NbXBFozLkPzPSq_4qc\",\"children\":[{\"text\":\"General\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://intl.cloud.tencent.com/document/product/607/30254\",\"props\":{\"type\":\"link\",\"url\":\"https://intl.cloud.tencent.com/document/product/607/30254\"},\"type\":\"ref\"},{\"text\":\".\"}],\"type\":\"p\"},{\"id\":\"xIMGYidctp240LE8ZDzj_\",\"children\":[{\"id\":\"9iUtcy0qwVD2c5i1CHSbe\",\"children\":[{\"id\":\"SS8Md6ElspKBAVhfiL7Er\",\"children\":[{\"id\":\"SgtbBX6tfmWuEaJ_Q5ECm\",\"children\":[{\"text\":\"API\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"1_GUHNK0O5ioeApkTqvp8\",\"children\":[{\"id\":\"17iDsd16_5lpg0B3ildgI\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"Cv02p1rUKVPq_F4BKlGI3\",\"children\":[{\"id\":\"viBP42_Nh0Prbiz22rQu4\",\"children\":[{\"id\":\"GKv31knm5RZCVH080P1px\",\"children\":[{\"id\":\"5BlAAUJiir5P6dT8O5Gof\",\"children\":[{\"text\":\"InitEngine\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"B7QodvFFvHzNXtLhvqOk6\",\"children\":[{\"id\":\"vn3L1gRNlKtrYOf5SG2RD\",\"children\":[{\"id\":\"7O8Pwf0R1L-ezm16i9hvt\",\"children\":[{\"text\":\"Initializes GME\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"q_2Y_l4js1DVVeKF4K0wi\",\"children\":[{\"id\":\"wO9A1v1LA1GXultHdg5pE\",\"children\":[{\"id\":\"xO7X5linNcUZYgEK_v6J6\",\"children\":[{\"id\":\"nwwW5x3kh01MV3qqo0DUR\",\"children\":[{\"text\":\"Poll\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"LkbOFid1_YN1jswUyCc8Q\",\"children\":[{\"id\":\"4XEzh8NKY-TTOEFMQU30u\",\"children\":[{\"id\":\"KB8uy9Ej-PWwmU56cpnoM\",\"children\":[{\"text\":\"Triggers event callback\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"kAv2RPi913suUBxypygod\",\"children\":[{\"id\":\"8JjbVGgcCGJhon9RQyQpC\",\"children\":[{\"id\":\"eVk1702g0WOd3qZm5pIwb\",\"children\":[{\"id\":\"4FaenUR8IpSU1wxcCOFLJ\",\"children\":[{\"text\":\"Pause\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"vLyT4mjfOpjjKBkVnxKPI\",\"children\":[{\"id\":\"hkq8F-hvwi2WjaIteK5n5\",\"children\":[{\"id\":\"u2n0KtFzl1Cc_5V6obrWE\",\"children\":[{\"text\":\"Pauses the system\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"FiqzM6jMIzz_oKPR_9bhP\",\"children\":[{\"id\":\"MQ2GwYTwcwgtgpPLj7Cej\",\"children\":[{\"id\":\"P00xA04xuLV0FZ0a_s4b5\",\"children\":[{\"id\":\"z1Y_aGYnjrJsQzzSOdGUu\",\"children\":[{\"text\":\"Resume\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"2iGMAW3rP1wDsg9xr0oAI\",\"children\":[{\"id\":\"PAfoCWT479SHMwbUjhdNk\",\"children\":[{\"id\":\"-sqG7e4nYNCr8iIFyiV0E\",\"children\":[{\"text\":\"Resumes the system\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"MxThSc6yE8VmYHwGpbrrb\",\"children\":[{\"id\":\"G4Nl7PqAApJASzeE7ew7j\",\"children\":[{\"id\":\"h29E1hOohB5PC9oXQK-z2\",\"children\":[{\"id\":\"wMWoylWqbCCsTnEpjRu5l\",\"children\":[{\"text\":\"Uninit\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"RODyd-lwlxtzJ5h9AHuiz\",\"children\":[{\"id\":\"xrcGY6nKXmXBLDK0fXTdI\",\"children\":[{\"id\":\"-4Tnr1bB5biZj8v0iWLYF\",\"children\":[{\"text\":\"Uninitializes GME\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"4Yw_O_ezjDS98ElJT7vCF\",\"children\":[{\"id\":\"xH-kw36Gi41i80dxtowz8\",\"children\":[{\"id\":\"IHqmT157NhCKog6CRWu_j\",\"children\":[{\"id\":\"82R4oP9vHJhH3bSGIg3q0\",\"children\":[{\"text\":\"SetDefaultAudienceAudioCategory\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"_2RYWXNaVl-cq7oiddxxS\",\"children\":[{\"id\":\"f9ofYAGjcNv6MOypreZbF\",\"children\":[{\"id\":\"a2WnUJbb69FdJoEdvz4nc\",\"children\":[{\"text\":\"Sets audio playback in background on device\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[44,56],\"widthMode\":\"percentage\"},{\"id\":\"mF0SyKYvxojHLj_CKzPqS\",\"children\":[{\"text\":\"Imported header files\"}],\"nodeId\":\"imported-header-files\",\"type\":\"h3\"},{\"id\":\"VvmJufT_awTq1xLSp-uoM\",\"children\":[{\"id\":\"c9CkNqH0wtBigZwwEfLED\",\"children\":[{\"text\":\"#import \\\"GMESDK/TMGEngine.h\\\"\"}],\"type\":\"code-line\"},{\"id\":\"u_tlIA58CFbVnslsCFz3n\",\"children\":[{\"text\":\"#import \\\"GMESDK/QAVAuthBuffer.h\\\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"6UbHubrCUC9_NUsqL-p-l\",\"children\":[{\"text\":\"Getting singleton\"}],\"nodeId\":\"getting-singleton\",\"type\":\"h3\"},{\"id\":\"ZixksR67yHDxX4gOJhuzn\",\"children\":[{\"text\":\"To use the voice feature, get the \"},{\"code\":1,\"text\":\"ITMGContext\"},{\"text\":\" object first.\"}],\"type\":\"p\"},{\"id\":\"BLDqrFeU4zKQTQA5Q7w7C\",\"children\":[{\"id\":\"-B8CKac1Oq_YHWL0JEbA7\",\"children\":[{\"text\":\"+ (ITMGContext*) GetInstance;\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"EbGUx9DjP_qufMVWFRUWd\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code\",\"type\":\"h4\"},{\"id\":\"8pzufsUIgFBlGqAinNsxg\",\"children\":[{\"id\":\"9mFd0JlWYJEFp-vglB2bR\",\"children\":[{\"text\":\"//TMGSampleViewController.m\"}],\"type\":\"code-line\"},{\"id\":\"5s4iEFJ3WHzyJf8FJCJi7\",\"children\":[{\"text\":\"ITMGContext* _context = [ITMGContext GetInstance];\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"lP4yP1H-DNKy6raqVPbzd\",\"children\":[{\"text\":\"Setting callbacks\"}],\"nodeId\":\"setting-callbacks\",\"type\":\"h3\"},{\"id\":\"KLy129NVdgsesD8qzn6SW\",\"children\":[{\"text\":\"The API class uses the \"},{\"code\":1,\"text\":\"Delegate\"},{\"text\":\" method to send callback notifications to the application. Register the callback function to the SDK for receiving callback messages.\"}],\"type\":\"p\"},{\"id\":\"vfB2LIMW2FIqPn69HbQWO\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code2\",\"type\":\"h4\"},{\"id\":\"H19LnQRfciuPnKSDLSluR\",\"children\":[{\"code\":1,\"text\":\"ITMGDelegate\"},{\"text\":\" is used for declaration.\"}],\"type\":\"p\"},{\"id\":\"CXd2f3XkMvysqGqgMM0U4\",\"children\":[{\"id\":\"s2q26RbRQy5QWk8xCTqSG\",\"children\":[{\"text\":\"@interface TMGDemoViewController (){}\"}],\"type\":\"code-line\"},{\"id\":\"iOMTu11qI4-6uFnVQV_Lj\",\"children\":[{\"text\":\"ITMGDelegate < NSObject >\"}],\"type\":\"code-line\"},{\"id\":\"HL2k_lInf93ARwo5RjrHh\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"},{\"id\":\"LJHjfZAhiT9CXzqLBUSmt\",\"children\":[{\"text\":\"//TMGSampleViewController.m\"}],\"type\":\"code-line\"},{\"id\":\"StvF9Pt8j4d3CeWmuqP0H\",\"children\":[{\"text\":\"ITMGContext* _context = [ITMGContext GetInstance];\"}],\"type\":\"code-line\"},{\"id\":\"PUnKXccdeDna28BBlxLBf\",\"children\":[{\"text\":\"_context.TMGDelegate = [DispatchCenter getInstance];\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"AGAp99IUaXAPSbN9oPZEK\",\"children\":[{\"text\":\"The API callback messages is processed in \"},{\"code\":1,\"text\":\"OnEvent\"},{\"text\":\". For the message type, see \"},{\"code\":1,\"text\":\"ITMG_MAIN_EVENT_TYPE\"},{\"text\":\". The message content is a dictionary for parsing the API callback contents.\"}],\"type\":\"p\"},{\"id\":\"jVJ1HiRA8iISZG9vPG4Wg\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\"function-prototype\",\"type\":\"h4\"},{\"id\":\"bofEu5TCxUJzGJyqCPt4G\",\"children\":[{\"id\":\"ACbIE-TqBm75g_k2fshGW\",\"children\":[{\"text\":\"- (void)OnEvent:(ITMG_MAIN_EVENT_TYPE)eventType data:(NSDictionary*)data;\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"_ij9wSAswaw4LqT9nVepS\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code3\",\"type\":\"h4\"},{\"id\":\"xp0H1OGXaxRD1t1ixRdLt\",\"children\":[{\"id\":\"LAWyOrlrEORC9DwswRiok\",\"children\":[{\"text\":\"//TMGRealTimeViewController.m\"}],\"type\":\"code-line\"},{\"id\":\"arx-hpPGBm0qC3VGf9D3a\",\"children\":[{\"text\":\"TMGRealTimeViewController ()< ITMGDelegate >\"}],\"type\":\"code-line\"},{\"id\":\"x0qwV6m8ngpSo8V0tDkJg\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"},{\"id\":\"Gal2QVRwcFsx77kg1tYYn\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"},{\"id\":\"whNCek00Kn9zWU2eCKC6q\",\"children\":[{\"text\":\"- (void)OnEvent:(ITMG_MAIN_EVENT_TYPE)eventType data:(NSDictionary *)data {\"}],\"type\":\"code-line\"},{\"id\":\"0b8azjoRwPVP3VxByvEAk\",\"children\":[{\"text\":\" NSString *log = [NSString stringWithFormat:@\\\"OnEvent:%d,data:%@\\\", (int)eventType, data];\"}],\"type\":\"code-line\"},{\"id\":\"8DOFllM8vAqJNNHIycdtJ\",\"children\":[{\"text\":\" [self showLog:log];\"}],\"type\":\"code-line\"},{\"id\":\"iUt_nkECIFK4wAoaCoLIh\",\"children\":[{\"text\":\" NSLog(@\\\"====%@====\\\", log);\"}],\"type\":\"code-line\"},{\"id\":\"VFIQrTY0LPgwYEuUtqeUN\",\"children\":[{\"text\":\" switch (eventType) {\"}],\"type\":\"code-line\"},{\"id\":\"XCK54FVjQ2UYzT1BGgjTY\",\"children\":[{\"text\":\" // Step 6/11 : Perform the enter room event\"}],\"type\":\"code-line\"},{\"id\":\"-ROiqMJmRjr-yeqChXjd_\",\"children\":[{\"text\":\" case ITMG_MAIN_EVENT_TYPE_ENTER_ROOM: {\"}],\"type\":\"code-line\"},{\"id\":\"LK6entQ_gqcGi2IQzyR3f\",\"children\":[{\"text\":\" int result = ((NSNumber *)[data objectForKey:@\\\"result\\\"]).intValue;\"}],\"type\":\"code-line\"},{\"id\":\"ad-1NBIkmcEDgT-F_eT1g\",\"children\":[{\"text\":\" NSString *error_info = [data objectForKey:@\\\"error_info\\\"];\"}],\"type\":\"code-line\"},{\"id\":\"pQ3dvjIqWCCEmNXIm-Hu-\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"},{\"id\":\"oiHdLC9_8Zuzu4ZVZ8v2W\",\"children\":[{\"text\":\" [self showLog:[NSString stringWithFormat:@\\\"OnEnterRoomComplete:%d msg:(%@)\\\", result, error_info]];\"}],\"type\":\"code-line\"},{\"id\":\"koGPspA5JaVExOEIN9kev\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"},{\"id\":\"2X4dZsMHDCnTett3c-9YH\",\"children\":[{\"text\":\" if (result == 0) {\"}],\"type\":\"code-line\"},{\"id\":\"XRY8vee_4HRL_-KPHik_G\",\"children\":[{\"text\":\" [self updateStatusEnterRoom:YES];\"}],\"type\":\"code-line\"},{\"id\":\"TzBh84RI018X_-G3wr3l5\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"0me36her3IwF65HAD2-Pp\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"m_ScOWNWww_y8FvwVLNQ3\",\"children\":[{\"text\":\" break;\"}],\"type\":\"code-line\"},{\"id\":\"738tpX9z8UKZFU18rKfbU\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"9LQjfJS3clv7cXnf0YTtt\",\"children\":[{\"text\":\"}\"}],\"type\":\"code-line\"},{\"id\":\"SBi9SkkMmVVeJwIe0rx6a\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"},{\"id\":\"L3YYUxWtIMJPwlqqj7woo\",\"children\":[{\"text\":\"// Refer to DispatchCenter.h and DispatchCenter.m\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"Bfj2LAc0d1HVzNhZCvc5W\",\"children\":[{\"id\":\"o0P_0a33qSirgr0x-5SQA\",\"children\":[{\"text\":\"Initializing SDK\"}],\"nodeId\":\"Init\",\"type\":\"p\"}],\"nodeId\":\".3Ca-id.3D.22init.22.3Einitializing-sdk.3C.2Fa.3E\",\"type\":\"h3\"},{\"id\":\"33qePW0l6ep4bimMnSI1T\",\"children\":[{\"text\":\"This API is used to initialize the GME service. It is recommended to call it when initializing the application. No fee is incurred for calling this API.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"W9mmHFv1XIFZj9YvqW-Dh\",\"children\":[{\"b\":1,\"text\":\"For more information on how to get the \"},{\"b\":1,\"code\":1,\"text\":\"sdkAppID\"},{\"b\":1,\"text\":\" parameter, see \"},{\"id\":\"OyJEXP5b9FY_8ttqiklQw\",\"children\":[{\"text\":\"Activating Services\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://intl.cloud.tencent.com/document/product/607/10782\",\"props\":{\"type\":\"link\",\"url\":\"https://intl.cloud.tencent.com/document/product/607/10782\"},\"type\":\"ref\"},{\"text\":\".\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"iwFaHaCssODQe_L0YuGX_\",\"children\":[{\"b\":1,\"text\":\"The openID uniquely identifies a user with the rules stipulated by the application developer and unique in the application (currently, only INT64 is supported)\"},{\"text\":\".\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"lgEE3UwyXHOJoh4omAjZH\",\"children\":[{\"id\":\"dL8pZ8n2XsOh8YSd7lgSn\",\"children\":[{\"b\":1,\"color\":\"#04C8DC\",\"text\":\"Note: \"}],\"type\":\"p\"},{\"id\":\"wAyGxaKk84SGV0aOQXG4e\",\"children\":[{\"text\":\"The Init API must be called in the same thread with other APIs. It is recommended to call all APIs in the main thread.\"}],\"type\":\"p\"}],\"hintType\":\"alert\",\"type\":\"hint\"},{\"id\":\"2QkuxzXrHH6oTs2N5KTiy\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\"function-prototype2\",\"type\":\"h4\"},{\"id\":\"PmxZcI5wA5Q8z6XtJRLX5\",\"children\":[{\"id\":\"m0S_z2y0PmIZatwlpkMbz\",\"children\":[{\"text\":\"-(int)InitEngine:(NSString*)sdkAppID openID:(NSString*)openID;\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"yT4oCeClgjdrmaFOJiutp\",\"children\":[{\"id\":\"rNOxR2gg6uegY-S7sVXJS\",\"children\":[{\"id\":\"YdPZjIm2H_Dg8kUU85kVo\",\"children\":[{\"id\":\"X67xdc71X64bhRhZX9pTG\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"_JnvmipmmfCzAbhj9k_BQ\",\"children\":[{\"id\":\"LII4HWSKn9AkraJ-8gyfs\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"VKCVwMl0oAx0iz-BjFEkP\",\"children\":[{\"id\":\"8NWDs6u15jPR7K54PZpjE\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"Pd3rSdGyWLEbEk5GL7W3X\",\"children\":[{\"id\":\"WCEqpcj-7mj-dnZRwmEOv\",\"children\":[{\"id\":\"fRKnNI1MVq479fVttXn_H\",\"children\":[{\"id\":\"PrdqrPFMTTBSWOU4gRaKZ\",\"children\":[{\"text\":\"sdkAppId\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"poCIMcPpVltrVr4lSvhX4\",\"children\":[{\"id\":\"hPEHH2RCHxIbMpHVzAjaD\",\"children\":[{\"id\":\"V80gwPhHZEBoL8KWG7gUd\",\"children\":[{\"text\":\"String\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"27fVPi9xoKwugC0MDGA-6\",\"children\":[{\"id\":\"SMbiEGkSqy9qi_5jrSLt5\",\"children\":[{\"id\":\"wP8Nq2BTGAFcqmFXkh8hm\",\"children\":[{\"code\":1,\"text\":\"AppId\"},{\"text\":\" provided by the GME service from the \"},{\"id\":\"naGIdhbBPnKhmAQ4qrjOD\",\"children\":[{\"text\":\"Tencent Cloud console\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://console.tencentcloud.com/gamegme\",\"props\":{\"type\":\"link\",\"url\":\"https://console.tencentcloud.com/gamegme\"},\"type\":\"ref\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"KIV0itEKFyE_e7P_a2vz-\",\"children\":[{\"id\":\"H7o-zYBP8VAV4mJQG35Kb\",\"children\":[{\"id\":\"-v1xMrT5ItljNTjX51Bof\",\"children\":[{\"id\":\"heBLtI3xsxYBZA-fylM65\",\"children\":[{\"text\":\"OpenId\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"1iIRKWhdlvHd3cIHAgbpX\",\"children\":[{\"id\":\"-3hSJTuGKPMmOi4zoTcOe\",\"children\":[{\"id\":\"PKsLDM4srn8PcHFKeMeBu\",\"children\":[{\"text\":\"String\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"zvrpuTODgWYy_MLTLT2GE\",\"children\":[{\"id\":\"RhjpPSJXd0R27PykV3zEP\",\"children\":[{\"id\":\"xVUFyzfv4mK69XuRYb993\",\"children\":[{\"code\":1,\"text\":\"OpenId\"},{\"text\":\" can only be in Int64 type, which is passed after being converted to a string.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[13,9,78],\"widthMode\":\"percentage\"},{\"id\":\"brkwagjY3enw3GC_Ucv79\",\"children\":[{\"id\":\"uGs09oyqlfl_6Ng7bb7Dk\",\"children\":[{\"id\":\"BjIJFNLFwox8eVfNbmwN3\",\"children\":[{\"id\":\"WAPHV-BMw9BevIQRMOFsS\",\"children\":[{\"text\":\"Returned Value\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"JT02KAeYF_4NET3hRQYQS\",\"children\":[{\"id\":\"VWkrs7x9Dvw63iOEu0kef\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"Upgr8C1Bd2A8_QT9_Xfam\",\"children\":[{\"id\":\"CYAIYgb34b9IBa4bJbxhp\",\"children\":[{\"id\":\"FBadTE5gz2sLXP40r_M_F\",\"children\":[{\"id\":\"n5dl_kGr9oRGArs_Yvbu0\",\"children\":[{\"text\":\"QAV_OK= 0\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"9uhu-GOJ-AjdV3zWGFot8\",\"children\":[{\"id\":\"TNE2n-yyxwQBq5Jj1JoRu\",\"children\":[{\"id\":\"OFkbozEbCVLrImS-ZvsG3\",\"children\":[{\"text\":\"Initialized SDK successfully.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"FnVsCqjUlcT82kb1GfwnG\",\"children\":[{\"id\":\"hrR9rB-r0WmIZ880oblx5\",\"children\":[{\"id\":\"Wd237rGMvaElj8733oQlv\",\"children\":[{\"id\":\"iZNsWTnTPwoEuHXPcJIjP\",\"children\":[{\"text\":\"QAV_ERR_SDK_NOT_FULL_UPDATE= 7015\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"7gRAvVkeheAtUw5mfTBnG\",\"children\":[{\"id\":\"fIDu-VCcuA7iOyK2LnFrO\",\"children\":[{\"id\":\"aJmZzclkG_jkDvaHc1gG8\",\"children\":[{\"text\":\"Checks whether the SDK file is complete. It is recommended to delete it and then import the SDK again.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[37,63],\"widthMode\":\"percentage\"},{\"id\":\"VYyBjzH2otpH6QI34cLgG\",\"children\":[{\"text\":\"The returned value \"},{\"code\":1,\"text\":\"AV_ERR_SDK_NOT_FULL_UPDATE\"},{\"text\":\" is only a reminder but will not cause an initialization failure.\"}],\"type\":\"p\"},{\"id\":\"gaz2Pm4ZTpYlEDRIBlCu6\",\"children\":[{\"text\":\"If this error is reported during integration, please check the integrity and version of the SDK file as prompted.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"wcQH5UsSeMl6lNcRAD3Xf\",\"children\":[{\"text\":\"If this error is returned after executable file export, please ignore it and try to avoid displaying it in the UI.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"I1DKf2M39CFGMwYeyhGyJ\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code4\",\"type\":\"h4\"},{\"id\":\"jw-H2gk8phKDkwsS1VRAC\",\"children\":[{\"id\":\"33hCbG18-ol2e_0Y1LbDr\",\"children\":[{\"text\":\"_openId = _userIdText.text;\"}],\"type\":\"code-line\"},{\"id\":\"X1ECf15roXWZnxVM6QAJa\",\"children\":[{\"text\":\"_appId = _appIdText.text;\"}],\"type\":\"code-line\"},{\"id\":\"sqN6_4Ult3VJazuVRrUkl\",\"children\":[{\"text\":\"[[ITMGContext GetInstance] InitEngine:SDKAPPID openID:_openId];\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"A-3lWqHLJQ9VO7VQzROij\",\"children\":[{\"id\":\"GAmiMELRNOdVRtqpSFkjZ\",\"children\":[{\"text\":\"Triggering event callback\"}],\"nodeId\":\"Poll\",\"type\":\"p\"}],\"nodeId\":\".3Ca-id.3D.22poll.22.3Etriggering-event-callback.3C.2Fa.3E\",\"type\":\"h3\"},{\"id\":\"dA0wbcsPRvzT5Xc30-KUj\",\"children\":[{\"text\":\"Event callbacks can be triggered by periodically calling the \"},{\"code\":1,\"text\":\"Poll\"},{\"text\":\" API in \"},{\"code\":1,\"text\":\"update\"},{\"text\":\". The \"},{\"code\":1,\"text\":\"Poll\"},{\"text\":\" API should be called periodically for GME to trigger event callbacks; otherwise, the entire SDK service will run exceptionally.\\nFor more information, see the EnginePollHelper.m file in \"},{\"id\":\"fGD0Py4IxKSyAdXCdDllC\",\"children\":[{\"text\":\"Demo\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://intl.cloud.tencent.com/document/product/607/18521\",\"props\":{\"type\":\"link\",\"url\":\"https://intl.cloud.tencent.com/document/product/607/18521\"},\"type\":\"ref\"},{\"text\":\".\"}],\"type\":\"p\"},{\"id\":\"h2f50KMEEBStCBlFq7kbt\",\"children\":[{\"id\":\"ixqOnZ_fAKbWuxaKdcy7I\",\"children\":[{\"b\":1,\"color\":\"#04C8DC\",\"text\":\"Note: \"}],\"type\":\"p\"},{\"id\":\"dXO9JiBa_W1uXRLEG5swJ\",\"children\":[{\"text\":\"The \"},{\"code\":1,\"text\":\"Poll\"},{\"text\":\" API must be called periodically and in the main thread to avoid abnormal API callbacks.\"}],\"type\":\"p\"}],\"hintType\":\"alert\",\"type\":\"hint\"},{\"id\":\"gC93qWxn-J-Sm3e7eCeuQ\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\"function-prototype3\",\"type\":\"h4\"},{\"id\":\"1T7578ISU84_r6zanPkhy\",\"children\":[{\"id\":\"VFHuXrtRpeL8qjwyeaYNW\",\"children\":[{\"text\":\"-(void)Poll;\"}],\"type\":\"code-line\"},{\"id\":\"KngA4soNs8k6XDLPlsRY7\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"bas3fSICppN9QvwZmDW8G\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code5\",\"type\":\"h4\"},{\"id\":\"LrHPgwnZ-ojFw16-96-ti\",\"children\":[{\"id\":\"LfBHGn5hXS8PQ8wHV6OGu\",\"children\":[{\"text\":\"[[ITMGContext GetInstance] Poll];\"}],\"type\":\"code-line\"},{\"id\":\"jwGo2dlhKNJb4pbl07kv0\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"5gXikcdnfpAM7cRAEyZv4\",\"children\":[{\"text\":\"Pausing the system\"}],\"nodeId\":\"pausing-the-system\",\"type\":\"h3\"},{\"id\":\"rDwlYjIfytWiIgWbhpqnt\",\"children\":[{\"text\":\"When a \"},{\"code\":1,\"text\":\"Pause\"},{\"text\":\" event occurs in the system, the engine should also be notified for pause.\\nIf you need to pause the audio when switching to the background, you can call the \"},{\"code\":1,\"text\":\"Pause\"},{\"text\":\" API in the listening code used to switch to the background, and call the \"},{\"code\":1,\"text\":\"Resume\"},{\"text\":\" API in the listening event used to resume the foreground.\"}],\"type\":\"p\"},{\"id\":\"mhlKffKIuqs9SCaGb8vtI\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\"function-prototype4\",\"type\":\"h4\"},{\"id\":\"-OUkhxvWHysnqEVxZggF2\",\"children\":[{\"id\":\"Ztu7WzrgGCSpz_Ik728bf\",\"children\":[{\"text\":\"-(QAVResult)Pause;\"}],\"type\":\"code-line\"},{\"id\":\"gftLX0IkrlWxG24tCNyvx\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"d5oGosd4Ma0BD79NaSxqK\",\"children\":[{\"text\":\"Resuming the system\"}],\"nodeId\":\"resuming-the-system\",\"type\":\"h3\"},{\"id\":\"1u-0WeESq7p_IIcUYjNYg\",\"children\":[{\"text\":\"When a \"},{\"code\":1,\"text\":\"Resume\"},{\"text\":\" event occurs in the system, the engine should also be notified for resumption. The \"},{\"code\":1,\"text\":\"Resume\"},{\"text\":\" API only supports resuming voice chat.\"}],\"type\":\"p\"},{\"id\":\"9x91Q7mRAYPSzDrwF6xuy\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\"function-prototype5\",\"type\":\"h4\"},{\"id\":\"gjhorSuWat2VHp7kwr25j\",\"children\":[{\"id\":\"Kzu7kB0zlyZJF7jKKbdw8\",\"children\":[{\"text\":\"-(QAVResult)Resume;\"}],\"type\":\"code-line\"},{\"id\":\"dda1frN5wUJnl9I0W2PHn\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"sYucif8FHDmaKLWkaS95a\",\"children\":[{\"id\":\"QprJcHfAGAhbUs1FSP9Eq\",\"children\":[{\"text\":\"Uninitializing SDK\"}],\"nodeId\":\"UnInit\",\"type\":\"p\"}],\"nodeId\":\".3Ca-id.3D.22uninit.22.3Euninitializing-sdk.3C.2Fa.3E\",\"type\":\"h3\"},{\"id\":\"B3x9emA4JiADK555tlxIO\",\"children\":[{\"text\":\"This API is used to uninitialize the SDK to make it uninitialized. \"},{\"b\":1,\"text\":\"Switching accounts requires uninitialization\"},{\"text\":\".\"}],\"type\":\"p\"},{\"id\":\"4y2YJB7Zv3rhFPqwIDMD5\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\"function-prototype6\",\"type\":\"h4\"},{\"id\":\"LM-x-Kc-cdw82gIVk205g\",\"children\":[{\"id\":\"WoFpR3dxZXJAe5YjjrSoo\",\"children\":[{\"text\":\"-(int)Uninit;\"}],\"type\":\"code-line\"},{\"id\":\"LvnokR8qyVg-yc0JOyEnS\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"s1wJthf2hvEQXRahhsrVr\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code6\",\"type\":\"h4\"},{\"id\":\"3kp8ltzWCCd32KvKrpuk9\",\"children\":[{\"id\":\"H-WDa57Zu5iqLAzEDk6b9\",\"children\":[{\"text\":\"[[ITMGContext GetInstance] Uninit];\"}],\"type\":\"code-line\"},{\"id\":\"ECCJnzeWWf9bnjywsRoVN\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"1axil4Bg9dRm3c41FFLBS\",\"children\":[{\"text\":\"Voice Messaging and Speech-to-Text\"}],\"nodeId\":\"voice-messaging-and-speech-to-text\",\"type\":\"h2\"},{\"id\":\"reMp0qKeOFeKnUFneWEaW\",\"children\":[{\"text\":\"Voice messaging refers to recording and sending a voice message. At the same time, the voice message can be converted to text and translated, as shown below:\"}],\"type\":\"p\"},{\"type\":\"p\",\"children\":[{\"text\":\"\"},{\"type\":\"image\",\"url\":\"https://cloudcache.intl.tencent-cloud.com/cms/backend-cms/29daa5edb34d11eeae9a525400c26da5.gif\",\"inline\":true,\"alt\":\"\",\"children\":[{\"text\":\"\"}],\"id\":\"CRbzGCJAOlPbXbv11CAGm\",\"naturalSize\":[960,444],\"size\":[599,277]},{\"text\":\"\"}],\"id\":\"3lk00-N14NZgWtoBz02mj\"},{\"id\":\"9posTymsbGWsfE24Bpmmt\",\"children\":[{\"id\":\"Z119LjSzW8XmMmpsbAyTM\",\"children\":[{\"b\":1,\"color\":\"inherit\",\"text\":\"Note: \"}],\"type\":\"p\"},{\"id\":\"dacC2n0COqvPNZc7hCkwv\",\"children\":[{\"text\":\"It is recommended to use the streaming speech-to-text service.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"0FHijDGth9b34oEFAgNET\",\"children\":[{\"text\":\"You do not need to enter a voice chat room when using the voice message service.\"}],\"start\":false,\"type\":\"uli\"}],\"hintType\":\"info\",\"type\":\"hint\"},{\"id\":\"JjW7m-MTZFvoB-WoBLiIp\",\"children\":[{\"text\":\"Voice messaging and speech-to-text conversion flowchart\"}],\"nodeId\":\"voice-messaging-and-speech-to-text-conversion-flowchart\",\"type\":\"h4\"},{\"type\":\"p\",\"children\":[{\"text\":\"\"},{\"id\":\"QEMcV2tdXBTF7AnWZYwyX\",\"alt\":\"\",\"children\":[{\"text\":\"\"}],\"inline\":true,\"type\":\"image\",\"url\":\"https://cloudcache.intl.tencent-cloud.com/cms/backend-cms/e20f83b3b34c11ee9fd6525400bb593a.png\",\"naturalSize\":[878,828],\"size\":[800,754]},{\"text\":\"\"}],\"id\":\"TQNkVmOAX8H6nrRkG1jb7\"},{\"id\":\"cB24HqQocWqRr5ku5-O30\",\"children\":[{\"text\":\"Integrating Voice Messaging and Speech-to-Text Service\"}],\"nodeId\":\"integrating-voice-messaging-and-speech-to-text-service\",\"type\":\"h2\"},{\"id\":\"W6aJPhcmTMqvUem2JXDYi\",\"children\":[{\"text\":\"Voice messaging and speech-to-text APIs\"}],\"nodeId\":\"voice-messaging-and-speech-to-text-apis\",\"type\":\"h3\"},{\"id\":\"MJgkHx9d89XIbfmvpbsDT\",\"children\":[{\"id\":\"lpLOWi2SkaBJKgmIvRl2F\",\"children\":[{\"id\":\"Hq4dWQoHZbJ6O6VYmLPwu\",\"children\":[{\"id\":\"KOFJWLXRQ3fz9IS9nzcZV\",\"children\":[{\"text\":\"API\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"lxMyaX2lFjgrzwe8nihJh\",\"children\":[{\"id\":\"CPKR9BxUpVVKILe00Dz2y\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"V4zm2LFKeW9qOFWwQUIp9\",\"children\":[{\"id\":\"oSEcs51pdyJ3RYUF1DBRJ\",\"children\":[{\"id\":\"J06TboqAnKRAiVZxCFXEn\",\"children\":[{\"id\":\"p2Od0r_3KPOPjU_pmITSx\",\"children\":[{\"text\":\"ApplyPTTAuthbuffer\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"csUrtJhaiaLPAbEhufWIy\",\"children\":[{\"id\":\"nfvmNOBbGqBUs3Gfbx5Ee\",\"children\":[{\"id\":\"BPOyg0vFi5KIcdqlWjvLv\",\"children\":[{\"text\":\"Initializes authentication\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"MJg2ShiT6_ybwcvwekMGx\",\"children\":[{\"id\":\"8IfkWBdozex2KTsgw9n53\",\"children\":[{\"id\":\"tu5E4b5Zv1ogG-a_5tWAX\",\"children\":[{\"id\":\"kGyH9ddTh_kOztaIEBWJ0\",\"children\":[{\"text\":\"SetMaxMessageLength\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"mPnmD5SS1S91AryRBQR7x\",\"children\":[{\"id\":\"eHv3w_3LW421pws4Qz9gF\",\"children\":[{\"id\":\"2s6ef6Fv8snOp5Xc_zcfG\",\"children\":[{\"text\":\"Specifies the maximum length of voice message\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"2mLK02WD9k0sNUpo-fb2N\",\"children\":[{\"id\":\"4v5-fq9X78qGhWXXPyDem\",\"children\":[{\"id\":\"n7YNkOTyouFfJtSiRH2SJ\",\"children\":[{\"id\":\"JfUlJOGA4DXQtdcEE7NH-\",\"children\":[{\"text\":\"StartRecording\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"d-WCjfrn3teidawYZq0Cv\",\"children\":[{\"id\":\"seSb1xonuZ-noA0nIiX49\",\"children\":[{\"id\":\"1x-2h44C50DH9BiDA4Az1\",\"children\":[{\"text\":\"Starts recording\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"rFM2fdtF0bnhita8dVNd4\",\"children\":[{\"id\":\"TMiyNLZJD8Asj4TlLzL-H\",\"children\":[{\"id\":\"tDCuju_-97ORmqBHvABUq\",\"children\":[{\"id\":\"_XD35yZGXwGSEDWTqy2t-\",\"children\":[{\"text\":\"StartRecordingWithStreamingRecognition\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"yoPAkU5sZgmP4Oh8bjSfn\",\"children\":[{\"id\":\"N19eLAG5w4kUTLjWO_H-A\",\"children\":[{\"id\":\"xSHl-A6eLe59PiqI5mGX3\",\"children\":[{\"text\":\"Starts streaming recording\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"qLMPmIJeqmwynO5dCqDym\",\"children\":[{\"id\":\"HbztTU4brcUK9ztdEMrtS\",\"children\":[{\"id\":\"yuQquud6ojr8SWElQ1Qso\",\"children\":[{\"id\":\"rHFvDjcQpcGuGuvDyyWQO\",\"children\":[{\"text\":\"PauseRecording\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Y_GkH8Otfx_LqN9fEhWqC\",\"children\":[{\"id\":\"EdQeNVZF91sle55mIlk_i\",\"children\":[{\"id\":\"Dsh74Zp6hi9_uzmXMFahi\",\"children\":[{\"text\":\"Pauses recording\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"vbAE6RpzwH21Y5xnG6rHv\",\"children\":[{\"id\":\"MKP5NuiE9dCuQzUDhR6yW\",\"children\":[{\"id\":\"_wNvStf6SoBiX-QXcD4dg\",\"children\":[{\"id\":\"MZzMns_PL1L8I3QimynCd\",\"children\":[{\"text\":\"ResumeRecording\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"vJEluBijnaFMFMyC6qGR5\",\"children\":[{\"id\":\"S2BZYPwwnsaYGerhsdWZg\",\"children\":[{\"id\":\"FPqwOF-6MZAAkhgHYOlfD\",\"children\":[{\"text\":\"Resumes recording\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"4Squ6uiELSklrXhGx0mRm\",\"children\":[{\"id\":\"y4UuWDUXxNamVZApdZNU0\",\"children\":[{\"id\":\"MkYMF_PhM8Q9wHurtHIZ4\",\"children\":[{\"id\":\"yfykgTU1fuV74hh0w30TI\",\"children\":[{\"text\":\"StopRecording\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"B7Xw6t31gZTGbp0Se_QA0\",\"children\":[{\"id\":\"5meSs2jJmfycXVplAv4aU\",\"children\":[{\"id\":\"FGrmDGnm8DItDG5dFgh_J\",\"children\":[{\"text\":\"Stops recording\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"aCPiHGb2II_WSHunR9snd\",\"children\":[{\"id\":\"er62wBMvSRbfGqvdkVy8o\",\"children\":[{\"id\":\"cJGYh1Y8iTVQ2GVY0iH7W\",\"children\":[{\"id\":\"IzMpsMKK0ULmDU5dyMGLY\",\"children\":[{\"text\":\"CancelRecording\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"mU2lypXoZeDl0NoX31sbp\",\"children\":[{\"id\":\"KPn0W1PH9QdNTaIqQaae1\",\"children\":[{\"id\":\"pOONBMwc-OezA3GzOjjlF\",\"children\":[{\"text\":\"Cancels recording\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"rF7VO-KkIZlR6x0hiuFzw\",\"children\":[{\"id\":\"Inzz8H2vsi3ifO5ePxJ11\",\"children\":[{\"id\":\"jaHHUcN1KwOgkrFR0oypr\",\"children\":[{\"id\":\"Crr5j0yzAFUFBFhqvXYH_\",\"children\":[{\"text\":\"GetMicLevel\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"8w0Mu8nbIzpaBde1Dcwlx\",\"children\":[{\"id\":\"nWEb-bQyj371Dxvc4pZ5d\",\"children\":[{\"id\":\"nwVdyb9LxJqi7nFp63c9i\",\"children\":[{\"text\":\"Gets the real-time mic volume\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"kilX7wy3qcHN3SIAx-lhI\",\"children\":[{\"id\":\"DlxAyMVUQLPSXS-B4lIpg\",\"children\":[{\"id\":\"S049YzKqJQfznmxIPSq0P\",\"children\":[{\"id\":\"qqEh0QRqoeTvKATlxsdKf\",\"children\":[{\"text\":\"SetMicVolume\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"judqnrBC4GTdtzQYwdq41\",\"children\":[{\"id\":\"K0Fh46Su-AaA_QilMCxNt\",\"children\":[{\"id\":\"HRbUfRX5tOayZmYjyMYAB\",\"children\":[{\"text\":\"Sets the recording volume\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"4rgx259TKsrMuDYPluUZf\",\"children\":[{\"id\":\"srQrJY2q6CEyZ6WD2DaTv\",\"children\":[{\"id\":\"JIEJ1Eo4zTZP4Xo-mywuK\",\"children\":[{\"id\":\"YKMjW0FfW8WI1vPafKXWI\",\"children\":[{\"text\":\"GetMicVolume\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"HH3wpi-bsj57Lr9jeDNUp\",\"children\":[{\"id\":\"wsLgQDx5NllGvhMPXqWN-\",\"children\":[{\"id\":\"Kz6CT8WaNv6DIlXoqrFvG\",\"children\":[{\"text\":\"Gets the recording volume\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"1cOwROUcdu8sR1mY_dIBU\",\"children\":[{\"id\":\"JUav4rWQOHKTUqyrfkyJH\",\"children\":[{\"id\":\"okQR2XjhozzP7BN6H2kBf\",\"children\":[{\"id\":\"xUFXefCYqUytX_CpsXDPo\",\"children\":[{\"text\":\"GetSpeakerLevel\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Eu1GGeQbXHe4dxhubzBXd\",\"children\":[{\"id\":\"PKzraAEGIUIZIbmVKCjxL\",\"children\":[{\"id\":\"ykKAcOjTUsrK04RpKbFGg\",\"children\":[{\"text\":\"Gets the real-time speaker volume\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"B_isFtifcSYl-FBVvDy8I\",\"children\":[{\"id\":\"KMIuC3qX0_plkro5nn3bU\",\"children\":[{\"id\":\"ZUCgomzdY2Bx9lbYpsfEB\",\"children\":[{\"id\":\"ntNJiQxtKh9tTu-_bzKV_\",\"children\":[{\"text\":\"SetSpeakerVolume\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"H4V9VtLR3YVJhscIs-qdc\",\"children\":[{\"id\":\"1IBnsJOqR7xBU10n-QrU4\",\"children\":[{\"id\":\"A4bvSVsSHq1rbm43xAe8b\",\"children\":[{\"text\":\"Sets the playback volume\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"xVKvVF95-pCMcJE2ljujA\",\"children\":[{\"id\":\"NXgH9Boz_cepvoG3UJ0vV\",\"children\":[{\"id\":\"eZrUaHkBfPN-fDcIpJc5K\",\"children\":[{\"id\":\"dm4mcjdBOO-bjXkUvaVRD\",\"children\":[{\"text\":\"GetSpeakerVolume\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"tkzBvyK81DeZNR5-OUMbA\",\"children\":[{\"id\":\"1x3mCCCfx30pCVyTuhni6\",\"children\":[{\"id\":\"qNj-UyHRuLNkdsRRKjGVs\",\"children\":[{\"text\":\"Gets the playback volume\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"iXAJ0QGEwKFs-kfJTe6Tc\",\"children\":[{\"id\":\"5ZGwdetInq5Y7_oa0GzmY\",\"children\":[{\"id\":\"wcWljmj3LTHed00jvWchj\",\"children\":[{\"id\":\"aw7CDJay6h3xhHeknUV5s\",\"children\":[{\"text\":\"UploadRecordedFile\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"xW0hqzBg0r_V9zD1mrH9U\",\"children\":[{\"id\":\"XA422oV-6eJ6dFvxAR4o5\",\"children\":[{\"id\":\"R6_mm41Lhq-jRa0MbRXHv\",\"children\":[{\"text\":\"Uploads the audio file\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"QiGcjqY67S448sw6yuKtx\",\"children\":[{\"id\":\"KhvqbF-iHcCtljiATOj4y\",\"children\":[{\"id\":\"wJtlmxZkje8N4S4dJ3z9Q\",\"children\":[{\"id\":\"7KSBiwPils2C0kc15_-dH\",\"children\":[{\"text\":\"DownloadRecordedFile\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"txIKKCe6dSc5PQl5Uxcfa\",\"children\":[{\"id\":\"MdYz45QFxm_kDxEBUWoCJ\",\"children\":[{\"id\":\"J5eHwYPu72ivJzTZX9p1W\",\"children\":[{\"text\":\"Downloads the audio file\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"ZoCJueaPbTwyl_ogZIyfL\",\"children\":[{\"id\":\"m4FiEcf3OrBhtczGvhOMt\",\"children\":[{\"id\":\"SCbdp907zfRb88zZdNdo3\",\"children\":[{\"id\":\"tCcEKU6-Z0_aghCjWUfr5\",\"children\":[{\"text\":\"PlayRecordedFile\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"U925Ju-fbFz30FsVKImRc\",\"children\":[{\"id\":\"1hmEXZrfOdk81n3vGhD2N\",\"children\":[{\"id\":\"V6NAUj1wZ6RVtmZi6n3fo\",\"children\":[{\"text\":\"Plays back audio\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"lEpKlpaKRc1V7dBi9-npM\",\"children\":[{\"id\":\"ar3e4_C1HVzCVL17Q0YEi\",\"children\":[{\"id\":\"1IdD5YSMV05bZNR_XdNBK\",\"children\":[{\"id\":\"KRFXfhopnhpOrqPmvw7vk\",\"children\":[{\"text\":\"StopPlayFile\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"eCgF_CAoebBZQ5U2vw-ez\",\"children\":[{\"id\":\"33tmj9UZS3uFnZN6wWAbT\",\"children\":[{\"id\":\"VVi0xgC8N3kcEpYCYZELt\",\"children\":[{\"text\":\"Stops playing back audio\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"enwfeVkLz0IxWEw4F1wXi\",\"children\":[{\"id\":\"49dwK9_3HOOstzDSbdOnp\",\"children\":[{\"id\":\"IqrKR72R258GP7Prejx5J\",\"children\":[{\"id\":\"z1fS25NTyqcMXzMAurC7Z\",\"children\":[{\"text\":\"GetFileSize\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"xE9rKgEBNqfUhkwRRPKAS\",\"children\":[{\"id\":\"ftA5vBPMu0R0GS0iv5jLb\",\"children\":[{\"id\":\"oDD4IeXJU5g8vcZqX6UFW\",\"children\":[{\"text\":\"Gets the audio file size\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"uv-0zR0IdBnYWDnskpioN\",\"children\":[{\"id\":\"Ec6LAvZ-9C1v7j0mqeAVI\",\"children\":[{\"id\":\"BJgHM8BWFYlABkjQJ0ZNx\",\"children\":[{\"id\":\"a4IXEeQrjIFgYW5OZmTXz\",\"children\":[{\"text\":\"GetVoiceFileDuration\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"-dQxMlWLj0yQULeLoIxMM\",\"children\":[{\"id\":\"Kcx5rT0CXjqMM6xV51iKl\",\"children\":[{\"id\":\"OQcq9V3VmnvStTsw1t6xT\",\"children\":[{\"text\":\"Gets the audio file duration\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"2phbBA8hUsvC0Y1_Q30-J\",\"children\":[{\"id\":\"5buBRCOLlV-2qeStqLkdJ\",\"children\":[{\"id\":\"ggo_D5z576Gd7Sj3UrejM\",\"children\":[{\"id\":\"AgpalWE-DwpMfW9PrOQ7A\",\"children\":[{\"text\":\"SpeechToText\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"We6xfMPUNGF15aQjBDxP0\",\"children\":[{\"id\":\"39YwiNTDfFhuXNOW0BTlr\",\"children\":[{\"id\":\"CqsPvFUzQevnRdCf7hrO3\",\"children\":[{\"text\":\"Converts speech to text\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[46,54],\"widthMode\":\"percentage\"},{\"id\":\"MXzbEchrkhAVOrqZIK2La\",\"children\":[{\"id\":\"-V8fpGqTIe4nunvC4UKuo\",\"children\":[{\"b\":1,\"color\":\"#FF7800\",\"text\":\"Maximum recording duration\"}],\"type\":\"p\"},{\"id\":\"KanU93sbC9xnknWcSt_F7\",\"children\":[{\"text\":\"The maximum recording duration of a voice message is 58 seconds by default, and the minimum recording duration cannot be less than 1 second. If you want to customize the recording duration, for example, to modify the maximum recording duration to 10 seconds, please call the \"},{\"code\":1,\"text\":\"SetMaxMessageLength\"},{\"text\":\" API to set it after initialization.\"}],\"type\":\"p\"}],\"hintType\":\"warn\",\"type\":\"hint\"},{\"id\":\"7FGybyYJ453ujud91Rv_F\",\"children\":[{\"text\":\"Initializing the SDK\"}],\"nodeId\":\"initializing-the-sdk\",\"type\":\"h3\"},{\"id\":\"jNNTG3xsutbDhkWsxWaJO\",\"children\":[{\"text\":\"Before the initialization, the SDK is in the uninitialized status, and you need to initialize it through the \"},{\"code\":1,\"text\":\"Init\"},{\"text\":\" API before you can use the voice chat and voice message services.\"}],\"type\":\"p\"},{\"id\":\"gkgCc0iJ9SZy19Wh_gv4e\",\"children\":[{\"text\":\"If you have any questions when using the service, see \"},{\"id\":\"M6eBwqK82OVLs9jl5ZzWw\",\"children\":[{\"text\":\"Speech-to-text Conversion\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://intl.cloud.tencent.com/document/product/607/39716\",\"props\":{\"type\":\"link\",\"url\":\"https://intl.cloud.tencent.com/document/product/607/39716\"},\"type\":\"ref\"},{\"text\":\".\"}],\"type\":\"p\"},{\"id\":\"J4wqYy4RsifqKlDaBvML6\",\"children\":[{\"text\":\"Authentication information\"}],\"nodeId\":\"authentication-information\",\"type\":\"h3\"},{\"id\":\"Tls3gMP0CAlnqga54rNCA\",\"children\":[{\"text\":\"Generate \"},{\"code\":1,\"text\":\"AuthBuffer\"},{\"text\":\" for encryption and authentication of relevant features. For release in the production environment, please use the backend deployment key as detailed in \"},{\"id\":\"XsattbyUsMkODa1GfG9F6\",\"children\":[{\"text\":\"Authentication Key\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://intl.cloud.tencent.com/document/product/607/12218\",\"props\":{\"type\":\"link\",\"url\":\"https://intl.cloud.tencent.com/document/product/607/12218\"},\"type\":\"ref\"},{\"text\":\". \"}],\"type\":\"p\"},{\"id\":\"BYAtHkxkJkOdEfKC20Auw\",\"children\":[{\"text\":\"To get authentication for voice message and speech-to-text, the room ID parameter must be set to \"},{\"code\":1,\"text\":\"null\"},{\"text\":\".\"}],\"type\":\"p\"},{\"id\":\"_8krUkG40pq38yJM4gKpF\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\"function-prototype7\",\"type\":\"h4\"},{\"id\":\"ZpdwE7SelL0REBa40J-jx\",\"children\":[{\"id\":\"Q38_wETy0eqs7gju_TGCI\",\"children\":[{\"text\":\"@interface QAVAuthBuffer : NSObject\"}],\"type\":\"code-line\"},{\"id\":\"dlWcv8kiIUEnuhUAKMsWV\",\"children\":[{\"text\":\"+ (NSData*) GenAuthBuffer:(unsigned int)appId roomId:(NSString*)roomId openID:(NSString*)openID key:(NSString*)key;\"}],\"type\":\"code-line\"},{\"id\":\"Pro5SMDPIJNOFlvq0w3yp\",\"children\":[{\"text\":\"+ @end\"}],\"type\":\"code-line\"},{\"id\":\"Q5Y32lgSqgSKQZi_qaEoL\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"1dN5r-F3BXPH6JwY9zXMu\",\"children\":[{\"id\":\"9fzoxPSnVViWM46pqCh81\",\"children\":[{\"id\":\"E_XIgJvExJWFoDyPSh0wk\",\"children\":[{\"id\":\"EXFmXU20WQ7IIamESA0oF\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"38UsLmFnl6ORIjF0olkQR\",\"children\":[{\"id\":\"OAfXBzawmtypntaCYs51J\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"j_NHXVC9oIA7pIcL4Ncqd\",\"children\":[{\"id\":\"mT-i_99kJsFNo6zm2DHjF\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"BuIg9gt46_WWAwsIJR-GA\",\"children\":[{\"id\":\"68XvGw65YpNmeJN1nXHgS\",\"children\":[{\"id\":\"nV5WVPx5xvJ-9lNI06T5r\",\"children\":[{\"id\":\"cORELSNtUUW4TZ56kiLkB\",\"children\":[{\"text\":\"appId\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"LAhkaVkLZ1Rk1S-AIgzo3\",\"children\":[{\"id\":\"0_oju7_v1Ysv_4XrooAic\",\"children\":[{\"id\":\"LjIMyWVsUxH1js1rapeIg\",\"children\":[{\"text\":\"int\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"DLPZjQ6xLeHLotPJbVeSz\",\"children\":[{\"id\":\"xt84W4T335lMj1rFLUE9b\",\"children\":[{\"id\":\"yN-LAQDlIV8RBkK6rYT5_\",\"children\":[{\"code\":1,\"text\":\"AppId\"},{\"text\":\" from the \"},{\"id\":\"t15xnORFnGPp5YsqITTWw\",\"children\":[{\"text\":\"Tencent Cloud console\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://console.tencentcloud.com/gamegme\",\"props\":{\"type\":\"link\",\"url\":\"https://console.tencentcloud.com/gamegme\"},\"type\":\"ref\"},{\"text\":\".\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"CQwAEtJoHnAd4Dj2ZnDSy\",\"children\":[{\"id\":\"8ASGe5nOv0QX1BoyYGN4R\",\"children\":[{\"id\":\"Y4rUsSwgKLj7voIGmGnop\",\"children\":[{\"id\":\"i9hcSn4j3vpJd6JJ9JNMy\",\"children\":[{\"text\":\"roomId\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"3SNjO0Md9n4FGbbpghhb1\",\"children\":[{\"id\":\"mAErg-MdFQKho9Ub79GEE\",\"children\":[{\"id\":\"e7WX76JigTTS01Vyb58k_\",\"children\":[{\"text\":\"NSString\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ocR9zcZA-Cnow_dpnTQK4\",\"children\":[{\"id\":\"nU8gSSx91GF6o4mjjvxqQ\",\"children\":[{\"id\":\"BbCU1ba7R964wMOtGFigM\",\"children\":[{\"text\":\"Enter \"},{\"code\":1,\"text\":\"null\"},{\"text\":\".\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"u2rlI8PT0S_eitKNNsnnI\",\"children\":[{\"id\":\"TUm4lb4bWGU7HnRKT3Z0j\",\"children\":[{\"id\":\"JnM95mY44jsWMiBhwiPvS\",\"children\":[{\"id\":\"QictpFf3rXWhnsHAzjYvB\",\"children\":[{\"text\":\"openID\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"_aMtbyMFZMvLebg3Hm7J5\",\"children\":[{\"id\":\"5X_UwQPDaKfyMH3Oynlsu\",\"children\":[{\"id\":\"VAVQ7Yd1QEXB8fli2_d1k\",\"children\":[{\"text\":\"NSString\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"f7mSRDFjk_9c2OhcuU9EM\",\"children\":[{\"id\":\"Jg38l1-i5qFgg316BPZmJ\",\"children\":[{\"id\":\"ZSEkvGvcwK9DZnRoFYlm5\",\"children\":[{\"text\":\"User ID, which is the same as \"},{\"code\":1,\"text\":\"openID\"},{\"text\":\" during initialization.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"WJKjG7DNn9r_8flQc1GVX\",\"children\":[{\"id\":\"i6RUnSFnaBcVdNnaJvdvO\",\"children\":[{\"id\":\"G0dyeIo3jRk9Dofy22deN\",\"children\":[{\"id\":\"kSnOfPJI5lmesu39K7aOO\",\"children\":[{\"text\":\"key\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"BuoZplu26l7sOEgeSzW_D\",\"children\":[{\"id\":\"DwA7TLEwRUzt9kqPfxTS4\",\"children\":[{\"id\":\"tUPdFNJBUgHVWSxoJm27P\",\"children\":[{\"text\":\"NSString\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"xNEzLmRVBgMBMsFDahSSd\",\"children\":[{\"id\":\"cmx4DbFGiv9D79JkZN8cI\",\"children\":[{\"id\":\"iLgfHL-EQ4ZJQEkfyPt7R\",\"children\":[{\"text\":\"Permission key from the Tencent Cloud \"},{\"id\":\"7xX1w3qFll47KScrPnq3w\",\"children\":[{\"text\":\"console\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://console.tencentcloud.com/gamegme\",\"props\":{\"type\":\"link\",\"url\":\"https://console.tencentcloud.com/gamegme\"},\"type\":\"ref\"},{\"text\":\".\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[16,15,69],\"widthMode\":\"percentage\"},{\"id\":\"tDaf8M6F62YETH2CuLHMl\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code7\",\"type\":\"h4\"},{\"id\":\"xWJM7R8siXkB3FVBRghlt\",\"children\":[{\"id\":\"4YRaJATkngSWkTMqb40G6\",\"children\":[{\"text\":\"#import \\\"GMESDK/QAVAuthBuffer.h\\\"\"}],\"type\":\"code-line\"},{\"id\":\"SymPzbstAVfVUcOwxjXBc\",\"children\":[{\"text\":\"NSData* authBuffer = [QAVAuthBuffer GenAuthBuffer:SDKAPPID3RD.intValue roomId:_roomId openID:_openId key:AUTHKEY];\"}],\"type\":\"code-line\"},{\"id\":\"lRar4UzpdXA0FNZWLGilr\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"vj_95L5IDezLQAWUroiDj\",\"children\":[{\"id\":\"sUIUFX1xUPseQWuMYm9nC\",\"children\":[{\"text\":\"Initializing authentication\"}],\"nodeId\":\"ApplyPtt\",\"type\":\"p\"}],\"nodeId\":\".3Ca-id.3D.22applyptt.22.3Einitializing-authentication.3C.2Fa.3E\",\"type\":\"h3\"},{\"id\":\"IQqdTgb9ch6GXiR7iMaai\",\"children\":[{\"text\":\"Call authentication initialization after initializing the SDK. For more information on how to get the \"},{\"code\":1,\"text\":\"authBuffer\"},{\"text\":\", see \"},{\"code\":1,\"text\":\"genAuthBuffer\"},{\"text\":\" (the voice chat authentication information API).\"}],\"type\":\"p\"},{\"id\":\"mhmeIcaAoEhT-t_Y6Xv3f\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\"function-prototype8\",\"type\":\"h4\"},{\"id\":\"MGcHHWt4DzYkoqQoe5cQT\",\"children\":[{\"id\":\"QrPJLfeWqgAu-gg_iaaEh\",\"children\":[{\"text\":\"public abstract int ApplyPTTAuthbuffer(byte[] authBuffer);\"}],\"type\":\"code-line\"},{\"id\":\"g3L04ae4q6Tf7TkkQgSdd\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"java\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"L6Hpg96S2i7Z1SdrF8Dda\",\"children\":[{\"id\":\"qwB2G_1OJuz-_WIa1Pw-z\",\"children\":[{\"id\":\"Q9K-5eYaxWPNitu6ztiAd\",\"children\":[{\"id\":\"dmTEjDyDHe-nqXD9czXVf\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ZjiauJa5H42rW9fmZNcgv\",\"children\":[{\"id\":\"VlE5y2aqr2oGN-zU0KxXM\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"QtDbDyIbjV44-TlL157jt\",\"children\":[{\"id\":\"Qh1hzLyQhvFh-3dfS55DG\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"IgLGfoBcpPzXmfRvOPsNR\",\"children\":[{\"id\":\"QH7se_FQxPZODneydbs71\",\"children\":[{\"id\":\"R9P8hj9fB_a9KQBgWk5Ar\",\"children\":[{\"id\":\"u4rdfawAirRbzAA1lr0cH\",\"children\":[{\"text\":\"authBuffer\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"x2jdoEDE6j23sNzqLBKU4\",\"children\":[{\"id\":\"voKoKGMUp8e_J4UfyffGk\",\"children\":[{\"id\":\"rFI_LD0597_LLgx9pNhUn\",\"children\":[{\"text\":\"NSData*\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"1SsthG_ZQ7uQQXkpkXP8P\",\"children\":[{\"id\":\"Q1U99GyZYa-1nU8XJZDyJ\",\"children\":[{\"id\":\"-BaevzgwaPhklp9dHBaj1\",\"children\":[{\"text\":\"Authentication\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[31,28,41],\"widthMode\":\"percentage\"},{\"id\":\"cRhcP3M3fsdWhcQmpixQk\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code8\",\"type\":\"h4\"},{\"id\":\"mdPagtq9HD4y3pHuatRH3\",\"children\":[{\"id\":\"lmIn468onM91071labdKl\",\"children\":[{\"text\":\"[[[ITMGContext GetInstance]GetPTT]ApplyPTTAuthbuffer:(NSData *)authBuffer];\"}],\"type\":\"code-line\"},{\"id\":\"p_LyMTTeRwb369QXu5PvY\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"hf28814iyNscQPj8JbVdQ\",\"children\":[{\"text\":\"Streaming Speech Recognition\"}],\"nodeId\":\"streaming-speech-recognition\",\"type\":\"h2\"},{\"id\":\"pFtjUvgJfV7sSYWY9XwaM\",\"children\":[{\"id\":\"cxO805iSqA5ekL-sKC9w8\",\"children\":[{\"text\":\"Starting streaming speech recognition\"}],\"nodeId\":\"StartRWSR\",\"type\":\"p\"}],\"nodeId\":\".3Ca-id.3D.22startrwsr.22.3Estarting-streaming-speech-recognition.3C.2Fa.3E\",\"type\":\"h3\"},{\"id\":\"Wo4TkpaVvxqb40bQD0CXO\",\"children\":[{\"text\":\"This API is used to start streaming speech recognition. Text obtained from speech-to-text conversion will be returned in real time in its callback. It can specify a language for recognition or translate the information recognized in speech into a specified language and return the translation. \"},{\"b\":1,\"text\":\"To stop recording, call \"},{\"b\":1,\"code\":1,\"text\":\"StopRecording\"},{\"text\":\". The callback will be returned after the recording is stopped.\"}],\"type\":\"p\"},{\"id\":\"Ll1pKS3ay_fFIrqV70i-E\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\"function-prototype9\",\"type\":\"h4\"},{\"id\":\"LlAr0E90l50CLWEOB8ovN\",\"children\":[{\"id\":\"OOePxCExVqHqI_UkBXTnT\",\"children\":[{\"text\":\"-(int)StartRecordingWithStreamingRecognition:(NSString *)filePath;\"}],\"type\":\"code-line\"},{\"id\":\"5nkSp-Y25tBxbHhl8fiRv\",\"children\":[{\"text\":\"-(int)StartRecordingWithStreamingRecognition:(NSString *)filePath language:(NSString*)speechLanguage translatelanguage:(NSString*)translateLanguage;\"}],\"type\":\"code-line\"},{\"id\":\"p6XKz3EJszgbvpP9Nmiyu\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"C40TthdE8ix-ZJuea1Qng\",\"children\":[{\"id\":\"wnis2C6Y4lmD1l1lQmI3Q\",\"children\":[{\"id\":\"YAMowdNC3Hrfqv9AB-wPY\",\"children\":[{\"id\":\"4jMhh_OjGxbauoHebPLpX\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"2TUctFeH_IeXVNERERmBZ\",\"children\":[{\"id\":\"c-pd8sTfCqJolN-6K-k2f\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"YvKbpvha-JD1iwe1lm0sv\",\"children\":[{\"id\":\"VTx918Qo7XC1akCPslZJN\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"sNJAEeV_aDOvwaeMOQlQX\",\"children\":[{\"id\":\"ed3x9ZXNlV55nMsawzwti\",\"children\":[{\"id\":\"ALBaHgluMMPxyAPPOQsfl\",\"children\":[{\"id\":\"XO1fcaiBtLqKNfOPDRed0\",\"children\":[{\"text\":\"filePath\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"cU_6VQka1KJl_fWK4DUqI\",\"children\":[{\"id\":\"2kk4uzcMDFHUECoBbjTgQ\",\"children\":[{\"id\":\"KlFbQ20mcD4oDPZePCW1L\",\"children\":[{\"text\":\"String\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"hL403lUKu_RJ85ycMlyOl\",\"children\":[{\"id\":\"qRePchSX-mDKGY0cv5MDG\",\"children\":[{\"id\":\"2a_zZ122zW4W8g_wwL4QN\",\"children\":[{\"text\":\"Path of stored audio file\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"Y6K2dxUy7zsr3xixqXdB7\",\"children\":[{\"id\":\"XEnoLF-WEefk90PkVVk9I\",\"children\":[{\"id\":\"nVQcBcJLu4lJOqIeqDl6O\",\"children\":[{\"id\":\"bkOfJkXfVjADEpIxIYvFm\",\"children\":[{\"text\":\"speechLanguage\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"GMv9IAsNOaGo0kV_Zl2t2\",\"children\":[{\"id\":\"vkikazDZFMYvOwOSvg9G3\",\"children\":[{\"id\":\"obe98zQGPfNoJufcZKgDL\",\"children\":[{\"text\":\"String\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"UZ-BtDv_Y7Ct04H0zzUAy\",\"children\":[{\"id\":\"bFrN71WHW8KbGV4_I8CoJ\",\"children\":[{\"id\":\"H04SZLMKwX-9mWJNdP7xE\",\"children\":[{\"text\":\"The language in which the audio file is to be converted to text. For parameters, see \"},{\"id\":\"oFXuMbqjdCsLGXSCmjgAA\",\"children\":[{\"text\":\"Language Parameter Reference List\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://intl.cloud.tencent.com/document/product/607/30260\",\"props\":{\"type\":\"link\",\"url\":\"https://intl.cloud.tencent.com/document/product/607/30260\"},\"type\":\"ref\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"TV0_dbuzRIDT3yTWUGUkD\",\"children\":[{\"id\":\"ruBTlrmEJDHkueCdQ9Eyt\",\"children\":[{\"id\":\"4c7IHgkHQuoKMZhTBPnq1\",\"children\":[{\"id\":\"K3mXPzhtHfv-TALsadsl0\",\"children\":[{\"text\":\"translateLanguage\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"RhS72TFif_Crp8-sVGziY\",\"children\":[{\"id\":\"hiCvpjdTQzLGXq0Jrcs2h\",\"children\":[{\"id\":\"FYtF8h_EQUDeqOb5v6uml\",\"children\":[{\"text\":\"String\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"NeHH0sPWPIO3HH0hNfV3m\",\"children\":[{\"id\":\"BOw5ghYf8ee0H2ZbaXjuJ\",\"children\":[{\"id\":\"WmM_l404Rcw8nQiKpJ8-5\",\"children\":[{\"text\":\"The language into which the audio file will be translated. For parameters, see \"},{\"id\":\"WM3mgiMrXGIhpplFZbMUB\",\"children\":[{\"text\":\"Language Parameter Reference List\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://intl.cloud.tencent.com/document/product/607/30260\",\"props\":{\"type\":\"link\",\"url\":\"https://intl.cloud.tencent.com/document/product/607/30260\"},\"type\":\"ref\"},{\"text\":\" (This parameter is currently unavailable. Enter the same value as that of \"},{\"code\":1,\"text\":\"speechLanguage\"},{\"text\":\")\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[17,9,74],\"widthMode\":\"percentage\"},{\"id\":\"n2yKNT9VdJkdCUS5ClSmZ\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code9\",\"type\":\"h4\"},{\"id\":\"36TRmGcXgFjacNM3jO7TB\",\"children\":[{\"id\":\"TjXH78vrYCtRHsO2aKuho\",\"children\":[{\"text\":\"recordfilePath = [docDir stringByAppendingFormat:@\\\"/test_%d.ptt\\\",index++];\"}],\"type\":\"code-line\"},{\"id\":\"SvcEc8Odk3d0JzMsypxRr\",\"children\":[{\"text\":\"[[[ITMGContext GetInstance] GetPTT] StartRecordingWithStreamingRecognition:recordfilePath language:@\\\"cmn-Hans-CN\\\"];\"}],\"type\":\"code-line\"},{\"id\":\"ogx8cmf0vskVKot2iHFJM\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"AdFn_gTcQJz7y3ZWV95_A\",\"children\":[{\"text\":\"Callback for streaming speech recognition\"}],\"nodeId\":\"callback-for-streaming-speech-recognition\",\"type\":\"h3\"},{\"id\":\"GRRkgRP5MDnx31XZjKjSL\",\"children\":[{\"text\":\"After streaming speech recognition is started, you need to listen for callback messages in the callback function \"},{\"code\":1,\"text\":\"onEvent\"},{\"text\":\". Event messages are divided into:\"}],\"type\":\"p\"},{\"id\":\"PD7ciES7wh8qP2d9XqvrS\",\"children\":[{\"code\":1,\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRECOGNITION_COMPLETE\"},{\"text\":\" returns text after the recording is stopped and the recognition is completed, which is equivalent to returning the recognized text after a paragraph of speech.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"Db46inePdFhTlrij8Hp-q\",\"children\":[{\"code\":1,\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRECOGNITION_IS_RUNNING\"},{\"text\":\" returns the recognized text in real-time during the recording, which is equivalent to returning the recognized text while speaking.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"6EGgOquBO5F7287DswnpH\",\"children\":[{\"text\":\"The event message will be identified in the \"},{\"code\":1,\"text\":\"OnEvent function\"},{\"text\":\" based on the actual needs. The passed parameters include the following four messages.\"}],\"type\":\"p\"},{\"id\":\"ddkRi0HGNTgrCQfWaV98g\",\"children\":[{\"id\":\"9Rrmifyb1YRYdbo4Kqt1D\",\"children\":[{\"id\":\"2QNqKHnZIdP7EB8v3Oqdj\",\"children\":[{\"id\":\"jLN-hRkk2t_YpohiYy_IW\",\"children\":[{\"text\":\"Message Name\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"8XT12I3A1p7XgPm3O9wuk\",\"children\":[{\"id\":\"1wI1qV_9NjZ4gXaksBFIe\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"wCNWFwZjvjhUPGYAGQDEL\",\"children\":[{\"id\":\"JxGRlnn1oioxKPuEV_S3l\",\"children\":[{\"id\":\"AkJKZumjrkEv_HdIBv9y8\",\"children\":[{\"id\":\"fa-viMuuRm3L_yVSOREuC\",\"children\":[{\"text\":\"result\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"SFRRRXFeKN31Icwrb2gsf\",\"children\":[{\"id\":\"XrM8MfbLL9pbf9R0R-Il5\",\"children\":[{\"id\":\"C4lEzt6uQPPJojcSiYCev\",\"children\":[{\"text\":\"A return code for judging whether the streaming speech recognition is successful.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"Z5SX-8iXHO2eZeqnJxYYk\",\"children\":[{\"id\":\"eMXYUdRfEnMyO9r184X8v\",\"children\":[{\"id\":\"5XqmrUAYaLk_YlhBFzWto\",\"children\":[{\"id\":\"JOwd8YnBtM_AR12xozJHF\",\"children\":[{\"text\":\"text\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"VikXR1tYDCje1rAZUqgQu\",\"children\":[{\"id\":\"qxr82qXajFUy70QVyy8X3\",\"children\":[{\"id\":\"4Bm2iSPcGho2b6U3j_ID5\",\"children\":[{\"text\":\"Text converted from speech\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"5Nqi9wQtIceRPlnrDvN36\",\"children\":[{\"id\":\"98JawOVSzGdXuBB10PIi-\",\"children\":[{\"id\":\"BeVXxK0CirHK1AXUcYy69\",\"children\":[{\"id\":\"fNAUPtNyX360JL1adTqn3\",\"children\":[{\"text\":\"file_path\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"HO1_EmfnP4zzJec_eplKz\",\"children\":[{\"id\":\"JqpKeHAdYo3angH6hZLhL\",\"children\":[{\"id\":\"8YPnBlSOFCM-nd_2kFbvi\",\"children\":[{\"text\":\"Local path of stored recording file\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"ZClKIVFiAFnB7o_QaisUk\",\"children\":[{\"id\":\"Dmr5_EYvn9QkHJm0_cOVT\",\"children\":[{\"id\":\"ltl4to4J3kAqOqjeAzXip\",\"children\":[{\"id\":\"9MCQMkd9vGp2vrTPqLWWd\",\"children\":[{\"text\":\"file_id\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"a0jiFN8-u2PYXfbjeFomb\",\"children\":[{\"id\":\"QBUobVgEHiWZX1WL66c98\",\"children\":[{\"id\":\"5GEs3x3s7mzA0kEgkKEoF\",\"children\":[{\"text\":\"Backend URL address of recording file, which will be retained for 90 days. \"},{\"code\":1,\"text\":\"fileid\"},{\"text\":\" is fixed at \"},{\"code\":1,\"text\":\"http://gme-v2-\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[15,85],\"widthMode\":\"percentage\"},{\"id\":\"BxGkYzzVs_pX3HPJlQQLD\",\"children\":[{\"id\":\"7NCVJGAH8oG3kGCkjpUge\",\"children\":[{\"b\":1,\"color\":\"#04C8DC\",\"text\":\"Note: \"}],\"type\":\"p\"},{\"id\":\"DGYxH-af4RCKghU5fdENl\",\"children\":[{\"text\":\"The file_id is empty when the 'ITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRecognition_IS_RUNNING' message is listened.\"}],\"type\":\"p\"}],\"hintType\":\"alert\",\"type\":\"hint\"},{\"id\":\"qtVoD1UvsO5dtTIFTZVqo\",\"children\":[{\"text\":\"Error codes\"}],\"nodeId\":\"error-codes\",\"type\":\"h4\"},{\"id\":\"vtf7PUXH4OD0hUc7BurG6\",\"children\":[{\"id\":\"pYfYDNUsN47s72vM-tJEY\",\"children\":[{\"id\":\"XHQFO7ojrmx7tUIm4fhGG\",\"children\":[{\"id\":\"a1ko7Z98M6Vc0Gjq50nIg\",\"children\":[{\"text\":\"Error Code\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"hp6yXM2pVs6-EXHikS51U\",\"children\":[{\"id\":\"kwrgxNojL4TqNh31PwYgT\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"kfle0N1rOp9mw1vc6I0bm\",\"children\":[{\"id\":\"_rgl9g4en4o6ykuCmxpVl\",\"children\":[{\"text\":\"Suggested Solution\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"v8nM7jkBXh2oOJaAA0KhB\",\"children\":[{\"id\":\"v_8lESd1xSKCNN2Txpf4W\",\"children\":[{\"id\":\"vW1VjqoGxpCLCedV5NNQ_\",\"children\":[{\"id\":\"mMV-CQ5faJBQBQYqMZBkg\",\"children\":[{\"text\":\"32775\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"KWuyRlz0lZTEjNER7JR3n\",\"children\":[{\"id\":\"ruDV9EAJ0kfkJnKhlbXxd\",\"children\":[{\"id\":\"TIRuG1ITxkhOlg6gnIhhe\",\"children\":[{\"text\":\"Streaming speech-to-text conversion failed, but recording succeeded.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ypi_RD70MQg0XVe-jVvQe\",\"children\":[{\"id\":\"utkbe3-oHk98t6EoU2aHG\",\"children\":[{\"id\":\"FteOOwznAvPfKgFEV56n5\",\"children\":[{\"text\":\"Call the \"},{\"code\":1,\"text\":\"UploadRecordedFile\"},{\"text\":\" API to upload the recording file and then call the \"},{\"code\":1,\"text\":\"SpeechToText\"},{\"text\":\" API to perform speech-to-text conversion.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"QzyrLF21ZCGQOf2HQQ1Ad\",\"children\":[{\"id\":\"IkX3NnTA4f349hjVvLWT6\",\"children\":[{\"id\":\"wmK79Xu6zln84fvQt6ysh\",\"children\":[{\"id\":\"YeK64vSaz_OkR4mwx48Z6\",\"children\":[{\"text\":\"32777\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"5fZ42ARegg54u3b7ouAt1\",\"children\":[{\"id\":\"mBoyxIkUYAoVXhKaiNyvA\",\"children\":[{\"id\":\"RRa6CYwuD5JsCsNVHbMkr\",\"children\":[{\"text\":\"Streaming speech-to-text conversion failed, but recording and upload succeeded.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"uKb5G89QbgiGDkSjMbqQV\",\"children\":[{\"id\":\"LquxJXETQZhXVV63HwMRA\",\"children\":[{\"id\":\"7enNSs3qquwEBr9S1LX9j\",\"children\":[{\"text\":\"The message returned contains a backend URL after successful upload. Call the \"},{\"code\":1,\"text\":\"SpeechToText\"},{\"text\":\" API to perform speech-to-text conversion.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"Zl18uyMq1Yv6DGT-fhQRt\",\"children\":[{\"id\":\"BBRHY_0zllwdCJhCqji5X\",\"children\":[{\"id\":\"Z8dVwfN7dRTKAW7hGfs-w\",\"children\":[{\"id\":\"MFvjjE2HHT4L9WhL123RV\",\"children\":[{\"text\":\"32786\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Cz3a8_tLD04iMr7jvqz9D\",\"children\":[{\"id\":\"hdRfUXsBJf3TpJUWvVdHB\",\"children\":[{\"id\":\"D7D2WknRxF0dybEj65ZTu\",\"children\":[{\"text\":\"Streaming speech-to-text conversion failed.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"WQbnczNGmFD3CgV9dmpsc\",\"children\":[{\"id\":\"Y7k3X_5h6suDClMseEUhL\",\"children\":[{\"id\":\"y2QOeNTKlqc0RaqwGXbk9\",\"children\":[{\"text\":\"During streaming recording, wait for the execution result of the streaming recording API to return.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[13,34,53],\"widthMode\":\"percentage\"},{\"id\":\"T-0YjrliQ5lCBmWmNdm5u\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code10\",\"type\":\"h4\"},{\"id\":\"ylzd963rwrs_h4fCOCa6b\",\"children\":[{\"id\":\"E-aaAf8jHh2PCkE1liN09\",\"children\":[{\"text\":\"- (void)OnEvent:(ITMG_MAIN_EVENT_TYPE)eventType data:(NSDictionary*)data\"}],\"type\":\"code-line\"},{\"id\":\"28WKFGOIndy63CBnflCUY\",\"children\":[{\"text\":\"{\"}],\"type\":\"code-line\"},{\"id\":\"OMZTSSp61N7K9We1YX8Z1\",\"children\":[{\"text\":\" NSNumber *number = [data objectForKey:@\\\"result\\\"];\"}],\"type\":\"code-line\"},{\"id\":\"9KDp10UMHkLSOyxp-Gtnv\",\"children\":[{\"text\":\" switch (eventType)\"}],\"type\":\"code-line\"},{\"id\":\"dOt4HDKJbbLCbI-PpLK-N\",\"children\":[{\"text\":\" {\"}],\"type\":\"code-line\"},{\"id\":\"K0faXppGl7mfdJhg12M8S\",\"children\":[{\"text\":\" case ITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRECOGNITION_COMPLETE:\"}],\"type\":\"code-line\"},{\"id\":\"0JlIdxLQpQm87Q86kz8Xg\",\"children\":[{\"text\":\" {\"}],\"type\":\"code-line\"},{\"id\":\"R0y4mka5swDCm9vI0EFTg\",\"children\":[{\"text\":\" if (data != NULL &&[[data objectForKey:@\\\"result\\\"] intValue]== 0)\"}],\"type\":\"code-line\"},{\"id\":\"f8dhlL5Og9tgHRmluNmJp\",\"children\":[{\"text\":\" {\"}],\"type\":\"code-line\"},{\"id\":\"yTH1Fat8r4WkckM3WdN02\",\"children\":[{\"text\":\" donwLoadUrlPath = data[@\\\"file_id\\\"];\"}],\"type\":\"code-line\"},{\"id\":\"4BdKc7yWPr3l-tspzJcR9\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"},{\"id\":\"RXt38_urbe-HUHBpUB56m\",\"children\":[{\"text\":\" recordfilePath = [data objectForKey:@\\\"file_path\\\"];\"}],\"type\":\"code-line\"},{\"id\":\"sThxayhXxxAyF-jzxzv9m\",\"children\":[{\"text\":\" _localFileField.text = recordfilePath;\"}],\"type\":\"code-line\"},{\"id\":\"8_Jl7jjvE4vqQJpTjnhLZ\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"},{\"id\":\"9srVQf6rFR_UXCUKEMvVX\",\"children\":[{\"text\":\" _donwloadUrlField.text = [data objectForKey:@\\\"file_id\\\"] ;\"}],\"type\":\"code-line\"},{\"id\":\"me9vrxadMHLmaed0GRXis\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"},{\"id\":\"LHLJQ1SmRnPcAlIF8-ri9\",\"children\":[{\"text\":\" UITextField *_audiotoTextField =(UITextField*)objc_getAssociatedObject(self, [PTT_AUDIO_TO_TEXT UTF8String]);\"}],\"type\":\"code-line\"},{\"id\":\"8U2R5vKd_vYbbuz2BbSAF\",\"children\":[{\"text\":\" _audiotoTextField.text = [data objectForKey:@\\\"text\\\"] ;\"}],\"type\":\"code-line\"},{\"id\":\"u1JcAvY2lW5GyEyR38vSy\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"l89ExvairGNjrtGlfnzDP\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"},{\"id\":\"kivlHuzvEkJTxB_G5rL_w\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"BK5dWVe4vZ0eRtmQyXMQv\",\"children\":[{\"text\":\" break;\"}],\"type\":\"code-line\"},{\"id\":\"sos1UgGkZWNNY-E8g2vn4\",\"children\":[{\"text\":\" } \"}],\"type\":\"code-line\"},{\"id\":\"9GgdTyhKkfE5zsC1bwCKY\",\"children\":[{\"text\":\"}\\t\"}],\"type\":\"code-line\"},{\"id\":\"v9c1EwDXKvdVgX6iEOGDc\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"x_ocuBRmh3tw0dMF0NiZY\",\"children\":[{\"text\":\"Voice Message Recording\"}],\"nodeId\":\"voice-message-recording\",\"type\":\"h2\"},{\"id\":\"9Vr4k8jM2Zz-2wJAbsLzi\",\"children\":[{\"b\":1,\"text\":\"The recording process is as follows: start recording -> stop recording -> return recording callback -> start the next recording.\"}],\"type\":\"p\"},{\"id\":\"v5P6T0CXAMG3y0AqnS70s\",\"children\":[{\"text\":\"Specifying the maximum duration of voice message\"}],\"nodeId\":\"specifying-the-maximum-duration-of-voice-message\",\"type\":\"h3\"},{\"id\":\"eG2oRgl_bZxAls1dmjXG6\",\"children\":[{\"text\":\"This API is used to specify the maximum duration of a voice message, which can be up to 58 seconds.\"}],\"type\":\"p\"},{\"id\":\"4akNDconF5tI148PCr7Ur\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\"function-prototype10\",\"type\":\"h4\"},{\"id\":\"f-ro2nzmw0af9772TauiJ\",\"children\":[{\"id\":\"Vnvay0UvQP0QkP5_Jhmu1\",\"children\":[{\"text\":\"-(QAVResult)SetMaxMessageLength:(int)msTime\"}],\"type\":\"code-line\"},{\"id\":\"XXFEYCslgvKVZ2148uqVq\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"RAeGjYTjvx1fmKnVYrbCn\",\"children\":[{\"id\":\"PKO4efdp9W2fyDynNlkmh\",\"children\":[{\"id\":\"VfVB2hP7bSnuE6a7ToaUI\",\"children\":[{\"id\":\"jbAF-rL85fkmsGkewpIbk\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"zkq8bOG4e67GFVCc5vQeF\",\"children\":[{\"id\":\"fe5NkH-SK5wsiJgCag0_q\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"07gNvly2Id8ihU4sm40lP\",\"children\":[{\"id\":\"yR9BrpQhM6KhRs07BKXMz\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"AZYIkqkC_vCu3oe1bSFEQ\",\"children\":[{\"id\":\"TyjphtnlgTOtKZwR9y_PW\",\"children\":[{\"id\":\"h25b5s2iOhiHiJmbTgzk7\",\"children\":[{\"id\":\"L0yjrL3ZyS1yicVI9I9qn\",\"children\":[{\"text\":\"msTime\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"d4Bh6ysb3qt0g5qUxGl0E\",\"children\":[{\"id\":\"DTDO2oErQyer7krbbm2r2\",\"children\":[{\"id\":\"t-7oQ1vUcuLWPEQ1lHBJp\",\"children\":[{\"text\":\"int\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"sJOaqyPq89huC6YWOD9nQ\",\"children\":[{\"id\":\"0gmuwxfcfmkbnrS317HSa\",\"children\":[{\"id\":\"7nrYPEYaKeoVWmj8oOKlU\",\"children\":[{\"text\":\"Audio duration in ms. Value range: 1000 < msTime <= 58000\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[17,11,72],\"widthMode\":\"percentage\"},{\"id\":\"Jxokr4-dJhybCMCRSXe4N\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code11\",\"type\":\"h4\"},{\"children\":[{\"id\":\"aGToORsNNQ6rUvf26vh34\",\"children\":[{\"text\":\"[[[ITMGContext GetInstance]GetPTT]SetMaxMessageLength:(int)msTime];\"}],\"type\":\"code-line\"},{\"id\":\"se-ttNI_2je54fNG_eoqZ\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"id\":\"358\",\"language\":\"bash\",\"name\":\"Java\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"UMIUvIZRgoiFDs5r3nFKI\",\"children\":[{\"text\":\"Starting recording\"}],\"nodeId\":\"starting-recording\",\"type\":\"h3\"},{\"id\":\"Y0WBAcph-bi7u4XoyaEqP\",\"children\":[{\"text\":\"This API is used to start recording. The recording file must be uploaded first before you can perform operations such as speech-to-text conversion. \"},{\"b\":1,\"text\":\"To stop recording, call \"},{\"b\":1,\"code\":1,\"text\":\"StopRecording\"},{\"text\":\".\"}],\"type\":\"p\"},{\"id\":\"oNi4YGOMa3eb9N2Uv3ixI\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\"function-prototype11\",\"type\":\"h4\"},{\"children\":[{\"id\":\"2i23t9il5Ipqr5VaWgHJX\",\"children\":[{\"text\":\"-(int)StartRecording:(NSString*)filePath;\"}],\"type\":\"code-line\"},{\"id\":\"2oT931K7KCqzO-tE_VVID\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"id\":\"359\",\"language\":\"bash\",\"name\":\"Java\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"BEA-BnWRnLmb9gjGcDdss\",\"children\":[{\"id\":\"-KIb_8oo-3zt6q6bFsx3_\",\"children\":[{\"id\":\"1GF54OT0gPkmJl11B-Soa\",\"children\":[{\"id\":\"NIVXYro_l76GZw5V_JvFl\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"l-Xb-tY1qjKkXnX3PUMd4\",\"children\":[{\"id\":\"Z37QszAZh1eVUubiQ4h-3\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"9BgDv0DhFaZrP7wsqKeBJ\",\"children\":[{\"id\":\"QtZk8bj1WYo_uMT5BapAF\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"IHtBRBBa0ajSkPMdAeqwm\",\"children\":[{\"id\":\"8a-QO9Rm_z2ZdSjlF5VUL\",\"children\":[{\"id\":\"5pMTj52kvFGWzqLhgpovb\",\"children\":[{\"id\":\"9GOyZHqwPpsJmorMV1D2J\",\"children\":[{\"text\":\"filePath\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"_sDYxAOy7vjY2K9PhuLnP\",\"children\":[{\"id\":\"jcSqsRh246yPNXIQA4sAq\",\"children\":[{\"id\":\"9B2LpkVgNVfOKgoImiwdo\",\"children\":[{\"text\":\"NSString\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"wlMW6iOEwVdq5TO3C9QQ8\",\"children\":[{\"id\":\"cZzu9n9-9VQzCaul3NOHu\",\"children\":[{\"id\":\"_YE0S0QGzABU8QHflXypA\",\"children\":[{\"text\":\"Path of stored audio file\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[26,24,50],\"widthMode\":\"percentage\"},{\"id\":\"v8xGxK314-OXcDl1YthEM\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code12\",\"type\":\"h4\"},{\"children\":[{\"id\":\"Tr6sH63UjdVmkyRf9n4NE\",\"children\":[{\"text\":\"recordfilePath =[docDir stringByAppendingFormat:@\\\"/test_%d.ptt\\\",index++];\"}],\"type\":\"code-line\"},{\"id\":\"YQh2rGLdqlbIDOiDz6DDc\",\"children\":[{\"text\":\"[[[ITMGContext GetInstance]GetPTT]StartRecording:recordfilePath];\"}],\"type\":\"code-line\"},{\"id\":\"JwkgQMiJl6bWV0CLU0PDe\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"id\":\"360\",\"language\":\"bash\",\"name\":\"Java\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"BuC0nu2J11qRyo2ixp8cF\",\"children\":[{\"id\":\"wGPvj-hclkkO1ynDeZw-0\",\"children\":[{\"text\":\"Stopping recording\"}],\"nodeId\":\"Stop\",\"type\":\"p\"}],\"nodeId\":\".3Ca-id.3D.22stop.22.3Estopping-recording.3C.2Fa.3E\",\"type\":\"h3\"},{\"id\":\"mutWTLhgqQfzdCQWBmKgm\",\"children\":[{\"text\":\"This API is used to stop recording. It is async, and a callback for recording completion will be returned after recording stops. A recording file will be available only after recording succeeds.\"}],\"type\":\"p\"},{\"id\":\"vlcNkJjYIwkWjuMdvYgDC\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\"function-prototype12\",\"type\":\"h4\"},{\"id\":\"bjUsS9-NwmoAsT1ouFHGC\",\"children\":[{\"id\":\"dTebc-sqzuEDviA6qKVml\",\"children\":[{\"text\":\"-(QAVResult)StopRecording;\"}],\"type\":\"code-line\"},{\"id\":\"l0-9B5S0zezKnlTpzFzTn\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"tjMSpDH7rpCpNQoWLNoHh\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code13\",\"type\":\"h4\"},{\"id\":\"RG_6A-itSdyuGk0L0Xe11\",\"children\":[{\"id\":\"y6yJOx1970JwA6q6vKz8U\",\"children\":[{\"text\":\"[[[ITMGContext GetInstance]GetPTT]StopRecording];\"}],\"type\":\"code-line\"},{\"id\":\"n_NYeSk8pOB03c3mbl02n\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"RpdrlEROMzDHYpQFzuY4E\",\"children\":[{\"text\":\"Callback for recording start\"}],\"nodeId\":\"callback-for-recording-start\",\"type\":\"h3\"},{\"id\":\"yVxv5kwpV8j2rBElNUpsG\",\"children\":[{\"text\":\"A callback will be executed through a delegate function to pass a message when recording is completed.\"}],\"type\":\"p\"},{\"id\":\"0rxCP5lZgeiNKzJB9JADk\",\"children\":[{\"b\":1,\"text\":\"To stop recording, call \"},{\"b\":1,\"code\":1,\"text\":\"StopRecording\"},{\"text\":\". The callback for recording start will be returned after the recording is stopped.\"}],\"type\":\"p\"},{\"id\":\"wPErs39KFieBq7yoCBGNk\",\"children\":[{\"text\":\"The callback function \"},{\"code\":1,\"text\":\"OnEvent\"},{\"text\":\" will be called after recording is started. The event message \"},{\"code\":1,\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_RECORD_COMPLETE\"},{\"text\":\" will be returned, which will be identified in the \"},{\"code\":1,\"text\":\"OnEvent\"},{\"text\":\" function.\\nThe passed parameter includes \"},{\"code\":1,\"text\":\"result\"},{\"text\":\" and \"},{\"code\":1,\"text\":\"file_path\"},{\"text\":\".\"}],\"type\":\"p\"},{\"id\":\"IWkepzuX1bKuM3JKQ94lH\",\"children\":[{\"text\":\"Error codes\"}],\"nodeId\":\"error-codes2\",\"type\":\"h4\"},{\"id\":\"WULGSCTBSIIoenhOmX1C6\",\"children\":[{\"id\":\"h4iEpJBHhxsTNZvkArlrj\",\"children\":[{\"id\":\"xhKIxCiAKHwSHKRMba7-U\",\"children\":[{\"id\":\"-CcvOa8UBX8bpma1CVeUc\",\"children\":[{\"text\":\"Error Code Value\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"k3nWXs7l2X798oGOzr90g\",\"children\":[{\"id\":\"-JTR3pHnR0maEcm_yJkr2\",\"children\":[{\"text\":\"Cause\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"afOOtg71Ad2STGjN4AIEI\",\"children\":[{\"id\":\"3yErLJtWEItMXQrI4lotW\",\"children\":[{\"text\":\"Suggested Solution\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"APlcSt2bOEjRTfsq3d-xo\",\"children\":[{\"id\":\"GWokYb_dBpvZOF-JdAG56\",\"children\":[{\"id\":\"RAy4SqBn2jRMXD0We7rHo\",\"children\":[{\"id\":\"FZLqun21qg6cauQ4v6Qnq\",\"children\":[{\"text\":\"4097\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"JZ-7hjnyZhCDlTAsJCVIl\",\"children\":[{\"id\":\"9nSz43OaZEXuyDh5d5ZhG\",\"children\":[{\"id\":\"0zYk0Xoj3fJJ0GDu2geMY\",\"children\":[{\"text\":\"Parameter is empty.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"v6HUHsLuAWAI6yVcDifoL\",\"children\":[{\"id\":\"NFKNH2lhsHkEb9Zse7jRv\",\"children\":[{\"id\":\"SP_rDDZNNo60nrsY4b2Qa\",\"children\":[{\"text\":\"Check whether the API parameters in the code are correct.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"k4c0Bd4zJBkISjwaa1u68\",\"children\":[{\"id\":\"O3vkZCWHrnQ8fetaSawQj\",\"children\":[{\"id\":\"BQ03G1HUwxsFtNATxxmYV\",\"children\":[{\"id\":\"uBMoEJMeF1HBH0RgEewdR\",\"children\":[{\"text\":\"4098\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Xu1v4sOWnGHZ0iV-v5FY6\",\"children\":[{\"id\":\"Zd9iwuHHEsImab5JKdJzZ\",\"children\":[{\"id\":\"AqS1mtubzTdbVWMOaOPuc\",\"children\":[{\"text\":\"Initialization error.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"kWrSRZ0uOGKnHncUdNg6j\",\"children\":[{\"id\":\"pZgiEoleptx82-8boNInO\",\"children\":[{\"id\":\"fOFTNYmdhusjb7bNhIhji\",\"children\":[{\"text\":\"Check whether the device is being used, whether the permissions are normal, and whether the initialization is normal.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"xbW5fJkEwqbp0__-AZL9t\",\"children\":[{\"id\":\"vb8n5OcFevfeDuHr8p96t\",\"children\":[{\"id\":\"gnNeuP5xbx72ekClOOiOH\",\"children\":[{\"id\":\"WolcPqC965MkUYyVQuLIu\",\"children\":[{\"text\":\"4099\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ix0CZwmgWFDkEKxTgDG51\",\"children\":[{\"id\":\"XHDC5NKbqOIXP-S48sqqJ\",\"children\":[{\"id\":\"tzF16cI4JtQclm6VQrJ0W\",\"children\":[{\"text\":\"Recording is in progress.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"cSIFSHYXVEzH0QK9Vu6p2\",\"children\":[{\"id\":\"mgQptKyX11xcwMMMBSF_d\",\"children\":[{\"id\":\"WQ_7plLPPp7MHIHoEdPti\",\"children\":[{\"text\":\"Ensure that the SDK recording feature is used at the right time.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"k2iCeFY3Xb4u1CkFVquu4\",\"children\":[{\"id\":\"NmmpzgysZe_pZdH64tjhf\",\"children\":[{\"id\":\"6ihTZUH9bfDIimEHSQGRc\",\"children\":[{\"id\":\"bU_5F0FxIZmiJtEGa4jYT\",\"children\":[{\"text\":\"4100\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"jfsCsCrZn8MB4Txkyy9mo\",\"children\":[{\"id\":\"Vl7OECnQXv06NHtDxCbUh\",\"children\":[{\"id\":\"FlH7RFnnEhWChVuELhTqE\",\"children\":[{\"text\":\"Audio data is not captured.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"jFdL4h6aWas3tKlSvHNi5\",\"children\":[{\"id\":\"bgKyUb8xy_UuL6UMOsdgl\",\"children\":[{\"id\":\"0ZYR3OFxtaWpNbtFG3GrT\",\"children\":[{\"text\":\"Check whether the mic is working properly.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"j0B6XrB_eOAxPI2VM1FvZ\",\"children\":[{\"id\":\"r-FoW9YCtJkzGUND6nCpB\",\"children\":[{\"id\":\"J7BkY7wBr9dua7ce8RiWg\",\"children\":[{\"id\":\"mqKOjy85ZAT-Fd-R4KL2b\",\"children\":[{\"text\":\"4101\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"3IQ4wDObgKFNFBnZRuXht\",\"children\":[{\"id\":\"OmkFd4UZ442BSSOEe-0JE\",\"children\":[{\"id\":\"_63U292D9JJV5QYUx1a2-\",\"children\":[{\"text\":\"An error occurred while accessing the file during recording.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"X7Bn6gLLNvU2LTF5ffe1e\",\"children\":[{\"id\":\"MlT5w3Qhdj3Y0JI16kQ1O\",\"children\":[{\"id\":\"trCovsnIN0wXU2GaOVSbl\",\"children\":[{\"text\":\"Ensure the existence of the file and the validity of the file path.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"mfWpCgw9rKIWy9yZJk9qi\",\"children\":[{\"id\":\"DJoaxNaccWDOoR3VH4KQI\",\"children\":[{\"id\":\"QbCfTIpVmpQr3370pVtms\",\"children\":[{\"id\":\"IKJ6oBYhAKq0wzS4ZXaXi\",\"children\":[{\"text\":\"4102\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"oUFQgA1z-r-Z9ykW05Jm3\",\"children\":[{\"id\":\"G3VnkNY8ths2rhF-JaNXp\",\"children\":[{\"id\":\"xQQUcX6i95rRQQMMkb9nu\",\"children\":[{\"text\":\"The mic is not authorized.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"0FhkvnL_iJr1W5_J7jhde\",\"children\":[{\"id\":\"nAoyFMENfipCXrMZOlAbI\",\"children\":[{\"id\":\"5ubz8BtxzWwW3Pe88UvYd\",\"children\":[{\"text\":\"Mic permission is required for using the SDK. To add the permission, see the SDK project configuration document for the corresponding engine or platform.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"XFKxDdOH0MFVQrmSc0BMU\",\"children\":[{\"id\":\"1dkrWkZkeh-l9l2kZ2O3y\",\"children\":[{\"id\":\"IgRyPhJcn2UROu7bnWQYL\",\"children\":[{\"id\":\"lDUPAaYq1sD0dNX4fHMl4\",\"children\":[{\"text\":\"4103\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Ox7KHpfUn9erDWc2B7u2n\",\"children\":[{\"id\":\"5vWYyKGnLFwucNnBwXyKI\",\"children\":[{\"id\":\"fS7HYPDm3-cCRFtB6L7QM\",\"children\":[{\"text\":\"The recording duration is too short.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"NlkGSdeXFdMC_BBkR0pbB\",\"children\":[{\"id\":\"ajBhtGQ5eVIBmrORRVJlJ\",\"children\":[{\"id\":\"5md11m6q7RKJljVJs4Vxn\",\"children\":[{\"text\":\"The recording duration should be in ms and longer than 1,000 ms.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"lZ44dD7czCfrnoz6TN5NA\",\"children\":[{\"id\":\"O_ybQ_dCUSI6rXq-OkhQw\",\"children\":[{\"id\":\"y50SLktltXSdRRRSO0DVV\",\"children\":[{\"id\":\"f0RR4iB3ZhdpLEDPykcDM\",\"children\":[{\"text\":\"4104\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"cm7M4DqX1OKeCjDPNv4N2\",\"children\":[{\"id\":\"ifDWhmQCBoHp_1_YmvkSJ\",\"children\":[{\"id\":\"DbZWzOrU2Bl9wPzznqYxm\",\"children\":[{\"text\":\"No recording operation is started.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"vHW9T1yQhsRCrKEbk9kHH\",\"children\":[{\"id\":\"91SnnPUnWj0gNtp6Z05FK\",\"children\":[{\"id\":\"lBf8s6L4d84lofXxCvTys\",\"children\":[{\"text\":\"Check whether the recording starting API has been called.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[16,27,57],\"widthMode\":\"percentage\"},{\"id\":\"kuRvH16SUiozoPIRdU31x\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code14\",\"type\":\"h4\"},{\"id\":\"ZJ5lfOwo55sI6_uWjIDLf\",\"children\":[{\"id\":\"O-tvfc123gciXyaWu8v4q\",\"children\":[{\"text\":\"-(void)OnEvent:(ITMG_MAIN_EVENT_TYPE)eventType data:(NSDictionary *)data{\"}],\"type\":\"code-line\"},{\"id\":\"QHkHMcnUHyDjKdi-RvlZU\",\"children\":[{\"text\":\" NSLog(@\\\"OnEvent:%lu,data:%@\\\",(unsigned long)eventType,data);\"}],\"type\":\"code-line\"},{\"id\":\"wNvL7C32MEMQQpuY3vHme\",\"children\":[{\"text\":\" switch (eventType) {\"}],\"type\":\"code-line\"},{\"id\":\"psjHjRzz1OE_d0g43Pw9y\",\"children\":[{\"text\":\" case ITMG_MAIN_EVNET_TYPE_PTT_RECORD_COMPLETE:\"}],\"type\":\"code-line\"},{\"id\":\"RwToE1pccWvxgLqQbRkik\",\"children\":[{\"text\":\" {\"}],\"type\":\"code-line\"},{\"id\":\"JoSMZm14aEtcOCcrw7JC1\",\"children\":[{\"text\":\" //Recording callback\"}],\"type\":\"code-line\"},{\"id\":\"Ed2Z6EHJwSn3aGUeVGmhk\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"dYdbALT-tNVL6pAbjAbFz\",\"children\":[{\"text\":\" break;\"}],\"type\":\"code-line\"},{\"id\":\"nbJOvMP2_6zM2r0sT0fwH\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"TyqKG5IK1d6Fvj8O47J6v\",\"children\":[{\"text\":\"}\"}],\"type\":\"code-line\"},{\"id\":\"nkqcH0-eT7Ma67qIi9gMW\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"vI6tt8d1B-y-huY5wBYBt\",\"children\":[{\"text\":\"Pausing recording\"}],\"nodeId\":\"pausing-recording\",\"type\":\"h3\"},{\"id\":\"tRE0HHCN4lyYxDrwwUX0W\",\"children\":[{\"text\":\"This API is used to pause recording. If you want to resume recording, please call the \"},{\"code\":1,\"text\":\"ResumeRecording\"},{\"text\":\" API.\"}],\"type\":\"p\"},{\"id\":\"pCNA0HotwSQmgPKjms_gC\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\"function-prototype13\",\"type\":\"h4\"},{\"id\":\"8oocMu7hBvu1KNzCQKbAI\",\"children\":[{\"id\":\"ONWhZh6dfARJPMm8XBM0t\",\"children\":[{\"text\":\"-(int)PauseRecording;\"}],\"type\":\"code-line\"},{\"id\":\"RJF9qkpaFshxhC7v7kxYi\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"bZrvd8Ta2Dsov7NC3Z0xv\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code15\",\"type\":\"h4\"},{\"id\":\"PV5xhuYB8YNf2bK2DpB_0\",\"children\":[{\"id\":\"ITtWlq5nG_OeLhbEHLh-H\",\"children\":[{\"text\":\"[[[ITMGContext GetInstance]GetPTT]PauseRecording;\"}],\"type\":\"code-line\"},{\"id\":\"fy7FjiKng0qYXVMWOoxuy\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"XXn3wPxBLLj4r3JKIA5mH\",\"children\":[{\"text\":\"Resuming recording\"}],\"nodeId\":\"resuming-recording\",\"type\":\"h3\"},{\"id\":\"pzRmuebzvhG1a3yK7dnxd\",\"children\":[{\"text\":\"This API is used to resume recording.\"}],\"type\":\"p\"},{\"id\":\"wCph1VtMTlCGmoowesV60\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\"function-prototype14\",\"type\":\"h4\"},{\"id\":\"6mwMFLj6X8XQuSOXjmw60\",\"children\":[{\"id\":\"4GZMly6veUAwrbr2A0l4W\",\"children\":[{\"text\":\"-(int)ResumeRecording;\"}],\"type\":\"code-line\"},{\"id\":\"c8C70R0tQ5rCHzUdiiVDw\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"BBENyqOrJkxlE6hIkbEiP\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code16\",\"type\":\"h4\"},{\"id\":\"n4rb37bVuYPiC3dFaSvIj\",\"children\":[{\"id\":\"BFYGY9Kijk0bLClsyRIv7\",\"children\":[{\"text\":\"[[[ITMGContext GetInstance]GetPTT]ResumeRecording;\"}],\"type\":\"code-line\"},{\"id\":\"5CjSlyy23FYOU-46WR8BC\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"_fl9hzQiimwWCgRkYmGlv\",\"children\":[{\"text\":\"Canceling recording\"}],\"nodeId\":\"canceling-recording\",\"type\":\"h3\"},{\"id\":\"ZiBZikKMH_Kb6IB-LOsFO\",\"children\":[{\"text\":\"This API is used to cancel recording. There is no callback after cancellation.\"}],\"type\":\"p\"},{\"id\":\"ZKdyCoy4DRDAn9cK4Eabd\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\"function-prototype15\",\"type\":\"h4\"},{\"id\":\"Vuq9yz2SZ06V6b60iuxD5\",\"children\":[{\"id\":\"zAxv22oUCPA0wUGBwLrRa\",\"children\":[{\"text\":\"-(QAVResult)CancelRecording;\"}],\"type\":\"code-line\"},{\"id\":\"hCQTrZrPUxQuqCySHGzud\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"R2RW1k542jRI57ITiTz_A\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code17\",\"type\":\"h4\"},{\"id\":\"lV18dPSlPGgKDAOEJlqqn\",\"children\":[{\"id\":\"YvWRgbXVzj65FRGHuqN0n\",\"children\":[{\"text\":\"[[[ITMGContext GetInstance]GetPTT]CancelRecording];\"}],\"type\":\"code-line\"},{\"id\":\"g8ezl2KociEySKX38cDuO\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"_mFntGSR6YYXTk7BAdDdG\",\"children\":[{\"text\":\"Getting the real-time mic volume of voice message\"}],\"nodeId\":\"getting-the-real-time-mic-volume-of-voice-message\",\"type\":\"h3\"},{\"id\":\"xA4WIrhmj2Fp3lkTA52-m\",\"children\":[{\"text\":\"This API is used to get the real-time mic volume. An int-type value will be returned. Value range: 0-200.\"}],\"type\":\"p\"},{\"id\":\"FMWDAKqDwozNMy8TOj9hV\",\"children\":[{\"id\":\"UEaYdw69ZD4HmYtnj6US4\",\"children\":[{\"b\":1,\"color\":\"inherit\",\"text\":\"Note: \"}],\"type\":\"p\"},{\"id\":\"nxQb9qPYlvS9a5ALyCMu8\",\"children\":[{\"text\":\"This API is different from the voice chat API and is in \"},{\"code\":1,\"text\":\"ITMGPTT\"},{\"text\":\".\"}],\"type\":\"p\"}],\"hintType\":\"info\",\"type\":\"hint\"},{\"id\":\"Jv0EgBbOVfJSZorzrOQMf\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\"function-prototype16\",\"type\":\"h4\"},{\"id\":\"_wXPtU-yKfikRVax9kw-C\",\"children\":[{\"id\":\"1d92t27vtu7F6DL278hPl\",\"children\":[{\"text\":\"-(QAVResult)GetMicLevel;\"}],\"type\":\"code-line\"},{\"id\":\"ZvjKtA00znrsWGu9UcI_C\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"EW2FVIaLTVhAXYTJGBQhv\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code18\",\"type\":\"h4\"},{\"id\":\"1LbEeQCtxAEkwC283rls5\",\"children\":[{\"id\":\"RV6mqtXffDt5bMOtTH9nk\",\"children\":[{\"text\":\"[[[ITMGContext GetInstance]GetPTT]GetMicLevel];\"}],\"type\":\"code-line\"},{\"id\":\"kELFDDdNxOrsEEvCsIrh0\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"p0Taxfa96cvlcX-FghzH4\",\"children\":[{\"text\":\"Setting the recording volume of voice message\"}],\"nodeId\":\"setting-the-recording-volume-of-voice-message\",\"type\":\"h3\"},{\"id\":\"bm29-1pI56jtZZW1vJVTx\",\"children\":[{\"text\":\"This API is used to set the recording volume of voice message. Value range: 0-200.\"}],\"type\":\"p\"},{\"id\":\"HVHaxQw1dcUHXp5y4t6Zj\",\"children\":[{\"id\":\"_eC21nBXxJiFMCmfnTrnI\",\"children\":[{\"b\":1,\"color\":\"inherit\",\"text\":\"Note: \"}],\"type\":\"p\"},{\"id\":\"FdAYynwHLhS-a4-lGuaog\",\"children\":[{\"text\":\"This API is different from the voice chat API and is in \"},{\"code\":1,\"text\":\"ITMGPTT\"},{\"text\":\".\"}],\"type\":\"p\"}],\"hintType\":\"info\",\"type\":\"hint\"},{\"id\":\"XSsw7lIFEdCEa6gad4oaS\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\"function-prototype17\",\"type\":\"h4\"},{\"id\":\"f_PnLZYjjdBe9hZGekNXA\",\"children\":[{\"id\":\"aoWxsWtQHKO33iM3CwBsV\",\"children\":[{\"text\":\"-(QAVResult)SetMicVolume:(int) volume;\"}],\"type\":\"code-line\"},{\"id\":\"NUiRqLDz4lPmp3pTPC5dc\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"qa5dN8vYALhm0j0vkI7i0\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code19\",\"type\":\"h4\"},{\"id\":\"R0U_AmY8DMPXL4-ojFAPT\",\"children\":[{\"id\":\"LaSe4EI6fjK79PraC8Hmw\",\"children\":[{\"text\":\"[[[ITMGContext GetInstance]GetPTT]SetMicVolume:100];\"}],\"type\":\"code-line\"},{\"id\":\"iiQwFNjxRO25ptzxxw9HT\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"DgyO71B-gclYXCS3u6dLC\",\"children\":[{\"text\":\"Getting the recording volume of voice message\"}],\"nodeId\":\"getting-the-recording-volume-of-voice-message\",\"type\":\"h3\"},{\"id\":\"k_0WEZGAwMpZPDCsoyxMH\",\"children\":[{\"text\":\"This API is used to get the recording volume of voice message. An int-type value will be returned. Value range: 0-200.\"}],\"type\":\"p\"},{\"id\":\"Wv4ui44MkNn2GOKqNoPg3\",\"children\":[{\"id\":\"yg16hiSjnK05hJYpRgj5B\",\"children\":[{\"b\":1,\"color\":\"inherit\",\"text\":\"Note: \"}],\"type\":\"p\"},{\"id\":\"CNZEh4kjcin6yaDuusNnC\",\"children\":[{\"text\":\"This API is different from the voice chat API and is in \"},{\"code\":1,\"text\":\"ITMGPTT\"},{\"text\":\".\"}],\"type\":\"p\"}],\"hintType\":\"info\",\"type\":\"hint\"},{\"id\":\"iIBFB6AaLWL0WdCI632IW\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\"function-prototype18\",\"type\":\"h4\"},{\"id\":\"FjyHeHt3LR3KEEmCfD5eV\",\"children\":[{\"id\":\"lQ3nDBpFHrFhdqAsRmEP1\",\"children\":[{\"text\":\"-(int)GetMicVolume;\"}],\"type\":\"code-line\"},{\"id\":\"FV7IRUZKoQTXt2HOgHObG\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"hsUPEPzf62_KFNe3jKLQK\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code20\",\"type\":\"h4\"},{\"id\":\"qzGPmA0FVlNAk_Ub_nC19\",\"children\":[{\"id\":\"xOO2K1wvSB90zyiXxIyp9\",\"children\":[{\"text\":\"[[[ITMGContext GetInstance]GetPTT]GetMicVolume];\"}],\"type\":\"code-line\"},{\"id\":\"Yurp-UoG4RevvVp0FuvKz\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"fU-5ytdvwq-IOq8gqPBmN\",\"children\":[{\"text\":\"Getting the real-time speaker volume of voice message\"}],\"nodeId\":\"getting-the-real-time-speaker-volume-of-voice-message\",\"type\":\"h3\"},{\"id\":\"ZDU4T2fb890Kpf69UBwPZ\",\"children\":[{\"text\":\"This API is used to get the real-time speaker volume. An int-type value will be returned. Value range: 0-200.\"}],\"type\":\"p\"},{\"id\":\"15-ZYTx5bYp-BLm-fJlZ_\",\"children\":[{\"id\":\"PGpBKrMZSIBzSiNlKTOlz\",\"children\":[{\"b\":1,\"color\":\"inherit\",\"text\":\"Note: \"}],\"type\":\"p\"},{\"id\":\"IwQwUFgH2nA3nrLDZYkrh\",\"children\":[{\"text\":\"This API is different from the voice chat API and is in \"},{\"code\":1,\"text\":\"ITMGPTT\"},{\"text\":\".\"}],\"type\":\"p\"}],\"hintType\":\"info\",\"type\":\"hint\"},{\"id\":\"gsPpBUJBbB2yFaWz3hZBL\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\"function-prototype19\",\"type\":\"h4\"},{\"id\":\"p9tix_dYW9DSDvwZLJgxx\",\"children\":[{\"id\":\"l8G-hixRNzycIw2hTte6d\",\"children\":[{\"text\":\"-(QAVResult)GetSpeakerLevel;\"}],\"type\":\"code-line\"},{\"id\":\"E3l0C1KbF_MR4M02wMDS3\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"6pmjS7AE432iXZs-1Cnq2\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code21\",\"type\":\"h4\"},{\"id\":\"0D52LBfjADHdlGaN5aDlX\",\"children\":[{\"id\":\"a3sc3i3J5jMnFg3KiSfCR\",\"children\":[{\"text\":\"[[[ITMGContext GetInstance]GetPTT]GetSpeakerLevel];\"}],\"type\":\"code-line\"},{\"id\":\"z24j-G4-1MVic5Is6YNhW\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"458mkjsP0diMB0kMIyAwo\",\"children\":[{\"text\":\"Setting the playback volume of voice message\"}],\"nodeId\":\"setting-the-playback-volume-of-voice-message\",\"type\":\"h3\"},{\"id\":\"zg8deIv79RoN2WwWP9HaV\",\"children\":[{\"text\":\"This API is used to set the playback volume of voice messaging. Value range: 0-200.\"}],\"type\":\"p\"},{\"id\":\"bS-UOn9r-rh8eVFj6aEA7\",\"children\":[{\"id\":\"6uh3E840h1pvKsqiD1t6u\",\"children\":[{\"b\":1,\"color\":\"inherit\",\"text\":\"Note: \"}],\"type\":\"p\"},{\"id\":\"8jn83P3oC23CgZHaF6fH2\",\"children\":[{\"text\":\"This API is different from the voice chat API and is in \"},{\"code\":1,\"text\":\"ITMGPTT\"},{\"text\":\".\"}],\"type\":\"p\"}],\"hintType\":\"info\",\"type\":\"hint\"},{\"id\":\"CyjV--IQ4cy1Tw1znayLF\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\"function-prototype20\",\"type\":\"h4\"},{\"id\":\"BLdqXPbxSJ_egH5QRitDx\",\"children\":[{\"id\":\"UArpLKxfoIhDrQg1Szbxg\",\"children\":[{\"text\":\"-(QAVResult)SetSpeakerVolume:(int)volume;\"}],\"type\":\"code-line\"},{\"id\":\"WP8ZJPsvJssk-20AJsykt\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"Z8PHQDxFRepU9-zP0UP_4\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code22\",\"type\":\"h4\"},{\"id\":\"OB1b6BurYQzwyR-mpXLl5\",\"children\":[{\"id\":\"-igQi6tvMHxLbp00Z-ALI\",\"children\":[{\"text\":\"[[[ITMGContext GetInstance]GetPTT]SetSpeakerVolume:100];\"}],\"type\":\"code-line\"},{\"id\":\"xyNBpN2AgO0J1-qTYZMHO\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"wBor7Hhkatth_Leq2sRlK\",\"children\":[{\"text\":\"Getting the playback volume of voice message\"}],\"nodeId\":\"getting-the-playback-volume-of-voice-message\",\"type\":\"h3\"},{\"id\":\"DACFEZRK3V2UJwkDQGoA0\",\"children\":[{\"text\":\"This API is used to get the playback volume of voice messaging. An int-type value will be returned. Value range: 0-200.\"}],\"type\":\"p\"},{\"id\":\"A0rIGY_2uP7hIBkbPN4EC\",\"children\":[{\"id\":\"4HlwXcBzIrXORJnLSeAkO\",\"children\":[{\"b\":1,\"color\":\"inherit\",\"text\":\"Note: \"}],\"type\":\"p\"},{\"id\":\"avoSIhuiKWjz2_zgbYKSf\",\"children\":[{\"text\":\"This API is different from the voice chat API and is in \"},{\"code\":1,\"text\":\"ITMGPTT\"},{\"text\":\".\"}],\"type\":\"p\"}],\"hintType\":\"info\",\"type\":\"hint\"},{\"id\":\"-7PtdzvkauJjjaUO_B5sR\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\"function-prototype21\",\"type\":\"h4\"},{\"id\":\"MfrSNm4o7aYe0GpF8JAQl\",\"children\":[{\"id\":\"mVNMgfFyjvz1b3rf90EUc\",\"children\":[{\"text\":\"-(int)GetSpeakerVolume;\"}],\"type\":\"code-line\"},{\"id\":\"_fc1ZDZz6nZHqPGxJEmOt\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"ost_nD37VZ-iT1VwHJ7yD\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code23\",\"type\":\"h4\"},{\"id\":\"iT-IswLQNpp5_bP650rOw\",\"children\":[{\"id\":\"wzfv8Josb0CAvKDNWpsOk\",\"children\":[{\"text\":\"[[[ITMGContext GetInstance]GetPTT]GetSpeakerVolume];\"}],\"type\":\"code-line\"},{\"id\":\"v0acKXuGJQVSmUsuuOSrA\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"-cFqrdq5K1YgjK3QWu2N5\",\"children\":[{\"text\":\"Voice Message Playback\"}],\"nodeId\":\"voice-message-playback\",\"type\":\"h2\"},{\"id\":\"Qt0AM3QLNQ8x5a2vBjV6A\",\"children\":[{\"text\":\"Playing back audio\"}],\"nodeId\":\"playing-back-audio\",\"type\":\"h3\"},{\"id\":\"Y9X8ZZmjq3WzimeSPufrs\",\"children\":[{\"text\":\"This API is used to play back audio.\"}],\"type\":\"p\"},{\"id\":\"v2ViUnZb-_rukl3JgG8OW\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\"function-prototype22\",\"type\":\"h4\"},{\"id\":\"u7T78RTHd7FJAjZpLS61f\",\"children\":[{\"id\":\"YCITBhTe_IjkoIiTIGSem\",\"children\":[{\"text\":\"-(int)PlayRecordedFile:(NSString*)filePath;\"}],\"type\":\"code-line\"},{\"id\":\"7N6i7loLf_jefFx35bifY\",\"children\":[{\"text\":\"-(int)PlayRecordedFile:(NSString*)filePath VoiceType:(ITMG_VOICE_TYPE) type;\"}],\"type\":\"code-line\"},{\"id\":\"ukLVZF82a1VDye4xkUiqM\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"nUZAKl9qWRhBCI3uq3-Dc\",\"children\":[{\"id\":\"7I95EKQ0cnNoVJyxFd7w0\",\"children\":[{\"id\":\"rgHk5B3tUTdXF1D4-uOu0\",\"children\":[{\"id\":\"7Nf_TRgoxn4dw_ZNJDr7k\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"c1zARIaDtkSegaWNlRfzp\",\"children\":[{\"id\":\"BCTqSn68PiywQnaRJoaKC\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"oz1D_VWB2MskeO5060Ohg\",\"children\":[{\"id\":\"1LBsnJk7hO56lY148wM2n\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"HoVtiSx4QYF1AXHgQeGe7\",\"children\":[{\"id\":\"IXHIXA7maEEWYlHHebn44\",\"children\":[{\"id\":\"fa5sAWT9pQ2gh9JtPtEaU\",\"children\":[{\"id\":\"La0DpoKia5MswIOHyrVte\",\"children\":[{\"text\":\"downloadFilePath\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"PYjHfRttZnT2f4S0_n9Es\",\"children\":[{\"id\":\"Do0LIeux7ULEW1UZuJv-C\",\"children\":[{\"id\":\"oEpzmfpbI32dQL1JbGD_X\",\"children\":[{\"text\":\"NSString\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"S6fGfu-VH_DFBB852uLv_\",\"children\":[{\"id\":\"2Yk-j9PfIoWbCmIOpVRmm\",\"children\":[{\"id\":\"am6SnhCSU1j9nMHizegDr\",\"children\":[{\"text\":\"Local audio file path\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"j0lG4vmr2NvXp4wSW2HLC\",\"children\":[{\"id\":\"IjvhrHFWABKiTnKKSJXXW\",\"children\":[{\"id\":\"NtF-FwpSjdg8crs1eH1ct\",\"children\":[{\"id\":\"zTX6313NShz26j6HXUm9j\",\"children\":[{\"text\":\"type\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"dQQn3C42RJENWguTNuYYh\",\"children\":[{\"id\":\"y3g9I8mJSonmDqY2PNCBV\",\"children\":[{\"id\":\"dJ5-pwC04wgV7Z9SGBICZ\",\"children\":[{\"text\":\"ITMG_VOICE_TYPE\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"kgufO7s2Z4lSajXG8r9bL\",\"children\":[{\"id\":\"hZjGIS14CWwRUDSpRu-FK\",\"children\":[{\"id\":\"AFjF6Lc3okCkJI5m9Z6dd\",\"children\":[{\"text\":\"Voice changer type. For more information, see \"},{\"id\":\"tLeJqp-Jjboc6-v2i5yRH\",\"children\":[{\"text\":\"Voice Changing Effects\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://intl.cloud.tencent.com/document/product/607/44995\",\"props\":{\"type\":\"link\",\"url\":\"https://intl.cloud.tencent.com/document/product/607/44995\"},\"type\":\"ref\"},{\"text\":\".\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[18,20,62],\"widthMode\":\"percentage\"},{\"id\":\"ECkCkQLN-pB_Oh2aPpvmL\",\"children\":[{\"text\":\"Error codes\"}],\"nodeId\":\"error-codes3\",\"type\":\"h4\"},{\"id\":\"dgO7NqgO5mR521SwyYz7o\",\"children\":[{\"id\":\"JK_479KStFjtZncotfQbY\",\"children\":[{\"id\":\"IEge1lwURBcCYBINSMXoq\",\"children\":[{\"id\":\"5XPMd6LEKoCKVbrvyxbkE\",\"children\":[{\"text\":\"Error Code Value\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"80iYEvw2ZSFdBpFHOFUYD\",\"children\":[{\"id\":\"NQ06T2CxEKe10lXyQbVn3\",\"children\":[{\"text\":\"Cause\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"6DRDFfv070fw53TUzxUdZ\",\"children\":[{\"id\":\"rn4f8affR5c8VSbr6zEJV\",\"children\":[{\"text\":\"Suggested Solution\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"pP3neBk3Dbfjb4Yn-0pq6\",\"children\":[{\"id\":\"xSDdFjptvjiaHwFWsRA_w\",\"children\":[{\"id\":\"6tOlvk1FC5chIRbfdVz0Q\",\"children\":[{\"id\":\"BtZEgTC-WFFUAGFmw_pGF\",\"children\":[{\"text\":\"20485\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"zWz4aY4PDjovzNUD3dZ8J\",\"children\":[{\"id\":\"i-oNYUvdt7vsXBZsfLh8F\",\"children\":[{\"id\":\"-Q2jRYSh59K2j0oA7WAXR\",\"children\":[{\"text\":\"Playback is not started.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Q7gOSHyeb3ncUEw2-ZZa0\",\"children\":[{\"id\":\"pQGKN9qw_38wby_Y3jrFo\",\"children\":[{\"id\":\"K5pnPRpsavB2VBSoGoS05\",\"children\":[{\"text\":\"Ensure the existence of the file and the validity of the file path.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[19,24,57],\"widthMode\":\"percentage\"},{\"id\":\"xICvrgx8BRT89glMlC8Lq\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code24\",\"type\":\"h4\"},{\"id\":\"p9XLiGFzQ86uKolCIzdQ2\",\"children\":[{\"id\":\"GpzaB4JxkEKcFBsCpNoB1\",\"children\":[{\"text\":\"[[[ITMGContext GetInstance]GetPTT]PlayRecordedFile:path];\"}],\"type\":\"code-line\"},{\"id\":\"L5Ke6S1tFln5J2tWHe1WK\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"JBZ9hNTmdFnNeqZGkWQEx\",\"children\":[{\"text\":\"Callback for audio playback\"}],\"nodeId\":\"callback-for-audio-playback\",\"type\":\"h3\"},{\"id\":\"uoq0G_QyyBJrPK1pzDwFn\",\"children\":[{\"text\":\"After the audio is played back, the event message \"},{\"code\":1,\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_PLAY_COMPLETE\"},{\"text\":\" will be returned, which will be identified in the \"},{\"code\":1,\"text\":\"OnEvent\"},{\"text\":\" function.\\nThe passed parameter includes \"},{\"code\":1,\"text\":\"result\"},{\"text\":\" and \"},{\"code\":1,\"text\":\"file_path\"},{\"text\":\".\"}],\"type\":\"p\"},{\"id\":\"Y3Vf4BaDRPx1z9bCjf3Av\",\"children\":[{\"text\":\"Error codes\"}],\"nodeId\":\"error-codes4\",\"type\":\"h4\"},{\"id\":\"vRQGGlaB0inan7XWvik2E\",\"children\":[{\"id\":\"YyGzmYKMhCQLv0_A7tSGU\",\"children\":[{\"id\":\"PfTViJJx5CWTFfWu10DZN\",\"children\":[{\"id\":\"7hpvxntN52G5c3UnQD8WY\",\"children\":[{\"text\":\"Error Code Value\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"n9ABRZTGk_hGOfN2U9Lu3\",\"children\":[{\"id\":\"rCidZH5qOWaYUVb3rReIG\",\"children\":[{\"text\":\"Cause\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"TJGWqBiMIOfZy-oyWrWDD\",\"children\":[{\"id\":\"r1aKjdy23EVXMSR1SJ9zA\",\"children\":[{\"text\":\"Suggested Solution\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"TToE1toNFFaJ2IFpE0WjM\",\"children\":[{\"id\":\"ThWTWQfHpTUJs0OJjkD1K\",\"children\":[{\"id\":\"wgg2UiVXYxPEcARwSY3sN\",\"children\":[{\"id\":\"tTLD0CHTl_gWP5fy-jI__\",\"children\":[{\"text\":\"20481\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"krCncxCrkZDdH1CW16Q_3\",\"children\":[{\"id\":\"6UiSB4KIbXNAcvhhn74aj\",\"children\":[{\"id\":\"fPC07Z-ITtpjkpX0fgUWm\",\"children\":[{\"text\":\"Initialization error.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"DUXByDYzLae-_P03hm-7b\",\"children\":[{\"id\":\"IjVd_En2a3GCEV87Q4QGR\",\"children\":[{\"id\":\"vMxAy5y33ZILdO0xg6NqC\",\"children\":[{\"text\":\"Check whether the device is being used, whether the permissions are normal, and whether the initialization is normal.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"4NGC5bX4E4NrBhZTQOD2F\",\"children\":[{\"id\":\"EqsivE_sgarbkArHHj4AO\",\"children\":[{\"id\":\"eTb2odD3_Yd8cOeA3xBEA\",\"children\":[{\"id\":\"hGBunO0qFTdzOgYr7hRvt\",\"children\":[{\"text\":\"20482\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"1MJPQwAz81Dj5P8VEbus7\",\"children\":[{\"id\":\"DI1PYQLx5mtRlv1d4P5yq\",\"children\":[{\"id\":\"qN2SKLCm1ASgBYxdlIwam\",\"children\":[{\"text\":\"During playback, the client tried to interrupt and play back the next one but failed (which should succeed normally).\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"UpKaRZVYCjyYtvpSZFR0G\",\"children\":[{\"id\":\"0w2XrlIl1wDGk7ArjRpuP\",\"children\":[{\"id\":\"wZkmQ7ial-MWgdqGM9lAK\",\"children\":[{\"text\":\"Check whether the code logic is correct.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"p9ojTRicShMeD0mPI7yB9\",\"children\":[{\"id\":\"mPuz4fNnNSV3b7Jgue0dy\",\"children\":[{\"id\":\"r-bTLCPBr41E5Sf0XdcbW\",\"children\":[{\"id\":\"eVRHI8ahOElk5JjiqN33h\",\"children\":[{\"text\":\"20483\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"iiT6x9C4qRuuCg7rjz0h-\",\"children\":[{\"id\":\"R9e9imPA9o1YVO5r4ioy2\",\"children\":[{\"id\":\"2jWhkeAf1m1Mn1l3sWHhV\",\"children\":[{\"text\":\"Parameter is empty.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"xqyffHvB8DvPoBtiCk5mk\",\"children\":[{\"id\":\"D4RiHnDu8e3I4Wfewr-f_\",\"children\":[{\"id\":\"SuRsTTLl06Qc_XllHW57H\",\"children\":[{\"text\":\"Check whether the API parameters in the code are correct.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"_TGI5cjIoxOYhfKEumHZK\",\"children\":[{\"id\":\"Qu5EM4lDfIKCtPzMRnoGR\",\"children\":[{\"id\":\"g1YcpSoydOMIeKADxhBuW\",\"children\":[{\"id\":\"N-PmXtkx5CaPG3ZfV9TDb\",\"children\":[{\"text\":\"20484\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"bkb932PoZOwJWOn2AcFre\",\"children\":[{\"id\":\"gkzzpNUDRQkB6BxRdOMww\",\"children\":[{\"id\":\"hkhue7GLXY5C5n5PPLdtG\",\"children\":[{\"text\":\"Internal error.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"VzBS41oO1ybk1Zhx3n-Zm\",\"children\":[{\"id\":\"3x6LTxZ2hV46zNAESaJ4h\",\"children\":[{\"id\":\"7D_FK1j1pDWlGriH8N0To\",\"children\":[{\"text\":\"An error occurred while initializing the player. This error code is generally caused by failure in decoding, and the error should be located with the aid of logs.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[17,36,47],\"widthMode\":\"percentage\"},{\"id\":\"6bNyvepfonzuTLV7jyiLn\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code25\",\"type\":\"h4\"},{\"id\":\"Cv2ou0td8PbC1tSCfxfya\",\"children\":[{\"id\":\"04bzggJ18aF2UWnoiU1G_\",\"children\":[{\"text\":\"-(void)OnEvent:(ITMG_MAIN_EVENT_TYPE)eventType data:(NSDictionary *)data{\"}],\"type\":\"code-line\"},{\"id\":\"n5GhwCmKT7jBvEUOcLpXG\",\"children\":[{\"text\":\" NSLog(@\\\"OnEvent:%lu,data:%@\\\",(unsigned long)eventType,data);\"}],\"type\":\"code-line\"},{\"id\":\"PYh613-t45Ghvv6Ld6D_9\",\"children\":[{\"text\":\" switch (eventType) {\"}],\"type\":\"code-line\"},{\"id\":\"vBglowU3oguPnu7mvnbuB\",\"children\":[{\"text\":\" case ITMG_MAIN_EVNET_TYPE_PTT_PLAY_COMPLETE:\"}],\"type\":\"code-line\"},{\"id\":\"PZKwmkhHJULfb6F57uUiN\",\"children\":[{\"text\":\" {\"}],\"type\":\"code-line\"},{\"id\":\"dNgAKRj4WZLfMFshW1GMF\",\"children\":[{\"text\":\" // Callback for audio playback \"}],\"type\":\"code-line\"},{\"id\":\"qHKQ3aRfJ0l01JH2h1rNb\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"UBQJFbcyM9hq8uf-fxeiK\",\"children\":[{\"text\":\" break;\"}],\"type\":\"code-line\"},{\"id\":\"RsPO_nyyfNGxWVqqthkgF\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"6s8Kqu4X_BaFENXcxBUYl\",\"children\":[{\"text\":\"}\"}],\"type\":\"code-line\"},{\"id\":\"RNBPVNK3GZgdTWuJfWWdC\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"bhtLEAw0K96et05L1TFcO\",\"children\":[{\"text\":\"Stopping audio playback\"}],\"nodeId\":\"stopping-audio-playback\",\"type\":\"h3\"},{\"id\":\"zVvXrMgSN1984ZsamqiI5\",\"children\":[{\"text\":\"This API is used to stop audio playback. There will be a callback for playback completion when the playback stops.\"}],\"type\":\"p\"},{\"id\":\"hmX7n7GKybDjMEZCDWH0Q\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\"function-prototype23\",\"type\":\"h4\"},{\"id\":\"r6sI9pl_eAe8YBTBXOjn8\",\"children\":[{\"id\":\"q1oZhoVgcXsOS7suELayx\",\"children\":[{\"text\":\"-(int)StopPlayFile;\"}],\"type\":\"code-line\"},{\"id\":\"AG-0zPe5vqFeC4nmdIXBP\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"2tVSoHRiF32jOYMMKmrGB\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code26\",\"type\":\"h4\"},{\"id\":\"WnuooeTGTa7sh2txDEYlF\",\"children\":[{\"id\":\"WgAljBLus6oU2_g2NbDx7\",\"children\":[{\"text\":\"[[[ITMGContext GetInstance]GetPTT]StopPlayFile];\"}],\"type\":\"code-line\"},{\"id\":\"BwtMcmajp0-9GOXHla17M\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"5A1E5rHMp1Az__W5IuzQE\",\"children\":[{\"text\":\"Getting audio file size\"}],\"nodeId\":\"getting-audio-file-size\",\"type\":\"h3\"},{\"id\":\"UaBJ4EPT-68-Z529-ehoB\",\"children\":[{\"text\":\"This API is used to get the size of an audio file.\"}],\"type\":\"p\"},{\"id\":\"BU2XnmCv0yroBUtXBZcGs\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\"function-prototype24\",\"type\":\"h4\"},{\"id\":\"NQPswakYbS0qG15ELlUwP\",\"children\":[{\"id\":\"rLomTmEWh7WXeLzeYJIFd\",\"children\":[{\"text\":\"-(int)GetFileSize:(NSString*)filePath;\"}],\"type\":\"code-line\"},{\"id\":\"-IC1jhuJk2jyTrBv8vyfD\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"CCDV9_i0-iiu5JPkZhTGo\",\"children\":[{\"id\":\"6Lan33cW8f0r55AEv7tzU\",\"children\":[{\"id\":\"ktAlQOLVqGiUz5yc69Ysg\",\"children\":[{\"id\":\"7vYNqjMNfZAOdw2qQcalZ\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"W6j6zgbpEm6SjTUnvMH6w\",\"children\":[{\"id\":\"53o3Ok-D7DmpKDl4QvCg3\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"OR4BEmHvCFjipWR0UVhAj\",\"children\":[{\"id\":\"pCcqyOfuzafArR35hCQ01\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"p1f8b5i17mOAOXAjkkzuD\",\"children\":[{\"id\":\"HpV3h81KSStDKoASnNo3e\",\"children\":[{\"id\":\"ETnAMX9F0Ftq_tBzOid1Q\",\"children\":[{\"id\":\"4N4bEXgW7ZgyJrtFVi9WZ\",\"children\":[{\"text\":\"filePath\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"q99mtkXNpHqrttGcPC6sQ\",\"children\":[{\"id\":\"14OwJM76nPTgmnDK9vYJC\",\"children\":[{\"id\":\"ZFYaxBPjCVFSF0h6A4Tha\",\"children\":[{\"text\":\"NSString\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"hULxkhJiAui-O3tMzJeX3\",\"children\":[{\"id\":\"WYAnNEkn8EEdmZ06gGJtv\",\"children\":[{\"id\":\"URJ0r6X2dH_8r11ehVng6\",\"children\":[{\"text\":\"Path of audio file, which is a local path.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[21,19,60],\"widthMode\":\"percentage\"},{\"id\":\"agrvYLLwG0rTDsLt_9x6u\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code27\",\"type\":\"h4\"},{\"id\":\"lfH1ArWwt8yGZ0dbSJvAT\",\"children\":[{\"id\":\"Q9sBUbdLKTJ4krR4lvGjU\",\"children\":[{\"text\":\"[[[ITMGContext GetInstance]GetPTT]GetFileSize:path];\"}],\"type\":\"code-line\"},{\"id\":\"8yF0zdAqygdeedU0WfxNs\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"0sQoxHDY2YuR_iTVaLbVw\",\"children\":[{\"text\":\"Getting audio file duration\"}],\"nodeId\":\"getting-audio-file-duration\",\"type\":\"h3\"},{\"id\":\"0yXsXxTT1toWUMg5r3XNX\",\"children\":[{\"text\":\"This API is used to get the duration of an audio file in milliseconds.\"}],\"type\":\"p\"},{\"id\":\"s_kM6cSGrhKEG4yuPVg6R\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\"function-prototype25\",\"type\":\"h4\"},{\"id\":\"YCOo0t54Twi1AaLZJhm9F\",\"children\":[{\"id\":\"B60x3nVxY5FpqMjUlmy98\",\"children\":[{\"text\":\"-(int)GetVoiceFileDuration:(NSString*)filePath;\"}],\"type\":\"code-line\"},{\"id\":\"XtFrwEWh9LCR8A0Ossv9H\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"bk-QoblNU4QQ0eFhpbmXE\",\"children\":[{\"id\":\"yIDLq3ptvh0zjmTcBpqVs\",\"children\":[{\"id\":\"E5CYfNmoYdJtZIVZnnZUe\",\"children\":[{\"id\":\"L8rIrFkhqmRM4xv7DaI0k\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"beoXuu-wWXlD1FzMxeHpJ\",\"children\":[{\"id\":\"DtX9pQ8bwk2Ba3zMGvRFX\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"kZqlfp0QOqMI5YZVKho1U\",\"children\":[{\"id\":\"ZVipEU6YwO983ZfXGl5Rr\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"ehaOV5oaZC4vL43JZ8iP2\",\"children\":[{\"id\":\"yHN4nkNdlcxiPMAU8UFgj\",\"children\":[{\"id\":\"TUztv-H4QKcjvfmT6Cfgh\",\"children\":[{\"id\":\"TyE-DIVdumOTaaml8e3ZL\",\"children\":[{\"text\":\"filePath\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"XqnQIyaaKmykA9x-LTind\",\"children\":[{\"id\":\"hjeF1Kkmv3cWb7tFqYteD\",\"children\":[{\"id\":\"YXk2V5vNwAuLreX6Pl0Ua\",\"children\":[{\"text\":\"NSString\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"otqCnaWzqeh4nRQwBkTLc\",\"children\":[{\"id\":\"U6y-x-4WsB2dY6Kyrk1Ji\",\"children\":[{\"id\":\"A9Ks14cgMOjIIzBOieUcZ\",\"children\":[{\"text\":\"Path of audio file, which is a local path.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[21,19,60],\"widthMode\":\"percentage\"},{\"id\":\"bvD9-C0DhMzWdjmuvhQsR\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code28\",\"type\":\"h4\"},{\"id\":\"E7Rl1TdoI58GPzZxDZvun\",\"children\":[{\"id\":\"EtaOWxyfsalhkALOV3ngZ\",\"children\":[{\"text\":\"[[[ITMGContext GetInstance]GetPTT]GetVoiceFileDuration:path];\"}],\"type\":\"code-line\"},{\"id\":\"rwt2HhprWGvH4ABTioGoV\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"RjVRFd9-cVaRLK7FHXCCW\",\"children\":[{\"text\":\"Voice Message Upload and Download\"}],\"nodeId\":\"voice-message-upload-and-download\",\"type\":\"h2\"},{\"id\":\"e_bo91ZcD4JjAs8pDVzUu\",\"children\":[{\"text\":\"Uploading an audio file\"}],\"nodeId\":\"uploading-an-audio-file\",\"type\":\"h3\"},{\"id\":\"QCX5T2gZA17cYlWNGnlyD\",\"children\":[{\"text\":\"This API is used to upload an audio file.\"}],\"type\":\"p\"},{\"id\":\"h7ZQLDxsjpABvCKVqWHJ6\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\"function-prototype26\",\"type\":\"h4\"},{\"id\":\"UzMzBekIX11P2lLKJeqmV\",\"children\":[{\"id\":\"uGh5NpIzuvF2GbApAsBEr\",\"children\":[{\"text\":\"-(void)UploadRecordedFile:(NSString*)filePath;\"}],\"type\":\"code-line\"},{\"id\":\"3aGH-M-vOKl3wyzTAaizI\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"_fxY_kYT5Yo1fIThgYrgk\",\"children\":[{\"id\":\"ShLNSv0iWqVex6EisfSVY\",\"children\":[{\"id\":\"1_8HpYIokX88CbGqVQo-y\",\"children\":[{\"id\":\"vYc6F8Bl4xyqH6hEzEm7A\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"BFYII29hi9NDxNI0wbCIV\",\"children\":[{\"id\":\"Cz2bOpS8cNnX1TyL81qwX\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"zhUSGsdw28kSMO-nDBeBQ\",\"children\":[{\"id\":\"kPtU8eveIlO3MWnvMvvmx\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"wMLHYQzYO0DNWD_lQm0R_\",\"children\":[{\"id\":\"8gWlWsByPnifLB_5wj6CH\",\"children\":[{\"id\":\"EpbeFGwqiYRr8G9qYJ-2r\",\"children\":[{\"id\":\"fpNHeITJXFn0Bme_IT4b0\",\"children\":[{\"text\":\"filePath\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"7Q1g8x9oRn2dYQg6-JlTr\",\"children\":[{\"id\":\"zaflWx9xFND9xQLA2kRMy\",\"children\":[{\"id\":\"8ufTYOHnw0Qbk4RzliSll\",\"children\":[{\"text\":\"NSString\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"VV_EIto0jTpC0ciJsZuAf\",\"children\":[{\"id\":\"dH_QfZV7dwA598lH4C-JC\",\"children\":[{\"id\":\"Ifm7Csa37PIcbyUElehEK\",\"children\":[{\"text\":\"Path of uploaded audio file, which is a local path.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[18,16,66],\"widthMode\":\"percentage\"},{\"id\":\"bgJ2g64ryhEU-WgxBYtZC\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code29\",\"type\":\"h4\"},{\"id\":\"oIIG18bJfhwUFhK1RNQgs\",\"children\":[{\"id\":\"Y8GdOwd66RWJyiwHfTqxS\",\"children\":[{\"text\":\"[[[ITMGContext GetInstance]GetPTT]UploadRecordedFile:path];\"}],\"type\":\"code-line\"},{\"id\":\"RKtFHWG5SbueFhmF8KAAv\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"1JZITZoQpjDCwvwGTq6TJ\",\"children\":[{\"text\":\"Callback for audio file upload completion\"}],\"nodeId\":\"callback-for-audio-file-upload-completion\",\"type\":\"h3\"},{\"id\":\"N98-wALT06TSa0oYXlEb5\",\"children\":[{\"text\":\"After the audio file is uploaded, the event message \"},{\"code\":1,\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_UPLOAD_COMPLETE\"},{\"text\":\" will be returned, which will be identified in the \"},{\"code\":1,\"text\":\"OnEvent\"},{\"text\":\" function.\\nThe passed parameters include \"},{\"code\":1,\"text\":\"result\"},{\"text\":\", \"},{\"code\":1,\"text\":\"file_path\"},{\"text\":\", and \"},{\"code\":1,\"text\":\"file_id\"},{\"text\":\".\"}],\"type\":\"p\"},{\"id\":\"0QAh-6HjaRTLDGMnMKhGP\",\"children\":[{\"text\":\"Error codes\"}],\"nodeId\":\"error-codes5\",\"type\":\"h4\"},{\"id\":\"GICA11ijKLF26HDi1XHDb\",\"children\":[{\"id\":\"8x3B0AdLCu0qdq1VWILqg\",\"children\":[{\"id\":\"xDQfpB3K4sZnpAA3A2hsL\",\"children\":[{\"id\":\"oLlrbqyz3ph9zgXulkZbZ\",\"children\":[{\"text\":\"Error Code Value\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"is6DDqjr0KHWW0mpAaEwr\",\"children\":[{\"id\":\"jnMS5BcWwZiIZ7SRzK7Ya\",\"children\":[{\"text\":\"Cause\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"jLDKILA5yEO9IpVAFjtj_\",\"children\":[{\"id\":\"Ar1Gjal1Mhq0_fPGsRCO9\",\"children\":[{\"text\":\"Suggested Solution\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"5-90eYOvV44PfT6TWcldB\",\"children\":[{\"id\":\"2YkcaAg8WTwnDXKdz4EzK\",\"children\":[{\"id\":\"7wi5xX7eFRSXHQ78aK_SL\",\"children\":[{\"id\":\"iIo7CszrTaT7_QqQ8F8r2\",\"children\":[{\"text\":\"8193\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"MQvDfyO2dnL_zvX8vDPpl\",\"children\":[{\"id\":\"xJn7mwabLvfQuEBw62kHF\",\"children\":[{\"id\":\"RWzvgCHfbPsG8wr6czgJw\",\"children\":[{\"text\":\"An error occurred while accessing the file during upload.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"wiOULrorUQ2XTw6Qj8ouZ\",\"children\":[{\"id\":\"qxvPptA4wDnm0DzGbASJB\",\"children\":[{\"id\":\"DWtSyvCNZRK7E_jd1l3YH\",\"children\":[{\"text\":\"Ensure the existence of the file and the validity of the file path.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"eo6eGxj70WYLYFkXozJY1\",\"children\":[{\"id\":\"AMshCchV_C4f4Pncxp8oj\",\"children\":[{\"id\":\"7ZOLOY1jNPA3xt7J0d0N6\",\"children\":[{\"id\":\"WUfKhtELiURIgXFVno4L6\",\"children\":[{\"text\":\"8194\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ORiI9ZFHxYREo-uLwNmfs\",\"children\":[{\"id\":\"OiMcIpQKiwWd4QWiDnAwJ\",\"children\":[{\"id\":\"qx_kJ5QZgDJPn2d7d9Oy9\",\"children\":[{\"text\":\"Signature verification failed.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"qm_6wpnoAGYZNIysVvug7\",\"children\":[{\"id\":\"oHgmDJ5FbQv13D3kYAzSK\",\"children\":[{\"id\":\"NjDgNQvuoIaTp-InACVK3\",\"children\":[{\"text\":\"Check whether the authentication key is correct and whether the voice message and speech-to-text feature is initialized.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"KjbuJuneXQfD8dxwN1lQx\",\"children\":[{\"id\":\"X2MYBxL-f0tloY1nE89fV\",\"children\":[{\"id\":\"9cCatavbGzqionSBNXPDC\",\"children\":[{\"id\":\"BfrbVh3bHScYVEimiEjMS\",\"children\":[{\"text\":\"8195\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"qokXPBWcNsgD6ptKAavL8\",\"children\":[{\"id\":\"Tkk_8rjUY-M-myHwiF3FA\",\"children\":[{\"id\":\"497kO9HyVI_O9h8DMCj6c\",\"children\":[{\"text\":\"A network error occurred.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"D4XBa8zxj_LajmrUZDkGw\",\"children\":[{\"id\":\"OMtSmgy3bXUlZWrXg6ToK\",\"children\":[{\"id\":\"eNcc_GKsLYTrWQUB5aslb\",\"children\":[{\"text\":\"Check whether the device can access the internet.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"375t19hUV0fwJtwdln-w2\",\"children\":[{\"id\":\"SmBnNgmRd2gl7vfHQHISX\",\"children\":[{\"id\":\"u_wJ9H3U_EPNkQoU5YPou\",\"children\":[{\"id\":\"zICrTV5XTZeyuancbdIyj\",\"children\":[{\"text\":\"8196\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"reNhakPNUyyepczqv4oTs\",\"children\":[{\"id\":\"teXDiG4TiMbFnFtoTtzdu\",\"children\":[{\"id\":\"z5pr9suLOkrO0ZqEF6EWR\",\"children\":[{\"text\":\"The network failed while getting the upload parameters.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"4ofENHFXzYkTQWqxV9WOY\",\"children\":[{\"id\":\"cxYnVzJ2Nw9QPoRKGlBIb\",\"children\":[{\"id\":\"D7I_A1IXKuTfOjQnrILv7\",\"children\":[{\"text\":\"Check whether the authentication is correct and whether the device can access the internet.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"kohrgUyEHeZA_eFIEnD41\",\"children\":[{\"id\":\"ggYE94YjnQUXTM1cbQ8--\",\"children\":[{\"id\":\"YOiA710T1QlpJ7JFYiLR6\",\"children\":[{\"id\":\"4ORXLjz7T6wE46brsI5oT\",\"children\":[{\"text\":\"8197\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"EG98rTW5_Hz5AyHgM3NMI\",\"children\":[{\"id\":\"YX43uWbqVGvb7b0z8tOI5\",\"children\":[{\"id\":\"IpQdIS1yCSWgYa-pqw_GK\",\"children\":[{\"text\":\"The packet returned during the process of getting the upload parameters is empty.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Sn02cL5GPQk7L6FH7fZWS\",\"children\":[{\"id\":\"9z91i4je1A-wIw0PFF782\",\"children\":[{\"id\":\"KeIChidHqODCzHkELqKEs\",\"children\":[{\"text\":\"Check whether the authentication is correct and whether the device network can normally access the internet.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"xbMd9BSYPr4-YFYzJRcq1\",\"children\":[{\"id\":\"la2_OKwbtZzDLyLkbnVPj\",\"children\":[{\"id\":\"o-m8MbNpt37vTDSRqE0OU\",\"children\":[{\"id\":\"oO5nUpC3oiAHh7JHn24ob\",\"children\":[{\"text\":\"8198\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"wc_zd3dookPKD7xqpqoN_\",\"children\":[{\"id\":\"Tvms4F6TdTqdz1tdLokC4\",\"children\":[{\"id\":\"3fXbDqmRnqx1wh0LoOBOa\",\"children\":[{\"text\":\"Failed to decode the packet returned during the process of getting the upload parameters.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Jd2OKaD0oP-ZRwBLL5qls\",\"children\":[{\"id\":\"DL92B09aBFlKPFFGSCgSj\",\"children\":[{\"id\":\"hPscoGgdnWA30p12_HBio\",\"children\":[{\"text\":\"Check whether the authentication is correct and whether the device can access the internet.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"xnkAM_JwxOb5XK7YhVO_n\",\"children\":[{\"id\":\"NH0TZjmOsyx0t0VAH_CgV\",\"children\":[{\"id\":\"kTxi85fxDKQMPCAxOr_9v\",\"children\":[{\"id\":\"QL7t_pXO2TNuAaPl7dWnU\",\"children\":[{\"text\":\"8200\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"1QRODtIGV0p4a_RMF6LhR\",\"children\":[{\"id\":\"NpDzVpSGq4w2SSS_c5ghi\",\"children\":[{\"id\":\"dAHlt7s-EryLMUiIw0sKc\",\"children\":[{\"text\":\"No \"},{\"code\":1,\"text\":\"appinfo\"},{\"text\":\" is set.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"UiGTsmcETVkITg4QTb5a3\",\"children\":[{\"id\":\"CabP8tnN1Fe_2iRvLRRM_\",\"children\":[{\"id\":\"mQrVWRqSXv2ATCbiOEm1V\",\"children\":[{\"text\":\"Check whether the \"},{\"code\":1,\"text\":\"apply\"},{\"text\":\" API is called or whether the input parameters are empty.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[17,36,47],\"widthMode\":\"percentage\"},{\"id\":\"ZfosahRHQgjPSM0QkL6wd\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code30\",\"type\":\"h4\"},{\"id\":\"siKRz7BE7ocGPK8ZRoG-a\",\"children\":[{\"id\":\"puxZxGKyj0CRCJTOjcvll\",\"children\":[{\"text\":\"-(void)OnEvent:(ITMG_MAIN_EVENT_TYPE)eventType data:(NSDictionary *)data{\"}],\"type\":\"code-line\"},{\"id\":\"AR5TY-yFKY9FAq9JLhcQO\",\"children\":[{\"text\":\" NSLog(@\\\"OnEvent:%lu,data:%@\\\",(unsigned long)eventType,data);\"}],\"type\":\"code-line\"},{\"id\":\"Mphfn3UNeQscWN1xoM9od\",\"children\":[{\"text\":\" switch (eventType) {\"}],\"type\":\"code-line\"},{\"id\":\"IhIpR4jzyM8c8uuU9njyL\",\"children\":[{\"text\":\" case ITMG_MAIN_EVNET_TYPE_PTT_UPLOAD_COMPLETE:\"}],\"type\":\"code-line\"},{\"id\":\"KnZV6Z8RYlsZ9KukqxV94\",\"children\":[{\"text\":\" {\"}],\"type\":\"code-line\"},{\"id\":\"jqavbBB3Etb3LbDTXomou\",\"children\":[{\"text\":\" if (data != NULL &&[[data objectForKey:@\\\"result\\\"] intValue]== 0)\"}],\"type\":\"code-line\"},{\"id\":\"pBRn_XQFz3ebXC1D8FMhH\",\"children\":[{\"text\":\" {\"}],\"type\":\"code-line\"},{\"id\":\"OrXibvsLYq5KGvhtNoG5M\",\"children\":[{\"text\":\" _donwloadUrlField.text = [data objectForKey:@\\\"file_id\\\"] ;\"}],\"type\":\"code-line\"},{\"id\":\"DKPnnrd4mSMDzFYzQJwTe\",\"children\":[{\"text\":\" donwLoadUrlPath = [data objectForKey:@\\\"file_id\\\"] ;\"}],\"type\":\"code-line\"},{\"id\":\"GUIlx7SEdzAvAAnVNuCu7\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"i52w4gvKsBnOCaB1G2eFD\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"hum65m8VB7Vqi3EVIJYKk\",\"children\":[{\"text\":\" break;\"}],\"type\":\"code-line\"},{\"id\":\"0SJ4Tit3g8CxfB4msXD3Y\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"uqXmD2HySLr88AU9RMiis\",\"children\":[{\"text\":\"}\"}],\"type\":\"code-line\"},{\"id\":\"BZoNeSw_akYMid-cVcv9Y\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"hvtNpM8o2zzTwPpUtxpkk\",\"children\":[{\"text\":\"Downloading the audio file\"}],\"nodeId\":\"downloading-the-audio-file\",\"type\":\"h3\"},{\"id\":\"7rbW1doeum7P5-BRaywsP\",\"children\":[{\"text\":\"This API is used to download an audio file.\"}],\"type\":\"p\"},{\"id\":\"NOrJXRCjVVOp4G2eRMkXy\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\"function-prototype27\",\"type\":\"h4\"},{\"id\":\"4LJb_7LVbENRs3QRV0o0m\",\"children\":[{\"id\":\"Tv7b8MqAfQ-PcxhEqVsJ3\",\"children\":[{\"text\":\"-(void)DownloadRecordedFile:(NSString*)fileId downloadFilePath:(NSString*)downloadFilePath \"}],\"type\":\"code-line\"},{\"id\":\"E39bRmZW1aArWzAL7qE59\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"XN7OsRBz1bAIDkkEwWt1i\",\"children\":[{\"id\":\"h77Pt6miSOXlEZ5eCdzPS\",\"children\":[{\"id\":\"j71uNUopy3V89Nj9K-oag\",\"children\":[{\"id\":\"OYQtx7SYlY4cGTMCLhgEi\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"mX6EvbvzeAmz803XJHB2b\",\"children\":[{\"id\":\"kK6z3Bl8ZlDh2Gsp38v34\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"XNYSAVU084KriRQY4rFaE\",\"children\":[{\"id\":\"ia4_MA0z66Zub7d8zqkxD\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"N8UAypQHHhcx584f44UkV\",\"children\":[{\"id\":\"Yl0WC5fOt4sDuQY5bWIRI\",\"children\":[{\"id\":\"_wPBS6NnMe5SP7XdA3frC\",\"children\":[{\"id\":\"KmB6Qasrty81ac-D79P9O\",\"children\":[{\"text\":\"fileID\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"RDOg18_PvEmK1km-BBATg\",\"children\":[{\"id\":\"bzhy45kLsNPBON3bzZuNU\",\"children\":[{\"id\":\"pfQqONN1UvwFQUmb8nv08\",\"children\":[{\"text\":\"NSString\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"jLJkhOYuVD_Su2LN8uII-\",\"children\":[{\"id\":\"q9hF5qYEZw1c9j9vj8Vgs\",\"children\":[{\"id\":\"PzqqrqnB3hNxZCATAPNec\",\"children\":[{\"text\":\"File URL path\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"rvVTr0PRloMaikdum9x2w\",\"children\":[{\"id\":\"3gs1njCICVcfu__7n6vJA\",\"children\":[{\"id\":\"oZrmJoAjkdyDzlWnir2ZI\",\"children\":[{\"id\":\"5YFfCf89bzNWPK5-w_vs5\",\"children\":[{\"text\":\"downloadFilePath\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"RtOk9nZb3bx3pQXWOPzUu\",\"children\":[{\"id\":\"dwOl79qTXoi-YNSb2cZWE\",\"children\":[{\"id\":\"3Axi9ClLauRgaR8SoVPLU\",\"children\":[{\"text\":\"NSString\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"PFXs9HMhn_xJSYfvy3rKG\",\"children\":[{\"id\":\"UfQHpHe9Ev3jBi_au6lOA\",\"children\":[{\"id\":\"TxxbVlpXqSiGdFZkoWd6n\",\"children\":[{\"text\":\"Local path of saved file\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[35,21,44],\"widthMode\":\"percentage\"},{\"id\":\"qbNle3eOk6Z1DWhWAUGe8\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code31\",\"type\":\"h4\"},{\"id\":\"0a6EV0TFelNMaHt-e33y6\",\"children\":[{\"id\":\"KSsFq9KjYXjlqEgmYzbgi\",\"children\":[{\"text\":\"[[[ITMGContext GetInstance]GetPTT]DownloadRecordedFile:fileIdpath downloadFilePath:path];\"}],\"type\":\"code-line\"},{\"id\":\"hkc0mDUpkjecoLr-vr_AR\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"I6THXYX-dJsSAqZS1EkxN\",\"children\":[{\"text\":\"Callback for audio file download completion\"}],\"nodeId\":\"callback-for-audio-file-download-completion\",\"type\":\"h3\"},{\"id\":\"5Y2AK317k9hYLKoF1gq9-\",\"children\":[{\"text\":\"After the audio file is downloaded, the event message \"},{\"code\":1,\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_DOWNLOAD_COMPLETE\"},{\"text\":\" will be returned, which will be identified in the \"},{\"code\":1,\"text\":\"OnEvent\"},{\"text\":\" function.\\nThe passed parameters include \"},{\"code\":1,\"text\":\"result\"},{\"text\":\", \"},{\"code\":1,\"text\":\"file_path\"},{\"text\":\", and \"},{\"code\":1,\"text\":\"file_id\"},{\"text\":\".\"}],\"type\":\"p\"},{\"id\":\"HzEW07IP744XsMPB9SqWU\",\"children\":[{\"text\":\"Error codes\"}],\"nodeId\":\"error-codes6\",\"type\":\"h4\"},{\"id\":\"k_59EMG_RL0C7S4mn0kEt\",\"children\":[{\"id\":\"2xwKMM6UNPSy1Ose00meQ\",\"children\":[{\"id\":\"9CNd13NWqsF_V6SRE5lyL\",\"children\":[{\"id\":\"BEDqEPCbN3Rj3igPv-gJa\",\"children\":[{\"text\":\"Error Code Value\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"V7PFkBLEtA-RAqiV1LFoS\",\"children\":[{\"id\":\"UjsmMVVGkU1aHmsBw3dkU\",\"children\":[{\"text\":\"Cause\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"hoynMg5qfqm_xWu8WuDfs\",\"children\":[{\"id\":\"c4jnULCdynm2ewziohYLJ\",\"children\":[{\"text\":\"Suggested Solution\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"mrRb83hRMsZqJ-SjkGUwG\",\"children\":[{\"id\":\"kY6ber74Y6z09Ka8dpm7Z\",\"children\":[{\"id\":\"z3uV_bZ1tXI7l_ZvLFf3u\",\"children\":[{\"id\":\"UiObyv0P3G2jqu-e8Hbg_\",\"children\":[{\"text\":\"12289\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"fkNxqsBVgpD49XFF7IzZn\",\"children\":[{\"id\":\"ymAOpQtdSTNB1YAZGJfRU\",\"children\":[{\"id\":\"JkeT2TnyDthjYjhgIMgi9\",\"children\":[{\"text\":\"An error occurred while accessing the file during download.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"FbQljqcXDIkEk4tC_8eO3\",\"children\":[{\"id\":\"kGLMrsvEzFBIUf51-iYuJ\",\"children\":[{\"id\":\"yyaCzlGtkf7qTIvE9_4FB\",\"children\":[{\"text\":\"Check whether the file path is valid.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"hJoLA8-Ecz2mH5KGet9Zr\",\"children\":[{\"id\":\"-tGM8CXGtmtjLW2faLHqY\",\"children\":[{\"id\":\"LUSe3pRWzoeSnAWlGbe2J\",\"children\":[{\"id\":\"QE9nqseg_ZX-rkokHPim6\",\"children\":[{\"text\":\"12290\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"EHBxbE0X2LObliOFg8NNC\",\"children\":[{\"id\":\"Fi8yCnXJNt-FStonAFJ3O\",\"children\":[{\"id\":\"WsoeNRpH-Kx3mpP_Yvm_D\",\"children\":[{\"text\":\"Signature verification failed.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"jBuuqJroaVZ5F1cIUMgvt\",\"children\":[{\"id\":\"fUq6yjv7G6MydAFGctcYv\",\"children\":[{\"id\":\"Ppf--DIw6xCbetoEvmzS3\",\"children\":[{\"text\":\"Check whether the authentication key is correct and whether the voice message and speech-to-text feature is initialized.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"-jX2cE7mdj4wtAWgHSgdK\",\"children\":[{\"id\":\"ijB56RrAIvAToNTVEc9e7\",\"children\":[{\"id\":\"McWVOg6P-RORl8jl_CIVE\",\"children\":[{\"id\":\"dhrockFDYBeUIaxZHDAk3\",\"children\":[{\"text\":\"12291\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"JwVTxhtdgxyOgkuJvrsru\",\"children\":[{\"id\":\"nk867I4FfykDZ4xYCJSBN\",\"children\":[{\"id\":\"HUy5Je9DnSZaKJDLjPrbu\",\"children\":[{\"text\":\"Network storage system exception\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"O7Ije1TU7oHmSUwLk5k2P\",\"children\":[{\"id\":\"cbvKvXDIyqcA5zESOCYJ_\",\"children\":[{\"id\":\"HJSYsf2NhImFqepai-lm-\",\"children\":[{\"text\":\"The server failed to get the audio file. Check whether the API parameter \"},{\"code\":1,\"text\":\"fileid\"},{\"text\":\" is correct, whether the network is normal, and whether the file exists in COS.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"uVRqXSRmutgxkZT8nDvFw\",\"children\":[{\"id\":\"pREAgry10-2-pzJgwpEPB\",\"children\":[{\"id\":\"g5qI6QC3Hp5N3cGbQxJPz\",\"children\":[{\"id\":\"F1k6DOI0uTbfEqJulo7Tl\",\"children\":[{\"text\":\"12292\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"FCuZCo6NFudQrIQFVpOO0\",\"children\":[{\"id\":\"pL-Hx-JrQnCqoytAWxKRH\",\"children\":[{\"id\":\"JxG2C5X_EIF60gL4p86rh\",\"children\":[{\"text\":\"Server file system error.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"_urMyYtNpt1XyCiKLlU1U\",\"children\":[{\"id\":\"aXGVKoyDDjR2PAeQj98Cy\",\"children\":[{\"id\":\"wDEQgp6TboVTDF41Ddpww\",\"children\":[{\"text\":\"Check whether the device can access the internet and whether the file exists on the server.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"frG9JXxv8T4Y4b1B_iMEd\",\"children\":[{\"id\":\"pJ7Kfs8Rnkepm2FchdTpz\",\"children\":[{\"id\":\"qnKGh7cqcA5SC_OSmbAwj\",\"children\":[{\"id\":\"iMtWfg3R3UGXprGPPkliJ\",\"children\":[{\"text\":\"12293\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"A8_08W7qQgVXV-SAZihw-\",\"children\":[{\"id\":\"u1LLzFoZDmJJV0usR2HDE\",\"children\":[{\"id\":\"eV34Be-jufYxwtZnvN-Sh\",\"children\":[{\"text\":\"The HTTP network failed during the process of getting the download parameters.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"dKJTY2pKXAk4KEWID36bm\",\"children\":[{\"id\":\"p7Plo0R3Ju-OSe-AsdYVE\",\"children\":[{\"id\":\"rVQs5aZUCLUJ4usi2tosQ\",\"children\":[{\"text\":\"Check whether the device can access the internet.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"jrNqJUNdt1brHYElCxhLr\",\"children\":[{\"id\":\"M0EQ-Mo74yEPVV4o1uLsG\",\"children\":[{\"id\":\"knhG4QqEKZHrVWmXGg9zD\",\"children\":[{\"id\":\"U8l02Apv1b0GrA7xgzSud\",\"children\":[{\"text\":\"12294\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ioL7XOE6drv4Fu0pQZxjc\",\"children\":[{\"id\":\"nzOzgQ2hnnFNn_RKzCQ2D\",\"children\":[{\"id\":\"EvuuPknTg3uucZ9GtTLqL\",\"children\":[{\"text\":\"The packet returned during the process of getting the download parameters is empty.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"kd5l5Nq_Hjsy6AIU4meL0\",\"children\":[{\"id\":\"EBydqf9_AIJ3_d9Whl4Xe\",\"children\":[{\"id\":\"qYjJUa8QvuCgYzY_9GsHU\",\"children\":[{\"text\":\"Check whether the device can access the internet.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"YaBj5b_Ade-7bJ53FlgfV\",\"children\":[{\"id\":\"RBBs4W9WCfaRfaaxpjemT\",\"children\":[{\"id\":\"K8B7YHHHWPQOo_Hi_scRx\",\"children\":[{\"id\":\"fykk_vqQia_ClDK19ZMaM\",\"children\":[{\"text\":\"12295\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"tWwpYEtuITUv6WbHLN_9I\",\"children\":[{\"id\":\"DwtX1QHWjr953n5r5d3Nx\",\"children\":[{\"id\":\"LhFPJd0jg48BqqDbnNhbE\",\"children\":[{\"text\":\"Failed to decode the packet returned during the process of getting the download parameters.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"uj8vFWQjsn7LDRvRAlsDT\",\"children\":[{\"id\":\"y_AE3vIswncpMoHvrwJPY\",\"children\":[{\"id\":\"Gay9F3NB_Zj4mBMSnS8V3\",\"children\":[{\"text\":\"Check whether the device can access the internet.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"nSe5G5XTGITCze4IiwFbZ\",\"children\":[{\"id\":\"E37T4AtajGnVt8kulH6un\",\"children\":[{\"id\":\"ftNp1cpigo5iTpoHrlEIJ\",\"children\":[{\"id\":\"vdydJCBqjmhnzP55r_VEu\",\"children\":[{\"text\":\"12297\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"kWyuj5FA3H4YIMpEFSvRo\",\"children\":[{\"id\":\"vHzCYzlvGiuRIFJY6Qsre\",\"children\":[{\"id\":\"yLnjMO-dh_ADguHyQG7Pv\",\"children\":[{\"text\":\"No \"},{\"code\":1,\"text\":\"appinfo\"},{\"text\":\" is set.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"lOBSF6zUJQqzoW5w_b7Ms\",\"children\":[{\"id\":\"sgdj_JnFSwgI0UIISCcdC\",\"children\":[{\"id\":\"Am1IiW7ObGwoSO90Jcpwt\",\"children\":[{\"text\":\"Check whether the authentication key is correct and whether the voice message and speech-to-text feature is initialized.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[18,33,49],\"widthMode\":\"percentage\"},{\"id\":\"lsqUEk_F2jrJWJ9CL0Lrh\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code32\",\"type\":\"h4\"},{\"id\":\"JSkmaeopyKOtGyqtzFrwI\",\"children\":[{\"id\":\"Y72ZlhMSFbeTOlpSX5ilg\",\"children\":[{\"text\":\"-(void)OnEvent:(ITMG_MAIN_EVENT_TYPE)eventType data:(NSDictionary *)data{\"}],\"type\":\"code-line\"},{\"id\":\"QafkAc_pH0m9nkRg7WqWo\",\"children\":[{\"text\":\" NSLog(@\\\"OnEvent:%lu,data:%@\\\",(unsigned long)eventType,data);\"}],\"type\":\"code-line\"},{\"id\":\"4lMP6-7s-BlQntimm443m\",\"children\":[{\"text\":\" switch (eventType) {\"}],\"type\":\"code-line\"},{\"id\":\"yMRf8-biNjLFOTmpP7vfP\",\"children\":[{\"text\":\" case ITMG_MAIN_EVNET_TYPE_PTT_DOWNLOAD_COMPLETE:\"}],\"type\":\"code-line\"},{\"id\":\"RDqp5_uQPkhWxhdWJvbT5\",\"children\":[{\"text\":\" {\"}],\"type\":\"code-line\"},{\"id\":\"Pl7GD4-6xErT0pBr2uuLJ\",\"children\":[{\"text\":\" if (data != NULL &&[[data objectForKey:@\\\"result\\\"] intValue]== 0)\"}],\"type\":\"code-line\"},{\"id\":\"BA7ZZxK2wHppahrZ9DbIl\",\"children\":[{\"text\":\" {\"}],\"type\":\"code-line\"},{\"id\":\"LzoqBR55UHgVXVUOjyrJs\",\"children\":[{\"text\":\" _audiofileToPlayField.text = [data objectForKey:@\\\"file_path\\\"] ;\"}],\"type\":\"code-line\"},{\"id\":\"FzwJe79zyYoJmqZlWUzPt\",\"children\":[{\"text\":\" donwLoadLocalPath = [data objectForKey:@\\\"file_path\\\"];\"}],\"type\":\"code-line\"},{\"id\":\"mxiyMEMpFd6-EPZm85ZAj\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"ac_5gfjcw2QDnVQn3qutf\",\"children\":[{\"text\":\" else\"}],\"type\":\"code-line\"},{\"id\":\"pR1W7MOFQCzbj9_96pYhz\",\"children\":[{\"text\":\" {\"}],\"type\":\"code-line\"},{\"id\":\"5Zli4IbeCJhevaHAgFws5\",\"children\":[{\"text\":\" donwLoadLocalPath = NULL;\"}],\"type\":\"code-line\"},{\"id\":\"hso-Aj6YOOWrL5HthdHH4\",\"children\":[{\"text\":\" } \"}],\"type\":\"code-line\"},{\"id\":\"hDAq0h-MTDgBZZlE3YCBf\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"FOciVqd-_ZCD-HU7yIyHA\",\"children\":[{\"text\":\" break;\"}],\"type\":\"code-line\"},{\"id\":\"X-STUj1-mYFZ5Mdf-ucOu\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"SJufdFpksiqQZByL0Uydg\",\"children\":[{\"text\":\"}\"}],\"type\":\"code-line\"},{\"id\":\"XO9ixeTiPZAKrN0_jEuv-\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"DrWSzqGRonej2SZfngMck\",\"children\":[{\"text\":\"Speech-to-Text Service\"}],\"nodeId\":\"speech-to-text-service\",\"type\":\"h2\"},{\"id\":\"IyNi_nY4hwExzhN73kLhz\",\"children\":[{\"text\":\"Converting audio file to text\"}],\"nodeId\":\"converting-audio-file-to-text\",\"type\":\"h3\"},{\"id\":\"IsSPSsnPXtCy57eGmSaxw\",\"children\":[{\"text\":\"This API is used to convert a specified audio file to text.\"}],\"type\":\"p\"},{\"id\":\"j-S-GXkLyfBhJv8wm51ar\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\"function-prototype28\",\"type\":\"h4\"},{\"id\":\"Otvsz-45LPya8vuboUNpq\",\"children\":[{\"id\":\"gNVBlIngFwWr_DSnvEKbr\",\"children\":[{\"text\":\"-(void)SpeechToText:(NSString*)fileID;\"}],\"type\":\"code-line\"},{\"id\":\"jUQyLJw_R2evIRuiGCFx0\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"Ccmd_8PCFzuUIap4-R-jU\",\"children\":[{\"id\":\"UMZcw3-xMNEoe_HttokiR\",\"children\":[{\"id\":\"ScmZnV3mGfKFWn9t8d1Kf\",\"children\":[{\"id\":\"_dktu0qjqPtS5hwwFW0WK\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ckMeD4HxHX_5iedIQJXEX\",\"children\":[{\"id\":\"c8QaUSim2j8fcYakeC34n\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Yv6jv4keWCH3SGyMV2bSK\",\"children\":[{\"id\":\"iO0mCNs_Dk06thx_VcMXW\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"Nqfx_lKOJFkaQvWgmQkGs\",\"children\":[{\"id\":\"jfrsmjNYcdfseRXv0GUuE\",\"children\":[{\"id\":\"edhoByqcuT_hfDCl2NQ9s\",\"children\":[{\"id\":\"zN5ArIcF6D91IZEvsJkVR\",\"children\":[{\"text\":\"fileID\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"qUQ2c5Y72PMZ__DxRrKz4\",\"children\":[{\"id\":\"9hbgSkelz--jFMtjkmTBb\",\"children\":[{\"id\":\"GsGwAfwtoxKjTAL7B2y9q\",\"children\":[{\"text\":\"NSString\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"SvzpqfbD7u7dGTJlePxaa\",\"children\":[{\"id\":\"uAxBRtIluILh1LHYj9bDs\",\"children\":[{\"id\":\"S4upr9r_xIJ6OHFgLjmi5\",\"children\":[{\"text\":\"URL of audio file\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[30,27,43],\"widthMode\":\"percentage\"},{\"id\":\"ha7rtjoEnrfhOQUU_n8RT\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code33\",\"type\":\"h4\"},{\"id\":\"ribhCxY3dfVLexNsgO-Md\",\"children\":[{\"id\":\"smUmm3moFdLRDg_O12NJQ\",\"children\":[{\"text\":\"[[[ITMGContext GetInstance]GetPTT]SpeechToText:fileID];\"}],\"type\":\"code-line\"},{\"id\":\"-T5NocAFGwAWBTFkG7HN2\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"tSl5-1_EfsG9s242BTaQQ\",\"children\":[{\"text\":\"Translating audio file into text in specified language\"}],\"nodeId\":\"translating-audio-file-into-text-in-specified-language\",\"type\":\"h3\"},{\"id\":\"nIIb0a20xiqrbR3HOEAMg\",\"children\":[{\"text\":\"This API can specify a language for recognition or translate the information recognized in speech into a specified language and return the translation.\"}],\"type\":\"p\"},{\"id\":\"oIpcxf6G8bZQJote7UQmA\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\"function-prototype29\",\"type\":\"h4\"},{\"id\":\"e-Ap8FSfQ_gwkmuITLARA\",\"children\":[{\"id\":\"BGAT2kF-Sa-9mt_jLcCdQ\",\"children\":[{\"text\":\"-(void)SpeechToText:(NSString*)fileID (NSString*)speechLanguage (NSString*)translateLanguage;\"}],\"type\":\"code-line\"},{\"id\":\"IAaVb4QMwFa855nWTpCAS\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"5qJ0cOs0owxuPvCzUKFgd\",\"children\":[{\"id\":\"iTe9LdRr36HwlsnX8NStt\",\"children\":[{\"id\":\"Nf2AmZAG9RqjxwdD6-9wb\",\"children\":[{\"id\":\"k7ssXfzlo-49ba0-thaR3\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"i__5GgBy7k_X9yeRvHDUg\",\"children\":[{\"id\":\"x2d3iMXG2Kw0zIFtfnPo1\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Q-MDEiQSMf0BDsN6ZcUdY\",\"children\":[{\"id\":\"pJP5VI5ABn2GG7msc14VY\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"2dFl_Pf73Pg73kSvG9flF\",\"children\":[{\"id\":\"gjrY_TnbBtpbAMt0VuCoz\",\"children\":[{\"id\":\"Xzzwwzcr38KaQhMlJkwxL\",\"children\":[{\"id\":\"VlM8fBL8z6ZbMt6y39uxA\",\"children\":[{\"text\":\"fileID\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"qXjg4FwQHC2-Wv-f3aN8P\",\"children\":[{\"id\":\"qR-vUJD4V-ISmKqPKAQCK\",\"children\":[{\"id\":\"ltZSB_XYEKnD4A7FgJudz\",\"children\":[{\"text\":\"NSString*\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"9lbA1XT14nKv9V3NxXZTO\",\"children\":[{\"id\":\"gz76oaNtFzQgx9yaEmLOd\",\"children\":[{\"id\":\"MyJKWC4ofMm58Gd-RdtIq\",\"children\":[{\"text\":\"URL of audio file, which will be retained on the server for 90 days\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"Vkt5jwGopijNO2BzM2qcm\",\"children\":[{\"id\":\"_A190yYCjQGgqqL9DzXwv\",\"children\":[{\"id\":\"xmCNuirhttecsA5sR8-t-\",\"children\":[{\"id\":\"336z__veY33YN5mU935W2\",\"children\":[{\"text\":\"speechLanguage\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"eYPyVH6kRzQAoLy267Apf\",\"children\":[{\"id\":\"f8SkyA3QEUUWJjmbxDMie\",\"children\":[{\"id\":\"pbW52tXOv7g-ULoHLuSJ_\",\"children\":[{\"text\":\"NSString*\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"YyEQXFQLXcUjp47UfIZFV\",\"children\":[{\"id\":\"AuUs3hJCCd_mg12wigVta\",\"children\":[{\"id\":\"87BvPgEN-oyWjd98snqxx\",\"children\":[{\"text\":\"The language in which the audio file is to be converted to text. For parameters, see \"},{\"id\":\"D8YrQe9gop-pAbV2XqAxp\",\"children\":[{\"text\":\"Language Parameter Reference List\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://intl.cloud.tencent.com/document/product/607/30260\",\"props\":{\"type\":\"link\",\"url\":\"https://intl.cloud.tencent.com/document/product/607/30260\"},\"type\":\"ref\"},{\"text\":\".\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"2rz1wWMTOpT_hWWDHJxTE\",\"children\":[{\"id\":\"G58onKYABbYm15Gv_EPxJ\",\"children\":[{\"id\":\"6FIQqz1SdoaQiud9vRzSI\",\"children\":[{\"id\":\"e1oWtW7UMH2uzLEHzDcMi\",\"children\":[{\"text\":\"translateLanguage\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"JOAHI2nkbEvA0R0pcofuO\",\"children\":[{\"id\":\"DFyi_6o1-CTAWFlk63Y7W\",\"children\":[{\"id\":\"hlGO6hyiSivkigUZk7r1a\",\"children\":[{\"text\":\"NSString*\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"KTPYpj_qw6nX73h1VKMra\",\"children\":[{\"id\":\"ba-PSEZHLXPNuoRE3DueZ\",\"children\":[{\"id\":\"7R9f-3sggxrG2_D3Od7qb\",\"children\":[{\"text\":\"The language into which the audio file will be translated. For parameters, see \"},{\"id\":\"8oDLmTP4YqVTnZJgh4Hcv\",\"children\":[{\"text\":\"Language Parameter Reference List\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://intl.cloud.tencent.com/document/product/607/30260\",\"props\":{\"type\":\"link\",\"url\":\"https://intl.cloud.tencent.com/document/product/607/30260\"},\"type\":\"ref\"},{\"text\":\". This parameter is currently unavailable. Enter the same value as that of \"},{\"code\":1,\"text\":\"speechLanguage\"},{\"text\":\".\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[16,11,73],\"widthMode\":\"percentage\"},{\"id\":\"GyGfYeG1dzpeMWK5LjtbU\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code34\",\"type\":\"h4\"},{\"id\":\"O0LwgNkaoDDrYytE4VOZa\",\"children\":[{\"id\":\"TI3XnNu3wPrIDeg8ggtJX\",\"children\":[{\"text\":\"[[[ITMGContext GetInstance]GetPTT]SpeechToText:fileID speechLanguage:\\\"cmn-Hans-CN\\\" translateLanguage:\\\"cmn-Hans-CN\\\"];\"}],\"type\":\"code-line\"},{\"id\":\"BSjhKvUusak-aoDjcNqWK\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"mKqpHglrjO_UDVyYAPoDs\",\"children\":[{\"text\":\"Callback for recognition\"}],\"nodeId\":\"callback-for-recognition\",\"type\":\"h3\"},{\"id\":\"3JKbhnW_lW7aMMlbBFZKN\",\"children\":[{\"text\":\"After the specified audio file is converted to text, the event message ITMG_MAIN_EVNET_TYPE_PTT_SPEECH2TEXT_COMPLETE will be returned, which will be identified in the \"},{\"code\":1,\"text\":\"OnEvent\"},{\"text\":\" function.\\nThe passed parameters include \"},{\"code\":1,\"text\":\"result\"},{\"text\":\", \"},{\"code\":1,\"text\":\"file_path\"},{\"text\":\" and \"},{\"code\":1,\"text\":\"text\"},{\"text\":\" (recognized text).\"}],\"type\":\"p\"},{\"id\":\"6QBIOnXIOP-imYq8YWe6k\",\"children\":[{\"text\":\"Error codes\"}],\"nodeId\":\"error-codes7\",\"type\":\"h4\"},{\"id\":\"-nnjzmv2sdL8tmrkgkgSa\",\"children\":[{\"id\":\"YS_i2ctmzGIGq3243ACV9\",\"children\":[{\"id\":\"9Z5yjLpE_-LUP-yN7rx1t\",\"children\":[{\"id\":\"Y3eq6-3UZ-ba2JLqlfDvj\",\"children\":[{\"text\":\"Error Code Value\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"FlrOi1DQ8PB9NcwHEE6U5\",\"children\":[{\"id\":\"4Z7OgDwCqLHWdOZAd49XH\",\"children\":[{\"text\":\"Cause\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"nsBWLmOARN3r8PL26zAv7\",\"children\":[{\"id\":\"sNStEQT4v_DnPvzeJzLXZ\",\"children\":[{\"text\":\"Suggested Solution\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"OGq_RfoxS8rYXFIFjJaei\",\"children\":[{\"id\":\"I_VePuXnpI1O19D4skh_b\",\"children\":[{\"id\":\"52fr65wwKBJdOsaQvHbP5\",\"children\":[{\"id\":\"gbY9994T7W7fkSzsLf1q7\",\"children\":[{\"text\":\"32769\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"k6kX9AKrrZ44ujWkHRqNa\",\"children\":[{\"id\":\"16wa2AdzAere4LlYnI190\",\"children\":[{\"id\":\"M7kgB77z4TyPNrIRwpvjy\",\"children\":[{\"text\":\"An internal error occurred.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"CYaK3B7LPfYhvsVTYQmBv\",\"children\":[{\"id\":\"v2kRdLPmRvO468b8NULTN\",\"children\":[{\"id\":\"k2UkT0nAGxzCSxbraShAr\",\"children\":[{\"text\":\"Analyze logs, get the actual error code returned from the backend to the client, and ask backend personnel for assistance.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"wQ0qqyOsdXJL55IGv54R_\",\"children\":[{\"id\":\"LAqQ-Z874tpS54P_1QtHP\",\"children\":[{\"id\":\"pRxskuy5fM1ZjGY1G9Yl1\",\"children\":[{\"id\":\"fm2cSI-T9ceorEPIp0KR4\",\"children\":[{\"text\":\"32770\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"zu9RxLl-7Jq11_xnd0sGU\",\"children\":[{\"id\":\"Pk8z6TPzYv68dnbSbih1I\",\"children\":[{\"id\":\"9odSR9AXnXVXTzLw-dfrH\",\"children\":[{\"text\":\"Network failed.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"DeRXJOiW42dfeX8oOWx2d\",\"children\":[{\"id\":\"dep6Kh7liZnaX0pnSVimW\",\"children\":[{\"id\":\"nIZF0cTcezaaZdcgaFY3E\",\"children\":[{\"text\":\"Check whether the device can access the internet.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"7JPA2cURnnQff5Fb0Euuq\",\"children\":[{\"id\":\"kjBPi__RiEyQzRv-OBQvN\",\"children\":[{\"id\":\"r7baO8uI0n3AYYpH1S78l\",\"children\":[{\"id\":\"Es5k5862SWBXPIr_UR4fL\",\"children\":[{\"text\":\"32772\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"aO2RDX4L_mYOmSwNJV---\",\"children\":[{\"id\":\"EySwZ8oZpZoZyRYH9fMUx\",\"children\":[{\"id\":\"4wIgRPPc72JiQ2NivX1ma\",\"children\":[{\"text\":\"Failed to decode the returned packet.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"7vqJsU4Lp6TdwsmuI7KBt\",\"children\":[{\"id\":\"VFmGydmCDCTI0o9oyzSYV\",\"children\":[{\"id\":\"vWO5v-7MoyD9Pz_bwM6VR\",\"children\":[{\"text\":\"Analyze logs, get the actual error code returned from the backend to the client, and ask backend personnel for assistance.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"ZgSNTlGKJg8e2AvwLpZk_\",\"children\":[{\"id\":\"MLZj6mEuv36hdaq5taiol\",\"children\":[{\"id\":\"8iCp1GVt3LKTZNnSqLcaK\",\"children\":[{\"id\":\"GunJpP5MTD99XcWqOzuSs\",\"children\":[{\"text\":\"32774\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Uxy_WqprL5A-F5n6OZTCG\",\"children\":[{\"id\":\"r6kHbkIHkkD7-QQTxn-rA\",\"children\":[{\"id\":\"4q2kcpxmgfiaYA9Qtyigk\",\"children\":[{\"text\":\"No \"},{\"code\":1,\"text\":\"appinfo\"},{\"text\":\" is set.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"7b0h2GQuolVk3PJbyGJ3k\",\"children\":[{\"id\":\"6tawuk65Wo9flExheSHqu\",\"children\":[{\"id\":\"cwU1sh4mCfuZpPmWBVgna\",\"children\":[{\"text\":\"Check whether the authentication key is correct and whether the voice message and speech-to-text feature is initialized.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"X0ivPJsTNQ7soFAJ5rzwS\",\"children\":[{\"id\":\"AFrfRD6davX36XSCbHuIP\",\"children\":[{\"id\":\"LcTsJw35XS0Zcwxi_1RFd\",\"children\":[{\"id\":\"h0uo-USMvv72WrO5LPaFF\",\"children\":[{\"text\":\"32776\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"-RGr8ipLm0NXAGe78EPjU\",\"children\":[{\"id\":\"Tve0hWwZcwALp9KZ2JJb9\",\"children\":[{\"id\":\"gzmYBcoeNICioz9ESus1D\",\"children\":[{\"code\":1,\"text\":\"authbuffer\"},{\"text\":\" check failed.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"HaqXLHXQ04n2uchTgY65Z\",\"children\":[{\"id\":\"zllYM9pWQBZukp6x2DSDg\",\"children\":[{\"id\":\"-OaDUZVgDgF4njiovDD3x\",\"children\":[{\"text\":\"Check whether \"},{\"code\":1,\"text\":\"authbuffer\"},{\"text\":\" is correct.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"8CzfCYZZ_IAnZXEMQ3phP\",\"children\":[{\"id\":\"gymDBQvEOqNhiElFL_rY-\",\"children\":[{\"id\":\"zIgWxiTqVyl9Jl2-Qz-k2\",\"children\":[{\"id\":\"rD6M-82I2UmVKKiJKzVnA\",\"children\":[{\"text\":\"32784\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"0CiJ42HAdn2L1AVrnFyhU\",\"children\":[{\"id\":\"y_1RqCc-hww_-b6ZS1FEy\",\"children\":[{\"id\":\"FCwh09Zw1bqkV9_81jNC0\",\"children\":[{\"text\":\"Incorrect speech-to-text conversion parameter.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"y-MNqpe9mzkKasJb9_Wjm\",\"children\":[{\"id\":\"Q4ACFFYDpuONh9gXe64Y_\",\"children\":[{\"id\":\"_j5OJ9uiC0PgaT_gQ2S4k\",\"children\":[{\"text\":\"Check whether the API parameter \"},{\"code\":1,\"text\":\"fileid\"},{\"text\":\" in the code is empty.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"vvjCkqDI3yyE9j7K8BFFF\",\"children\":[{\"id\":\"cp5oYit6aUckOaBd1HDFn\",\"children\":[{\"id\":\"qDsg-R3lrlR33iTsBoWUg\",\"children\":[{\"id\":\"8QYdQvw33Bv7lOK-EAt-_\",\"children\":[{\"text\":\"32785\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"f66aF0GkQmnriRQ_-KCgq\",\"children\":[{\"id\":\"aTKiZ3nMInOJaMQ4Wkrn3\",\"children\":[{\"id\":\"yAw14kF5BEtysJoT9HZGT\",\"children\":[{\"text\":\"Speech-to-text translation returned an error.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"tMAVNXDI7eq2pn8RAU9ZQ\",\"children\":[{\"id\":\"5FZFIDDc3SMFvNbDmaerc\",\"children\":[{\"id\":\"6MvRwUusP0iTV_L9pvS8F\",\"children\":[{\"text\":\"Error with the backend of voice message and speech-to-text feature. Analyze logs, get the actual error code returned from the backend to the client, and ask backend personnel for assistance.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[16,32,52],\"widthMode\":\"percentage\"},{\"id\":\"5i6si0WRAEprs6F8prEvu\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code35\",\"type\":\"h4\"},{\"id\":\"KO8lKTTQgd726EGe5W43_\",\"children\":[{\"id\":\"vOw8Y038yeu1N6z7t1x0j\",\"children\":[{\"text\":\"-(void)OnEvent:(ITMG_MAIN_EVENT_TYPE)eventType data:(NSDictionary *)data{\"}],\"type\":\"code-line\"},{\"id\":\"HirtiukahndY2vqShF-QN\",\"children\":[{\"text\":\" NSLog(@\\\"OnEvent:%lu,data:%@\\\",(unsigned long)eventType,data);\"}],\"type\":\"code-line\"},{\"id\":\"lGiKNmiGEilzEdPwGHipH\",\"children\":[{\"text\":\" switch (eventType) {\"}],\"type\":\"code-line\"},{\"id\":\"WjajYuRQ7Aec-u8TLl5tG\",\"children\":[{\"text\":\" case ITMG_MAIN_EVNET_TYPE_PTT_SPEECH2TEXT_COMPLETE:\"}],\"type\":\"code-line\"},{\"id\":\"JoofauWUVT1-pAvfXEz0x\",\"children\":[{\"text\":\" {\"}],\"type\":\"code-line\"},{\"id\":\"_Z9IkS83a9GRis5jIVKI6\",\"children\":[{\"text\":\" if (data != NULL &&[[data objectForKey:@\\\"result\\\"] intValue]== 0)\"}],\"type\":\"code-line\"},{\"id\":\"xbvfhDaN2aUm1HUlkkh6k\",\"children\":[{\"text\":\" {\"}],\"type\":\"code-line\"},{\"id\":\"Cf3FiaOgbazKbLitd0Fra\",\"children\":[{\"text\":\" UITextField *_audiotoTextField =(UITextField*)objc_getAssociatedObject(self, [PTT_AUDIO_TO_TEXT UTF8String]);\"}],\"type\":\"code-line\"},{\"id\":\"XzEU15qKErZDHjSeeryjG\",\"children\":[{\"text\":\" _audiotoTextField.text = [data objectForKey:@\\\"text\\\"] ;\"}],\"type\":\"code-line\"},{\"id\":\"ywl9GVjegb92yRoGNBqHv\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"9B1IW21BpDPFNLiCQefQB\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"3k7ICaOB571UpETECgUhT\",\"children\":[{\"text\":\" break; \"}],\"type\":\"code-line\"},{\"id\":\"gcf47u4L36WNMMQMqWdZr\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"o_LN-VR4rkjoqmIux4JxB\",\"children\":[{\"text\":\"}\"}],\"type\":\"code-line\"},{\"id\":\"U4Um0mXoB4XuUiA9Y4sc7\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"gTHGtNnFpHu3x1tA6btAr\",\"children\":[{\"text\":\"Advanced APIs\"}],\"nodeId\":\"advanced-apis\",\"type\":\"h2\"},{\"id\":\"78Z5coS0-sebZ9UKnXMpz\",\"children\":[{\"text\":\"Getting version number\"}],\"nodeId\":\"getting-version-number\",\"type\":\"h3\"},{\"id\":\"EOKCzTDRysGVI4JhdE54j\",\"children\":[{\"text\":\"This API is used to get the SDK version number for analysis.\"}],\"type\":\"p\"},{\"id\":\"dgjm51rwqVcDuFuMCqeRS\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\"function-prototype30\",\"type\":\"h4\"},{\"id\":\"AYj09KauNFIRlvXPK5wOb\",\"children\":[{\"id\":\"DQPSHignkXC4jAPtIuMf_\",\"children\":[{\"text\":\"-(NSString*)GetSDKVersion;\"}],\"type\":\"code-line\"},{\"id\":\"EjsUznEcijvtkQslZU1aZ\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"JkNIea1NM11XOK43nwtIq\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code36\",\"type\":\"h4\"},{\"id\":\"ppIOt250rYeBYBxK_QCyX\",\"children\":[{\"id\":\"tmaeaybmmSs78KpV0Sdac\",\"children\":[{\"text\":\"[[ITMGContext GetInstance] GetSDKVersion];\"}],\"type\":\"code-line\"},{\"id\":\"rLABOHDJgQOasOCAHlEuq\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"3Ol-gXnKjCvGbZVyBnkgb\",\"children\":[{\"text\":\"Checking mic permission\"}],\"nodeId\":\"checking-mic-permission\",\"type\":\"h3\"},{\"id\":\"U3sKelb0znHKc41hIvbQp\",\"children\":[{\"text\":\"This API is used to return the mic permission status.\"}],\"type\":\"p\"},{\"id\":\"YXXrKYSoGwmuZ_4xFF74g\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\"function-prototype31\",\"type\":\"h4\"},{\"id\":\"hh4_A47J7_1dInRVmiLFN\",\"children\":[{\"id\":\"MvE7xDNxLeAeCGQrjTj8z\",\"children\":[{\"text\":\"-(ITMG_RECORD_PERMISSION)CheckMicPermission;\"}],\"type\":\"code-line\"},{\"id\":\"Gr9Zz5jbaZza6QhA_W2_q\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"LmMm19IGyCVMddVDSj4SW\",\"children\":[{\"text\":\"Parameter description\"}],\"nodeId\":\"parameter-description\",\"type\":\"h4\"},{\"id\":\"Z-xEZrsFpnF8eAHGAdUE2\",\"children\":[{\"id\":\"mjSXM_OLu32nPE2RyEtJB\",\"children\":[{\"id\":\"UBKb39wMD-MmNu92kN6Yi\",\"children\":[{\"id\":\"2c507UEITTEllbSGqRjhj\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"hjk-AoMEVwmx9AuJ2GhCN\",\"children\":[{\"id\":\"y-FxqbaduEJh2Hfc04mGU\",\"children\":[{\"text\":\"Value\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"GD7edhM3rfawn69x7SGmQ\",\"children\":[{\"id\":\"pVa9tNFkioMSdAOYL0KTX\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"elQNS-Y42hbZFRylzSPR-\",\"children\":[{\"id\":\"JYzvcRQr561L56Tw438aF\",\"children\":[{\"id\":\"97wwBFgzHkF4ZBKLIReMm\",\"children\":[{\"id\":\"MLwRr6tg6vfC--q8daYi3\",\"children\":[{\"text\":\"ITMG_PERMISSION_GRANTED\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"9x9W_yEip1Q3AXP6rmJh8\",\"children\":[{\"id\":\"JM8DrwrZ9FPh7Di2Pl6b6\",\"children\":[{\"id\":\"Fo1sTOtap74Hm3tlAhZN1\",\"children\":[{\"text\":\"0\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"VsuAP3H_sKHrHKQFXgf_P\",\"children\":[{\"id\":\"UC-Oeh4gRrYhqZDafGlD4\",\"children\":[{\"id\":\"YQ0rO_3fWnG8d6FK1HoIm\",\"children\":[{\"text\":\"Mic permission is granted.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"OktA80rqbA2C8oaKuoHM_\",\"children\":[{\"id\":\"uhs0dozoxZEToibViK8lB\",\"children\":[{\"id\":\"Avk1t1x5rSFOVnplEkr-A\",\"children\":[{\"id\":\"9PsbiCoDbmPWhomZnucz3\",\"children\":[{\"text\":\"ITMG_PERMISSION_Denied\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Gqi8UW7SuIgLJe08CZjAu\",\"children\":[{\"id\":\"7Set4vwqEouDb88A88ds6\",\"children\":[{\"id\":\"6f2zmM1hmYzlAGEQ4eNwC\",\"children\":[{\"text\":\"1\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"l4TwnYz5vtyprjqQMFMc3\",\"children\":[{\"id\":\"9H4usy-HryKdH8Cj8LE_7\",\"children\":[{\"id\":\"LCiZMtfit1XKUA2qWzmY-\",\"children\":[{\"text\":\"Mic is disabled.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"pXIsCtR-6IFZoz32tUKl0\",\"children\":[{\"id\":\"pe2rtp621dtq-sofJ2aOc\",\"children\":[{\"id\":\"XV1Ct46ioxdOcwyTMnFlN\",\"children\":[{\"id\":\"pgN9U72QVhOiy1G9yuDNc\",\"children\":[{\"text\":\"ITMG_PERMISSION_NotDetermined\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"a19KNrtk_UZ9kXSG5fEgg\",\"children\":[{\"id\":\"4O48HxIDXYUUR8GRhaEk7\",\"children\":[{\"id\":\"a6BOGTOBhUw0286r9KFEt\",\"children\":[{\"text\":\"2\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"-BHh8E5a9bPCdVsw4q_Je\",\"children\":[{\"id\":\"q1Grk0Van23V8D90V_N6x\",\"children\":[{\"id\":\"nWR83P5MC6JBYrjURsMJN\",\"children\":[{\"text\":\"No authorization box has been popped up to request the permission.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"Q1DSxBFsEnd4d6-px1Vnr\",\"children\":[{\"id\":\"6oDxVBYEOde6cnJZWFoRC\",\"children\":[{\"id\":\"BYEh5QUptxDQronZMecPa\",\"children\":[{\"id\":\"mUh2F7OBBlHkhN0AznoNP\",\"children\":[{\"text\":\"ITMG_PERMISSION_ERROR\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"9Od10yridqtH4ShNbGyAj\",\"children\":[{\"id\":\"7oobL1VLPzU_f_zfQL1X8\",\"children\":[{\"id\":\"A2YJOtf5DeYdKvJSxKcF8\",\"children\":[{\"text\":\"3\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"MMYGyuWfiYFynJc8NgvW_\",\"children\":[{\"id\":\"pmKxdp5CsLkuj8mLwOvbc\",\"children\":[{\"id\":\"5NBAz81ya35wrSyiDMJcK\",\"children\":[{\"text\":\"An error occurred while calling the API.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[33,8,59],\"widthMode\":\"percentage\"},{\"id\":\"XZFU3Hedk_ZAbebyGnTAD\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code37\",\"type\":\"h4\"},{\"id\":\"eRyF8wtLO7ythFB2pqtpH\",\"children\":[{\"id\":\"qofKYumkIij_RlROnQ0J2\",\"children\":[{\"text\":\"[[ITMGContext GetInstance] CheckMicPermission];\"}],\"type\":\"code-line\"},{\"id\":\"uNybyiA4l2wzIfH71pheR\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"JFS2HjqqKVHCpHVUCYd3D\",\"children\":[{\"text\":\"Setting log printing level\"}],\"nodeId\":\"setting-log-printing-level\",\"type\":\"h3\"},{\"id\":\"aj0RqOYYnqOIM2Rr76M5P\",\"children\":[{\"text\":\"This API is used to set the level of logs to be printed, and needs to be called before the initialization. It is recommended to keep the default level.\"}],\"type\":\"p\"},{\"id\":\"jW0yECtDunbgUlE_EmAsE\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\"function-prototype32\",\"type\":\"h4\"},{\"id\":\"V7wOfL3xOpbYCKnLPyFwv\",\"children\":[{\"id\":\"hWVZme8m5Clqdw4LqjHHt\",\"children\":[{\"text\":\"-(void)SetLogLevel:(ITMG_LOG_LEVEL)levelWrite (ITMG_LOG_LEVEL)levelPrint;\"}],\"type\":\"code-line\"},{\"id\":\"6yVuseXcV14NQOsMAfSJb\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"fuQKfUtaw9n-WDcnpKr9x\",\"children\":[{\"text\":\"Parameter description\"}],\"nodeId\":\"parameter-description2\",\"type\":\"h4\"},{\"id\":\"fyF5tCN_e1TC6OwsJ60cZ\",\"children\":[{\"id\":\"VxZXhuwFsBbX2oVYv9Npl\",\"children\":[{\"id\":\"Cb-seL8qzSvrY0tGkuorN\",\"children\":[{\"id\":\"vfzcjiK7Vcg2MkQiE_h3b\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"7qA6M-LWOQQjVtCQ0Rlz6\",\"children\":[{\"id\":\"YOBTz-TppErwKV6yeSeny\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"fwVpPJjjwqlCbally7Cz4\",\"children\":[{\"id\":\"ibuu-txY_iGsy6PsXlYX4\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"8E-NVLl0lg2eBtmhJt5uu\",\"children\":[{\"id\":\"hNVK7kCrwq677fBiYVdXb\",\"children\":[{\"id\":\"MxZWX1x-wmgV6B8WmuWA3\",\"children\":[{\"id\":\"9kDrUltkY5Gs_LbHGn8CP\",\"children\":[{\"text\":\"levelWrite\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"vJixLbLUdYxPTx5BJZZLc\",\"children\":[{\"id\":\"oEfvbu95OUtPtsMnlsiEU\",\"children\":[{\"id\":\"qUWI7_qBudWveKeBIg26-\",\"children\":[{\"text\":\"ITMG_LOG_LEVEL\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"58u16fuyPlejej6gSajiy\",\"children\":[{\"id\":\"OsbhpN6Ud26u1IDoOnA2p\",\"children\":[{\"id\":\"9MjOUoYqJQ02G60n_yhQ6\",\"children\":[{\"text\":\"Sets the level of logs to be written. \"},{\"code\":1,\"text\":\"TMG_LOG_LEVEL_NONE\"},{\"text\":\" indicates not to write. Default value: TMG_LOG_LEVEL_INFO\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"BiJM8_iWit3F-IfAQgXxq\",\"children\":[{\"id\":\"ewmNHlUtzWkEYyz413RkE\",\"children\":[{\"id\":\"GPZyiSk9k82eVXGiIyACs\",\"children\":[{\"id\":\"5XHa_8-8uBAFltwG6YXl8\",\"children\":[{\"text\":\"levelPrint\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"NJft68O9AdoEwE3n2csRv\",\"children\":[{\"id\":\"C0j6GN6dzrU1mq73p8A2F\",\"children\":[{\"id\":\"fL3GGLJ8Srsi7KO164gYf\",\"children\":[{\"text\":\"ITMG_LOG_LEVEL\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"-ZjDP3Ky-7Qm6WB5HxqcP\",\"children\":[{\"id\":\"U3E6eXpqP_c15nKsS40sA\",\"children\":[{\"id\":\"vPf9100-MeHelvKfE-XEH\",\"children\":[{\"text\":\"Sets the level of logs to be printed. \"},{\"code\":1,\"text\":\"TMG_LOG_LEVEL_NONE\"},{\"text\":\" indicates not to print. Default value: TMG_LOG_LEVEL_ERROR\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[14,17,69],\"widthMode\":\"percentage\"},{\"id\":\"yD-pG0y491Z4H6HbsWcSN\",\"children\":[{\"text\":\"ITMG_LOG_LEVEL\"}],\"nodeId\":\"itmg_log_level\",\"type\":\"h4\"},{\"id\":\"I3DWfLdxSZs00Cy9-XNvG\",\"children\":[{\"id\":\"xYPjGA191IAf9Woiiv_QV\",\"children\":[{\"id\":\"fKQAASDDz3VMwL04duAUC\",\"children\":[{\"id\":\"DvNK214lkaArGzV-HNrur\",\"children\":[{\"text\":\"ITMG_LOG_LEVEL\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"WSLIkm1G7kTKdkbfwkYcs\",\"children\":[{\"id\":\"1formhmUzNbxg167lkkvV\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"2kAh836G3FYFE6v8XGGU5\",\"children\":[{\"id\":\"fmVOm452V75WxPeRTMyTn\",\"children\":[{\"id\":\"JhloLYRjegncha5NuS0-f\",\"children\":[{\"id\":\"PqmeA_B3CNBlBvISwyR8W\",\"children\":[{\"text\":\"TMG_LOG_LEVEL_NONE\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"IvIyhiZfOBUI5hVbQC01I\",\"children\":[{\"id\":\"pR_NPDvrs-tUFfkecMeQu\",\"children\":[{\"id\":\"pXfHbga-pkZVmUjRg06M1\",\"children\":[{\"text\":\"Does not print logs\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"FvZyKu5Ee9y5OJMj9wDrN\",\"children\":[{\"id\":\"AedVVersYwZfX-7z0_AQ_\",\"children\":[{\"id\":\"LnRj-7TB0ZQYrUuhMAzy3\",\"children\":[{\"id\":\"1OmI92jZ6yjR1h37ffpPp\",\"children\":[{\"text\":\"TMG_LOG_LEVEL_ERROR\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"EawPRgKR-3TiAJz4rgBB6\",\"children\":[{\"id\":\"op2IyVJI45-KH3XtTj0Xc\",\"children\":[{\"id\":\"5EniU06A1-GKDeF38mJ6e\",\"children\":[{\"text\":\"Prints error logs (default)\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"bp7s7O72BODmst4lDiDLD\",\"children\":[{\"id\":\"ExFL0Qpc-VTk01VlFM3LY\",\"children\":[{\"id\":\"D-ifdb-oY96j_8mZfbez8\",\"children\":[{\"id\":\"33cXZ7fVoBVr_GsB9eUi4\",\"children\":[{\"text\":\"TMG_LOG_LEVEL_INFO\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"a73qkBCPlBU4aIAeFaPBZ\",\"children\":[{\"id\":\"nDTPJh1GqPZYK7OOiwUvI\",\"children\":[{\"id\":\"8fRvrVWmH9LWNWtDu53Ry\",\"children\":[{\"text\":\"Prints info logs\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"TkHzrPfpLwZZCN_xcHVe5\",\"children\":[{\"id\":\"h-qbLqhM2FD08qPK-BOWm\",\"children\":[{\"id\":\"r4-BAupWqD936ZI7bQYiN\",\"children\":[{\"id\":\"WabcGQovCHKT39VFWZZlV\",\"children\":[{\"text\":\"TMG_LOG_LEVEL_DEBUG\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"4JUOOdTciPHjFB5Z8_O0-\",\"children\":[{\"id\":\"e3rEj9ovHT7u1oFhuAOrH\",\"children\":[{\"id\":\"bYXv77ARNj8YlgPdzQ1ar\",\"children\":[{\"text\":\"Prints debug logs\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"gNIYvMRu3N3JATxChAX3U\",\"children\":[{\"id\":\"zw82kCy8Ub17iM1FqSMeV\",\"children\":[{\"id\":\"vfnkoAtcXtpyJmhmEXCur\",\"children\":[{\"id\":\"a6O8Q-AQ2PzEODuZABAUS\",\"children\":[{\"text\":\"TMG_LOG_LEVEL_VERBOSE\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"0e8mPvitynGVCVfmWtTU9\",\"children\":[{\"id\":\"ETqjddWOtXnq5LncK76HX\",\"children\":[{\"id\":\"zq2CLE2e00m72TTbewH7h\",\"children\":[{\"text\":\"Prints verbose logs\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[41,59],\"widthMode\":\"percentage\"},{\"id\":\"GbI7JSFvZhq_bwITaaWFz\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code38\",\"type\":\"h4\"},{\"id\":\"k8MgigIheRahzl5d8e8mL\",\"children\":[{\"id\":\"K0a7wVVQQwg_P2-tZO8X0\",\"children\":[{\"text\":\"[[ITMGContext GetInstance] SetLogLevel:TMG_LOG_LEVEL_INFO TMG_LOG_LEVEL_INFO];\"}],\"type\":\"code-line\"},{\"id\":\"CkfJQnzm8KCWnfqPcK8g7\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"OE2OoGQj3SYAcSFNz-O-y\",\"children\":[{\"text\":\"Setting the log printing path\"}],\"nodeId\":\"setting-the-log-printing-path\",\"type\":\"h3\"},{\"id\":\"gUn3x90FP9EX3azxAgwhu\",\"children\":[{\"text\":\". This API is used to set the log printing path, which is /Users/username/Library/Containers/xxx.xxx.xxx/Data/Documents by default.. Call before Init.\"}],\"type\":\"p\"},{\"id\":\"KQdMN79G-JgaHEZ2PLCzC\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\"function-prototype33\",\"type\":\"h4\"},{\"id\":\"ZMSoCQXnTRkpRxCsDtWRQ\",\"children\":[{\"id\":\"pT7LhtiQko_NOEPSeweVO\",\"children\":[{\"text\":\"-(void)SetLogPath:(NSString*)logDir;\"}],\"type\":\"code-line\"},{\"id\":\"-EBL2oPDZ9QRo2P78HUqf\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"ss4OpyPYWf3t96etaWv5h\",\"children\":[{\"id\":\"dhp1pzKQCIyPMaXZpmRMb\",\"children\":[{\"id\":\"gmmqjykVnU1z-FDw-z18q\",\"children\":[{\"id\":\"CBHvFHhPqVFh-ZruClhg-\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"oHcq0Nl-7BWF5i9mdockF\",\"children\":[{\"id\":\"luKkSF7ApAXpJ8ZBxMg0m\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Y52a9BBV9nqtZBL6In5qt\",\"children\":[{\"id\":\"LNQRxUG9nDf3XN6SnAtmZ\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"YnKhg32o14nZZ67bvUhWc\",\"children\":[{\"id\":\"CjjCfH-JJ8x9TYhWzkUPN\",\"children\":[{\"id\":\"I6wVBYuNo8ZGl9Atu8DtH\",\"children\":[{\"id\":\"ue1Cux-oRi4KH8i-AepCp\",\"children\":[{\"text\":\"logDir\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"mJMuZsB2jJUMGj_eFEd1A\",\"children\":[{\"id\":\"J0fGmXWo5nOSJx6cwkkPz\",\"children\":[{\"id\":\"YXjQLS6feUtW3cOOsRQTU\",\"children\":[{\"text\":\"NSString\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"mVXEIsQpFywU0GOqAYPoM\",\"children\":[{\"id\":\"h4eZ2Auwz1KeK-59hGPnp\",\"children\":[{\"id\":\"n5HBGXerrNTq8CEFyI9yq\",\"children\":[{\"text\":\"Path\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[33,30,37],\"widthMode\":\"percentage\"},{\"id\":\"NF_4biPS2Ad90Fq9abr5j\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code39\",\"type\":\"h4\"},{\"id\":\"7OnOqbKOAM3twLRA6L3SS\",\"children\":[{\"id\":\"Wle_lD5tRBIDLxDMX9QCg\",\"children\":[{\"text\":\"[[ITMGContext GetInstance] SetLogPath:Path];\"}],\"type\":\"code-line\"},{\"id\":\"LWJodOCbgHDsmZiakRa16\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"a9ijNJLgTotF7WX8s7cvE\",\"children\":[{\"text\":\"Callback Messages\"}],\"nodeId\":\"callback-messages\",\"type\":\"h2\"},{\"id\":\"yw2yG2jNfuUn0GAwmzVUi\",\"children\":[{\"text\":\"Message list\"}],\"nodeId\":\"message-list\",\"type\":\"h3\"},{\"id\":\"dAz9NykwHI_Jhc4KdusMC\",\"children\":[{\"id\":\"Ex4QarEbDw1mthpgJ7Ok1\",\"children\":[{\"id\":\"VioqHvTVT-pea737EqxuN\",\"children\":[{\"id\":\"zjDdLmf5EdZiwj4KxLqvt\",\"children\":[{\"text\":\"Message\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"KRS8U3wZkXtgAW-F1SRWv\",\"children\":[{\"id\":\"6u7-oYcd_Cnv1AaXO_jXn\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"4fYiaXAd4jZpq-weurAjr\",\"children\":[{\"id\":\"H2Fa9VuN1oyGCUihC-PX1\",\"children\":[{\"id\":\"nc1JH8VceDUsN0sVBH0tu\",\"children\":[{\"id\":\"eTecM4Q39szjWjE2kuIsb\",\"children\":[{\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_RECORD_COMPLETE\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"B_ARJvv7VsZrs9LW_ILiJ\",\"children\":[{\"id\":\"DOaaFeasIPBQuUtZDLsb6\",\"children\":[{\"id\":\"psLZ5p3INHs3LLgST6aFT\",\"children\":[{\"text\":\"Indicates that PTT recording is completed.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"gMejL86folKAilOTFf_cZ\",\"children\":[{\"id\":\"BEHMWK2ILODTzczR10sg3\",\"children\":[{\"id\":\"HyXEjXpPmCYoE3U502nmv\",\"children\":[{\"id\":\"g9CoiCoOg2rhluqSlMP2J\",\"children\":[{\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_UPLOAD_COMPLETE\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"EDZfmtqDnXg0ZBeLvReHV\",\"children\":[{\"id\":\"lV88MQAVkKceUdXwUbSxM\",\"children\":[{\"id\":\"Lq1pmvAH8nrjBYLzNg0yz\",\"children\":[{\"text\":\"Indicates that PTT upload is completed.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"N9n2tc1nrLDlQCrPlWzJm\",\"children\":[{\"id\":\"YjR9EeGK-VVm4BTvW3Eso\",\"children\":[{\"id\":\"Tgt2_k477lTVOer3jGGXD\",\"children\":[{\"id\":\"qL1cpSao_r15pwVKv1YCe\",\"children\":[{\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_DOWNLOAD_COMPLETE\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ykGMWJjmE_PgyZMAtfB2c\",\"children\":[{\"id\":\"e4pyR9Hd84BdG9tuu_11q\",\"children\":[{\"id\":\"834Ug3PzWAj5XI6_8oYFo\",\"children\":[{\"text\":\"Indicates that PTT download is completed.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"m1GJYSuWyzzVGfe9ygUYd\",\"children\":[{\"id\":\"TXZOmZqewDGh2gwPFEFiO\",\"children\":[{\"id\":\"HUoAt-qffbf9-3SntYfaf\",\"children\":[{\"id\":\"yFGPEtxCeblRudXZWfHkW\",\"children\":[{\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_PLAY_COMPLETE\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"SIfqlSd5SXMuephclRl69\",\"children\":[{\"id\":\"msR8Teq6rlvn542OflWSX\",\"children\":[{\"id\":\"846-ZGb445_HpVot7rn4M\",\"children\":[{\"text\":\"Indicates that PTT playback is completed.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"6i7cMJBqQtoM6XT_RiJ7_\",\"children\":[{\"id\":\"TEyxRVj80HI9qsCrPxPu6\",\"children\":[{\"id\":\"jLhynis5Ic2c-ndyLdgte\",\"children\":[{\"id\":\"HJs-GXu0-ephMIf2gFLKZ\",\"children\":[{\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_SPEECH2TEXT_COMPLETE\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"DQqbqAttxRQNGzmiKAlZr\",\"children\":[{\"id\":\"KPw_LVHbK9SRr7bTnEfqP\",\"children\":[{\"id\":\"wR1oXbOowfz0uKKUEfM_G\",\"children\":[{\"text\":\"Indicates that speech-to-text conversion is completed.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[54,46],\"widthMode\":\"percentage\"},{\"id\":\"V9HWLUbuAbd0ACufUEdv9\",\"children\":[{\"text\":\"Data list\"}],\"nodeId\":\"data-list\",\"type\":\"h3\"},{\"id\":\"VuEbEklUSxuKSJR9hYxmn\",\"children\":[{\"id\":\"CkfumOzAtnx22H-9Kqmf4\",\"children\":[{\"id\":\"LaKFZFjnwufz3BMpwKoSl\",\"children\":[{\"id\":\"CkyQBi6Y_CAkIuFIBltQ_\",\"children\":[{\"text\":\"Message\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"YHbLVukKzFZZUC1RT0BHu\",\"children\":[{\"id\":\"Iz7VPTFFrH2pXY8UYI4ci\",\"children\":[{\"text\":\"Data\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"YNTVgAGeYqun1rBDjgxbZ\",\"children\":[{\"id\":\"Si1QUvjsrJkhIAM_XPhvC\",\"children\":[{\"text\":\"Sample\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"PPk-Y5QJOGThWUvJQsUmB\",\"children\":[{\"id\":\"F0JjsQGivnyeGVwvOIuqw\",\"children\":[{\"id\":\"4HibAlsiXlFDveRtdxh7J\",\"children\":[{\"id\":\"3Hdi8j0MTdhQKQSsIVpTF\",\"children\":[{\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_RECORD_COMPLETE\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"g5BjF3XNC9adv-TqY87Hi\",\"children\":[{\"id\":\"C2MWBELVkvzbYwYTW0Jfx\",\"children\":[{\"id\":\"O7nHp2wab1n24MTbZpCcV\",\"children\":[{\"text\":\"result; file_path\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"qjp_l_cIsTxpYwDh0DUdj\",\"children\":[{\"id\":\"V61v0-1Vqynm7QcH-UYwj\",\"children\":[{\"id\":\"lJwGjXZ7HjrBFhwWM4MDP\",\"children\":[{\"text\":\"{\\\"file_path\\\":\\\"\\\",\\\"result\\\":0}\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"vC_TRkaQuVt-3CK4Oj2DT\",\"children\":[{\"id\":\"Z6SM_jusKowo4N4t4BGS4\",\"children\":[{\"id\":\"NGxrYkz_uMDpXaIfsMfoj\",\"children\":[{\"id\":\"Y7v_D21gi9WcqlhC5T2_O\",\"children\":[{\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_UPLOAD_COMPLETE\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"oVBrVbrIRZCu6HT0ZmkGc\",\"children\":[{\"id\":\"-3DE0lhITJlJwlP3sjfzA\",\"children\":[{\"id\":\"ZPJLMkJAEZY7P07XILU8z\",\"children\":[{\"text\":\"result; file_path;file_id\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"VGSIm_r-dHfdqM9A7OYVo\",\"children\":[{\"id\":\"3DJhnTYIYlg3kRjjwYRwh\",\"children\":[{\"id\":\"9nho4G-W4uXiTiVBV0HIz\",\"children\":[{\"text\":\"{\\\"file_id\\\":\\\"\\\",\\\"file_path\\\":\\\"\\\",\\\"result\\\":0}\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"_CBpA58XcBlWRHIi0baw0\",\"children\":[{\"id\":\"wdZ09oHNm0AMqVSsqDyEt\",\"children\":[{\"id\":\"3wXSFlv4W9Xm2aDA4QWMI\",\"children\":[{\"id\":\"gcA07kUT26WFPeOD4O-ZG\",\"children\":[{\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_DOWNLOAD_COMPLETE\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"-MA2zkc783n_u89m1ibMW\",\"children\":[{\"id\":\"tKfY8r4P8OepLzd6OhDMp\",\"children\":[{\"id\":\"JBKeEB28sHnZ3LurpgDk5\",\"children\":[{\"text\":\"result; file_path;file_id\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Rblkaxj-8uYgvhSKEHFeR\",\"children\":[{\"id\":\"R9gZ6W0fFb7sI4Taj_fRy\",\"children\":[{\"id\":\"aj0wlZ0QOOlYJRjj44qOJ\",\"children\":[{\"text\":\"{\\\"file_id\\\":\\\"\\\",\\\"file_path\\\":\\\"\\\",\\\"result\\\":0}\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"X_CxW8cKlc8_xwNItGlHa\",\"children\":[{\"id\":\"V5Aq4n6CWup0nsY_h6ADL\",\"children\":[{\"id\":\"7eel6VGNtVGXFg0You-4V\",\"children\":[{\"id\":\"J_ApUYi0wd1pJZQnqgkRV\",\"children\":[{\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_PLAY_COMPLETE\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"k0BtvHbL9jOvhANB9ahxG\",\"children\":[{\"id\":\"2tZwxb0DpYfJepm-HoukL\",\"children\":[{\"id\":\"gHlMuV33oxtMOsfOBQfpL\",\"children\":[{\"text\":\"result; file_path\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"cmyjXueIbEq5sl_rs7P7r\",\"children\":[{\"id\":\"pKTuiFXK4YCveG6algzuX\",\"children\":[{\"id\":\"hUcT2eI4gwU_A-8NqXAAI\",\"children\":[{\"text\":\"{\\\"file_path\\\":\\\"\\\",\\\"result\\\":0}\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"d9QQRCiY_aqKd1CUeL4Ny\",\"children\":[{\"id\":\"YPnLmfTVaq25DoU_4iD8y\",\"children\":[{\"id\":\"fJ2TcIDMm06EQeKLHEaw5\",\"children\":[{\"id\":\"0Jr1Lrd4LCfo6Ubf_XrAi\",\"children\":[{\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_SPEECH2TEXT_COMPLETE\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"kUdIxFCKd6ggH5RRImqJu\",\"children\":[{\"id\":\"0Rx2Gj7P9cW4FJRVViaH1\",\"children\":[{\"id\":\"4Dk0i3RmPPUXwV0vDj4cz\",\"children\":[{\"text\":\"result; text;file_id\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Sds4whUhOapAQg1gu-YO9\",\"children\":[{\"id\":\"Qf37Lu3R5-RMN9RcanzsB\",\"children\":[{\"id\":\"sjdNOCE6HWHgtQL0LB3oX\",\"children\":[{\"text\":\"{\\\"file_id\\\":\\\"\\\",\\\"text\\\":\\\"\\\",\\\"result\\\":0}\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"7LH9qvUKFRxYmeeEPG190\",\"children\":[{\"id\":\"lapNZiEI_seAJRmSzDwwg\",\"children\":[{\"id\":\"VTWipZgzz8NBzVFjCPUP6\",\"children\":[{\"id\":\"euY9qtunys5S7RQ-nH_LZ\",\"children\":[{\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRECOGNITION_COMPLETE\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"fbH8bnaFVFU832QQVFgJY\",\"children\":[{\"id\":\"dgrraOcVyd4Hnd3ouWXBc\",\"children\":[{\"id\":\"VH6tRKqxkA63hDUzUXCAP\",\"children\":[{\"text\":\"result; file_path; text;file_id\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"_84pn2-Ub583n0w0CayQM\",\"children\":[{\"id\":\"AzOuqVT9hP2IGrFNLkp_4\",\"children\":[{\"id\":\"vqWSbYpRxFVzBADOroa_t\",\"children\":[{\"text\":\"{\\\"file_id\\\":\\\"\\\",\\\"file_path\\\":\\\",\\\"text\\\":\\\"\\\",\\\"result\\\":0}\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[51,19,30],\"widthMode\":\"percentage\"},{\"type\":\"p\",\"children\":[{\"text\":\"\"}],\"id\":\"XOLpyk7Ex1JaHkRQ3G_iH\"}]"}},"46715":{"categoryId":607,"weight":80,"type":"page","extension":"","pid":18737,"id":46715,"lang":"en","title":"Voice Chat API","pdfUrl":"","docType":"default","children":[],"firstReleaseTime":"2022-05-16 22:40:01","recentReleaseTime":"2022-05-16 22:40:01","content":{"title":"Voice Chat API","body":"
This document describes how to integrate with Game Multimedia Engine (GME) on macOS.
Note:
This document applies to GME SDK version 2.9.

Considerations

GME provides two services: voice chat service and voice message and speech-to-text service, both of which rely on key APIs such as Init and Poll.
Note on Init API
If you need to use voice chat and voice message services at the same time, you only need to call Init API once.\nBilling will not start after initialization. After you call Entering a voice chat room to enter the room successfully, the billing will start.

\"image\"



Directions

Important notes

Configure your project before using GME; otherwise, the SDK will not take effect.
After a GME API is called successfully, QAVError.OK will be returned with the value being 0.
GME APIs should be called in the same thread.
The Poll API should be called periodically for GME to trigger event callbacks.
For detailed error code, please see Error Codes.

APIs

@class ITMGRoom;//Room APIs
@class ITMGAudioCtrl;//Audio APIs
@class ITMGAudioEffectCtrl;//Sound effect, accompaniment APIs

Key APIs

Before the initialization, the SDK is in the uninitialized status, and you need to initialize it through the Init API before you can use the voice chat and speech-to-text services.
You need to call the Init API before calling any APIs of GME.
If you have any questions when using the service, please see General FAQs.
API
Description
InitEngine
Initializes GME
Poll
Triggers event callback
Pause
Pauses the system
Resume
Resumes the system
Uninit
Uninitializes GME

Getting singleton

To use the voice feature, get the ITMGContext object first.

Function prototype

ITMGContext ITMGDelegate <NSObject>

Sample code

ITMGContext* _context = [ITMGContext GetInstance];
_context.TMGDelegate =self;

Message delivery

The API callback messages is processed in OnEvent. For the message type, please see ITMG_MAIN_EVENT_TYPE. The message content is a dictionary for parsing the API callback contents.

Function prototype

- (void)OnEvent:(ITMG_MAIN_EVENT_TYPE)eventType data:(NSDictionary*)data;

Sample code

-(void)OnEvent:(ITMG_MAIN_EVENT_TYPE)eventType data:(NSDictionary *)data{
NSLog(@"OnEvent:%lu,data:%@",(unsigned long)eventType,data);
switch (eventType) {
//Identify `eventType`
}
}

Initializing SDK

This API is used to initialize the GME service. It is recommended to call it when initializing the application. No fee is incurred for calling this API.
For more information on how to get the sdkAppID parameter, see Voice Service Activation Guide.
The openID uniquely identifies a user with the rules stipulated by the application developer and unique in the application (currently, only INT64 is supported).
Note:
The SDK must be initialized before a user can enter a voice chat room.
The Init API must be called in the same thread with other APIs. It is recommended to call all APIs in the main thread.

Function prototype

-(int)InitEngine:(NSString*)sdkAppID openID:(NSString*)openID;
Parameter
Type
Description
sdkAppId
String
AppId provided by the GME service from the Tencent Cloud console
OpenId
String
OpenId can only be in Int64 type, which is passed after being converted to a string.

Returned values

Returned Value
Description
QAV_OK= 0
Initialized SDK successfully.
QAV_ERR_SDK_NOT_FULL_UPDATE= 7015
Checks whether the SDK file is complete. It is recommended to delete it and then import the SDK again.
The returned value AV_ERR_SDK_NOT_FULL_UPDATE is only a reminder but will not cause an initialization failure.
If this error is reported during integration, please check the integrity and version of the SDK file as prompted.
If this error is returned after executable file export, please ignore it and try to avoid displaying it in the UI.

Sample code

_openId = _userIdText.text;
_appId = _appIdText.text;
[[ITMGContext GetInstance] InitEngine:SDKAPPID openID:_openId];


Triggering event callback

Event callbacks can be triggered by periodically calling the Poll API in update. The Poll API should be called periodically for GME to trigger event callbacks; otherwise, the entire SDK service will run exceptionally.\nRefer to the EnginePollHelper.m file in Demo.
Calling the `Poll` API periodically
The Poll API must be called periodically and in the main thread to avoid abnormal API callbacks.

Function prototype

-(void)Poll;

Sample code

[[ITMGContext GetInstance] Poll];

Pausing the system

When a Pause event occurs in the system, the engine should also be notified for pause.\nIf you need to pause the audio when switching to the background, you can call the Pause API in the listening code used to switch to the background, and call the Resume API in the listening event used to resume the foreground.

Function prototype

-(QAVResult)Pause;

Resuming the system

When a Resume event occurs in the system, the engine should also be notified for resumption. The Resume API only supports resuming voice chat.

Function prototype

-(QAVResult)Resume;


Uninitializing SDK

This API is used to uninitialize the SDK to make it uninitialized. Switching accounts requires uninitialization.

Function prototype

-(int)Uninit;

Sample code

[[ITMGContext GetInstance] Uninit];

Voice chat flowchart


\"\"



Voice Chat Room APIs

You should initialize and call the SDK to enter a room before voice chat can start.\nIf you have any questions when using the service, please see FAQs About Voice Chat.
API
Description
GenAuthBuffer
Initializes authentication
EnterRoom
Enters room
IsRoomEntered
Indicates whether room entry is successful
ExitRoom
Exits room
ChangeRoomType
Modifies user's room audio type
GetRoomType
Gets user's room audio type

Voice chat room call flowchart


\"\"


Entered the room successfully
If the room entry callback result is 0, the room entry is successful. The returned value of 0 from the EnterRoom API does not necessarily mean that the room entry is successful.

Authentication information

Generate AuthBuffer for encryption and authentication of relevant features. For release in the production environment, please use the backend deployment key as detailed in Authentication Key.

Function prototype

@interface QAVAuthBuffer : NSObject
+ (NSData*) GenAuthBuffer:(unsigned int)appId roomId:(NSString*)roomId openID:(NSString*)openID key:(NSString*)key;
+ @end

Parameter
Type
Description
appId
int
AppId from the Tencent Cloud console.
roomId
NSString
Room ID, which can contain up to 127 characters.
openID
NSString
User ID, which is the same as openID during initialization.
key
NSString
Permission key from the Tencent Cloud console.

Sample code

#import "GMESDK/QAVAuthBuffer.h"
NSData* authBuffer = [QAVAuthBuffer GenAuthBuffer:SDKAPPID3RD.intValue roomId:_roomId openID:_openId key:AUTHKEY];


Entering a room

When a user enters a room with the generated authentication information, the ITMG_MAIN_EVENT_TYPE_ENTER_ROOM message will be received as a callback. Mic and speaker are not enabled by default after room entry. The returned value of AV_OK indicates a success.
The audio type of the room is determined by the first user to enter the room. After that, if a member in the room changes the room type, it will take effect for all members there. For example, if the first user entering the room uses the smooth sound quality, and the second user entering the room uses the HD sound quality, the room audio type of the second user will become smooth sound quality. Only when a member in the room calls the ChangeRoomType API, the audio type of the room will be changed.
For more information on how to choose a room audio type, please see Sound Quality Selection.

Function prototype

-(int)EnterRoom:(NSString*) roomId roomType:(int)roomType authBuffer:(NSData*)authBuffer;

Parameter
Type
Description
roomId
NSString
Room ID, which can contain up to 127 characters
roomType
int
Room audio type
authBuffer
NSData
Authentication key

Sample code

[[ITMGContext GetInstance] EnterRoom:_roomId roomType:_roomType authBuffer:authBuffer];


Callback for room entry

After the user enters the room, the message ITMG_MAIN_EVENT_TYPE_ENTER_ROOM will be sent and identified in the OnEvent function for callback and processing. A successful callback means that the room entry is successful, and the billing starts.

Sample code

Sample code for processing the callback, including room entry and network disconnection events.
-(void)OnEvent:(ITMG_MAIN_EVENT_TYPE)eventType data:(NSDictionary *)data{
NSLog(@"OnEvent:%lu,data:%@",(unsigned long)eventType,data);
switch (eventType) {
case ITMG_MAIN_EVENT_TYPE_ENTER_ROOM:
{
int result = ((NSNumber*)[data objectForKey:@"result"]).intValue;
NSString* error_info = [data objectForKey:@"error_info"];
//Receive the event of successful room entry
}
break;
}
}


Data details

Message
Data
Sample
ITMG_MAIN_EVENT_TYPE_ENTER_ROOM
result; error_info
{"error_info":"","result":0}
ITMG_MAIN_EVENT_TYPE_ROOM_DISCONNECT
result; error_info
{"error_info":"waiting timeout, please check your network","result":0}
If the network is disconnected, there will be a disconnected callback prompt ITMG_MAIN_EVENT_TYPE.ITMG_MAIN_EVENT_TYPE_ROOM_DISCONNECT. At this time, the SDK will automatically reconnect, and the callback is ITMG_MAIN_EVENT_TYPE_RECONNECT_START. When the reconnection is successful, there will be a callback ITMG_MAIN_EVENT_TYPE_RECONNECT_SUCCESS.

Error codes

Error Code Value
Cause and Suggested Solution
7006
Authentication failed:
The AppID does not exist or is incorrect.
An error occurred while authenticating the authbuff.
Authentication expired.
The OpenId does not meet the specification.
7007
Already in another room.
1001
The user was already in the process of entering a room but repeated this operation. It is recommended not to call the room entering API until the room entry callback is returned.
1003
The user was already in the room and called the room entering API again.
1101
Make sure that the SDK is initialized, OpenId complies with the rules, the APIs are called in the same thread, and the Poll API is called normally.

Exiting the room

This API is called to exit the current room. It is an async API. The returned value of AV_OK indicates a successful async delivery.
Note:
If there is a scenario in the application where room entry is performed immediately after room exit, you don't need to wait for the RoomExitComplete callback notification from the ExitRoom API during API call; instead, you can directly call the API.

Function prototype

-(int)ExitRoom


Sample code

[[ITMGContext GetInstance] ExitRoom];


Callback for room exit

After the user exits a room, a callback will be returned with the message being ITMG_MAIN_EVENT_TYPE_EXIT_ROOM.

Sample code

-(void)OnEvent:(ITMG_MAIN_EVENT_TYPE)eventType data:(NSDictionary *)data{
NSLog(@"OnEvent:%lu,data:%@",(unsigned long)eventType,data);
switch (eventType) {
case ITMG_MAIN_EVENT_TYPE_EXIT_ROOM:
{
// Receive the event of successful room exit
}
break;
}
}


Data details

Message
Data
Sample
ITMG_MAIN_EVENT_TYPE_EXIT_ROOM
result; error_info
{"error_info":"","result":0}

Determining whether user has entered room

This API is used to determine whether the user has entered a room. A bool-type value will be returned. The call is invalid during the process of room entry.

Function prototype

-(BOOL)IsRoomEntered;


Sample code

[[ITMGContext GetInstance] IsRoomEntered];


Switching room

User can call this API to quickly switch the voice chat room after entering the room. After the room is switched, the device is not reset, that is, if the microphone is already enabled in this room, the microphone will keep enabled after the room is switched.
The callback for quickly switching rooms is ITMG_MAIN_EVENT_TYPE.ITMG_MAIN_EVENT_TYPE_SWITCH_ROOM, and the fields are error_info and result.

API prototype

-(int) SwitchRoom:(NSString *)roomID authBuffer:(NSData*)authBuffer;


Type descriptions

Parameter
Type
Description
targetRoomID
NSString *
ID of the room to enter
authBuffer
NSData*
Generates a new authentication with the ID of the room to enter

Callback sample code

- (IBAction)swichRoom:(id)sender {
NSData* authBuffer = [QAVAuthBuffer GenAuthBuffer:_appId.intValue roomID:_roomIdText.text openID:_openId key:_key];
[[[ITMGContext GetInstance]GetRoom]SwitchRoom:_roomIdText.text authBuffer:authBuffer];
}

-(void)OnEvent:(ITMG_MAIN_EVENT_TYPE)eventType data:(NSDictionary *)data{
NSString* log =[NSString stringWithFormat:@"OnEvent:%d,data:%@", (int)eventType, data];
[self showLog:log];
NSLog(@"====%@====",log);
switch (eventType) {
case ITMG_MAIN_EVENT_TYPE_SWITCH_ROOM:
{
int result = ((NSNumber*)[data objectForKey:@"result"]).intValue;
NSString* log = nil;
if (result == QAV_OK) {
log = [NSString stringWithFormat:@"switch room success."];
} else {
log = [NSString stringWithFormat:@"switch room failed."];
}
[self showLog:log];
break;
}
}
}


Cross-room mic connection

Call this API to connect the microphones across rooms after entering the room. And the local user can communicate with the target OpenID user in the target room.

Example

User a is in room A, user b is in room B, and user a can talk with b through the cross-room API. When user c in room A speaks, users b and d in room B cannot hear. User c in room A can hear only the voice in room A and the voice of user b in room B but not other users in room B.

API prototype

-(int) StartRoomSharing:(NSString *)targetRoomID targetOpenID:(NSString *)targetOpenID authBuffer:(NSData*)authBuffer;

-(int) StopRoomSharing;


Type descriptions

Parameter
Type
Description
targetRoomID
NSString *
ID of the room to connect mic
targetOpenID
NSString *
The target OpenID to connect mic
authBuffer
NSData*
Reserved flag. You just need to enter NULL.

Sample code

- (IBAction)shareRoom:(id)sender {
if(_shareRoomSwitch.isOn){
[[[ITMGContext GetInstance]GetRoom]StartRoomSharing:_shareRoomID.text targetOpenID:_shareOpenID.text authBuffer:NULL];
}else{
[[[ITMGContext GetInstance]GetRoom]StopRoomSharing];
}
}
}


Notifications of member room entry and speaking status

This API is used to obtain the user speaking in the room and display it in the UI, and to send a notification when someone entering or exiting the room.
Notification for this event will be sent only when the status changes. To get member status in real time, cache the notification when it is received at a higher layer. The event message is ITMG_MAIN_EVNET_TYPE_USER_UPDATE, where the data contains event_id and user_list. The event message will be identified in the OnEvent function.\nNotifications for audio events are subject to a threshold, and a notification will be sent only when this threshold is exceeded. The notification "A member has stopped sending audio packets” will be sent if no audio packets are received in more than two seconds. This event only returns the member speaking event, but not the specific volume level. If you need the specific volume levels of members in the room, use the GetVolumeById API.
event_id
Description
Maintenance
ITMG_EVENT_ID_USER_ENTER
A member enters the room
Member list
ITMG_EVENT_ID_USER_EXIT
A member exits the room
Member list
ITMG_EVENT_ID_USER_HAS_AUDIO
A member sends audio packets. This event can be used to determine whether a user is speaking and display the voiceprint effect. It can be called together with getRecvStreamLevel.
Chat member list
ITMG_EVENT_ID_USER_NO_AUDIO
A member stops sending audio packets
Chat member list

Room member maintenance flowchart


\"\"



Sample code

-(void)OnEvent:(ITMG_MAIN_EVENT_TYPE)eventType data:(NSDictionary *)data{
ITMG_EVENT_ID_USER_UPDATE event_id=((NSNumber*)[data objectForKey:@"event_id"]).intValue;
NSMutableArray* uses = [NSMutableArray arrayWithArray: [data objectForKey:@"user_list"]];
NSLog(@"OnEvent:%lu,data:%@",(unsigned long)eventType,data);
switch (eventType) {
case ITMG_MAIN_EVNET_TYPE_USER_UPDATE:
{
// Process
//Parse the parameter to get `event_id` and `user_list`
switch (eventID)
{
case ITMG_EVENT_ID_USER_ENTER:
// A member enters the room
break;
case ITMG_EVENT_ID_USER_EXIT:
// A member exits the room
break;
case ITMG_EVENT_ID_USER_HAS_AUDIO:
// A member sends audio packets
break;
case ITMG_EVENT_ID_USER_NO_AUDIO:
// A member stops sending audio packets
break;
}
break;
}
}
}


Data details

Message
Data
Sample
ITMG_MAIN_EVNET_TYPE_USER_UPDATE
event_id; user_list
{"event_id":0,"user_list":""}

Muting in a room

This API is used to add an ID to the audio data blacklist. This operation blocks audio from someone and only applies to the local device. A returned value of 0 indicates the call is successful. Assume that users A, B, and C are all speaking using their mic in a room:
If A blocks C, A can only hear B;
If B blocks neither A nor C, B can hear both of them;
If C blocks neither A nor B, C can hear both of them.
This API is suitable for scenarios where a user is muted in a room.

Function prototype

ITMGContext GetAudioCtrl -(QAVResult)AddAudioBlackList:(NSString*)openID;

Parameter
Type
Description
openId
NSString
ID to be blocked openid

Sample code

[[[ITMGContext GetInstance]GetAudioCtrl ] AddAudioBlackList[id]];


Unmuting

This API is used to remove an ID from the audio data blocklist. A returned value of 0 indicates the call is successful.

Function prototype

-(QAVResult)RemoveAudioBlackList:(NSString*)openID;

Parameter
Type
Description
openId
NSString
ID to be unblocked openid

Sample code

[[[ITMGContext GetInstance]GetAudioCtrl ] RemoveAudioBlackList[openId]];


Voice Chat Audio APIs


\"Image\"



Notes on voice chat audio connection

The voice chat APIs can only be called after SDK initialization and room entry.\nWhen Enable/Disable Mic/Speaker is clicked on the UI, the following practices are recommended:
For most game applications, it is recommended to call the EnableMic and EnableSpeaker APIs, which is equivalent to calling the EnableAudioCaptureDevice/EnableAudioSend and EnableAudioPlayDevice/EnableAudioRecv APIs.
For other mobile applications (such as social networking applications), enabling/disabling a capturing device will restart both capturing and playback devices. If the application is playing back background music, it will also be interrupted. Playback will not be interrupted if the mic is enabled/disabled through control of upstreaming/downstreaming. Calling method: call EnableAudioCaptureDevice(true) and EnableAudioPlayDevice(true) once after room entry, and call EnableAudioSend/Recv to send/receive audio streams when Enable/Disable Mic is clicked.
For more information on how to release only a capturing or playback device, please see the EnableAudioCaptureDevice and EnableAudioPlayDevice.
Call the pause API to pause the audio engine and call the resume API to resume the audio engine.

Voice chat audio APIs

API
Description
EnableMic
Enables/disables mic
GetMicState
Gets mic status
EnableAudioCaptureDevice
Enables/disables capturing device
IsAudioCaptureDeviceEnabled
Gets capturing device status
EnableAudioSend
Enables/disables audio upstreaming
IsAudioSendEnabled
Gets audio upstreaming status
GetMicLevel
Gets real-time mic volume
GetSendStreamLevel
Gets real-time audio upstreaming volume
SetMicVolume
Sets mic volume
GetMicVolume
Gets mic volume
EnableSpeaker
Enables/disables speaker
GetSpeakerState
Gets speaker status
EnableAudioPlayDevice
Enables/disables playback device
IsAudioPlayDeviceEnabled
Gets playback device status
EnableAudioRecv
Enables/disables audio downstreaming
IsAudioRecvEnabled
Gets audio downstreaming status
GetSpeakerLevel
Gets real-time speaker volume
GetRecvStreamLevel
Gets real-time downstreaming audio levels of other members in room
SetSpeakerVolume
Sets speaker volume
GetSpeakerVolume
Gets speaker volume
EnableLoopBack
Enables/disables in-ear monitoring

Voice Chat Capturing APIs

Enabling or disabling the microphone

This API is used to enable/disable the mic. Mic and speaker are not enabled by default after room entry.\nIf accompaniment is used, please call this API as instructed in Accompaniment in Voice Chat.
EnableMic = EnableAudioCaptureDevice + EnableAudioSend

Function prototype

-(QAVResult)EnableMic:(BOOL)enable;

Parameter
Type
Description
isEnabled
boolean
To enable the mic, set this parameter to YES; otherwise, set it to NO.

Sample code

// Enable mic
[[[ITMGContext GetInstance] GetAudioCtrl] EnableMic:YES];


Getting the mic status

This API is used to get the mic status. The returned value 0 indicates that the mic is off, while 1 is on.

Function prototype

-(int)GetMicState;


Sample code

[[[ITMGContext GetInstance] GetAudioCtrl] GetMicState];


Enabling or disabling capturing device

This API is used to enable/disable a capturing device. The device is not enabled by default after room entry.
This API can only be called after room entry. The device will be disabled automatically after room exit.
Operations such as permission application and volume type adjustment will generally be performed when a capturing device is enabled on a mobile device.

Function prototype

-(QAVResult)EnableAudioCaptureDevice:(BOOL)enabled;

Parameter
Type
Description
enabled
BOOL
To enable the capturing device, set this parameter to YES, otherwise set it to NO.

Sample code

// Enable capturing device
[[[ITMGContext GetInstance]GetAudioCtrl ]EnableAudioCaptureDevice:enabled];


Getting the capturing device status

This API is used to get the status of a capturing device.

Function prototype

-(BOOL)IsAudioCaptureDeviceEnabled;


Sample code

BOOL IsAudioCaptureDevice = [[[ITMGContext GetInstance] GetAudioCtrl] IsAudioCaptureDeviceEnabled];


Enabling or disabling audio upstreaming

This API is used to enable/disable audio upstreaming. If a capturing device is already enabled, it will send captured audio data; otherwise, it will remain mute. For more information on how to enable/disable the capturing device, please see the EnableAudioCaptureDevice API.

Function prototype

-(QAVResult)EnableAudioSend:(BOOL)enable;

Parameter
Type
Description
enable
BOOL
To enable audio upstreaming, set this parameter to YES; otherwise, set it to NO.

Sample code

[[[ITMGContext GetInstance]GetAudioCtrl ]EnableAudioSend:enabled];


Getting audio upstreaming status

This API is used to get the status of audio upstreaming.

Function prototype

-(BOOL)IsAudioSendEnabled;


Sample code

BOOL IsAudioSend = [[[ITMGContext GetInstance] GetAudioCtrl] IsAudioSendEnabled];



Getting the real-time mic volume

This API is used to get the real-time mic volume. An int-type value in the range of 0-100 will be returned. It is recommended to call this API once every 20 ms.
This API is not applicable to the voice message service.

Function prototype

-(int)GetMicLevel;


Sample code

[[[ITMGContext GetInstance] GetAudioCtrl] GetMicLevel];


Getting the real-time audio upstreaming volume

This API is used to get the local real-time audio upstreaming volume. An int-type value in the range of 0-100 will be returned.
This API is not applicable to the voice message service.

Function prototype

-(int)GetSendStreamLevel();


Sample code

[[[ITMGContext GetInstance] GetAudioCtrl] GetSendStreamLevel];


Setting the mic software volume

This API is used to set the mic volume. The corresponding parameter is volume, which is equivalent to attenuating or gaining the captured sound. 0 indicates that the audio is mute, while 100 indicates that the volume remains unchanged. The default value is 100.
This API is not applicable to the voice message service.

Function prototype

-(QAVResult)SetMicVolume:(int) volume;

Parameter
Type
Description
volume
int
Sets volume. Value range: 0-200

Sample code

[[[ITMGContext GetInstance] GetAudioCtrl] SetMicVolume:100];


Getting the mic software volume

This API is used to obtain the microphone volume. An "int" value is returned. Value 101 represents API SetMicVolume has not been called.
This API is not applicable to the voice message service.

Function prototype

-(int) GetMicVolume;


Sample code

[[[ITMGContext GetInstance] GetAudioCtrl] GetMicVolume];


Voice Chat Playback APIs

Enabling or disabling the speaker

This API is used to enable/disable the speaker.\nIf accompaniment is used, please call this API as instructed in Accompaniment in Voice Chat.
EnableSpeaker = EnableAudioPlayDevice + EnableAudioRecv

Function prototype

-(void)EnableSpeaker:(BOOL)enable;

Parameter
Type
Description
isEnabled
boolean
To disable the speaker, set this parameter to NO, otherwise set it to YES.

Sample code

// Enable the speaker
[[[ITMGContext GetInstance] GetAudioCtrl] EnableSpeaker:YES];


Getting the speaker status

This API is used to get the speaker status. 0 indicates that the speaker is off, while 1, on.

Function prototype

-(int)GetSpeakerState;


Sample code

[[[ITMGContext GetInstance] GetAudioCtrl] GetSpeakerState];


Enabling or disabling playback device

This API is used to enable/disable a playback device.

Function prototype

-(QAVResult)EnableAudioPlayDevice:(BOOL)enabled;

Parameter
Type
Description
enabled
BOOL
To disable a playback device, set this parameter to NO, otherwise set it to YES.

Sample code

// Enable the playback device
[[[ITMGContext GetInstance]GetAudioCtrl ]EnableAudioPlayDevice:enabled];


Getting the playback device status

This API is used to get the status of a playback device.

Function prototype

-(BOOL)IsAudioPlayDeviceEnabled;


Sample code

BOOL IsAudioPlayDevice = [[[ITMGContext GetInstance] GetAudioCtrl] IsAudioPlayDeviceEnabled];


Enabling or disabling audio downstreaming

This API is used to enable/disable audio downstreaming. If a playback device is already enabled, it will play back audio data from other members in the room; otherwise, it will remain mute. For more information on how to enable/disable the playback device, please see the EnableAudioPlayDevice API.

Function prototype

-(QAVResult)EnableAudioRecv:(BOOL)enabled;

Parameter
Type
Description
enabled
BOOL
To enable audio downstreaming, set this parameter to YES; otherwise, set it to NO.

Sample code

[[[ITMGContext GetInstance]GetAudioCtrl ]EnableAudioRecv:enabled];


Getting audio downstreaming status

This API is used to get the status of audio downstreaming.

Function prototype

-(BOOL)IsAudioRecvEnabled;


Sample code

BOOL IsAudioRecv = [[[ITMGContext GetInstance] GetAudioCtrl] IsAudioRecvEnabled];


Getting the real-time speaker volume

This API is used to get the real-time speaker volume level. An int-type value will be returned to indicate the volume level. It is recommended to call this API once every 20 ms.

Function prototype

-(int)GetSpeakerLevel;


Sample code

[[[ITMGContext GetInstance] GetAudioCtrl] GetSpeakerLevel];


Getting the real-time downstreaming audio levels of other members in room

This API is used to get the real-time audio downstreaming volume of other members in the room. An int-type value will be returned. Value range: 0-200.

Function prototype

-(int)GetRecvStreamLevel:(NSString*) openID;

Parameter
Type
Description
openID
NSString
openId of another member in the room

Sample code

[[[ITMGContext GetInstance] GetAudioCtrl] GetRecvStreamLevel:(NSString*) openId

Dynamic setting of the volume of a member in the room

This API is used to set the volume of a member in the room and only applies to the local device.

Function prototype

-(int) SetSpeakerVolumeByOpenID:(NSString *)openId volume:(int)volume;

Parameter description

Parameter
Type
Description
openId
String *
OpenID that needs to adjust the volume
volume
int
Range: [0-200]; Default: 100

Getting the set volume percentage

Call this API to get volume set by SetSpeakerVolumeByOpenID

API prototype

-(int) GetSpeakerVolumeByOpenID:(NSString *)openId;

Returned values

API returns volume percentage set by OpenID, 100 by default.

Setting the speaker volume

This API is used to set the speaker volume.\nThe corresponding parameter is volume. 0 indicates that the audio is mute, while 100 indicates that the volume remains unchanged. The default value is 100.

Function prototype

-(QAVResult)SetSpeakerVolume:(int)vol;

Parameter
Type
Description
vol
int
Sets volume. Value range: 0-200

Sample code

[[[ITMGContext GetInstance] GetAudioCtrl] SetSpeakerVolume:100];


Getting the speaker volume

This API is used to get the speaker volume. An int-type value will be returned to indicate the volume. 101 indicates that the SetSpeakerVolume API has not been called.\n"Level" indicates the real-time volume, and "Volume" the speaker volume. The final volume = Level * Volume%. For example, if the "Level" is 100 and "Volume" is 60, the final volume is "60".

Function prototype

-(int)GetSpeakerVolume;


Sample code

[[[ITMGContext GetInstance] GetAudioCtrl] GetSpeakerVolume];


Advanced APIs

Enabling in-ear monitoring

This API is used to enable in-ear monitoring. You need to call EnableLoopBack+EnableSpeaker before you can hear your own voice.

Function prototype

-(QAVResult)EnableLoopBack:(BOOL)enable;

Parameter
Type
Description
enable
boolean
Specifies whether to enable in-ear monitoring.

Sample code

[[[ITMGContext GetInstance] GetAudioCtrl] EnableLoopBack:YES];


Modifying user's room audio type

This API is used to modify a user's room audio type. For the result, please see the callback event. The event type is ITMG_MAIN_EVENT_TYPE_CHANGE_ROOM_TYPE. The audio type of the room is determined by the first user to enter the room. After that, if a member in the room changes the room type, it will take effect for all members there.

Function prototype

-(int)ChangeRoomType:(int)nRoomType;

Parameter
Type
Description
nRoomType
int
Target room type to be switched to. For room audio types, please see the EnterRoom API.

Sample code

[[[ITMGContext GetInstance]GetRoom ]ChangeRoomType:_roomType];


Getting user's room audio type

This API is used to get a user's room audio type. The returned value is the room audio type. Value 0 indicates that an error occurred while getting the user's room audio type. For room audio types, please see the EnterRoom API.

Function prototype

-(int)GetRoomType;


Sample code

[[[ITMGContext GetInstance]GetRoom ]GetRoomType];



Callback for modifying the room type

After the room type is set, the event message ITMG_MAIN_EVENT_TYPE_CHANGE_ROOM_TYPE will be returned in the callback. The returned parameters include result, error_info, and new_room_type. The new_room_type represents the following information. The event message will be identified in the OnEvent function.
Event Subtype
Parameter
Description
ITMG_ROOM_CHANGE_EVENT_ENTERROOM
1
Indicates that the existing audio type is inconsistent with and changed to that of the entered room.
ITMG_ROOM_CHANGE_EVENT_START
2
Indicates that a user is already in the room and the audio type starts changing (e.g., calling the ChangeRoomType API to change the audio type).
ITMG_ROOM_CHANGE_EVENT_COMPLETE
3
Indicates that a user is already in the room and the audio type has been changed.
ITMG_ROOM_CHANGE_EVENT_REQUEST
4
Indicates that a room member calls the ChangeRoomType API to request a change of room audio type.

Sample code

-(void)OnEvent:(ITMG_MAIN_EVENT_TYPE)eventType data:(NSDictionary *)data{
NSLog(@"OnEvent:%lu,data:%@",(unsigned long)eventType,data);
switch (eventType) {
case ITMG_MAIN_EVENT_TYPE_CHANGE_ROOM_TYPE:
NSLog(@"ITMG_MAIN_EVENT_TYPE_CHANGE_ROOM_TYPE:%@ ",data);
int result = ((NSNumber*)[data objectForKey:@"result"]).intValue;
int newRoomType = ((NSNumber*) [data objectForKey:@"new_room_type"]).intValue;
int subEventType = ((NSNumber*) [data objectForKey:@"sub_event_type"]).intValue;
}
}


Data details

Message
Data
Sample
ITMG_MAIN_EVENT_TYPE_CHANGE_ROOM_TYPE
result;error_info;new_room_type;subEventType
{"error_info":"","new_room_type":0,"subEventType":0,"result":0}

The monitoring event of room call quality

The message for quality monitoring event triggered once every two seconds after room entry is ITMG_MAIN_EVENT_TYPE_CHANGE_ROOM_QUALITY. The returned parameters include weight, loss, and delay, which represent the following information.
This API is used to monitor the network quality. If the user's network is poor, the business layer will remind the user to switch to a better network through the UI.
Parameter
Type
Description
weight
int
Value range: 1-50. 50 indicates excellent sound quality, 1 indicates very poor (barely usable) sound quality, and 0 represents an initial meaningless value. Generally, if the value is below 30, you can remind users that the network is poor and recommend them to switch the network.
loss
double
Upstream packet loss rate
delay
int
Voice chat delay in ms

Getting version number

This API is used to get the SDK version number for analysis.

Function prototype

-(NSString*)GetSDKVersion;


Sample code

[[ITMGContext GetInstance] GetSDKVersion];


Checking mic permission

This API is used to return the mic permission status.

Function prototype

-(ITMG_RECORD_PERMISSION)CheckMicPermission;


Parameter description

Parameter
Value
Description
ITMG_PERMISSION_GRANTED
0
Mic permission is granted.
ITMG_PERMISSION_Denied
1
Mic is disabled.
ITMG_PERMISSION_NotDetermined
2
No authorization box has been popped up to request the permission.
ITMG_PERMISSION_ERROR
3
An error occurred while calling the API.

Sample code

[[ITMGContext GetInstance] CheckMicPermission];


Setting log printing level

This API is used to set the level of logs to be printed, and needs to be called before the initialization. It is recommended to keep the default level.

Function prototype

-(void)SetLogLevel:(ITMG_LOG_LEVEL)levelWrite (ITMG_LOG_LEVEL)levelPrint;


Parameter description

Parameter
Type
Description
levelWrite
ITMG_LOG_LEVEL
Sets the level of logs to be written. TMG_LOG_LEVEL_NONE indicates not to write. Default value: TMG_LOG_LEVEL_INFO
levelPrint
ITMG_LOG_LEVEL
Sets the level of logs to be printed. TMG_LOG_LEVEL_NONE indicates not to print. Default value: TMG_LOG_LEVEL_ERROR
ITMG_LOG_LEVEL
Description
TMG_LOG_LEVEL_NONE
Does not print logs
TMG_LOG_LEVEL_ERROR
Prints error logs (default)
TMG_LOG_LEVEL_INFO
Prints info logs
TMG_LOG_LEVEL_DEBUG
Prints debug logs
TMG_LOG_LEVEL_VERBOSE
Prints verbose logs

Sample code

[[ITMGContext GetInstance] SetLogLevel:TMG_LOG_LEVEL_INFO TMG_LOG_LEVEL_INFO];

Setting the log printing path

This API is used to set the log printing path, which is /Users/username/Library/Containers/xxx.xxx.xxx/Data/Documents by default.

Function prototype

-(void)SetLogPath:(NSString*)logDir;

Parameter
Type
Description
logDir
NSString
Path

Sample code

[[ITMGContext GetInstance] SetLogPath:Path];


Getting the diagnostic messages

This API is used to get information on the quality of real-time audio/video calls, which is mainly used to view real-time call quality and troubleshoot and can be ignored on the business side.

Function prototype

-(NSString*)GetQualityTips;


Sample code

[[[ITMGContext GetInstance]GetRoom ] GetQualityTips];


Callback Messages

Message list

Message
Description
ITMG_MAIN_EVENT_TYPE_ENTER_ROOM
Indicates that a member enters an audio room.
ITMG_MAIN_EVENT_TYPE_EXIT_ROOM
Indicates that a member exits an audio room.
ITMG_MAIN_EVENT_TYPE_ROOM_DISCONNECT
Indicates that a room is disconnected for network or other reasons.
ITMG_MAIN_EVENT_TYPE_CHANGE_ROOM_TYPE
Indicates a room type change event.
ITMG_MAIN_EVNET_TYPE_USER_UPDATE
Indicates that the room members are updated.
ITMG_MAIN_EVENT_TYPE_CHANGE_ROOM_QUALITY
Indicates the room quality information.

Data list

Message
Data
Sample
ITMG_MAIN_EVENT_TYPE_ENTER_ROOM
result; error_info
{"error_info":"","result":0}
ITMG_MAIN_EVENT_TYPE_EXIT_ROOM
result; error_info
{"error_info":"","result":0}
ITMG_MAIN_EVENT_TYPE_ROOM_DISCONNECT
result; error_info
{"error_info":"waiting timeout, please check your network","result":0}
ITMG_MAIN_EVENT_TYPE_CHANGE_ROOM_TYPE
result; error_info; sub_event_type; new_room_type
{"error_info":"","new_room_type":0,"result":0}
ITMG_MAIN_EVENT_TYPE_SPEAKER_NEW_DEVICE
result; error_info
{"deviceID":"{0.0.0.00000000}.{a4f1e8be-49fa-43e2-b8cf-dd00542b47ae}","deviceName":"Speaker (Realtek High Definition Audio)","error_info":"","isNewDevice":true,"isUsedDevice":false,"result":0}
ITMG_MAIN_EVENT_TYPE_SPEAKER_LOST_DEVICE
result; error_info
{"deviceID":"{0.0.0.00000000}.{a4f1e8be-49fa-43e2-b8cf-dd00542b47ae}","deviceName":"Speaker (Realtek High Definition Audio)","error_info":"","isNewDevice":false,"isUsedDevice":false,"result":0}
ITMG_MAIN_EVENT_TYPE_MIC_NEW_DEVICE
result; error_info
{"deviceID":"{0.0.1.00000000}.{5fdf1a5b-f42d-4ab2-890a-7e454093f229}","deviceName":"Mic (Realtek High Definition Audio)","error_info":"","isNewDevice":true,"isUsedDevice":true,"result":0}
ITMG_MAIN_EVENT_TYPE_MIC_LOST_DEVICE
result; error_info
{"deviceID":"{0.0.1.00000000}.{5fdf1a5b-f42d-4ab2-890a-7e454093f229}","deviceName":"Mic (Realtek High Definition Audio)","error_info":"","isNewDevice":false,"isUsedDevice":true,"result":0}
ITMG_MAIN_EVNET_TYPE_USER_UPDATE
user_list; event_id
{"event_id":1,"user_list":["0"]}
ITMG_MAIN_EVENT_TYPE_NUMBER_OF_USERS_UPDATE
AllUser; AccUser; ProxyUser
{"AllUser":3,"AccUser":2,"ProxyUser":1}
ITMG_MAIN_EVENT_TYPE_NUMBER_OF_AUDIOSTREAMS_UPDATE
AudioStreams
{"AudioStreams":3}
ITMG_MAIN_EVENT_TYPE_CHANGE_ROOM_QUALITY
weight; loss; delay
{"weight":5,"loss":0.1,"delay":1}

","recentReleaseTime":"2024-01-18 15:13:51","slate":"[{\"id\":\"l48slqSXMX9TT5a2BMjB6\",\"children\":[{\"text\":\"This document describes how to integrate with Game Multimedia Engine (GME) on macOS.\"}],\"type\":\"p\"},{\"id\":\"kdZuKDf2i47eHxzs_cA79\",\"children\":[{\"id\":\"ptgIsZ-LwXsTIHk7zCKt8\",\"children\":[{\"b\":1,\"color\":\"inherit\",\"text\":\"Note: \"}],\"type\":\"p\"},{\"id\":\"HEdQQUI2EHu0ZfpdgSHdx\",\"children\":[{\"text\":\"This document applies to GME SDK version 2.9.\"}],\"type\":\"p\"}],\"hintType\":\"info\",\"type\":\"hint\"},{\"id\":\"sy5hJDBVMEjxk7PX1Sk-E\",\"children\":[{\"text\":\"Considerations\"}],\"nodeId\":\"considerations\",\"type\":\"h2\"},{\"id\":\"hao0HMXGJqDHHNxSY5AMl\",\"children\":[{\"text\":\"GME provides two services: voice chat service and voice message and speech-to-text service, both of which rely on key APIs such as Init and Poll.\"}],\"type\":\"p\"},{\"id\":\"IqHxVggv-DhkCqvbh2Hqe\",\"children\":[{\"id\":\"7N2PkW0ZYCoL3dseEpKZf\",\"children\":[{\"b\":1,\"color\":\"#04C8DC\",\"text\":\"Note on Init API\"}],\"type\":\"p\"},{\"id\":\"rIm4YwTfW9oYvOc4o32x6\",\"children\":[{\"text\":\"If you need to use voice chat and voice message services at the same time, \"},{\"b\":1,\"text\":\"you only need to call \"},{\"b\":1,\"code\":1,\"text\":\"Init\"},{\"b\":1,\"text\":\" API once\"},{\"text\":\".\\nBilling will not start after initialization. After you call \"},{\"type\":\"ref\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/46715?!editLang=en&!preview#EnterRoom\"},\"children\":[{\"text\":\"Entering a voice chat room\"}],\"id\":\"bSTDI_VGEe7kVqMYJ5F_P\"},{\"text\":\" to enter the room successfully, the billing will start.\"}],\"type\":\"p\"}],\"hintType\":\"alert\",\"type\":\"hint\"},{\"type\":\"p\",\"children\":[{\"text\":\"\"},{\"id\":\"xUeNrJwRQAFxnFsTE1PqL\",\"alt\":\"image\",\"children\":[{\"text\":\"\"}],\"inline\":true,\"type\":\"image\",\"url\":\"https://cloudcache.intl.tencent-cloud.com/cms/backend-cms/26ebd42cb34811ee9939525400461a83.png\",\"naturalSize\":[674,427],\"size\":[674,427]},{\"text\":\"\"}],\"id\":\"0MG9jOk9SGl2KweJQNQab\"},{\"id\":\"0dvpyGZzRpLtHs7jGDpJV\",\"children\":[{\"text\":\"Directions\"}],\"nodeId\":\"directions\",\"type\":\"h3\"},{\"type\":\"oli\",\"children\":[{\"text\":\"\"},{\"type\":\"ref\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/46715?!editLang=en&!preview#Init\"},\"children\":[{\"text\":\"Initializing GME, API: Init\"}],\"id\":\"03up33MmAuTv362txDcJk\"},{\"text\":\"\"}],\"id\":\"s0ijNmFX0RJR1s6t_vY0S\"},{\"type\":\"oli\",\"children\":[{\"text\":\"\"},{\"type\":\"ref\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/46715?!editLang=en&!preview#Poll\"},\"children\":[{\"text\":\"Calling Poll periodically to trigger event callbacks, API: Poll\"}],\"id\":\"4Uy43X-ikSCmOq31r_F_0\"},{\"text\":\"\"}],\"id\":\"zBS3_wvEtBZ9DkrTntJ1d\"},{\"type\":\"oli\",\"children\":[{\"text\":\"\"},{\"type\":\"ref\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/46715?!editLang=en&!preview#EnterRoom\"},\"children\":[{\"text\":\"Entering a voice chat room, API: EnterRoom\"}],\"id\":\"GaBE7dXNOrRJttoRQKB97\"},{\"text\":\"\"}],\"id\":\"CsAmun9w2YsqHk7ImDOOk\"},{\"type\":\"oli\",\"children\":[{\"text\":\"\"},{\"type\":\"ref\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/46715?!editLang=en&!preview#EnableMic\"},\"children\":[{\"text\":\"Enabling the microphone, API: EnableMic\"}],\"id\":\"lYoSUsEa-8uHshdeKsv3G\"},{\"text\":\"\"}],\"id\":\"o22YVbhActZWf_T5UqKpW\"},{\"type\":\"oli\",\"children\":[{\"text\":\"\"},{\"type\":\"ref\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/46715?!editLang=en&!preview#EnableSpeaker\"},\"children\":[{\"text\":\"Enabling the speaker, API: EnableSpeaker\"}],\"id\":\"V3JRNm0tLhfX8KmIFLZG8\"},{\"text\":\"\"}],\"id\":\"hn8mAjGRqo1oiobilwEmw\"},{\"type\":\"oli\",\"children\":[{\"text\":\"\"},{\"type\":\"ref\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/46715?!editLang=en&!preview#ExitRoom\"},\"children\":[{\"text\":\"Exiting a voice room, API: ExitRoom\"}],\"id\":\"RBPSLZj1Dqst6ZcOnc5rI\"},{\"text\":\"\"}],\"id\":\"O_O2_hqlp4eCmcU00Lwsr\"},{\"type\":\"oli\",\"children\":[{\"text\":\"\"},{\"type\":\"ref\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/46715?!editLang=en&!preview#UnInit\"},\"children\":[{\"text\":\"Uninitializing GME, API: UnInit\"}],\"id\":\"6W_O8lb4T9oTL4vGzfi3T\"},{\"text\":\"\"}],\"id\":\"C4FnhIFc-pisquvZ2IbFJ\"},{\"id\":\"FWFAnFO2IKqq8Sljs07_S\",\"children\":[{\"text\":\"Important notes\"}],\"nodeId\":\"important-notes\",\"type\":\"h3\"},{\"id\":\"op7RlX6bdQulb17TkU6B7\",\"children\":[{\"text\":\"Configure your project before using GME; otherwise, the SDK will not take effect.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"WvDkbYBbBXslUXbqgiuz2\",\"children\":[{\"text\":\"After a GME API is called successfully, \"},{\"code\":1,\"text\":\"QAVError.OK\"},{\"text\":\" will be returned with the value being 0.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"K9fpUdF_9ZaQCY0G2TpSF\",\"children\":[{\"text\":\"GME APIs should be called in the same thread.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"GzFChFndnjciQhePbEqkA\",\"children\":[{\"text\":\"The \"},{\"code\":1,\"text\":\"Poll\"},{\"text\":\" API should be called periodically for GME to trigger event callbacks.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"EYCObKVZ2fd4fHcwaO9QX\",\"children\":[{\"text\":\"For detailed error code, please see \"},{\"type\":\"ref\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/33223\"},\"children\":[{\"text\":\"Error Codes\"}],\"id\":\"JcORGfod0IXF3VhTAB5lx\"},{\"text\":\".\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"600LgGThIU9kci8Tu0d_b\",\"children\":[{\"text\":\"APIs\"}],\"nodeId\":\"apis\",\"type\":\"h3\"},{\"id\":\"RoOLIIGJAPb0F12C1t2Bb\",\"children\":[{\"id\":\"T4JefM_ZRd2m8pATBGeDt\",\"children\":[{\"text\":\"@class ITMGRoom;//Room APIs\"}],\"type\":\"code-line\"},{\"id\":\"rfSm7zNBSrobIdpyHWKQ6\",\"children\":[{\"text\":\"@class ITMGAudioCtrl;//Audio APIs\"}],\"type\":\"code-line\"},{\"id\":\"jgTvCBqTc_nXIEps1AW45\",\"children\":[{\"text\":\"@class ITMGAudioEffectCtrl;//Sound effect, accompaniment APIs\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"pH0keH8ZHPrdbjUSOkhlu\",\"children\":[{\"text\":\"Key APIs\"}],\"nodeId\":\"key-apis\",\"type\":\"h2\"},{\"id\":\"3C5Pui6C_yDlsdpiYMgNx\",\"children\":[{\"text\":\"Before the initialization, the SDK is in the uninitialized status, and \"},{\"b\":1,\"text\":\"you need to initialize it through the \"},{\"b\":1,\"code\":1,\"text\":\"Init\"},{\"b\":1,\"text\":\" API\"},{\"text\":\" before you can use the voice chat and speech-to-text services.\"}],\"type\":\"p\"},{\"id\":\"YOCkzPbvq6PQr3jV9vEoE\",\"children\":[{\"b\":1,\"text\":\"You need to call the \"},{\"b\":1,\"code\":1,\"text\":\"Init\"},{\"b\":1,\"text\":\" API before calling any APIs of GME.\"}],\"type\":\"p\"},{\"id\":\"Th1oY4To70BqP9Q3Zikwp\",\"children\":[{\"text\":\"If you have any questions when using the service, please see \"},{\"id\":\"M4I0d8GU9y6hgA2s2p8BQ\",\"children\":[{\"text\":\"General FAQs\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://intl.cloud.tencent.com/document/product/607/30254\",\"props\":{\"type\":\"link\",\"url\":\"https://intl.cloud.tencent.com/document/product/607/30254\"},\"type\":\"ref\"},{\"text\":\".\"}],\"type\":\"p\"},{\"id\":\"KV4PhsEPavUL5Tr0M3boB\",\"children\":[{\"id\":\"ocjkrybmJmMSbDDyJ26J0\",\"children\":[{\"id\":\"GcuQP0tjUCHXBz9onDPTJ\",\"children\":[{\"id\":\"nPnEU7_UCwD-MKMqEn2XY\",\"children\":[{\"text\":\"API\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Oi64c6eHQW6WERjxVNty_\",\"children\":[{\"id\":\"lwijTWFwZxyUHwr191j2B\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"38B-mAgFxdOC5dxDMjCh0\",\"children\":[{\"id\":\"MxzfU3XJMzSqHICxeCI95\",\"children\":[{\"id\":\"ECXgeFaSL9ixfgBMDo6D6\",\"children\":[{\"id\":\"eZttbeXmxeSG5k650HVlB\",\"children\":[{\"text\":\"InitEngine\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"24L2OVKS2IEvB0V8da3OX\",\"children\":[{\"id\":\"jnmfoZIK3izxqkdgufyOY\",\"children\":[{\"id\":\"SvWGhjIQVf-gGRAvvnVIf\",\"children\":[{\"text\":\"Initializes GME\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"z1orKzItDApW1K8-ZTyM6\",\"children\":[{\"id\":\"2Z_-VPCpGAHU_Oyzzyyxi\",\"children\":[{\"id\":\"ZTN5pPEm7e-1oY9Gq1mzZ\",\"children\":[{\"id\":\"Da62J2lQA2PsEj5pMB3xF\",\"children\":[{\"text\":\"Poll\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"rejJ6hsqBIa_xY1iMNjbD\",\"children\":[{\"id\":\"04qoe6lI0fuss5HtJmas1\",\"children\":[{\"id\":\"jrS9HHD1d4WUxqaADHq4k\",\"children\":[{\"text\":\"Triggers event callback\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"9YdtbCgI84GARGXAxCneY\",\"children\":[{\"id\":\"q7-iJch2kCY00ZJgVzKUe\",\"children\":[{\"id\":\"d3rUOzeITIRIK2fYDQ6o7\",\"children\":[{\"id\":\"0u6yyjEG-ZjvM-IN15KXa\",\"children\":[{\"text\":\"Pause\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"nx7-6mrJfJnqzkCkNBqm0\",\"children\":[{\"id\":\"V5lhjxV8z2gt4LW_MpM0k\",\"children\":[{\"id\":\"V6zxXEuCoq21e90cBrLV1\",\"children\":[{\"text\":\"Pauses the system\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"rh9gXNLb7Lv_Bj-savPXA\",\"children\":[{\"id\":\"7hVIXCxnN-Ghsq_cAZ84W\",\"children\":[{\"id\":\"KgpDjbnfih1Xdo-bIdHcB\",\"children\":[{\"id\":\"uwn5sXdJ3yTmp9xiOwBZu\",\"children\":[{\"text\":\"Resume\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"_rRhK_MVW5_bIKHaqeObw\",\"children\":[{\"id\":\"tpRbwVUIF9OepcI_7e4U7\",\"children\":[{\"id\":\"zoHQKnZSabUBvYQUCalI2\",\"children\":[{\"text\":\"Resumes the system\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"najkp14XpLPi7DIMcOSqY\",\"children\":[{\"id\":\"wUQ7omeeTOlC9vO0qaw4d\",\"children\":[{\"id\":\"v8Yk0NB1S3RYqfkF3g1BT\",\"children\":[{\"id\":\"D6sT579QUI9rXiYxf1RvO\",\"children\":[{\"text\":\"Uninit\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"bgGC4BlfFxQF9uq0Mm-zr\",\"children\":[{\"id\":\"_WESHEQEUVXPlo5kVGoQY\",\"children\":[{\"id\":\"A1XLMH8qrzcHbK7HT-5Th\",\"children\":[{\"text\":\"Uninitializes GME\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[35,65],\"widthMode\":\"percentage\"},{\"id\":\"4xigJrS-uRVOKbk2G_LT9\",\"children\":[{\"text\":\"Getting singleton\"}],\"nodeId\":\"getting-singleton\",\"type\":\"h3\"},{\"id\":\"Fnp8FPvGpVhrRprgI616s\",\"children\":[{\"text\":\"To use the voice feature, get the \"},{\"code\":1,\"text\":\"ITMGContext\"},{\"text\":\" object first.\"}],\"type\":\"p\"},{\"id\":\"I8wmC2J5eAP0Oj1k7VznT\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\"function-prototype\",\"type\":\"h4\"},{\"id\":\"z3Io85js2jaL63dFp1jSw\",\"children\":[{\"id\":\"8ErfJ5-Qd5Kkj9d8hCiQ9\",\"children\":[{\"text\":\"ITMGContext ITMGDelegate \"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"yIR_WNArFbQ92_z9hOpFT\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code\",\"type\":\"h4\"},{\"id\":\"O1c4kP5y0XoW76mWfdi6T\",\"children\":[{\"id\":\"2Q05hTxMyvHUYjzrjzOb8\",\"children\":[{\"text\":\"ITMGContext* _context = [ITMGContext GetInstance];\"}],\"type\":\"code-line\"},{\"id\":\"5oGobBWMMcAA_Mlrmufw7\",\"children\":[{\"text\":\"_context.TMGDelegate =self;\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"qN5KEdIosHnkcttGeFjgT\",\"children\":[{\"text\":\"Message delivery\"}],\"nodeId\":\"message-delivery\",\"type\":\"h3\"},{\"id\":\"18fbweUprHEeY6UQEmBHQ\",\"children\":[{\"text\":\"The API callback messages is processed in \"},{\"code\":1,\"text\":\"OnEvent\"},{\"text\":\". For the message type, please see \"},{\"code\":1,\"text\":\"ITMG_MAIN_EVENT_TYPE\"},{\"text\":\". The message content is a dictionary for parsing the API callback contents.\"}],\"type\":\"p\"},{\"id\":\"L5cE-vJELngkTO5CSu8hd\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\"function-prototype2\",\"type\":\"h4\"},{\"id\":\"t07t2ga9z5L2IXhOO3a-X\",\"children\":[{\"id\":\"fHoo-gl5n4mnwWuGFfqVH\",\"children\":[{\"text\":\"- (void)OnEvent:(ITMG_MAIN_EVENT_TYPE)eventType data:(NSDictionary*)data;\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"NNXb_IisDxG-qxKSYyGQe\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code2\",\"type\":\"h4\"},{\"id\":\"4kprs0zkGwmVWXxyYd8yX\",\"children\":[{\"id\":\"q7jTY08hsaqzXMq9lxbxw\",\"children\":[{\"text\":\"-(void)OnEvent:(ITMG_MAIN_EVENT_TYPE)eventType data:(NSDictionary *)data{\"}],\"type\":\"code-line\"},{\"id\":\"sep4p0DZUzsiRzDOtM9Vc\",\"children\":[{\"text\":\" NSLog(@\\\"OnEvent:%lu,data:%@\\\",(unsigned long)eventType,data);\"}],\"type\":\"code-line\"},{\"id\":\"CPjEDgKDWMHdrnAGwTI-F\",\"children\":[{\"text\":\" switch (eventType) {\"}],\"type\":\"code-line\"},{\"id\":\"lfjcyWBevJ5THJ_FO7iFf\",\"children\":[{\"text\":\" //Identify `eventType`\"}],\"type\":\"code-line\"},{\"id\":\"PtNpuUqDj2jl31jSCPu30\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"aAXqCkBAAHn-SbxVjuoLz\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"zMFZMYCPBmAGp7Zfxqn5I\",\"children\":[{\"id\":\"sjKjt8gJD7ZKbbu3zRqBz\",\"children\":[{\"text\":\"Initializing SDK\"}],\"nodeId\":\"Init\",\"type\":\"p\"}],\"nodeId\":\".3Ca-id.3D.22init.22.3Einitializing-sdk.3C.2Fa.3E\",\"type\":\"h3\"},{\"id\":\"TW8jDg-CtuzIX2njyvfMk\",\"children\":[{\"text\":\"This API is used to initialize the GME service. It is recommended to call it when initializing the application. No fee is incurred for calling this API.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"QepOFLQkgRHnwKexMASzr\",\"children\":[{\"text\":\"For more information on how to get the \"},{\"code\":1,\"text\":\"sdkAppID\"},{\"text\":\" parameter, see \"},{\"id\":\"4tn5Mk55xoRlcZOOlTv0f\",\"children\":[{\"text\":\"Voice Service Activation Guide\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://intl.cloud.tencent.com/document/product/607/10782#.E9.87.8D.E7.82.B9.E5.8F.82.E6.95.B0\",\"props\":{\"type\":\"link\",\"url\":\"https://intl.cloud.tencent.com/document/product/607/10782#.E9.87.8D.E7.82.B9.E5.8F.82.E6.95.B0\"},\"type\":\"ref\"},{\"text\":\".\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"Sepxi3ITPRERTYahTCJ7z\",\"children\":[{\"text\":\"The openID uniquely identifies a user with the rules stipulated by the application developer and unique in the application (currently, only INT64 is supported).\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"1TNlCC6F3r-tCi1TDTAXU\",\"children\":[{\"id\":\"Np_HVxWego1tjqIsmMvyc\",\"children\":[{\"b\":1,\"color\":\"#04C8DC\",\"text\":\"Note: \"}],\"type\":\"p\"},{\"id\":\"tM6vCeQ7-GzL89RRYIAWL\",\"children\":[{\"text\":\"The SDK must be initialized before a user can enter a voice chat room.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"OIUvZb9Fxe4QbKuOcRQWW\",\"children\":[{\"text\":\"The Init API must be called in the same thread with other APIs. It is recommended to call all APIs in the main thread.\"}],\"start\":false,\"type\":\"uli\"}],\"hintType\":\"alert\",\"type\":\"hint\"},{\"id\":\"2C7Aa9hL3tlI5iNBlaRcw\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\"function-prototype3\",\"type\":\"h4\"},{\"id\":\"pZyJ3AeZvJHtYW67AXTrP\",\"children\":[{\"id\":\"HWPMPGe5m9mdjseq2S_nn\",\"children\":[{\"text\":\"-(int)InitEngine:(NSString*)sdkAppID openID:(NSString*)openID;\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"5SLMqQPbBHfieYZWdbB9i\",\"children\":[{\"id\":\"SS5eKA6tWkPFsUUB2ObvX\",\"children\":[{\"id\":\"cafJtwQlXxiQiS1nnkrQm\",\"children\":[{\"id\":\"kn7AUz7Q_qYoS4LJ3OlEB\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"NijZ84JgSLD2QdI45IjAz\",\"children\":[{\"id\":\"0NoP8Vi_rj82uG_PE4aOH\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"denyc8bs_d-ZOtwdLN24q\",\"children\":[{\"id\":\"Nyn2bhft_Sbh_DorBldoe\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"LqCA-n_-pi4ha1nSx7-qm\",\"children\":[{\"id\":\"QMI7Rff1HRZmaAoalFUtA\",\"children\":[{\"id\":\"2iNhxD1sGDa6fpmXxLGes\",\"children\":[{\"id\":\"h2zuA_zwZtLYi0QmSz0ss\",\"children\":[{\"text\":\"sdkAppId\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"LHn5jwcVqiLiR5TMA48gb\",\"children\":[{\"id\":\"YUVbA3lKNORkPdrm6-biq\",\"children\":[{\"id\":\"cxYMARAnGNvog7Cr5rgP4\",\"children\":[{\"text\":\"String\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"38Qs3zbAZxd0jzj9VyxSc\",\"children\":[{\"id\":\"TjxEjZI6_FlLSLEJpET1k\",\"children\":[{\"id\":\"FclyFt5JJCju0YKxnyb-k\",\"children\":[{\"code\":1,\"text\":\"AppId\"},{\"text\":\" provided by the GME service from the \"},{\"id\":\"81XQyX1dAdbCL4WodoDEE\",\"children\":[{\"text\":\"Tencent Cloud console\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://console.tencentcloud.com/gamegme\",\"props\":{\"type\":\"link\",\"url\":\"https://console.tencentcloud.com/gamegme\"},\"type\":\"ref\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"6uXH8RmGZlxjZtYxzc1p_\",\"children\":[{\"id\":\"hhzlDDuxB823DxwaW6ei9\",\"children\":[{\"id\":\"8pWFcu0u6CwE--ckHHOXH\",\"children\":[{\"id\":\"tgkjLezlWNkdrFf-cmJsj\",\"children\":[{\"text\":\"OpenId\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"jseUAJ8OHObPYfDy6zmr5\",\"children\":[{\"id\":\"U1j9BjG8O7BfbDk_vfEDT\",\"children\":[{\"id\":\"UXRMHTbbQZOg3cJ7znD1Z\",\"children\":[{\"text\":\"String\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"y2i19SFbi_M3ISL44-Ju9\",\"children\":[{\"id\":\"X4NA8XA4oyvjI1wXLwKhB\",\"children\":[{\"id\":\"jXhkIg2cTs3_LuOp543yh\",\"children\":[{\"code\":1,\"text\":\"OpenId\"},{\"text\":\" can only be in Int64 type, which is passed after being converted to a string.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[13,9,78],\"widthMode\":\"percentage\"},{\"id\":\"Yn6L2lHfhIlgvDZoWe3xa\",\"children\":[{\"text\":\"Returned values\"}],\"nodeId\":\"returned-values\",\"type\":\"h4\"},{\"id\":\"4tHb_Qe7ogB_Um1f-kcV5\",\"children\":[{\"id\":\"Mlk1hvJBpTL964Qa9THtS\",\"children\":[{\"id\":\"-hvlAGBFAGQpmHiRhU6ul\",\"children\":[{\"id\":\"emElRE5LHzJ0o-GJghTZ3\",\"children\":[{\"text\":\"Returned Value\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"N9vQ5Urfj3FRxQtSS4zW4\",\"children\":[{\"id\":\"E-913p10DQ9nf6wdI9tGx\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"htjGyyldSAbSzihYbpD10\",\"children\":[{\"id\":\"kqFWF9cX9zoJnYkBrOD8K\",\"children\":[{\"id\":\"RSLJ_mlg5bQGP6BgLF6NX\",\"children\":[{\"id\":\"u5VB2DK-WA51E8E9FrSty\",\"children\":[{\"text\":\"QAV_OK= 0\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"HkU9gWzfcX4NwdCRaEpzi\",\"children\":[{\"id\":\"R7HDutrS1e7zE1totO30h\",\"children\":[{\"id\":\"prIkog-qO7eLP9zLsh_dt\",\"children\":[{\"text\":\"Initialized SDK successfully.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"RMR0Fhhl56xTVmlztCCpL\",\"children\":[{\"id\":\"Cq1N7ZVYVD4x6H0uscJmO\",\"children\":[{\"id\":\"oq3bgWChCTyblBXuZDnw3\",\"children\":[{\"id\":\"OidhBdwfgNei1ZC7Gvjda\",\"children\":[{\"text\":\"QAV_ERR_SDK_NOT_FULL_UPDATE= 7015\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"oNfqOIzCWsfDwfaqWpUNS\",\"children\":[{\"id\":\"ytEneIM7m6n_6aIiu9IqT\",\"children\":[{\"id\":\"8Y1zXl2O43ZrdBPNJVAT8\",\"children\":[{\"text\":\"Checks whether the SDK file is complete. It is recommended to delete it and then import the SDK again.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[36,64],\"widthMode\":\"percentage\"},{\"id\":\"-wWYt6706-bKVgC_fSPKa\",\"children\":[{\"text\":\"The returned value \"},{\"code\":1,\"text\":\"AV_ERR_SDK_NOT_FULL_UPDATE\"},{\"text\":\" is \"},{\"b\":1,\"text\":\"only a reminder\"},{\"text\":\" but will not cause an initialization failure.\"}],\"type\":\"p\"},{\"id\":\"9C5kxCra9sRIP0RW5E-ah\",\"children\":[{\"text\":\"If this error is reported during integration, please check the integrity and version of the SDK file as prompted.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"266uoqCaQU7MNVFN-MShR\",\"children\":[{\"text\":\"If this error is returned after executable file export, please ignore it and try to avoid displaying it in the UI.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"3aQlgj9vTT5fTsuRxJAih\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code3\",\"type\":\"h4\"},{\"id\":\"tpr5EJHVjeyUpn2OSX7d2\",\"children\":[{\"id\":\"-9Icqoodv_ig6Tf-mOhFk\",\"children\":[{\"text\":\"_openId = _userIdText.text;\"}],\"type\":\"code-line\"},{\"id\":\"wFQs8mr6Xnnf0c-isA-hB\",\"children\":[{\"text\":\"_appId = _appIdText.text;\"}],\"type\":\"code-line\"},{\"id\":\"AIT-EMiZHm-ALIu07XcPg\",\"children\":[{\"text\":\"[[ITMGContext GetInstance] InitEngine:SDKAPPID openID:_openId];\"}],\"type\":\"code-line\"},{\"id\":\"0Nq7ty-0TWsTX3BRD_Bd4\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"y8askH_oR2wsiMSBLglOy\",\"children\":[{\"id\":\"2sc3GmgrUnxVFCzEMtuu-\",\"children\":[{\"text\":\"Triggering event callback\"}],\"nodeId\":\"Poll\",\"type\":\"p\"}],\"nodeId\":\".3Ca-id.3D.22poll.22.3Etriggering-event-callback.3C.2Fa.3E\",\"type\":\"h3\"},{\"id\":\"kKvVi3q6m7mk8gmukfRBa\",\"children\":[{\"text\":\"Event callbacks can be triggered by periodically calling the \"},{\"code\":1,\"text\":\"Poll\"},{\"text\":\" API in \"},{\"code\":1,\"text\":\"update\"},{\"text\":\". The \"},{\"code\":1,\"text\":\"Poll\"},{\"text\":\" API should be called periodically for GME to trigger event callbacks; otherwise, the entire SDK service will run exceptionally.\\nRefer to the EnginePollHelper.m file in \"},{\"id\":\"ansAQmx__-Ja2iEW4mJ-W\",\"children\":[{\"text\":\"Demo\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://intl.cloud.tencent.com/document/product/607/18521\",\"props\":{\"type\":\"link\",\"url\":\"https://intl.cloud.tencent.com/document/product/607/18521\"},\"type\":\"ref\"},{\"text\":\".\"}],\"type\":\"p\"},{\"id\":\"xnu-IlOfWZDimFemvzVeh\",\"children\":[{\"id\":\"Vcvv37UQ8uDReOOXvGPU7\",\"children\":[{\"b\":1,\"color\":\"#FF7800\",\"text\":\"Calling the `Poll` API periodically\"}],\"type\":\"p\"},{\"id\":\"DeKoDwLiO2QT8S84mHsmJ\",\"children\":[{\"text\":\"The \"},{\"code\":1,\"text\":\"Poll\"},{\"text\":\" API must be called periodically and in the main thread to avoid abnormal API callbacks.\"}],\"type\":\"p\"}],\"hintType\":\"warn\",\"type\":\"hint\"},{\"id\":\"sAVq5JT3exte18U08j92A\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\"function-prototype4\",\"type\":\"h4\"},{\"id\":\"IFmbhcB80ihiS5je_12Ww\",\"children\":[{\"id\":\"dz6KTm3tqdCLgCNo56lGh\",\"children\":[{\"text\":\"-(void)Poll;\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"c4imyMmRvmECEm7kRpYjk\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code4\",\"type\":\"h4\"},{\"id\":\"wV7BOYyIMbjSXZ0Liyjzw\",\"children\":[{\"id\":\"B-tvfMyzn5Dbd3NjSY0wE\",\"children\":[{\"text\":\"[[ITMGContext GetInstance] Poll];\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"QQxW5XNqCSwPBJBbp99Ck\",\"children\":[{\"text\":\"Pausing the system\"}],\"nodeId\":\"pausing-the-system\",\"type\":\"h3\"},{\"id\":\"XzshkkD_-gunze-_W5ox_\",\"children\":[{\"text\":\"When a \"},{\"code\":1,\"text\":\"Pause\"},{\"text\":\" event occurs in the system, the engine should also be notified for pause.\\nIf you need to pause the audio when switching to the background, you can call the \"},{\"code\":1,\"text\":\"Pause\"},{\"text\":\" API in the listening code used to switch to the background, and call the \"},{\"code\":1,\"text\":\"Resume\"},{\"text\":\" API in the listening event used to resume the foreground.\"}],\"type\":\"p\"},{\"id\":\"eXoYAzCFdSIwSCPWtrMny\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\"function-prototype5\",\"type\":\"h4\"},{\"id\":\"03hdvkisIrHp8iUNUx6or\",\"children\":[{\"id\":\"qul-oqSZaOaOf_FCQprYX\",\"children\":[{\"text\":\"-(QAVResult)Pause;\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"_xJLDdhZt6EVCF6Nf39pv\",\"children\":[{\"text\":\"Resuming the system\"}],\"nodeId\":\"resuming-the-system\",\"type\":\"h3\"},{\"id\":\"n_bWONpnkqNeMD0Wai0Ju\",\"children\":[{\"text\":\"When a \"},{\"code\":1,\"text\":\"Resume\"},{\"text\":\" event occurs in the system, the engine should also be notified for resumption. The \"},{\"code\":1,\"text\":\"Resume\"},{\"text\":\" API only supports resuming voice chat.\"}],\"type\":\"p\"},{\"id\":\"bOPUHE5O0dEo1DOReH6k3\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\"function-prototype6\",\"type\":\"h4\"},{\"id\":\"0x6jeBn2ycF1-Hxu8sy-f\",\"children\":[{\"id\":\"So1Ap1jGvBQOFTDJy7lk_\",\"children\":[{\"text\":\"-(QAVResult)Resume;\"}],\"type\":\"code-line\"},{\"id\":\"Ir5Cq-9Hzo-JeHR4D3HjF\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"Dbfj6XX4M_USvwOma5NvY\",\"children\":[{\"id\":\"d00K0UOBx76uNoVSod0BZ\",\"children\":[{\"text\":\"Uninitializing SDK\"}],\"nodeId\":\"UnInit\",\"type\":\"p\"}],\"nodeId\":\".3Ca-id.3D.22uninit.22.3Euninitializing-sdk.3C.2Fa.3E\",\"type\":\"h3\"},{\"id\":\"4TPtIJOXhILXQYv1B46Rt\",\"children\":[{\"text\":\"This API is used to uninitialize the SDK to make it uninitialized. \"},{\"b\":1,\"text\":\"Switching accounts requires uninitialization\"},{\"text\":\".\"}],\"type\":\"p\"},{\"id\":\"zJov3QzVe6skg1xddV899\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\"function-prototype7\",\"type\":\"h4\"},{\"id\":\"xvnWtYokynVIfwqNli-SJ\",\"children\":[{\"id\":\"jy-HEWKfdI43Ubh3MPUKs\",\"children\":[{\"text\":\"-(int)Uninit;\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"hmP-kc5pv-4-X0P0hH1DQ\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code5\",\"type\":\"h4\"},{\"id\":\"evXktrHD5AhSLB4yL8TDf\",\"children\":[{\"id\":\"JDY5tTU5kg8_ovqhjVDY5\",\"children\":[{\"text\":\"[[ITMGContext GetInstance] Uninit];\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"7l0pSk6hXTSRSyZfb5yae\",\"children\":[{\"text\":\"Voice chat flowchart\"}],\"nodeId\":\"voice-chat-flowchart\",\"type\":\"h3\"},{\"type\":\"p\",\"children\":[{\"text\":\"\"},{\"id\":\"apbVRd9z_88D883wQrMdK\",\"alt\":\"\",\"children\":[{\"text\":\"\"}],\"inline\":true,\"type\":\"image\",\"url\":\"https://cloudcache.intl.tencent-cloud.com/cms/backend-cms/26eb8c1db34811eeae9a525400c26da5.png\",\"naturalSize\":[533,836],\"size\":[533,836]},{\"text\":\"\"}],\"id\":\"iBYStOWV5f-E58omAujAL\"},{\"id\":\"gE2rI09PSEHaUP9NM6F5u\",\"children\":[{\"text\":\"Voice Chat Room APIs\"}],\"nodeId\":\"voice-chat-room-apis\",\"type\":\"h2\"},{\"id\":\"prMbr6ujtO9WvRFVwQqAm\",\"children\":[{\"text\":\"You should initialize and call the SDK to enter a room before voice chat can start.\\nIf you have any questions when using the service, please see \"},{\"id\":\"hnbgOfa2joa_d_BryTpB7\",\"children\":[{\"text\":\"FAQs About Voice Chat\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://intl.cloud.tencent.com/document/product/607/39524\",\"props\":{\"type\":\"link\",\"url\":\"https://intl.cloud.tencent.com/document/product/607/39524\"},\"type\":\"ref\"},{\"text\":\".\"}],\"type\":\"p\"},{\"id\":\"iZFEErPJwLc9b1nKzR98Z\",\"children\":[{\"id\":\"5yMtly_KtME-Knd9RMTvl\",\"children\":[{\"id\":\"quDv5LydUJs_4HEYbu8j8\",\"children\":[{\"id\":\"BkdzrIiDCCB95GcxgbV1w\",\"children\":[{\"text\":\"API\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"vKzUz7g7qFWxH70l8e_lJ\",\"children\":[{\"id\":\"drF6p8eQ9E0Q68ouQVyNv\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"rBZzmiOUxhCgEn5208jKv\",\"children\":[{\"id\":\"SUbT_q1JyUaoZBZBnZYxA\",\"children\":[{\"id\":\"D1oJM6wFFAd82T82rQvaN\",\"children\":[{\"id\":\"ROOixrLOJgoDCZXP-Pl3p\",\"children\":[{\"text\":\"GenAuthBuffer\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"okpCmR0a3rofXLZPbQ3qi\",\"children\":[{\"id\":\"Ub9R-6BuzespgCl9OPp0w\",\"children\":[{\"id\":\"_EnAGCwCOYzLWBa5eslj6\",\"children\":[{\"text\":\"Initializes authentication\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"Ed7gBz2lBSWVvErcLWuxP\",\"children\":[{\"id\":\"owh1It1AOcuU8U-azQwre\",\"children\":[{\"id\":\"RruqKuXKN4COG0--DBrgp\",\"children\":[{\"id\":\"MPEhNQAc0yGIld_ai-m0K\",\"children\":[{\"text\":\"EnterRoom\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"S5wWIuLBmreUkozmf7gzD\",\"children\":[{\"id\":\"IMumpAbY_9uEu3VxU86zp\",\"children\":[{\"id\":\"zv50FUrUDb8zn1gZH9vV4\",\"children\":[{\"text\":\"Enters room\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"TCcV7x7cVdUHidpkl6VdE\",\"children\":[{\"id\":\"ZF1Fyo9Bf3kDPyVSJtB8C\",\"children\":[{\"id\":\"vKvEYH-Zo3e9YTbL8hPxE\",\"children\":[{\"id\":\"NayUYNDMtY5aqvjNu8_33\",\"children\":[{\"text\":\"IsRoomEntered\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"76QGE6MhCx_K0jVU5j3Bp\",\"children\":[{\"id\":\"yORFGE28qBR9T8aA68max\",\"children\":[{\"id\":\"_-Uamj7syNc-pQj-5_8Nm\",\"children\":[{\"text\":\"Indicates whether room entry is successful\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"k0_OmgEhz9VJXtiwnNyPo\",\"children\":[{\"id\":\"8bGR65zB4_mw53vfBOdZe\",\"children\":[{\"id\":\"iJf_AUrnf22X97gp_QgI9\",\"children\":[{\"id\":\"kL_BHie5VKOvhC6icAP3r\",\"children\":[{\"text\":\"ExitRoom\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"yqieaqEpWQGNU5T0ISVnM\",\"children\":[{\"id\":\"rADA5l7zFmrSm51Xscl-l\",\"children\":[{\"id\":\"GV2ixAx36_V3RYhWsinG7\",\"children\":[{\"text\":\"Exits room\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"ryzPLV3WZCO7ZEKtthPkE\",\"children\":[{\"id\":\"2GfYAxFVCoRRXVkN_rLpO\",\"children\":[{\"id\":\"3_JExQZ9l9n1NcWaKR8Bt\",\"children\":[{\"id\":\"-O5NmRWKULBSity74tHay\",\"children\":[{\"text\":\"ChangeRoomType\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"JsY_qOOloZg4pPlEzzDrQ\",\"children\":[{\"id\":\"ZqSeVrOEaHUqk2UJ2hnD0\",\"children\":[{\"id\":\"VQFsXM8IuG53J8Yis42nc\",\"children\":[{\"text\":\"Modifies user's room audio type\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"kfbVxoGgJLn60kJ-Qn2ep\",\"children\":[{\"id\":\"_wwm_hMa_mv_VtfDjla62\",\"children\":[{\"id\":\"vd-p1ADppmF_fFtziP50h\",\"children\":[{\"id\":\"IQXuJvqsYL0FugOOJgrdA\",\"children\":[{\"text\":\"GetRoomType\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"HbgY_0rIjUOdufBbASTrO\",\"children\":[{\"id\":\"AnxgNiIVanK378GY9O9ca\",\"children\":[{\"id\":\"vkYTvqiLciGKAWnqJjiPB\",\"children\":[{\"text\":\"Gets user's room audio type\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[33,67],\"widthMode\":\"percentage\"},{\"id\":\"GAKtkUUqusrwnBt1uV9-R\",\"children\":[{\"text\":\"Voice chat room call flowchart\"}],\"nodeId\":\"voice-chat-room-call-flowchart\",\"type\":\"h3\"},{\"type\":\"p\",\"children\":[{\"text\":\"\"},{\"id\":\"QzOo4E5KLx8-85eAxILu1\",\"alt\":\"\",\"children\":[{\"text\":\"\"}],\"inline\":true,\"type\":\"image\",\"url\":\"https://cloudcache.intl.tencent-cloud.com/cms/backend-cms/26ec06f1b34811eeb2a1525400170219.png\",\"naturalSize\":[651,417],\"size\":[651,417]},{\"text\":\"\"}],\"id\":\"yky0GGyfgd8YfEjuJyP48\"},{\"id\":\"FI2bXQkSmHO17KNi-CBzY\",\"children\":[{\"id\":\"ixg4SfzXrb6XUC4zIttNs\",\"children\":[{\"b\":1,\"color\":\"#FF7800\",\"text\":\"Entered the room successfully\"}],\"type\":\"p\"},{\"id\":\"gU_xa6KM_Q8_gcrzlJXpA\",\"children\":[{\"text\":\"If the room entry callback result is 0, the room entry is successful. The returned value of 0 from the \"},{\"code\":1,\"text\":\"EnterRoom\"},{\"text\":\" API does not necessarily mean that the room entry is successful.\"}],\"type\":\"p\"}],\"hintType\":\"warn\",\"type\":\"hint\"},{\"id\":\"5MTboZ6nv6EKcUE8yzCAp\",\"children\":[{\"text\":\"Authentication information\"}],\"nodeId\":\"authentication-information\",\"type\":\"h3\"},{\"id\":\"ytaldu59IAag33F5Eu9zU\",\"children\":[{\"text\":\"Generate \"},{\"code\":1,\"text\":\"AuthBuffer\"},{\"text\":\" for encryption and authentication of relevant features. For release in the production environment, please use the backend deployment key as detailed in \"},{\"id\":\"-1Rcwd45rDgnL0fSkM8qI\",\"children\":[{\"text\":\"Authentication Key\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://intl.cloud.tencent.com/document/product/607/12218\",\"props\":{\"type\":\"link\",\"url\":\"https://intl.cloud.tencent.com/document/product/607/12218\"},\"type\":\"ref\"},{\"text\":\". \"}],\"type\":\"p\"},{\"id\":\"1Tp5q2udesDADdL15icWg\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\"function-prototype8\",\"type\":\"h4\"},{\"id\":\"7jGaqD5LZYAglnY8y-eK_\",\"children\":[{\"id\":\"o3B5jxyA90B3SUrfM0SIY\",\"children\":[{\"text\":\"@interface QAVAuthBuffer : NSObject\"}],\"type\":\"code-line\"},{\"id\":\"LJ7e4DW8hTQ4N4Zmb7iyj\",\"children\":[{\"text\":\"+ (NSData*) GenAuthBuffer:(unsigned int)appId roomId:(NSString*)roomId openID:(NSString*)openID key:(NSString*)key;\"}],\"type\":\"code-line\"},{\"id\":\"5UckpsoPwdkTfR_7Q311b\",\"children\":[{\"text\":\"+ @end\"}],\"type\":\"code-line\"},{\"id\":\"u4pJVG3p-wPke73Rhb-3a\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"digJYUs_l22C7Dg6PuIc6\",\"children\":[{\"id\":\"IaaspRPwPudgT8lx05Z_F\",\"children\":[{\"id\":\"hwVuPnltf3QmHPAbngtnF\",\"children\":[{\"id\":\"ulN5ka_nbib-RUBN3bupa\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"UwsWdJMG56Vdcnv_oZfUw\",\"children\":[{\"id\":\"K_2e517gMcmgsqnKHRsKD\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"XGf0st9tYkExpTh0zHpIw\",\"children\":[{\"id\":\"ypPQD7NgncQ-bFKZvKFJP\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"I5-vzyjpJv9nDMpqOMwG-\",\"children\":[{\"id\":\"3tcQkAjSH5NG5-iDjMY3g\",\"children\":[{\"id\":\"Xy9OQUdOz82Zejxq7MUKs\",\"children\":[{\"id\":\"HWxCNxRwXej-bqCqM_ffa\",\"children\":[{\"text\":\"appId\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"kgdJ3U2nda5q47cFbQ_Ft\",\"children\":[{\"id\":\"OL31PwbfxwTvFvxCWZ1m_\",\"children\":[{\"id\":\"QeTJwolChWCu9wrT6lCUo\",\"children\":[{\"text\":\"int\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"lL2wrbcZKiHh_o07zL8GY\",\"children\":[{\"id\":\"GGjaCeJ13uM8pgdmGwE_L\",\"children\":[{\"id\":\"H0UEiZgAd9XZyeCWKIsJn\",\"children\":[{\"code\":1,\"text\":\"AppId\"},{\"text\":\" from the Tencent Cloud console.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"OTYaAecrlog0uo6f5MbEk\",\"children\":[{\"id\":\"PU5_Q3JOmU8UMEAYqbzRi\",\"children\":[{\"id\":\"uRMXw4zHaFngPvlZGHTlH\",\"children\":[{\"id\":\"No5c1LhEP722_kfjAawL-\",\"children\":[{\"text\":\"roomId\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"7mf-S-Xs-DQgj_zhUqoo9\",\"children\":[{\"id\":\"fxl9yD3YfH4faDMLXJNVB\",\"children\":[{\"id\":\"hrhOd1C-xguEvkq7g55BJ\",\"children\":[{\"text\":\"NSString\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"TOv4Uhr6gNz2tRB86bxv0\",\"children\":[{\"id\":\"8-8alhNhvbXcHxGQh1MD5\",\"children\":[{\"id\":\"h_Z7HSHbdwlUcccBpFDzq\",\"children\":[{\"text\":\"Room ID, which can contain up to 127 characters.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"14p-MUX4vcTCAmClxDzUb\",\"children\":[{\"id\":\"LcMXQbUJXTXVogHFvQ1dt\",\"children\":[{\"id\":\"6xrBHsZeoQVB0zHtyIGHW\",\"children\":[{\"id\":\"zlPEcuCrvu7bjZzG6PJXa\",\"children\":[{\"text\":\"openID\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"AoT4ZlqOLXe8PmEG8qCXT\",\"children\":[{\"id\":\"2u1KWRaMq8uzHKoSqAxMe\",\"children\":[{\"id\":\"P6NcUTk2vmbx5fbzaFrQa\",\"children\":[{\"text\":\"NSString\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"PiDJREZCvhRUVM-k152Z2\",\"children\":[{\"id\":\"_TBxrfdV7a1TP9NWSVuny\",\"children\":[{\"id\":\"Nlp_VRz5IsGFuPbV-IxXn\",\"children\":[{\"text\":\"User ID, which is the same as \"},{\"code\":1,\"text\":\"openID\"},{\"text\":\" during initialization.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"7CtWD8baXRfxXe314Vf58\",\"children\":[{\"id\":\"ad1unXxeK5UGb233XfTzQ\",\"children\":[{\"id\":\"wtL76GGb7x9DAT7XBLdy6\",\"children\":[{\"id\":\"-nsg-v5x-Cx8ebVAWLk0H\",\"children\":[{\"text\":\"key\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Aeu5gvuvT3mfTpQBrTZqT\",\"children\":[{\"id\":\"HNkR5T1glFnzSLFH1-st0\",\"children\":[{\"id\":\"-evU-b5GLe6bAcEXIlSgd\",\"children\":[{\"text\":\"NSString\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"9Tb-nZvM4Cm_SDuvZWrZU\",\"children\":[{\"id\":\"oRIV1dfJIsKO-WB_N6OeA\",\"children\":[{\"id\":\"2rLv5ZxpDWhbb8tk-RolT\",\"children\":[{\"text\":\"Permission key from the Tencent Cloud \"},{\"id\":\"xBB5q62U-gAqcl9UEIrGI\",\"children\":[{\"text\":\"console\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://console.tencentcloud.com/gamegme\",\"props\":{\"type\":\"link\",\"url\":\"https://console.tencentcloud.com/gamegme\"},\"type\":\"ref\"},{\"text\":\".\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[16,15,69],\"widthMode\":\"percentage\"},{\"id\":\"U6dJCwUKJlVVSpP8AiUf3\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code6\",\"type\":\"h4\"},{\"id\":\"MQTFIMAS9owbikhFIYFWr\",\"children\":[{\"id\":\"C79hayMOGgrVqVzGd5ExU\",\"children\":[{\"text\":\"#import \\\"GMESDK/QAVAuthBuffer.h\\\"\"}],\"type\":\"code-line\"},{\"id\":\"0fbmNkuQ2eFlzxeCOICPX\",\"children\":[{\"text\":\"NSData* authBuffer = [QAVAuthBuffer GenAuthBuffer:SDKAPPID3RD.intValue roomId:_roomId openID:_openId key:AUTHKEY];\"}],\"type\":\"code-line\"},{\"id\":\"Wa2YN3wfhclPMAGU5eqC5\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"V1tb1Q69ox0-zDkQxZWty\",\"children\":[{\"id\":\"3e4-CjMWyNgrnmWq7vrKI\",\"children\":[{\"text\":\"Entering a room\"}],\"nodeId\":\"EnterRoom\",\"type\":\"p\"}],\"nodeId\":\".3Ca-id.3D.22enterroom.22.3Eentering-a-room.3C.2Fa.3E\",\"type\":\"h3\"},{\"id\":\"oKFR4ipSOv_XQvov-Poc1\",\"children\":[{\"text\":\"When a user enters a room with the generated authentication information, the \"},{\"code\":1,\"text\":\"ITMG_MAIN_EVENT_TYPE_ENTER_ROOM\"},{\"text\":\" message will be received as a callback. Mic and speaker are not enabled by default after room entry. The returned value of \"},{\"code\":1,\"text\":\"AV_OK\"},{\"text\":\" indicates a success.\"}],\"type\":\"p\"},{\"id\":\"s_PGdBJU0gqweuWQCKbPN\",\"children\":[{\"text\":\"The audio type of the room is determined by the first user to enter the room. After that, if a member in the room changes the room type, it will take effect for all members there. For example, if the first user entering the room uses the smooth sound quality, and the second user entering the room uses the HD sound quality, the room audio type of the second user will become smooth sound quality. Only when a member in the room calls the \"},{\"code\":1,\"text\":\"ChangeRoomType\"},{\"text\":\" API, the audio type of the room will be changed.\"}],\"type\":\"p\"},{\"id\":\"2Dxwt1l-uqsCOMM2C5XbZ\",\"children\":[{\"text\":\"For more information on how to choose a room audio type, please see \"},{\"id\":\"7KioMcIHkNN5Vrip_H9Om\",\"children\":[{\"text\":\"Sound Quality Selection\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://intl.cloud.tencent.com/document/product/607/18522\",\"props\":{\"type\":\"link\",\"url\":\"https://intl.cloud.tencent.com/document/product/607/18522\"},\"type\":\"ref\"},{\"text\":\".\"}],\"type\":\"p\"},{\"id\":\"15HdJQf7o9S74WkMAgB8O\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\"function-prototype9\",\"type\":\"h4\"},{\"id\":\"dlhUefRPR-FqWpijVgOK8\",\"children\":[{\"id\":\"__i9wmOft7cCPP0Jh6see\",\"children\":[{\"text\":\"-(int)EnterRoom:(NSString*) roomId roomType:(int)roomType authBuffer:(NSData*)authBuffer;\"}],\"type\":\"code-line\"},{\"id\":\"hmqFatB-g9Q05trgzbhL8\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"M0p1aviQa8I44lMtjWJLy\",\"children\":[{\"id\":\"UlZWvmFEpGBgIqMSMqwhH\",\"children\":[{\"id\":\"mSXx2Bcm6bBmkmGpNHFDQ\",\"children\":[{\"id\":\"j3KXojhITSlUpQLHS-k0n\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"djpVoVfXN3E_JDe6r1KP9\",\"children\":[{\"id\":\"Npe3KnW4PLXRFlXpoY-W0\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"FWCUMxlC4v5kMKE86KMBt\",\"children\":[{\"id\":\"mp9DL1WBMQSgwA7NyB6yW\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"1ZNi-wWLKrKUv5W8ZgrUM\",\"children\":[{\"id\":\"wlETMtH56HTPeo6AoeQeG\",\"children\":[{\"id\":\"z4n4v42Ctv42cbKH5gIS9\",\"children\":[{\"id\":\"qPhsMDnPiF5AUC5RHj-Uq\",\"children\":[{\"text\":\"roomId\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"VZtttKUIT8iiAfhZTjbuP\",\"children\":[{\"id\":\"jS18mtwnPCfbbiFeg84V7\",\"children\":[{\"id\":\"oniai-53m7_QHK3i_D1b3\",\"children\":[{\"text\":\"NSString\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"7I0EvjaZf67EmegHVDPZX\",\"children\":[{\"id\":\"EztCZDvvonLdM0Dnnl724\",\"children\":[{\"id\":\"UqD2AumwoANyyBgHmDmch\",\"children\":[{\"text\":\"Room ID, which can contain up to 127 characters\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"-bvF7aYL8T6fbbVjWSg0D\",\"children\":[{\"id\":\"XHnSDv4ZQsGa12qg1rkzU\",\"children\":[{\"id\":\"9M0U-SuVgBfRLWY7qBVx8\",\"children\":[{\"id\":\"kGRwgNwBY_BEqKikjWAiq\",\"children\":[{\"text\":\"roomType\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"jVXMyqHsZnIPV2_ahiLEJ\",\"children\":[{\"id\":\"QYPoIgEuo0mv5fQZ2t07z\",\"children\":[{\"id\":\"zsYdXYXzxjaWyWiBW6P_U\",\"children\":[{\"text\":\"int\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"HJSXmLc2pOg79a-uYT8is\",\"children\":[{\"id\":\"SD1d4n4YUlRRf7ZGWM_0h\",\"children\":[{\"id\":\"DU8VMs1y4NykrBquxKgFS\",\"children\":[{\"text\":\"Room audio type\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"Unxuk8Uo3iGdEYgdxQmMM\",\"children\":[{\"id\":\"fzD2mzO93SVLvKIh51SMI\",\"children\":[{\"id\":\"STfbY5ykjeZq-GLxM_u9o\",\"children\":[{\"id\":\"o-YYjuFlF0YykktVnpy8D\",\"children\":[{\"text\":\"authBuffer\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"PBP8mCf5sQLqfzWOihp40\",\"children\":[{\"id\":\"HlE6Ga6RL_t5xjGrO637u\",\"children\":[{\"id\":\"NPYK08VqP-zExlvfNf85I\",\"children\":[{\"text\":\"NSData\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"zGi2FL4-HdXDszB6fu9gQ\",\"children\":[{\"id\":\"6nxGxr8jNADj1w5GF0Qfc\",\"children\":[{\"id\":\"QS0VvFAmXA064kcHuRyvn\",\"children\":[{\"text\":\"Authentication key\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[18,16,66],\"widthMode\":\"percentage\"},{\"id\":\"_GaUDwFIfMWwAM8G0F1J7\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code7\",\"type\":\"h4\"},{\"id\":\"gvqT7t3WavYlmsY_UW9sC\",\"children\":[{\"id\":\"0-RZ_T-dGU2_5UH88yYJx\",\"children\":[{\"text\":\"[[ITMGContext GetInstance] EnterRoom:_roomId roomType:_roomType authBuffer:authBuffer];\"}],\"type\":\"code-line\"},{\"id\":\"ycBE5IeAjVkGGpCiT9B5O\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"9VFatGFBnUxlh1hiBdUMZ\",\"children\":[{\"text\":\"Callback for room entry\"}],\"nodeId\":\"callback-for-room-entry\",\"type\":\"h3\"},{\"id\":\"9ikYcw66SYxZRdZ4rlUAa\",\"children\":[{\"text\":\"After the user enters the room, the message \"},{\"code\":1,\"text\":\"ITMG_MAIN_EVENT_TYPE_ENTER_ROOM\"},{\"text\":\" will be sent and identified in the \"},{\"code\":1,\"text\":\"OnEvent\"},{\"text\":\" function for callback and processing. A successful callback means that the room entry is successful, and the billing starts.\"}],\"type\":\"p\"},{\"type\":\"accordion\",\"children\":[{\"type\":\"accordion-line\",\"id\":\"FGzsj0HH1GQrQxkm05rkw\",\"children\":[{\"type\":\"accordion-line-title\",\"children\":[{\"text\":\"Billing references\",\"b\":1}],\"id\":\"MDNSdH7KSulScoBQ6a5aV\"},{\"type\":\"uli\",\"children\":[{\"text\":\"\"},{\"type\":\"ref\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/36276\"},\"linkTarget\":\"self\",\"children\":[{\"text\":\"Purchase Guide\"}],\"id\":\"qw6iS1rFWUNUEswdrJOBk\"},{\"text\":\"\"}],\"id\":\"ODnyQHd0TjncvpCrEZS6l\"},{\"type\":\"uli\",\"id\":\"liHkGYboZCL05ZM2TwpQ7\",\"children\":[{\"text\":\"\"},{\"type\":\"ref\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/30255\"},\"linkTarget\":\"self\",\"children\":[{\"text\":\"Billing FAQs\"}],\"id\":\"V9hWXyJRWAPL8sMGHBJGG\"},{\"text\":\"\"}]},{\"type\":\"uli\",\"id\":\"yJ0fi1bzZ54Jct5RTnRlg\",\"children\":[{\"text\":\"\"},{\"type\":\"ref\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/30255#.E4.BD.BF.E7.94.A8.E5.AE.9E.E6.97.B6.E8.AF.AD.E9.9F.B3.E5.90.8E.EF.BC.8C.E5.A6.82.E6.9E.9C.E5.AE.A2.E6.88.B7.E7.AB.AF.E6.8E.89.E7.BA.BF.E4.BA.86.EF.BC.8C.E6.98.AF.E5.90.A6.E8.BF.98.E4.BC.9A.E7.BB.A7.E7.BB.AD.E8.AE.A1.E8.B4.B9.EF.BC.9F\"},\"linkTarget\":\"self\",\"children\":[{\"text\":\"Will the billing continues if the client goes offline when using Voice Chat?\"}],\"id\":\"2N-WcI0-OzFfFkGfQw8Jq\"},{\"color\":\"red\",\"text\":\"\"}]}]}],\"id\":\"GqZYaa1BBNEDTMvZ4_B8H\"},{\"id\":\"sQhYhto_e5uM08Z1W2WFR\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code8\",\"type\":\"h4\"},{\"id\":\"FrvGSr4zQcArnftHpUYSV\",\"children\":[{\"text\":\"Sample code for processing the callback, including room entry and network disconnection events.\"}],\"type\":\"p\"},{\"id\":\"Z3aeH3Ff6VB5_84erbXNw\",\"children\":[{\"id\":\"XNBPHxVJc42rPiA3MXjKN\",\"children\":[{\"text\":\"-(void)OnEvent:(ITMG_MAIN_EVENT_TYPE)eventType data:(NSDictionary *)data{\"}],\"type\":\"code-line\"},{\"id\":\"C7YAqlVoHSqlo6sIALkSC\",\"children\":[{\"text\":\" NSLog(@\\\"OnEvent:%lu,data:%@\\\",(unsigned long)eventType,data);\"}],\"type\":\"code-line\"},{\"id\":\"SPV3q1gXiMwPUcMwY0hXd\",\"children\":[{\"text\":\" switch (eventType) {\"}],\"type\":\"code-line\"},{\"id\":\"ULfiLCVFSzzkkWn0DRRMD\",\"children\":[{\"text\":\" case ITMG_MAIN_EVENT_TYPE_ENTER_ROOM:\"}],\"type\":\"code-line\"},{\"id\":\"jxli8JtmqnEToCKWUmdgn\",\"children\":[{\"text\":\" {\"}],\"type\":\"code-line\"},{\"id\":\"3VkLv5rbOUo7ZEX3hdJRt\",\"children\":[{\"text\":\" int result = ((NSNumber*)[data objectForKey:@\\\"result\\\"]).intValue;\"}],\"type\":\"code-line\"},{\"id\":\"1rrDP9UkczSvvG2I213Ej\",\"children\":[{\"text\":\" NSString* error_info = [data objectForKey:@\\\"error_info\\\"];\"}],\"type\":\"code-line\"},{\"id\":\"7kFp_-xGu1d7sKJRJyLDa\",\"children\":[{\"text\":\" //Receive the event of successful room entry\"}],\"type\":\"code-line\"},{\"id\":\"i4wNHBynBTr7tnXmhBMi8\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"p5yguFmQFx-lsL_RsFX27\",\"children\":[{\"text\":\" break;\"}],\"type\":\"code-line\"},{\"id\":\"5DNgcHsKuOUmu-U9oXUAP\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"Xy3_XyDGpUpk-IDLyLwQ_\",\"children\":[{\"text\":\"}\"}],\"type\":\"code-line\"},{\"id\":\"p7NU0YmNiWQ3AxpSPwijV\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"WbikdEaFwIHTBQ1nXQzpp\",\"children\":[{\"text\":\"Data details\"}],\"nodeId\":\"data-details\",\"type\":\"h4\"},{\"id\":\"Tn_ZZTZEdTLN83-6z1Vjl\",\"children\":[{\"id\":\"vsO90gTIP-nHHRYIMHklb\",\"children\":[{\"id\":\"SDEIZM0CaWhVblsvJhvv8\",\"children\":[{\"id\":\"3sfTs_ur3GK8xSTjNlH-Y\",\"children\":[{\"text\":\"Message\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"3N6ANDX2kusgyFeZP5meW\",\"children\":[{\"id\":\"IHLvmiB7R81rIs6Fy-VIg\",\"children\":[{\"text\":\"Data\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"bN55VDk5rMxJ9e9Kj6JQz\",\"children\":[{\"id\":\"GKSaEe39YSZwMNhthCryH\",\"children\":[{\"text\":\"Sample\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"f1TombKiif0L-anR9TmK3\",\"children\":[{\"id\":\"w-YAvCmfSGdC-jYTQg3ks\",\"children\":[{\"id\":\"SP5fVs3hEeyZG8HgHtRud\",\"children\":[{\"id\":\"XznioHI7MD1sDstBHZ8r0\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_ENTER_ROOM\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"8r3pZB5NIsgkECgUY_kLd\",\"children\":[{\"id\":\"-DAGovSuUJyyaAZ5SM4Jo\",\"children\":[{\"id\":\"niENaFVLtymYxEPpQs3ys\",\"children\":[{\"text\":\"result; error_info\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"sSGXJy5ugH9TDLRLUjnSJ\",\"children\":[{\"id\":\"v08YVCelRjxJIeh-skoaM\",\"children\":[{\"id\":\"QexbyaccpLA8GjCVElcNG\",\"children\":[{\"text\":\"{\\\"error_info\\\":\\\"\\\",\\\"result\\\":0}\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"z6fS3TRiAFUeUN-1R-M-k\",\"children\":[{\"id\":\"_aBdIIuu5Wujb4OpqE-9o\",\"children\":[{\"id\":\"a8IkKir6ryM5TM3vIXOC_\",\"children\":[{\"id\":\"v9Atk9hvJPD5abKbNLLKi\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_ROOM_DISCONNECT\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"MaaPwq685S_Rpi6eigDJS\",\"children\":[{\"id\":\"UkyNVH3j2HjSgWIbOBSwR\",\"children\":[{\"id\":\"9ZC7MWPYYWc9eAZwdRV7Y\",\"children\":[{\"text\":\"result; error_info\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"N8ZMxdxFFuAuXb-Wq3Cce\",\"children\":[{\"id\":\"1Y28JIJv3s1HJOXzuhJRR\",\"children\":[{\"id\":\"HEjiP-3dK51dAZqAzTrJu\",\"children\":[{\"text\":\"{\\\"error_info\\\":\\\"waiting timeout, please check your network\\\",\\\"result\\\":0}\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[38,14,48],\"widthMode\":\"percentage\"},{\"id\":\"cSzjKN0u05keSXIdqIzsv\",\"children\":[{\"text\":\"If the network is disconnected, there will be a disconnected callback prompt \"},{\"code\":1,\"text\":\"ITMG_MAIN_EVENT_TYPE.ITMG_MAIN_EVENT_TYPE_ROOM_DISCONNECT\"},{\"text\":\". At this time, the SDK will automatically reconnect, and the callback is \"},{\"code\":1,\"text\":\"ITMG_MAIN_EVENT_TYPE_RECONNECT_START\"},{\"text\":\". When the reconnection is successful, there will be a callback \"},{\"code\":1,\"text\":\"ITMG_MAIN_EVENT_TYPE_RECONNECT_SUCCESS\"},{\"text\":\".\"}],\"type\":\"p\"},{\"id\":\"hLk6JQ_OfbRcOiXwaemEz\",\"children\":[{\"text\":\"Error codes\"}],\"nodeId\":\"error-codes\",\"type\":\"h4\"},{\"id\":\"e_bGLwkYNVAXpBHikhZnc\",\"children\":[{\"id\":\"oYvsElyHT2nRIowiv_27c\",\"children\":[{\"id\":\"koOgkhqU6Hc1xCKv8_FR1\",\"children\":[{\"id\":\"wdrzE05TbMr07ryfd78Q6\",\"children\":[{\"text\":\"Error Code Value\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"BOjZKg_7kihg0xyPyfxZk\",\"children\":[{\"id\":\"FbSzmX4G5MAEWStAPON-0\",\"children\":[{\"text\":\"Cause and Suggested Solution\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"mPPwTbjCwEQxnxDNyoK_l\",\"children\":[{\"id\":\"_ZozhvTXGZEXK1Fn5CEHF\",\"children\":[{\"id\":\"Nd88E4Zft6WtuyC08t3NC\",\"children\":[{\"id\":\"_tfTZU3D-jeyQT-N3jHA8\",\"children\":[{\"text\":\"7006\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"wn0goEci4zSO8SsCC2m_F\",\"children\":[{\"id\":\"iPJNfWrasw4QibvD1cJeM\",\"children\":[{\"text\":\"Authentication failed:\"}],\"type\":\"p\"},{\"id\":\"_oZO_QWhKxZObWYtnxfP1\",\"type\":\"uli\",\"children\":[{\"text\":\"The \"},{\"code\":1,\"text\":\"AppID\"},{\"text\":\" does not exist or is incorrect.\"}]},{\"id\":\"bdQvwkPPQ_9Pk1Kmhp9gu\",\"type\":\"uli\",\"children\":[{\"text\":\"An error occurred while authenticating the \"},{\"code\":1,\"text\":\"authbuff\"},{\"text\":\".\"}]},{\"id\":\"kwsh-0--5QUM1XsSro3gC\",\"type\":\"uli\",\"children\":[{\"text\":\"Authentication expired.\"}]},{\"id\":\"ai-_kuZx1DkZvLG4Pyo5_\",\"type\":\"uli\",\"children\":[{\"text\":\"The \"},{\"code\":1,\"text\":\"OpenId\"},{\"text\":\" does not meet the specification.\"}]}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"mbt_vvzOCq_rTgjL-si0J\",\"children\":[{\"id\":\"kqT0zOuOn7DnAbqdnvpQo\",\"children\":[{\"id\":\"hAiLQrHfGORRpm7a2uQ4B\",\"children\":[{\"id\":\"APXT9CCeenrE9BXOyqXX2\",\"children\":[{\"text\":\"7007\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"PUzSD51S-X4WWlbNj50RA\",\"children\":[{\"id\":\"FnDtSejFIzPmZlprBXmvW\",\"children\":[{\"id\":\"GU1KOaOJl_h_Sd9nRE6W6\",\"children\":[{\"text\":\"Already in another room.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"B4O7MU4Fy6sd4uVOMNC3_\",\"children\":[{\"id\":\"Kjo53BzGdeQtCHwxuwQt7\",\"children\":[{\"id\":\"EVG1psBMAOHJaJJLu3PtY\",\"children\":[{\"id\":\"F9Np5KNtnzc8TziyjEWSL\",\"children\":[{\"text\":\"1001\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"7B9ZXUm6YolSUIcIJHdij\",\"children\":[{\"id\":\"AQMgirSyHq_9m3AxgoVmh\",\"children\":[{\"id\":\"xBYV7c3DJGHz7V_stoLul\",\"children\":[{\"text\":\"The user was already in the process of entering a room but repeated this operation. It is recommended not to call the room entering API until the room entry callback is returned.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"okojWGvccQ5Gc0EEZwcqJ\",\"children\":[{\"id\":\"NsMgdbGAm-iLEAZym147T\",\"children\":[{\"id\":\"M5VPh8doH04cFxTEINmqt\",\"children\":[{\"id\":\"7LJAXtOt7-jqh1avMBacm\",\"children\":[{\"text\":\"1003\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"EXx9k6E1X5vuYybjX5IGx\",\"children\":[{\"id\":\"-XT4GaIQNGSF88jRiw3CR\",\"children\":[{\"id\":\"OhwDSQAIA2sqOCklMCwXZ\",\"children\":[{\"text\":\"The user was already in the room and called the room entering API again.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"H4UcL-987JfLd0LFNfmW8\",\"children\":[{\"id\":\"6ljiA2czuqRtjHbEnukEm\",\"children\":[{\"id\":\"Mf9twB8MABzQig8NQRCIK\",\"children\":[{\"id\":\"LSY2aXZZ4gMaH-rK2-WMe\",\"children\":[{\"text\":\"1101\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"m9NSjwnzY3OORp4TCaU2w\",\"children\":[{\"id\":\"iA3ZIK_7HM1BNiUPXnA-l\",\"children\":[{\"id\":\"uXmDF5uD-E7iycZ1QHuUL\",\"children\":[{\"text\":\"Make sure that the SDK is initialized, \"},{\"code\":1,\"text\":\"OpenId\"},{\"text\":\" complies with the rules, the APIs are called in the same thread, and the \"},{\"code\":1,\"text\":\"Poll\"},{\"text\":\" API is called normally.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[17,83],\"widthMode\":\"percentage\"},{\"id\":\"QEHIFvJYh30MANd-C3YB3\",\"children\":[{\"id\":\"cRTrUGyfKb4UbsGwsfvNv\",\"children\":[{\"text\":\"Exiting the room\"}],\"nodeId\":\"ExitRoom\",\"type\":\"p\"}],\"nodeId\":\".3Ca-id.3D.22exitroom.22.3Eexiting-the-room.3C.2Fa.3E\",\"type\":\"h3\"},{\"id\":\"yj1lyv1vunqiEglmUAYsK\",\"children\":[{\"text\":\"This API is called to exit the current room. It is an async API. The returned value of \"},{\"code\":1,\"text\":\"AV_OK\"},{\"text\":\" indicates a successful async delivery.\"}],\"type\":\"p\"},{\"id\":\"IaS8ozFpF6FPjVeeVIhWb\",\"children\":[{\"id\":\"PB-2JLMXksbkKe15Dbmzn\",\"children\":[{\"b\":1,\"color\":\"#04C8DC\",\"text\":\"Note: \"}],\"type\":\"p\"},{\"id\":\"aaSvVNYzrFMtPxIHMXB0n\",\"children\":[{\"text\":\"If there is a scenario in the application where room entry is performed immediately after room exit, you don't need to wait for the \"},{\"code\":1,\"text\":\"RoomExitComplete\"},{\"text\":\" callback notification from the \"},{\"code\":1,\"text\":\"ExitRoom\"},{\"text\":\" API during API call; instead, you can directly call the API.\"}],\"type\":\"p\"}],\"hintType\":\"alert\",\"type\":\"hint\"},{\"id\":\"XCoMniijKQLhpCO0MWOb9\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\"function-prototype10\",\"type\":\"h4\"},{\"id\":\"oq6h33-WLDh55KWE0yrqk\",\"children\":[{\"id\":\"45kDclEmQZ-spMFQQTIP9\",\"children\":[{\"text\":\"-(int)ExitRoom\"}],\"type\":\"code-line\"},{\"id\":\"YHEVyu0fcyuRQcsqHovR2\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"yCa7bhPzptJW63UgvV98w\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code9\",\"type\":\"h4\"},{\"id\":\"rngdSc_QHCKEFInbC8VIo\",\"children\":[{\"id\":\"gpOVY5hbWhfKwoUvw34r2\",\"children\":[{\"text\":\"[[ITMGContext GetInstance] ExitRoom];\"}],\"type\":\"code-line\"},{\"id\":\"KDoQc1lS-O-SfcVUOpffd\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"Iqi9sYm_tma_yZDJg-Xae\",\"children\":[{\"text\":\"Callback for room exit\"}],\"nodeId\":\"callback-for-room-exit\",\"type\":\"h3\"},{\"id\":\"Oq0Pt_IjPYfFJGX9lMYkn\",\"children\":[{\"text\":\"After the user exits a room, a callback will be returned with the message being \"},{\"code\":1,\"text\":\"ITMG_MAIN_EVENT_TYPE_EXIT_ROOM\"},{\"text\":\".\"}],\"type\":\"p\"},{\"id\":\"x0f0LyLHIBK730Az0hqOU\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code10\",\"type\":\"h4\"},{\"id\":\"DP2liRjacGdyi7e1xms4J\",\"children\":[{\"id\":\"r7JUy3UpgtE9BQl25srqs\",\"children\":[{\"text\":\"-(void)OnEvent:(ITMG_MAIN_EVENT_TYPE)eventType data:(NSDictionary *)data{\"}],\"type\":\"code-line\"},{\"id\":\"W8NqzO3utYPvcbDevsG8G\",\"children\":[{\"text\":\" NSLog(@\\\"OnEvent:%lu,data:%@\\\",(unsigned long)eventType,data);\"}],\"type\":\"code-line\"},{\"id\":\"fmKLDRq7AkRX2IdQ-geKK\",\"children\":[{\"text\":\" switch (eventType) {\"}],\"type\":\"code-line\"},{\"id\":\"bN37yVgNXQUQT85i-u1Zq\",\"children\":[{\"text\":\" case ITMG_MAIN_EVENT_TYPE_EXIT_ROOM:\"}],\"type\":\"code-line\"},{\"id\":\"5DGmY2PU0S4WiQkXjrMBw\",\"children\":[{\"text\":\" {\"}],\"type\":\"code-line\"},{\"id\":\"6abZXUoJgJ9bxGeDpKlEe\",\"children\":[{\"text\":\" // Receive the event of successful room exit\"}],\"type\":\"code-line\"},{\"id\":\"3Cr8pTOwGIbRTBpAnM2EC\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"SDvJCR56NwA8oOvBeewFT\",\"children\":[{\"text\":\" break;\"}],\"type\":\"code-line\"},{\"id\":\"bj2T6wQxc6ev_3V05hSaU\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"2bIqpx8r-C_SvCpojiOhP\",\"children\":[{\"text\":\"}\"}],\"type\":\"code-line\"},{\"id\":\"73YD_PcY_AFz4buXclp7e\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"L76RrO-VAeMmAo7zSUOgY\",\"children\":[{\"text\":\"Data details\"}],\"nodeId\":\"data-details2\",\"type\":\"h4\"},{\"id\":\"xlf6atfOaT5dWcttOzBTM\",\"children\":[{\"id\":\"wKHNcl_qdgbR4opzpl7l3\",\"children\":[{\"id\":\"v6HwF-qbn9nAVTVVt7E7P\",\"children\":[{\"id\":\"r2dMP8-RGs6fKmXXPD5Nc\",\"children\":[{\"text\":\"Message\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"DVSlC3nFygwPDq9GWhiAR\",\"children\":[{\"id\":\"mCurGoKQ14vLIfLxy7Uzh\",\"children\":[{\"text\":\"Data\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Dm4HQNrfYO00T0TBrH_rT\",\"children\":[{\"id\":\"YtQ2cF_2jmUk0PDX4N466\",\"children\":[{\"text\":\"Sample\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"Rj_yOpTe4ttyeb9ujDrbD\",\"children\":[{\"id\":\"2YjWJ7YFm5tgOr2TF7XKX\",\"children\":[{\"id\":\"jlyENkd9CmAAs3ZbJHj7S\",\"children\":[{\"id\":\"zZ2n1GBKfOB5oPKjbR8hX\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_EXIT_ROOM\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"3vx6Fq4lOCb0BKruEqDoK\",\"children\":[{\"id\":\"Jcolb_0RRzUBaD2GiZ-y1\",\"children\":[{\"id\":\"0sWoFf0qiUoG09JHkPtd3\",\"children\":[{\"text\":\"result; error_info\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"33V3y2mV7hPc6Dv-phIfA\",\"children\":[{\"id\":\"-AHn3ICuLBtZ56X2mLc1a\",\"children\":[{\"id\":\"OmqW05pi6A74X5MSiVZER\",\"children\":[{\"text\":\"{\\\"error_info\\\":\\\"\\\",\\\"result\\\":0}\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[48,21,31],\"widthMode\":\"percentage\"},{\"id\":\"NWEK52Betr2X2yg7AG_f4\",\"children\":[{\"text\":\"Determining whether user has entered room\"}],\"nodeId\":\"determining-whether-user-has-entered-room\",\"type\":\"h3\"},{\"id\":\"G2kRHia57coE-5unBcjSe\",\"children\":[{\"text\":\"This API is used to determine whether the user has entered a room. A bool-type value will be returned. The call is invalid during the process of room entry.\"}],\"type\":\"p\"},{\"id\":\"UHy9Paiyi4sMGD39989BB\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\"function-prototype11\",\"type\":\"h4\"},{\"id\":\"fr5bFFKItbjzR0KCPNcsE\",\"children\":[{\"id\":\"2ChqrWzY3J_YqHbAZCCFC\",\"children\":[{\"text\":\"-(BOOL)IsRoomEntered;\"}],\"type\":\"code-line\"},{\"id\":\"cmcACyPqhtp_52eEGrbBI\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"lNFX3pB2ShOQnOZRP3h7U\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code11\",\"type\":\"h4\"},{\"id\":\"T0mAlDjSbe4x0W3iKBFwd\",\"children\":[{\"id\":\"ZuUf-SGDCfUk2DLh2toE9\",\"children\":[{\"text\":\"[[ITMGContext GetInstance] IsRoomEntered];\"}],\"type\":\"code-line\"},{\"id\":\"vu9VCcGNXVbtpQtrZdPRd\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"wUUW4ZeD0uc5FrHP5HoaM\",\"children\":[{\"text\":\"Switching room\"}],\"nodeId\":\"switching-room\",\"type\":\"h3\"},{\"id\":\"EZDXR71OslQ2MB_SSElda\",\"children\":[{\"text\":\"User can call this API to quickly switch the voice chat room after entering the room. After the room is switched, the device is not reset, that is, if the microphone is already enabled in this room, the microphone will keep enabled after the room is switched.\"}],\"type\":\"p\"},{\"id\":\"LL8fwxu06ASSptU6Bws9C\",\"children\":[{\"text\":\"The callback for quickly switching rooms is \"},{\"code\":1,\"text\":\"ITMG_MAIN_EVENT_TYPE.ITMG_MAIN_EVENT_TYPE_SWITCH_ROOM\"},{\"text\":\", and the fields are \"},{\"code\":1,\"text\":\"error_info\"},{\"text\":\" and \"},{\"code\":1,\"text\":\"result\"},{\"text\":\".\"}],\"type\":\"p\"},{\"id\":\"uGarjYv1vV9z02ZQ8BlTL\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype\",\"type\":\"h4\"},{\"id\":\"omKwPA0H5qhDgvSo4vvgB\",\"children\":[{\"id\":\"AMC-shq0l_0kAKUYMa6Bl\",\"children\":[{\"text\":\"-(int) SwitchRoom:(NSString *)roomID authBuffer:(NSData*)authBuffer;\"}],\"type\":\"code-line\"},{\"id\":\"5Mo6m36vTuCU3979irALM\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"VoyEZRewy9FYk7bSZh_-c\",\"children\":[{\"text\":\"Type descriptions\"}],\"nodeId\":\"type-descriptions\",\"type\":\"h4\"},{\"id\":\"CdjVVzAp925UQU-rclbzE\",\"children\":[{\"id\":\"5tgGt2fnLaaxNuYruaN0s\",\"children\":[{\"id\":\"ZM1iRwKHithlcOfqZIS8Y\",\"children\":[{\"id\":\"WSNXeDqC0o94-Sk9rD-u1\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"lYRvWeVbah-Qf5VUf1bM3\",\"children\":[{\"id\":\"uvjy1lZZwYVMD1o1QWE_7\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"YuipNYLWNwmJnaaQlDhrG\",\"children\":[{\"id\":\"FPYjCK6V-mZZafUjfkI2O\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"nmJKRdvuJhp5dY2J1bYpV\",\"children\":[{\"id\":\"yJDzcKvqKAfWcKt3lNDMJ\",\"children\":[{\"id\":\"i9sIVrqrkuwfDJc4cgWa9\",\"children\":[{\"id\":\"b0O81VU7gXw1XxBlrAFep\",\"children\":[{\"text\":\"targetRoomID\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"1uYMwinO2xq5Zi95bmfzw\",\"children\":[{\"id\":\"cIusuUNMYS-6tkfxUJZJt\",\"children\":[{\"id\":\"S4cpe_Rm2NvJCaRzGHlA_\",\"children\":[{\"text\":\"NSString *\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"eAWrfIAm6fhqdTVeGwsD1\",\"children\":[{\"id\":\"YqDvqvPdBVfsPmJuFk_0m\",\"children\":[{\"id\":\"xCk4BtAsRPhfix1hwTLgY\",\"children\":[{\"text\":\"ID of the room to enter\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"RGc8AJ0anE06mxhRV-iog\",\"children\":[{\"id\":\"HNvlLcTq-vwSr3fmW_DmO\",\"children\":[{\"id\":\"W-bHKT7QpOIVoz7q4cH5E\",\"children\":[{\"id\":\"pA1ssOnwNrmZoVCzF6tMw\",\"children\":[{\"text\":\"authBuffer\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"-dGjvF8eopT4eXonfGft1\",\"children\":[{\"id\":\"A5XrolShu6faFIO_S72T5\",\"children\":[{\"id\":\"283AsmZUCjaRvcQUJmAhG\",\"children\":[{\"text\":\"NSData*\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"3feXZtABKiUxGpXHJTpwA\",\"children\":[{\"id\":\"ODLknAbVcRHcPS3xMpziE\",\"children\":[{\"id\":\"NhwbO_sUHD-z_nvcE0hVp\",\"children\":[{\"text\":\"Generates a new authentication with the ID of the room to enter\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[18,15,67],\"widthMode\":\"percentage\"},{\"id\":\"kuyNX5j2Tppht-TgtwlJ0\",\"children\":[{\"text\":\"Callback sample code\"}],\"nodeId\":\"callback-sample-code\",\"type\":\"h4\"},{\"id\":\"bc5uOYwdP65l4D4tTCbiq\",\"children\":[{\"id\":\"nWlRwqFafGrWg2hmhYoRX\",\"children\":[{\"text\":\"- (IBAction)swichRoom:(id)sender {\"}],\"type\":\"code-line\"},{\"id\":\"xko04Okqv2Xv41xRdT7jk\",\"children\":[{\"text\":\" NSData* authBuffer = [QAVAuthBuffer GenAuthBuffer:_appId.intValue roomID:_roomIdText.text openID:_openId key:_key];\"}],\"type\":\"code-line\"},{\"id\":\"6VlLM3FuyFb0TBM9E8fNm\",\"children\":[{\"text\":\" [[[ITMGContext GetInstance]GetRoom]SwitchRoom:_roomIdText.text authBuffer:authBuffer];\"}],\"type\":\"code-line\"},{\"id\":\"2UhT2tgXqtTsZ3uaLK7kt\",\"children\":[{\"text\":\"}\"}],\"type\":\"code-line\"},{\"id\":\"4VfSN5wRIpXHrC3CkYEp9\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"},{\"id\":\"7cM4YNT6dYQugMbEbjx6K\",\"children\":[{\"text\":\"-(void)OnEvent:(ITMG_MAIN_EVENT_TYPE)eventType data:(NSDictionary *)data{\"}],\"type\":\"code-line\"},{\"id\":\"A3LAt3Pg5KIeVK6ZDyd1s\",\"children\":[{\"text\":\" NSString* log =[NSString stringWithFormat:@\\\"OnEvent:%d,data:%@\\\", (int)eventType, data];\"}],\"type\":\"code-line\"},{\"id\":\"sdiC1fY4rBZeynWnakJBu\",\"children\":[{\"text\":\" [self showLog:log];\"}],\"type\":\"code-line\"},{\"id\":\"Bhh_8O-oLw2RfdNLqX1_O\",\"children\":[{\"text\":\" NSLog(@\\\"====%@====\\\",log);\"}],\"type\":\"code-line\"},{\"id\":\"UUcSPbz3GHGoSL5E3QUlQ\",\"children\":[{\"text\":\" switch (eventType) {\"}],\"type\":\"code-line\"},{\"id\":\"v-_KLWUX6_2ELfu4h5fC4\",\"children\":[{\"text\":\" case ITMG_MAIN_EVENT_TYPE_SWITCH_ROOM:\"}],\"type\":\"code-line\"},{\"id\":\"MBUGclbFD6ismfgUwwkel\",\"children\":[{\"text\":\" {\"}],\"type\":\"code-line\"},{\"id\":\"bc-Jr3eeYXPOWCrkx8fsY\",\"children\":[{\"text\":\" int result = ((NSNumber*)[data objectForKey:@\\\"result\\\"]).intValue;\"}],\"type\":\"code-line\"},{\"id\":\"PMwEKZNzcDiPMaBJJcfuF\",\"children\":[{\"text\":\" NSString* log = nil;\"}],\"type\":\"code-line\"},{\"id\":\"eiMx2zRZA6XMcDRh4Z-IN\",\"children\":[{\"text\":\" if (result == QAV_OK) {\"}],\"type\":\"code-line\"},{\"id\":\"ya9YjsnPJHOULrZZtWE3M\",\"children\":[{\"text\":\" log = [NSString stringWithFormat:@\\\"switch room success.\\\"];\"}],\"type\":\"code-line\"},{\"id\":\"jyrkeauc5ijsjQQ_gONgG\",\"children\":[{\"text\":\" } else {\"}],\"type\":\"code-line\"},{\"id\":\"HQDy-QI-e7iE31jK7vPyj\",\"children\":[{\"text\":\" log = [NSString stringWithFormat:@\\\"switch room failed.\\\"];\"}],\"type\":\"code-line\"},{\"id\":\"1eXTdDLCoACKjSWFR7lcp\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"805DCkm4hpvtstPVtnOvM\",\"children\":[{\"text\":\" [self showLog:log];\"}],\"type\":\"code-line\"},{\"id\":\"DD1D8_C0_i-CTKSC1ZUbP\",\"children\":[{\"text\":\" break;\"}],\"type\":\"code-line\"},{\"id\":\"8TWP83tacS06ovx0WjeTb\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"_gljcUlbNYUbJJux9S4pt\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"yyikvuCqGsoX9daH6qusm\",\"children\":[{\"text\":\"}\"}],\"type\":\"code-line\"},{\"id\":\"PoVJEEPW6gS5JWHvQm_CI\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"LDDuks7Ogu4svMk0wLK10\",\"children\":[{\"text\":\"Cross-room mic connection\"}],\"nodeId\":\"cross-room-mic-connection\",\"type\":\"h3\"},{\"id\":\"i59vs4Lv6_UIXeuNBqaPh\",\"children\":[{\"text\":\"Call this API to connect the microphones across rooms after entering the room. And the local user can communicate with the target OpenID user in the target room.\"}],\"type\":\"p\"},{\"id\":\"gHBSgnlfTR0kfT8w9EzIj\",\"children\":[{\"text\":\"Example\"}],\"nodeId\":\"example\",\"type\":\"h4\"},{\"id\":\"LBJ9AIFIMzLEaPCTIAPtw\",\"children\":[{\"text\":\"User a is in room A, user b is in room B, and user a can talk with b through the cross-room API. When user c in room A speaks, users b and d in room B cannot hear. User c in room A can hear only the voice in room A and the voice of user b in room B but not other users in room B.\"}],\"type\":\"p\"},{\"id\":\"NqGC8hDlB6Rwrz81gJWTz\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype2\",\"type\":\"h4\"},{\"id\":\"pcrdwoJVGkxxnriZC3WKu\",\"children\":[{\"id\":\"Fkg2o4SqoREJCCV_3PGBK\",\"children\":[{\"text\":\"-(int) StartRoomSharing:(NSString *)targetRoomID targetOpenID:(NSString *)targetOpenID authBuffer:(NSData*)authBuffer;\"}],\"type\":\"code-line\"},{\"id\":\"yqzHwuOBrfo3rSs5pP_Il\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"},{\"id\":\"caSlfNX7gR6KuKgXtw51d\",\"children\":[{\"text\":\"-(int) StopRoomSharing;\"}],\"type\":\"code-line\"},{\"id\":\"dTWI9rE41pG2qpQbO6EIv\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"KnwsnZL0vvhdR09dbH7Vm\",\"children\":[{\"text\":\"Type descriptions\"}],\"nodeId\":\"type-descriptions2\",\"type\":\"h4\"},{\"id\":\"c4pov5Iynoxcyrr4SKUs2\",\"children\":[{\"id\":\"dxJMYp8YV9suV7GX-Aa5V\",\"children\":[{\"id\":\"8Tcb-yycA1t7t4hhu--yR\",\"children\":[{\"id\":\"8qTtFKQMFAov165sQKshp\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Ax2e8cLO3tKVWq5EpveEs\",\"children\":[{\"id\":\"Upf7KZ2U30_rVuQRla922\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"QFjNqwq0Gr0iXYLqnPJ0t\",\"children\":[{\"id\":\"yw5LN8ZtPmNv5cCP4UbtG\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"KP52bPBhnydltg1gh94bO\",\"children\":[{\"id\":\"vMrsTJOWnkg7g5COUtZLm\",\"children\":[{\"id\":\"7yuU6odXuDea4ItY5kUnP\",\"children\":[{\"id\":\"Z_73sZ7SjqDffp18FfCrZ\",\"children\":[{\"text\":\"targetRoomID\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"eSudjzy18eADG1Yd6S2Fi\",\"children\":[{\"id\":\"90wcGhbw3wPhe4pjo35u5\",\"children\":[{\"id\":\"x_43y6sMg_brDPrT9Se-f\",\"children\":[{\"text\":\"NSString *\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"EVEtb4JQIu4NzqwFKFQk3\",\"children\":[{\"id\":\"FQBx3gim6YTjGgvL6UG27\",\"children\":[{\"id\":\"vZoS7-_SDgcLaFompqjpK\",\"children\":[{\"text\":\"ID of the room to connect mic\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"U1PJARhV3yHpe9ZeKeLOo\",\"children\":[{\"id\":\"MvQH6cwLndwtmeg_ck0Cd\",\"children\":[{\"id\":\"zPqQ6eqWVsPRZrfTSRmcw\",\"children\":[{\"id\":\"eek1rnKrOJ9MEmrWG7r5h\",\"children\":[{\"text\":\"targetOpenID\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"bp6wQWo7FXUYvTBG9_bS_\",\"children\":[{\"id\":\"L8RKI3NGLqbMMKqyb-cAP\",\"children\":[{\"id\":\"LyzY1x-HzBtRs3yZpQIJ3\",\"children\":[{\"text\":\"NSString *\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"y5Ug2owSBlI7ZN_xQUkwk\",\"children\":[{\"id\":\"t84gKuDJWIaYkNDBqDr72\",\"children\":[{\"id\":\"l2SbJawhZwQK8YppXXiEY\",\"children\":[{\"text\":\"The target OpenID to connect mic\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"zp-tAg6Si3AjPJSYF9GjB\",\"children\":[{\"id\":\"Zh8YoXLfFfTRqdzge5ATj\",\"children\":[{\"id\":\"8z0iWiw4z_6YRklSr4WbD\",\"children\":[{\"id\":\"vdFFbNCZD9nns-IEh6RB8\",\"children\":[{\"text\":\"authBuffer\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"JSjK92LQghzx-llM5_-Td\",\"children\":[{\"id\":\"1R6PrCKJXNOKGnevFUDQA\",\"children\":[{\"id\":\"kp1MeLgd4K5kJpbBKWZf0\",\"children\":[{\"text\":\"NSData*\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"jWnVq_5zfdhnSfjGHdWKS\",\"children\":[{\"id\":\"VzBcJDLoxqcpJMIud2tKU\",\"children\":[{\"id\":\"ZC-I-fYXUDuOsYppOAOxU\",\"children\":[{\"text\":\"Reserved flag. You just need to enter NULL.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[22,18,60],\"widthMode\":\"percentage\"},{\"id\":\"ASpgJets-xeStUVllzER9\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code12\",\"type\":\"h4\"},{\"id\":\"gHWAuLU3P1tckISQIwvjL\",\"children\":[{\"id\":\"Xsdw9-M7LojOyCkPR6-k1\",\"children\":[{\"text\":\"- (IBAction)shareRoom:(id)sender {\"}],\"type\":\"code-line\"},{\"id\":\"56HXXKsK4rwC2tJFJDcMg\",\"children\":[{\"text\":\" if(_shareRoomSwitch.isOn){\"}],\"type\":\"code-line\"},{\"id\":\"juf5SVF4fNwx10RxH7vXi\",\"children\":[{\"text\":\" [[[ITMGContext GetInstance]GetRoom]StartRoomSharing:_shareRoomID.text targetOpenID:_shareOpenID.text authBuffer:NULL];\"}],\"type\":\"code-line\"},{\"id\":\"O4BT6u0MfTj1TDNGIVFfO\",\"children\":[{\"text\":\" }else{\"}],\"type\":\"code-line\"},{\"id\":\"9hdine799eeNK4yeBfBSZ\",\"children\":[{\"text\":\" [[[ITMGContext GetInstance]GetRoom]StopRoomSharing];\"}],\"type\":\"code-line\"},{\"id\":\"s5dJqoy_SSWt9zcgc6_3X\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"ZdoIgDDmeiHmXxaUPAtcv\",\"children\":[{\"text\":\"}\"}],\"type\":\"code-line\"},{\"id\":\"W9s5PEX1UVzdGd8Gh_U5l\",\"children\":[{\"text\":\"}\"}],\"type\":\"code-line\"},{\"id\":\"TdxkyU2-XjLhToMPtLv5_\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"QWdpxWPje1zH8GNiKQy2h\",\"children\":[{\"text\":\"Notifications of member room entry and speaking status\"}],\"nodeId\":\"notifications-of-member-room-entry-and-speaking-status\",\"type\":\"h3\"},{\"id\":\"RtAaFcDTQFAvRRajVxLZd\",\"children\":[{\"text\":\"This API is used to obtain the user speaking in the room and display it in the UI, and to send a notification when someone entering or exiting the room.\"}],\"type\":\"p\"},{\"id\":\"XByCKK8Z8u16rBgOkZsrh\",\"children\":[{\"text\":\"Notification for this event will be sent only when the status changes. To get member status in real time, cache the notification when it is received at a higher layer. The event message is \"},{\"code\":1,\"text\":\"ITMG_MAIN_EVNET_TYPE_USER_UPDATE\"},{\"text\":\", where the data contains \"},{\"code\":1,\"text\":\"event_id\"},{\"text\":\" and \"},{\"code\":1,\"text\":\"user_list\"},{\"text\":\". The event message will be identified in the \"},{\"code\":1,\"text\":\"OnEvent\"},{\"text\":\" function.\\nNotifications for audio events are subject to a threshold, and a notification will be sent only when this threshold is exceeded. The notification \\\"A member has stopped sending audio packets” will be sent if no audio packets are received in more than two seconds. This event only returns the member speaking event, but not the specific volume level. If you need the specific volume levels of members in the room, use the \"},{\"code\":1,\"text\":\"GetVolumeById\"},{\"text\":\" API.\"}],\"type\":\"p\"},{\"id\":\"DYXenQkiwfLsWL-gqb0yq\",\"children\":[{\"id\":\"9yYjVSmMpHQu-uG-wWBz-\",\"children\":[{\"id\":\"rjz93Mm6zyN_g-FO8d1p_\",\"children\":[{\"id\":\"UfCFCmdIYpKOD90_QbWGj\",\"children\":[{\"text\":\"event_id\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"TNZ3KCwtWBodDCjXeYj_U\",\"children\":[{\"id\":\"2GTSE3gCRf1cyKZ1PxSrk\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"4sLO2w1yJenCVongcpAOJ\",\"children\":[{\"id\":\"zJ6SS_EbU2EpLca0S_d0Z\",\"children\":[{\"text\":\"Maintenance\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"1EbZqLloxXwIQiUd0gidV\",\"children\":[{\"id\":\"8aMx9dmjCX9N5t3CTJsNz\",\"children\":[{\"id\":\"zdftUWHqfgiUDvxIeNZIt\",\"children\":[{\"id\":\"LEb3-PzwIf-Vw9dkxhzM5\",\"children\":[{\"text\":\"ITMG_EVENT_ID_USER_ENTER\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"mdlFQy5pY02z5ZpQC0j03\",\"children\":[{\"id\":\"ZjyaLwo2-btgt7lqyC5gm\",\"children\":[{\"id\":\"UwcAC-5XSWv0VgVHGlbQU\",\"children\":[{\"text\":\"A member enters the room\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"BlAivnaEdfR3PI1sMCiI5\",\"children\":[{\"id\":\"lEiuow8pUiSfQ0LTo-9hA\",\"children\":[{\"id\":\"i_emFZqnFh2pfxBpM7PBz\",\"children\":[{\"text\":\"Member list\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"CHnGj7Hgbxk36Kqowva4_\",\"children\":[{\"id\":\"_Ypo4AkqYzfKQDgTQf3Z8\",\"children\":[{\"id\":\"OESnO3grpX_c2EGfTxvg9\",\"children\":[{\"id\":\"VJl10Claf-LJbK3jHcgzi\",\"children\":[{\"text\":\"ITMG_EVENT_ID_USER_EXIT\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"b5rmzvoZICnOooMzJBSkl\",\"children\":[{\"id\":\"Vew1P996W1ZwMFcjNm0Pk\",\"children\":[{\"id\":\"J7bC-j_Q60l4THagyoz8I\",\"children\":[{\"text\":\"A member exits the room\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"bRTUwMCQAAX0aRurnI0V4\",\"children\":[{\"id\":\"g-PzivwDzMgL3ELWCFW-y\",\"children\":[{\"id\":\"HxZRpNlhv48AmmdPWzQ01\",\"children\":[{\"text\":\"Member list\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"PKokyanW2D4gD1KBtUmdk\",\"children\":[{\"id\":\"YZeUY9EypQLVGWWGJ3hEW\",\"children\":[{\"id\":\"EGUf1mWdusBe4CEKHUoUy\",\"children\":[{\"id\":\"-J_ew1crAU0fF8pNzlaDO\",\"children\":[{\"text\":\"ITMG_EVENT_ID_USER_HAS_AUDIO\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"_dyHA8DhR9nIi0VeOlPoC\",\"children\":[{\"id\":\"RSmrzXt-CuWEzb7DqmUA4\",\"children\":[{\"id\":\"oaF6R5OF_WMO4nfdJ4E0j\",\"children\":[{\"text\":\"A member sends audio packets. This event can be used to determine whether a user is speaking and display the voiceprint effect. It can be called together with getRecvStreamLevel.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"g-l1Nos30gmhe04ooea93\",\"children\":[{\"id\":\"El6QCpnkoxZND-Z5anOMM\",\"children\":[{\"id\":\"nioIijdfxg22c3gjN6bcU\",\"children\":[{\"text\":\"Chat member list\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"BxB4_7WW_1MUjl0CTi8h8\",\"children\":[{\"id\":\"wpLY45vIOFXvCjSLscKvR\",\"children\":[{\"id\":\"mHcvQDL0mRB-b_Wck0Ysz\",\"children\":[{\"id\":\"DutUX6p6vX8IQrUzJroAT\",\"children\":[{\"text\":\"ITMG_EVENT_ID_USER_NO_AUDIO\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"VvbXQPCu2wzSPuvkG42eI\",\"children\":[{\"id\":\"2CuS7XE3Vqm9fSVLoWDFm\",\"children\":[{\"id\":\"nGcXdGb3lUAIUwCiotHXk\",\"children\":[{\"text\":\"A member stops sending audio packets\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"MORD1lDT830cvyXaINrY4\",\"children\":[{\"id\":\"PgLti95eqKDM5YqzfqrOb\",\"children\":[{\"id\":\"i3aUYyqb7zCx2gkHvBleQ\",\"children\":[{\"text\":\"Chat member list\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[30,55,15],\"widthMode\":\"percentage\"},{\"id\":\"zJ6wW-G_745H5tlNaxsnG\",\"children\":[{\"text\":\"Room member maintenance flowchart\"}],\"nodeId\":\"room-member-maintenance-flowchart\",\"type\":\"h4\"},{\"type\":\"p\",\"children\":[{\"text\":\"\"},{\"id\":\"zNuS5hrUKvsW2-1e2LJeR\",\"alt\":\"\",\"children\":[{\"text\":\"\"}],\"inline\":true,\"type\":\"image\",\"url\":\"https://cloudcache.intl.tencent-cloud.com/cms/backend-cms/26f242d3b34811ee9939525400461a83.png\",\"naturalSize\":[521,410],\"size\":[521,410]},{\"text\":\"\"}],\"id\":\"1CKHecB9q277_acB0BeaX\"},{\"id\":\"8H-_SeD4K75lfmiCfgzs6\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code13\",\"type\":\"h4\"},{\"id\":\"Bh7u_1NAiYugxRBAhfSf3\",\"children\":[{\"id\":\"0l8UmDOX80MCjpP9HV5KJ\",\"children\":[{\"text\":\"-(void)OnEvent:(ITMG_MAIN_EVENT_TYPE)eventType data:(NSDictionary *)data{\"}],\"type\":\"code-line\"},{\"id\":\"aAh2nq4yr2HAkIAksf-Mn\",\"children\":[{\"text\":\" ITMG_EVENT_ID_USER_UPDATE event_id=((NSNumber*)[data objectForKey:@\\\"event_id\\\"]).intValue;\"}],\"type\":\"code-line\"},{\"id\":\"1d3iGwoqbRKxJ-XGPasFm\",\"children\":[{\"text\":\" NSMutableArray* uses = [NSMutableArray arrayWithArray: [data objectForKey:@\\\"user_list\\\"]];\"}],\"type\":\"code-line\"},{\"id\":\"OmggVDKm2Xtz52XRVvoOm\",\"children\":[{\"text\":\" NSLog(@\\\"OnEvent:%lu,data:%@\\\",(unsigned long)eventType,data);\"}],\"type\":\"code-line\"},{\"id\":\"Rzde8UmHv_0UWK6dF5MD7\",\"children\":[{\"text\":\" switch (eventType) {\"}],\"type\":\"code-line\"},{\"id\":\"_-vnSlO2v6zquM7HXBkC4\",\"children\":[{\"text\":\" case ITMG_MAIN_EVNET_TYPE_USER_UPDATE:\"}],\"type\":\"code-line\"},{\"id\":\"ZX_u7OmxELivl_D0XqhE-\",\"children\":[{\"text\":\" {\"}],\"type\":\"code-line\"},{\"id\":\"KLwYshNZkBl60k0rgd9iG\",\"children\":[{\"text\":\" // Process\"}],\"type\":\"code-line\"},{\"id\":\"vU_lt0NQz9Ee2zr-2YF5C\",\"children\":[{\"text\":\" //Parse the parameter to get `event_id` and `user_list`\"}],\"type\":\"code-line\"},{\"id\":\"KqGb3hkJLFX1iubL1-eyk\",\"children\":[{\"text\":\" switch (eventID)\"}],\"type\":\"code-line\"},{\"id\":\"anBBcOyMGEIernU1y9Std\",\"children\":[{\"text\":\" {\"}],\"type\":\"code-line\"},{\"id\":\"jCi0NJnZ-zhUbpdGYP4qA\",\"children\":[{\"text\":\" case ITMG_EVENT_ID_USER_ENTER:\"}],\"type\":\"code-line\"},{\"id\":\"6OAKkWKoHW57HEVa7Fe0O\",\"children\":[{\"text\":\" // A member enters the room\"}],\"type\":\"code-line\"},{\"id\":\"uYavmtatH-b05TiLhSOoX\",\"children\":[{\"text\":\" break;\"}],\"type\":\"code-line\"},{\"id\":\"BrbV7zr-2MJgD8v54TvoR\",\"children\":[{\"text\":\" case ITMG_EVENT_ID_USER_EXIT:\"}],\"type\":\"code-line\"},{\"id\":\"OLgyUK18K6qq4XVeFZNc6\",\"children\":[{\"text\":\" // A member exits the room\"}],\"type\":\"code-line\"},{\"id\":\"BBHe3eKdcBvCXhwHtB8Ag\",\"children\":[{\"text\":\" break;\"}],\"type\":\"code-line\"},{\"id\":\"kniXj5Lu7c-Q8RLOQGpti\",\"children\":[{\"text\":\" case ITMG_EVENT_ID_USER_HAS_AUDIO:\"}],\"type\":\"code-line\"},{\"id\":\"2U8gC4anHZXpfHy0sY0qp\",\"children\":[{\"text\":\" // A member sends audio packets\"}],\"type\":\"code-line\"},{\"id\":\"zBUK_iy-ogv2i4kLWdfvS\",\"children\":[{\"text\":\" break;\"}],\"type\":\"code-line\"},{\"id\":\"HnNuqsng6vz9fRrq2CEAi\",\"children\":[{\"text\":\" case ITMG_EVENT_ID_USER_NO_AUDIO:\"}],\"type\":\"code-line\"},{\"id\":\"wp-iU5POs2331y9ukcr_I\",\"children\":[{\"text\":\" // A member stops sending audio packets\"}],\"type\":\"code-line\"},{\"id\":\"j5E3FCaiZSYQvXWdpQmmq\",\"children\":[{\"text\":\" break;\"}],\"type\":\"code-line\"},{\"id\":\"_EC1C4JuqehGRauQ1XKsc\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"7uPfVAYuFScGYmPTX6Tj8\",\"children\":[{\"text\":\" break;\"}],\"type\":\"code-line\"},{\"id\":\"tp22Xg1Fappw08W7OCMXE\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"HUONb16R48ssXMXhZWiOL\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"YfSLpHDKyjQR4oT6NmoV8\",\"children\":[{\"text\":\"}\"}],\"type\":\"code-line\"},{\"id\":\"LPH6sF2l2Lo-I5KM8UCjo\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"N6ZRKGPVt1rnKPuTd_6gu\",\"children\":[{\"text\":\"Data details\"}],\"nodeId\":\"data-details3\",\"type\":\"h4\"},{\"id\":\"AZTGZ09d2RCRy_MnhVlfs\",\"children\":[{\"id\":\"lkWL4ZnM7QYcLpnVo29Ez\",\"children\":[{\"id\":\"Co6-zZ7IUwp25ig1s7L9V\",\"children\":[{\"id\":\"mzZBifkEGIiYjYlysa7FR\",\"children\":[{\"text\":\"Message\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"GxZpU45jhkQSSztVTnwxC\",\"children\":[{\"id\":\"1yylsRM_oPKscjMAVUkEl\",\"children\":[{\"text\":\"Data\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"yXnje93zBP1BfZ5caJbQ9\",\"children\":[{\"id\":\"nJcJDThdypMZcliTNc7h2\",\"children\":[{\"text\":\"Sample\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"-S4p9ZhFkD1zElJ-_UpEn\",\"children\":[{\"id\":\"u8OqhXb4bhFhHHopZDuEX\",\"children\":[{\"id\":\"Pg0Q_nx0fhayaoxg6cTQO\",\"children\":[{\"id\":\"FHyFH6bI1rrx-rgg_Q6Bz\",\"children\":[{\"text\":\"ITMG_MAIN_EVNET_TYPE_USER_UPDATE\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"t1lJUgqm3fDt55ATIwsQ6\",\"children\":[{\"id\":\"tUHZJvcOxyw1iSjwB12zs\",\"children\":[{\"id\":\"nbkOLPJ0clQwsG05J8dph\",\"children\":[{\"text\":\"event_id; user_list\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"M8-xoVbOGkdyKlBav5SZW\",\"children\":[{\"id\":\"5IvLaF1GVroIrMd8rrTxm\",\"children\":[{\"id\":\"h2yGTscA4RODBbDYa1EZz\",\"children\":[{\"text\":\"{\\\"event_id\\\":0,\\\"user_list\\\":\\\"\\\"}\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[48,22,30],\"widthMode\":\"percentage\"},{\"id\":\"5aAuiiNnkH1FiZqiqywUu\",\"children\":[{\"text\":\"Muting in a room\"}],\"nodeId\":\"muting-in-a-room\",\"type\":\"h3\"},{\"id\":\"tkdFk2ikX-54PsX8s1r-o\",\"children\":[{\"text\":\"This API is used to add an ID to the audio data blacklist. This operation blocks audio from someone and only applies to the local device. A returned value of \"},{\"code\":1,\"text\":\"0\"},{\"text\":\" indicates the call is successful. Assume that users A, B, and C are all speaking using their mic in a room: \"}],\"type\":\"p\"},{\"id\":\"MC9zhogJp8Aq5NIA_n6eq\",\"children\":[{\"text\":\"If A blocks C, A can only hear B;\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"V-sBsBTvoKQoQdxH83xH1\",\"children\":[{\"text\":\"If B blocks neither A nor C, B can hear both of them;\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"msITj90rL4ohOs252m6tp\",\"children\":[{\"text\":\"If C blocks neither A nor B, C can hear both of them.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"J8rFNUYFExWWKR1FNQn-l\",\"children\":[{\"text\":\"This API is suitable for scenarios where a user is muted in a room.\"}],\"type\":\"p\"},{\"id\":\"Ogf4bzvoDyhmGf_ajsVST\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\"function-prototype12\",\"type\":\"h4\"},{\"id\":\"Ud-EkU0hUfsnMIYEz6sm0\",\"children\":[{\"id\":\"lxepr49zuborBOXo0dZwz\",\"children\":[{\"text\":\"ITMGContext GetAudioCtrl -(QAVResult)AddAudioBlackList:(NSString*)openID;\"}],\"type\":\"code-line\"},{\"id\":\"aaFPKylgGXqGpfue5Jpg2\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"1WQL1qRaJJCIpka3F_khw\",\"children\":[{\"id\":\"jcXQh1kDjS6uRCldXi922\",\"children\":[{\"id\":\"Pqij2-lP_0XPrL8auA0ik\",\"children\":[{\"id\":\"yn0r_zjb8t3Hkw9qgFM9_\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"mctFnoX_wTj4agtdd6uNM\",\"children\":[{\"id\":\"oLF15m1au3AttGqBmjAvG\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"5FGrRPqvpaCNr9_MPqYiQ\",\"children\":[{\"id\":\"E0nMkTgWknJdV-CknrK_4\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"45lLDOmldMfBVfdUaufdj\",\"children\":[{\"id\":\"iRqAm2e_rpR_1jOd0sFbk\",\"children\":[{\"id\":\"vnNinMPnjFsl7NyyKWN7v\",\"children\":[{\"id\":\"FrZkm3OSviJc7cT2WYwHs\",\"children\":[{\"text\":\"openId\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"mBuhOL2by9i6cJGD8Wb0T\",\"children\":[{\"id\":\"goQBvDdPHVkI5YoKstDe7\",\"children\":[{\"id\":\"B4Gibj_kZI9cYHUXigqqf\",\"children\":[{\"text\":\"NSString\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Fw7X5DYLVQgQYNpBBIhY4\",\"children\":[{\"id\":\"d4QwIDKlpoTPf8DQtPjdZ\",\"children\":[{\"id\":\"EHuJqkPEjndS_UWkOA6YR\",\"children\":[{\"text\":\"ID to be blocked openid\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[26,24,50],\"widthMode\":\"percentage\"},{\"id\":\"HpOkpcTUvL1-Qqx9BTcX2\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code14\",\"type\":\"h4\"},{\"id\":\"CnjGMqliQqUotr5vLpqvW\",\"children\":[{\"id\":\"PNYTx23aq5nXdfITMkEtX\",\"children\":[{\"text\":\"[[[ITMGContext GetInstance]GetAudioCtrl ] AddAudioBlackList[id]];\"}],\"type\":\"code-line\"},{\"id\":\"thtlPpDD4BByHSywAnsgO\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"p3eqt6qfy7n4s1Yv0_4QV\",\"children\":[{\"text\":\"Unmuting\"}],\"nodeId\":\"unmuting\",\"type\":\"h3\"},{\"id\":\"qWaDBO1ybEhuqYwhbQJGy\",\"children\":[{\"text\":\"This API is used to remove an ID from the audio data blocklist. A returned value of \"},{\"code\":1,\"text\":\"0\"},{\"text\":\" indicates the call is successful.\"}],\"type\":\"p\"},{\"id\":\"aSkqtGGH522lCigf4aMGS\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\"function-prototype13\",\"type\":\"h4\"},{\"id\":\"veIGec3WDYJ9aip0HZgx9\",\"children\":[{\"id\":\"6mvndb0dQgT52DF1A3HiR\",\"children\":[{\"text\":\"-(QAVResult)RemoveAudioBlackList:(NSString*)openID;\"}],\"type\":\"code-line\"},{\"id\":\"j-XQLc4SSVnItbJTJnGqe\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"vx8yWwVDFb71ugRRdHbCr\",\"children\":[{\"id\":\"VK8TmqYmCYV0PaRqilo3Y\",\"children\":[{\"id\":\"Nc8-5-ysTX6a2mb9_Aac9\",\"children\":[{\"id\":\"t0L4ri6yvdmcx3k7VejMJ\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"RcRqP0XnXLPSOEz6GV5KC\",\"children\":[{\"id\":\"71mO5TeLsff3jBabRiZkX\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"9z8_rXD2Wkds4uTvNuE7w\",\"children\":[{\"id\":\"pWDcT5XCi-NHWUDGgxKgc\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"iPtY-0kDtZAMKTxP3_hVQ\",\"children\":[{\"id\":\"jHwoP4IHdOFIgEr7ForhK\",\"children\":[{\"id\":\"EY5dAHBJyi7JBVLcz--s0\",\"children\":[{\"id\":\"TSJfnaR_UAzX4uNZikZu9\",\"children\":[{\"text\":\"openId\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"XV7U4BMDo3tLo9AY407jY\",\"children\":[{\"id\":\"E6PetiXOd8cmznWYlgK2w\",\"children\":[{\"id\":\"hwRFtpjBxMUCKkwK47fYa\",\"children\":[{\"text\":\"NSString\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"acW6cENxVIKlGIj7lWylM\",\"children\":[{\"id\":\"_A_XgB95sPfj29v4MSUho\",\"children\":[{\"id\":\"-GwdjhuA6ys_baNYm0saG\",\"children\":[{\"text\":\"ID to be unblocked openid\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[25,23,52],\"widthMode\":\"percentage\"},{\"id\":\"pM9Zn1ojsI4anh3_wbMUt\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code15\",\"type\":\"h4\"},{\"id\":\"IlIg1ob_UbfhsAW0sOMT2\",\"children\":[{\"id\":\"tAzpfAZmHtwSb3o_HpnH9\",\"children\":[{\"text\":\"[[[ITMGContext GetInstance]GetAudioCtrl ] RemoveAudioBlackList[openId]];\"}],\"type\":\"code-line\"},{\"id\":\"ckKmj5PRuTmIr08MRU9EL\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"MjEtw6Z9fshTwLvY0EUWL\",\"children\":[{\"text\":\"Voice Chat Audio APIs\"}],\"nodeId\":\"voice-chat-audio-apis\",\"type\":\"h2\"},{\"type\":\"p\",\"children\":[{\"text\":\"\"},{\"id\":\"Y37I9gX4o3aT3NsHjDWOt\",\"alt\":\"Image\",\"children\":[{\"text\":\"\"}],\"inline\":true,\"type\":\"image\",\"url\":\"https://cloudcache.intl.tencent-cloud.com/cms/backend-cms/26f72f98b34811ee9fd6525400bb593a.png\",\"naturalSize\":[1039,300],\"size\":[934,269]},{\"text\":\"\"}],\"id\":\"qj8mToLIZ1ycEX0gChsVQ\"},{\"id\":\"ZHHnXG5da5_FkRZgrbKyh\",\"children\":[{\"text\":\"Notes on voice chat audio connection\"}],\"nodeId\":\"notes-on-voice-chat-audio-connection\",\"type\":\"h3\"},{\"id\":\"R_efq2sDw26inu5erK2hm\",\"children\":[{\"text\":\"The voice chat APIs can only be called after SDK initialization and room entry.\\nWhen Enable/Disable Mic/Speaker is clicked on the UI, the following practices are recommended:\"}],\"type\":\"p\"},{\"id\":\"QsmyjghE7kSy9rVB33vTq\",\"children\":[{\"b\":1,\"text\":\"For most game applications, it is recommended to call the \"},{\"b\":1,\"code\":1,\"text\":\"EnableMic\"},{\"b\":1,\"text\":\" and \"},{\"b\":1,\"code\":1,\"text\":\"EnableSpeaker\"},{\"b\":1,\"text\":\" APIs\"},{\"text\":\", which is equivalent to calling the \"},{\"code\":1,\"text\":\"EnableAudioCaptureDevice/EnableAudioSend\"},{\"text\":\" and \"},{\"code\":1,\"text\":\"EnableAudioPlayDevice/EnableAudioRecv\"},{\"text\":\" APIs.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"hbx6C7p5QMktdOcJ3j7VZ\",\"children\":[{\"text\":\"For other mobile applications (such as social networking applications), enabling/disabling a capturing device will restart both capturing and playback devices. If the application is playing back background music, it will also be interrupted. Playback will not be interrupted if the mic is enabled/disabled through control of upstreaming/downstreaming. \"},{\"b\":1,\"text\":\"Calling method: call \"},{\"b\":1,\"code\":1,\"text\":\"EnableAudioCaptureDevice(true)\"},{\"b\":1,\"text\":\" and \"},{\"b\":1,\"code\":1,\"text\":\"EnableAudioPlayDevice(true)\"},{\"b\":1,\"text\":\" once after room entry, and call \"},{\"b\":1,\"code\":1,\"text\":\"EnableAudioSend/Recv\"},{\"b\":1,\"text\":\" to send/receive audio streams when Enable/Disable Mic is clicked\"},{\"text\":\".\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"cyezop0e0uPOyGK5w5xue\",\"children\":[{\"text\":\"For more information on how to release only a capturing or playback device, please see the \"},{\"code\":1,\"text\":\"EnableAudioCaptureDevice\"},{\"text\":\" and \"},{\"code\":1,\"text\":\"EnableAudioPlayDevice\"},{\"text\":\".\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"H4i4KlLLuNrjhsx4hWig2\",\"children\":[{\"text\":\"Call the \"},{\"code\":1,\"text\":\"pause\"},{\"text\":\" API to pause the audio engine and call the \"},{\"code\":1,\"text\":\"resume\"},{\"text\":\" API to resume the audio engine.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"D2unQrhmurUg481xCtDJQ\",\"children\":[{\"text\":\"Voice chat audio APIs\"}],\"nodeId\":\"voice-chat-audio-apis2\",\"type\":\"h3\"},{\"id\":\"JKCDIfoyctXmywqi6--uw\",\"children\":[{\"id\":\"pfzi67hAYo1Zo87O9AraU\",\"children\":[{\"id\":\"gMya8zuT1urHBwsRIUWOM\",\"children\":[{\"id\":\"-MolRKKLHC_5nSxVfvT_U\",\"children\":[{\"text\":\"API\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"xXNCo4pnw_alGDfJTXtww\",\"children\":[{\"id\":\"dx-ZZx0pT6QQ01AGTd6o5\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"5MjBRzQ4qwA2zPq4u-ubM\",\"children\":[{\"id\":\"cjBI-cXXDAONnnB5kV_lC\",\"children\":[{\"id\":\"x8R9Jw7otG9QW_-HeIC__\",\"children\":[{\"id\":\"7ROgDamjfSCjDJk4qu0Mo\",\"children\":[{\"text\":\"EnableMic\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"3CPQ8nQydLHEavulkeL52\",\"children\":[{\"id\":\"85hLX5n4JT_njKXcouX2O\",\"children\":[{\"id\":\"awQ-SqjK3mLxP0sh1SdQs\",\"children\":[{\"text\":\"Enables/disables mic\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"C5Mq0Ft6csoGHyqALUpzZ\",\"children\":[{\"id\":\"bj7agVlQq0GWT5ZYE-agQ\",\"children\":[{\"id\":\"QgrXNJ0MQ8TMaFzgYaxD3\",\"children\":[{\"id\":\"Z0J7zoi6tMg-T26PduiHc\",\"children\":[{\"text\":\"GetMicState\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"RqV0J7X3xKvUhVEMH0NRS\",\"children\":[{\"id\":\"Qc5S3muxcyC9RPiujRE_D\",\"children\":[{\"id\":\"zc7pJKbTnSMCkeN2NR0Ip\",\"children\":[{\"text\":\"Gets mic status\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"xUF4GhLeSPw7hRo6n0X2r\",\"children\":[{\"id\":\"476WpptAi1KRv1tPtjGgN\",\"children\":[{\"id\":\"7befxkyW4-_hbb_7gt1nJ\",\"children\":[{\"id\":\"FpyWJQFUTLQDQcIdiwLkq\",\"children\":[{\"text\":\"EnableAudioCaptureDevice\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"rQmlU-0cgwuE-cRLU9B-Y\",\"children\":[{\"id\":\"eJ5vThpHTdgaXFN06G_OA\",\"children\":[{\"id\":\"bELV2y7zaX4BNs-J_qWUU\",\"children\":[{\"text\":\"Enables/disables capturing device\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"jyN4jhsxF_sKef070pxDY\",\"children\":[{\"id\":\"fZIfp4dXAq1ZG_k0S9XX_\",\"children\":[{\"id\":\"4ldihEDQJM70fCsebCltZ\",\"children\":[{\"id\":\"YX4pOsz_eEsjpL6vTnEK8\",\"children\":[{\"text\":\"IsAudioCaptureDeviceEnabled\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"7UQXIF9VMJYpTbG8WJcQV\",\"children\":[{\"id\":\"KlMwWwtwzoOoc9-mbpOZd\",\"children\":[{\"id\":\"3yPuWFhSJ2rQrZZOHKj6g\",\"children\":[{\"text\":\"Gets capturing device status\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"-mAH1rIgQKjw00t29Dl5k\",\"children\":[{\"id\":\"2fpNYU-Rsnob4wFOHTe47\",\"children\":[{\"id\":\"5mffStqCwx4fNnNgBjwoa\",\"children\":[{\"id\":\"JbcTPIYrQufQ3hcQXElo5\",\"children\":[{\"text\":\"EnableAudioSend\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"SfNMf-voWZWVgpQVLSEAW\",\"children\":[{\"id\":\"ffPWVuMMYRXQLPl7QzGEX\",\"children\":[{\"id\":\"yX5Tg5Dbps0o5e4q60f_8\",\"children\":[{\"text\":\"Enables/disables audio upstreaming\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"Bg6nxRu2iFDp9qLViunCV\",\"children\":[{\"id\":\"IsI9X9G5FpeMcuovtbxk0\",\"children\":[{\"id\":\"TUgkHk6XBpZxkvR0vv6mO\",\"children\":[{\"id\":\"I1hjopPNMEEuqh9Yv_Ldi\",\"children\":[{\"text\":\"IsAudioSendEnabled\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"jAjWvI3NCgCHo2uBWEAno\",\"children\":[{\"id\":\"z9cC3-fqJWsuOYAZRB0kq\",\"children\":[{\"id\":\"GtsSPjwzdBdIdqiTFvW-z\",\"children\":[{\"text\":\"Gets audio upstreaming status\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"VXQW8fvaIcVtcdc-rAB6r\",\"children\":[{\"id\":\"2Y_OdLKv9n7-3MuhCigBT\",\"children\":[{\"id\":\"wj-beYBRYiPZxrQbn_OnJ\",\"children\":[{\"id\":\"K2ordwQA5vQeFXRZgnWfZ\",\"children\":[{\"text\":\"GetMicLevel\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"OOLgbSKFqjfEkNoSzMLvW\",\"children\":[{\"id\":\"0cixJk4WTFbFXMRAfG9hB\",\"children\":[{\"id\":\"DJYO4uUi9gYcsSvzXPoRz\",\"children\":[{\"text\":\"Gets real-time mic volume\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"mI6v_mQ1gqe5QBYQrgg6L\",\"children\":[{\"id\":\"1-OkYlLHJ4osDZGWsTToL\",\"children\":[{\"id\":\"PWEMk-HSGC1CAfEp-FjTd\",\"children\":[{\"id\":\"jgE889eJOvNrGmvsQmidg\",\"children\":[{\"text\":\"GetSendStreamLevel\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"wVVQoOSjohpDAKtSYsMrO\",\"children\":[{\"id\":\"W_WmIpMtNNrqpisUY8pdK\",\"children\":[{\"id\":\"23XZ8_3f1E0_j5q9VP7qr\",\"children\":[{\"text\":\"Gets real-time audio upstreaming volume\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"Z42e1y0u02i3wr-7nug4P\",\"children\":[{\"id\":\"NkHP1jjlPWbhyKHZUztAF\",\"children\":[{\"id\":\"TAtU8rQTuncgQIJJvt47E\",\"children\":[{\"id\":\"MVPKuPsWGKr4oMoS3PMeL\",\"children\":[{\"text\":\"SetMicVolume\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"lnvDz6lXr2ApUXhnO_LJb\",\"children\":[{\"id\":\"3IoZpbfQxoc-weCf0pJhR\",\"children\":[{\"id\":\"YBExxL4GDl-fQXhAdcIv_\",\"children\":[{\"text\":\"Sets mic volume\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"PLyX_4o6vLzYUvmj2321U\",\"children\":[{\"id\":\"-ynexbeEdMq75QhXp31iF\",\"children\":[{\"id\":\"GiGcnwuqq4g8Gbep5fSDG\",\"children\":[{\"id\":\"WGuUwTCKoRPrnOAuRcEqH\",\"children\":[{\"text\":\"GetMicVolume\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"62ZmRcS8DKjicr5tylB5g\",\"children\":[{\"id\":\"RteCwNsrItQswtAyonAmw\",\"children\":[{\"id\":\"d-ItjAE6PeEumJHoLzkHO\",\"children\":[{\"text\":\"Gets mic volume\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"VwCFxQuOrneZtCGH_B-S-\",\"children\":[{\"id\":\"enEXgPixrTNKmwZ_UhZof\",\"children\":[{\"id\":\"PnFIODsuCsxIhawUNM-6I\",\"children\":[{\"id\":\"K-rJ85ga4MjxUVgCeQw-h\",\"children\":[{\"text\":\"EnableSpeaker\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"R-k3IYlufbrNgZzvJRW6M\",\"children\":[{\"id\":\"hsLS5Wm0aQiM4yQk8W4NF\",\"children\":[{\"id\":\"yrKJZ520expY6lPhCVqFv\",\"children\":[{\"text\":\"Enables/disables speaker\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"Z8VRjMIBmC6upOXa2vm5z\",\"children\":[{\"id\":\"ge1VTqy2Kkv_xi_Cp1v6_\",\"children\":[{\"id\":\"QT2iBuA-XnFyNDQAdDpjs\",\"children\":[{\"id\":\"gf6L3JumhtAbYgJPav0XC\",\"children\":[{\"text\":\"GetSpeakerState\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"grwgbdhFKR04sGqx6TXxu\",\"children\":[{\"id\":\"yhF4wnj1FmuQmDqIToZ68\",\"children\":[{\"id\":\"roaORngc9dTaIh3_-peyb\",\"children\":[{\"text\":\"Gets speaker status\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"gqVMhQiVZRoLSfgvasiMD\",\"children\":[{\"id\":\"iG4_PLhqTkqlct8tg5T-S\",\"children\":[{\"id\":\"r6M6mAl27Zu7GL84_c6TH\",\"children\":[{\"id\":\"WhkABfUeffOXpmBL3VU3z\",\"children\":[{\"text\":\"EnableAudioPlayDevice\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ktPP5jZF5LISxycG0E1hW\",\"children\":[{\"id\":\"pjs3xlUS3BfIjNTOqfouM\",\"children\":[{\"id\":\"q8g07oK5ekgVyJNUlbf75\",\"children\":[{\"text\":\"Enables/disables playback device\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"zGiCJMtI45MP9Nh2JRqKt\",\"children\":[{\"id\":\"hNypZjpx0nVLVSiXbCLMR\",\"children\":[{\"id\":\"y97cK8HG5xrVYvqDus-7u\",\"children\":[{\"id\":\"lkMjbPX0NvkfQAwKAw_49\",\"children\":[{\"text\":\"IsAudioPlayDeviceEnabled\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"P9TXOt6gxdeVt-ZNqoa_B\",\"children\":[{\"id\":\"rFMutU52laI6M3SelM_A8\",\"children\":[{\"id\":\"fxkp4dg0B7n_15Ass5NjV\",\"children\":[{\"text\":\"Gets playback device status\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"jIvsUNWIz8SyjMEl0GGzh\",\"children\":[{\"id\":\"f6E7ED-QzizHXEA5mWsAr\",\"children\":[{\"id\":\"KF9SB6SJYZCs_rOszCOkG\",\"children\":[{\"id\":\"U3Hh-XLW07T94ZB84CvOu\",\"children\":[{\"text\":\"EnableAudioRecv\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Z9ytX6tLU0eGQygXjVj4j\",\"children\":[{\"id\":\"g19V2wvv_HwllFgcNpl4P\",\"children\":[{\"id\":\"C5JfloX23qxbhhugGzENk\",\"children\":[{\"text\":\"Enables/disables audio downstreaming\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"-UwD88Td43mhNLTVxgNnN\",\"children\":[{\"id\":\"NGZLO5YrDJpgO4NmnYr_z\",\"children\":[{\"id\":\"TA6H6a_B-1qmyrOu4bCdO\",\"children\":[{\"id\":\"ZNdZsmNorWxqfJmnCV9YP\",\"children\":[{\"text\":\"IsAudioRecvEnabled\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Tam71wFpClbkGZGQXmans\",\"children\":[{\"id\":\"1X3NuHJC63Sjtc5upwqff\",\"children\":[{\"id\":\"PdMG_RzeCiNY_jCH66exb\",\"children\":[{\"text\":\"Gets audio downstreaming status\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"uvGrqQwa2YaZVg5ACw-uA\",\"children\":[{\"id\":\"CSUDXoLDE_DbpjcY1J44P\",\"children\":[{\"id\":\"8_eqB8AiUZEoje9omRDZN\",\"children\":[{\"id\":\"Eba1TazlfwmossjXacu-b\",\"children\":[{\"text\":\"GetSpeakerLevel\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"3bRZQTnFTKaGY93xiZjfh\",\"children\":[{\"id\":\"gOuKyPj5MMXuyOApbLQV-\",\"children\":[{\"id\":\"2NraIYAD8GRIIKmUHr1_i\",\"children\":[{\"text\":\"Gets real-time speaker volume\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"qWTI7oky5rUifLA__Z5Xm\",\"children\":[{\"id\":\"iZfcN0FK0ah-JhmYodjTZ\",\"children\":[{\"id\":\"TOOMrBgui99Tmhjzxd5v0\",\"children\":[{\"id\":\"LekR2ndvGjL1XfKYsSyTP\",\"children\":[{\"text\":\"GetRecvStreamLevel\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"WKvw74WdtlquAaSsWjkeA\",\"children\":[{\"id\":\"Dgyoh3UIksxzdeBYCuBsZ\",\"children\":[{\"id\":\"VHwAH9kMpcU-lKtZB2Oev\",\"children\":[{\"text\":\"Gets real-time downstreaming audio levels of other members in room\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"Ka8lKpide4H-bSv3yVsxO\",\"children\":[{\"id\":\"jWQgdBim-7B4-n2R0hZw0\",\"children\":[{\"id\":\"EuGOejP3hfsqTAyXIJabt\",\"children\":[{\"id\":\"rXDKzreAMvioOqYoMOAzH\",\"children\":[{\"text\":\"SetSpeakerVolume\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"7d7NVVNeNJnsu_MYFN1JV\",\"children\":[{\"id\":\"-rCM_aIRP3H3fpsusA8Ai\",\"children\":[{\"id\":\"lseBXjEVMJS7iKKFRLHBP\",\"children\":[{\"text\":\"Sets speaker volume\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"j6N3P9OEqxTee9ThoGRUW\",\"children\":[{\"id\":\"buCG1t5izrPRZakD1Lz8f\",\"children\":[{\"id\":\"sNMP3iPljQV9p9kv_qZ9k\",\"children\":[{\"id\":\"MHRyByX7UtUkSdSs0rin8\",\"children\":[{\"text\":\"GetSpeakerVolume\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"gVW1WQIosB8vreq7zZMtj\",\"children\":[{\"id\":\"NqbjqGdkV7u0KassuCxmS\",\"children\":[{\"id\":\"L-ZtkC0wdOo0omjQ3RZSm\",\"children\":[{\"text\":\"Gets speaker volume\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"gjE0hlE93gQyvjNg0kLw5\",\"children\":[{\"id\":\"JeLOWmT_x-TS92q-ekPGW\",\"children\":[{\"id\":\"YDcNkkrNrAG0_15jZoMQ4\",\"children\":[{\"id\":\"XAnPWDxJeryOFrJRd7ui_\",\"children\":[{\"text\":\"EnableLoopBack\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"u9Jb0ffb_mPpHkL1XDPsq\",\"children\":[{\"id\":\"rw6lHbIToitn9WMsdnKOK\",\"children\":[{\"id\":\"17rBi1szocUDyy8tYFFhL\",\"children\":[{\"text\":\"Enables/disables in-ear monitoring\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[32,68],\"widthMode\":\"percentage\"},{\"id\":\"omS6w9dZ24mgzElJRx1UZ\",\"children\":[{\"text\":\"Voice Chat Capturing APIs\"}],\"nodeId\":\"voice-chat-capturing-apis\",\"type\":\"h2\"},{\"id\":\"t_5Ta8aWfQD9I4Wzt6xcS\",\"children\":[{\"id\":\"Da6CGLwRgTyaSlVhF2mID\",\"children\":[{\"text\":\"Enabling or disabling the microphone\"}],\"nodeId\":\"EnableMic\",\"type\":\"p\"}],\"nodeId\":\".3Ca-id.3D.22enablemic.22.3Eenabling-or-disabling-the-microphone.3C.2Fa.3E\",\"type\":\"h3\"},{\"id\":\"tE1lgijAIhRtLiryehLe5\",\"children\":[{\"text\":\"This API is used to enable/disable the mic. Mic and speaker are not enabled by default after room entry.\\n\"},{\"b\":1,\"text\":\"If accompaniment is used, please call this API as instructed in \"},{\"id\":\"Z9cZKAPpMTZtZrQ2Kctkg\",\"children\":[{\"text\":\"Accompaniment in Voice Chat\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://intl.cloud.tencent.com/document/product/607/31504\",\"props\":{\"type\":\"link\",\"url\":\"https://intl.cloud.tencent.com/document/product/607/31504\"},\"type\":\"ref\"},{\"b\":1,\"text\":\".\"}],\"type\":\"p\"},{\"id\":\"hcY3qQW1S6uMqm4OW5EDE\",\"children\":[{\"b\":1,\"text\":\"EnableMic = EnableAudioCaptureDevice + EnableAudioSend\"}],\"type\":\"p\"},{\"id\":\"l9vSxk1zKPYpmSTwQAxGJ\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\"function-prototype14\",\"type\":\"h4\"},{\"id\":\"8zetpcrCmgDexviFZA-pL\",\"children\":[{\"id\":\"mBKmQtV39O04_n_Y4kz7e\",\"children\":[{\"text\":\"-(QAVResult)EnableMic:(BOOL)enable;\"}],\"type\":\"code-line\"},{\"id\":\"KZqHgXv6Noq-uIhV3mJi0\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"p3iQVCcOgNnJ1PdB02j8V\",\"children\":[{\"id\":\"aLqIN-GBb2OnhxDip1pU1\",\"children\":[{\"id\":\"Qp71BOrqfQgk5r11fsgX6\",\"children\":[{\"id\":\"WmMQ_-iQSqzHq8F-I59wD\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"21K4ipjzCdU4FU0V0VVCs\",\"children\":[{\"id\":\"mbqmCD2gm6uBeMWuwFvv_\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"R34Lwx-FHS2cTMuj_hTcC\",\"children\":[{\"id\":\"riwEOldzm0ngwpIAvnPIj\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"vu7lcJrPMBnAWYX3dYqmc\",\"children\":[{\"id\":\"dllWxB6qPqvKPNJOSChiT\",\"children\":[{\"id\":\"GfVF3cA-s7oYj9gt69_Bf\",\"children\":[{\"id\":\"KEpDVl0MaHYslY8r4JrMK\",\"children\":[{\"text\":\"isEnabled\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"3-FiHDSZBmxkZgqqXEa7b\",\"children\":[{\"id\":\"0Cre8wpqVAjDSeVurWiwb\",\"children\":[{\"id\":\"17wliRf9_Axvd_6MUShFX\",\"children\":[{\"text\":\"boolean\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"IiE9tCaTZ4wNuw_M1DXBR\",\"children\":[{\"id\":\"GCQqfKkbuBU5jf1RwqMER\",\"children\":[{\"id\":\"DjJGoOgu-TIEb6rGzCywX\",\"children\":[{\"text\":\"To enable the mic, set this parameter to \"},{\"code\":1,\"text\":\"YES\"},{\"text\":\"; otherwise, set it to \"},{\"code\":1,\"text\":\"NO\"},{\"text\":\".\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[15,12,73],\"widthMode\":\"percentage\"},{\"id\":\"QS23Bqmbb_P9WaJ2Eovzi\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code16\",\"type\":\"h4\"},{\"id\":\"_L26rZLMrfJ_9UTajBc5T\",\"children\":[{\"id\":\"_1fGuPzZjDvvQVGxPLbHU\",\"children\":[{\"text\":\"// Enable mic\"}],\"type\":\"code-line\"},{\"id\":\"mR5dEnpLIogYiiI-UlY3z\",\"children\":[{\"text\":\"[[[ITMGContext GetInstance] GetAudioCtrl] EnableMic:YES];\"}],\"type\":\"code-line\"},{\"id\":\"-tpVZtUbloXTfV_Ppss19\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"pikIdNJPe51aa0olHTxBC\",\"children\":[{\"text\":\"Getting the mic status\"}],\"nodeId\":\"getting-the-mic-status\",\"type\":\"h3\"},{\"id\":\"2zsYeKcMvPsXoTiS4Hz7J\",\"children\":[{\"text\":\"This API is used to get the mic status. The returned value 0 indicates that the mic is off, while 1 is on.\"}],\"type\":\"p\"},{\"id\":\"AMBTJpYq9QUSgj9spZ72C\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\"function-prototype15\",\"type\":\"h4\"},{\"id\":\"C8gJOF8d-aqvbV9uZ8eTR\",\"children\":[{\"id\":\"t3WSiLS6KiZNH866gTXf5\",\"children\":[{\"text\":\"-(int)GetMicState;\"}],\"type\":\"code-line\"},{\"id\":\"YBqpFF-vad5b3s0xjuMYV\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"ioexPCHtxWOcDodCPgSHp\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code17\",\"type\":\"h4\"},{\"id\":\"qT2H5qPg4gDHkPRAJmQNq\",\"children\":[{\"id\":\"SbF91PYspVfYlk_zqU5nB\",\"children\":[{\"text\":\"[[[ITMGContext GetInstance] GetAudioCtrl] GetMicState];\"}],\"type\":\"code-line\"},{\"id\":\"9Vs58d3COJrPF42RWXec0\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"RNy5u6-WxXVwB9nwjZwKU\",\"children\":[{\"text\":\"Enabling or disabling capturing device\"}],\"nodeId\":\"enabling-or-disabling-capturing-device\",\"type\":\"h3\"},{\"id\":\"sHX1UF1ed6X32yEiYamC3\",\"children\":[{\"text\":\"This API is used to enable/disable a capturing device. The device is not enabled by default after room entry.\"}],\"type\":\"p\"},{\"id\":\"7YIzPxREUjqRn4MIZKxh4\",\"children\":[{\"text\":\"This API can only be called after room entry. The device will be disabled automatically after room exit.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"S-17B9EBTve28jke8R0fW\",\"children\":[{\"text\":\"Operations such as permission application and volume type adjustment will generally be performed when a capturing device is enabled on a mobile device.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"TEBjcboyBOnD2cyk0R5tu\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\"function-prototype16\",\"type\":\"h4\"},{\"id\":\"uQ6_YsqQQE-39Ut1n7uLm\",\"children\":[{\"id\":\"vMn8gsInt0oOS3geAdXdS\",\"children\":[{\"text\":\"-(QAVResult)EnableAudioCaptureDevice:(BOOL)enabled;\"}],\"type\":\"code-line\"},{\"id\":\"v-jwXHOyBMZ0UkkEMhbUU\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"oodDjCdCEWqLfXyqSp5pW\",\"children\":[{\"id\":\"WI8kkOzlx1VO-KvgRYLhz\",\"children\":[{\"id\":\"L57qIxBN5QSBSx6C1CO55\",\"children\":[{\"id\":\"lWp_eYnXU3jnsQ6rNmQdX\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ep1JkArKJ0z0g8kxuZoSP\",\"children\":[{\"id\":\"2sd9s__oGunOPoJ8WpJYn\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"LK9YVypZNMDqw7Wh-f6K3\",\"children\":[{\"id\":\"3wxqfXTqtQ18XHeo8zHUz\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"o-ohYEVe37lqzt4z8FSM9\",\"children\":[{\"id\":\"SN9F32JTSxyWNUh92KGGq\",\"children\":[{\"id\":\"9_p6uFIYi0Bu2PMIm8Ryr\",\"children\":[{\"id\":\"ZrKHBJFO2dL_yHmeR0C-R\",\"children\":[{\"text\":\"enabled\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"X-daEf28LWjXeCrM5UjZ6\",\"children\":[{\"id\":\"JFz_Y5sYZ2Z63lrpY2w3K\",\"children\":[{\"id\":\"bh36wX9cR2V57cPrcLUiY\",\"children\":[{\"text\":\"BOOL\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"rB1D_KiMB751RGV3YW_tG\",\"children\":[{\"id\":\"iFS3KzcFWPz88fnQKtRBW\",\"children\":[{\"id\":\"8l8zk-ZrRJ6qEenOaMG6S\",\"children\":[{\"text\":\"To enable the capturing device, set this parameter to \"},{\"code\":1,\"text\":\"YES\"},{\"text\":\", otherwise set it to \"},{\"code\":1,\"text\":\"NO\"},{\"text\":\".\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[13,10,77],\"widthMode\":\"percentage\"},{\"id\":\"7j3Sc3g9fHTGiU2kxlzr6\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code18\",\"type\":\"h4\"},{\"id\":\"Aa1B-7OAtIUW5wlPnMUOv\",\"children\":[{\"id\":\"MdgVjdfypxw_TVjVr24B6\",\"children\":[{\"text\":\"// Enable capturing device\"}],\"type\":\"code-line\"},{\"id\":\"_5SmS1IMi1z4UrZyDmaQX\",\"children\":[{\"text\":\"[[[ITMGContext GetInstance]GetAudioCtrl ]EnableAudioCaptureDevice:enabled];\"}],\"type\":\"code-line\"},{\"id\":\"Tq1C0aeTkfFHGn4mxbkV1\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"JsaPG0dgaIu4oQj42oLgR\",\"children\":[{\"text\":\"Getting the capturing device status\"}],\"nodeId\":\"getting-the-capturing-device-status\",\"type\":\"h3\"},{\"id\":\"xsLJdBBOie_bU03XggsyY\",\"children\":[{\"text\":\"This API is used to get the status of a capturing device.\"}],\"type\":\"p\"},{\"id\":\"Ap6ZvOif6Z4s91SufiuOL\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\"function-prototype17\",\"type\":\"h4\"},{\"id\":\"U4_AlEGqJUCi75HhqXdi0\",\"children\":[{\"id\":\"qlff4WP2rSr_llDDPj-z0\",\"children\":[{\"text\":\"-(BOOL)IsAudioCaptureDeviceEnabled;\"}],\"type\":\"code-line\"},{\"id\":\"ZQjEiopjPbzSH4mjn-4Au\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"bwv0FA_lhIzKMbXfzyyZz\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code19\",\"type\":\"h4\"},{\"id\":\"3xPTK4m5BVYK3Gz_awstQ\",\"children\":[{\"id\":\"u8WzZFhDLH9eBvJhC6Cwj\",\"children\":[{\"text\":\"BOOL IsAudioCaptureDevice = [[[ITMGContext GetInstance] GetAudioCtrl] IsAudioCaptureDeviceEnabled];\"}],\"type\":\"code-line\"},{\"id\":\"d4Lkcr8O32ab6ofBwWPcJ\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"cYEAyPRtTk4mdiLjfl_RS\",\"children\":[{\"text\":\"Enabling or disabling audio upstreaming\"}],\"nodeId\":\"enabling-or-disabling-audio-upstreaming\",\"type\":\"h3\"},{\"id\":\"eOK2RqJh5yCqHdD4HRnFv\",\"children\":[{\"text\":\"This API is used to enable/disable audio upstreaming. If a capturing device is already enabled, it will send captured audio data; otherwise, it will remain mute. For more information on how to enable/disable the capturing device, please see the \"},{\"code\":1,\"text\":\"EnableAudioCaptureDevice\"},{\"text\":\" API.\"}],\"type\":\"p\"},{\"id\":\"dPxX0Yfv45PmsE_c1J12v\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\"function-prototype18\",\"type\":\"h4\"},{\"id\":\"ufB1CQYU6iM_BLYnfZWSl\",\"children\":[{\"id\":\"DwZPS08BBHRDi8NQ2tVaV\",\"children\":[{\"text\":\"-(QAVResult)EnableAudioSend:(BOOL)enable;\"}],\"type\":\"code-line\"},{\"id\":\"gBNpCWV3JmEPb24l1piPb\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"hUEIEM-lL987mR7glagax\",\"children\":[{\"id\":\"RqFLCl2-mkgqWcbG8L6an\",\"children\":[{\"id\":\"UqQSswZt-f1q0rCcRNvbm\",\"children\":[{\"id\":\"HC4oW9sc2P4G_tQTGRq0E\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"uwgZofX5bBJQOHqOleoSC\",\"children\":[{\"id\":\"qO5HxzJmFnq6cr20rbWCt\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"rAFm6jfZMgMyNvBsgqIk7\",\"children\":[{\"id\":\"tn_yGEN4Jzx4txNiqI1NH\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"pI8oRrftkC70-5WAeh9Rb\",\"children\":[{\"id\":\"Hmu4StRrkB93YCSr6nB16\",\"children\":[{\"id\":\"cE2mCrM_FMQS2a61eFkKQ\",\"children\":[{\"id\":\"tFEdKZ22AZUJAf7auc-zI\",\"children\":[{\"text\":\"enable\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"p54yp1fc6GqU7SMdznaUj\",\"children\":[{\"id\":\"H60Ewytdol8a5tRd4mPz1\",\"children\":[{\"id\":\"sG34hi9RlI1aRJ9JsXYo9\",\"children\":[{\"text\":\"BOOL\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"oEPzsyS1y73WtZMn51rfx\",\"children\":[{\"id\":\"IpU0-9DKGk5B4-0T2O0lX\",\"children\":[{\"id\":\"BK149bdJ9c5FJ03O1dU94\",\"children\":[{\"text\":\"To enable audio upstreaming, set this parameter to \"},{\"code\":1,\"text\":\"YES\"},{\"text\":\"; otherwise, set it to \"},{\"code\":1,\"text\":\"NO\"},{\"text\":\".\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[13,10,77],\"widthMode\":\"percentage\"},{\"id\":\"xA-LQRWP0XiyVXlNioGb1\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code20\",\"type\":\"h4\"},{\"id\":\"-2E8L1fqIJWjj6PBfnmdc\",\"children\":[{\"id\":\"FP11aIaQZHYTUyaWi-t4r\",\"children\":[{\"text\":\"[[[ITMGContext GetInstance]GetAudioCtrl ]EnableAudioSend:enabled];\"}],\"type\":\"code-line\"},{\"id\":\"rFg0zeEwDVQRkC-SgROT3\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"YATwUolLB5-Xa-pRJzarX\",\"children\":[{\"text\":\"Getting audio upstreaming status\"}],\"nodeId\":\"getting-audio-upstreaming-status\",\"type\":\"h3\"},{\"id\":\"PsObv4xgE1X_d_EKj6U6K\",\"children\":[{\"text\":\"This API is used to get the status of audio upstreaming.\"}],\"type\":\"p\"},{\"id\":\"VahgAsA2xDHQ-AhxFXfUv\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\"function-prototype19\",\"type\":\"h4\"},{\"id\":\"37Nc2quoclmdsAJVptCdg\",\"children\":[{\"id\":\"HyeX5v12G5If2AiIHQiKh\",\"children\":[{\"text\":\"-(BOOL)IsAudioSendEnabled;\"}],\"type\":\"code-line\"},{\"id\":\"39X-asAxGTdU7IdXKH26d\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"BD9Xpn27h1xfC9JBQt-aJ\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code21\",\"type\":\"h4\"},{\"id\":\"Rrd9st2tSGs4Y6aph04Qv\",\"children\":[{\"id\":\"h5VKSJzlmQrLM9vVn64bt\",\"children\":[{\"text\":\"BOOL IsAudioSend = [[[ITMGContext GetInstance] GetAudioCtrl] IsAudioSendEnabled];\"}],\"type\":\"code-line\"},{\"id\":\"2MoXtfoQDTb60xsZMCnFA\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"},{\"id\":\"Jg5LuegsZ9VoS6M416-iH\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"o_fLxlL4qOXUedu9razLf\",\"children\":[{\"text\":\"Getting the real-time mic volume\"}],\"nodeId\":\"getting-the-real-time-mic-volume\",\"type\":\"h3\"},{\"id\":\"3mN9q_gCVNxAz7aaPrvAT\",\"children\":[{\"text\":\"This API is used to get the real-time mic volume. An int-type value in the range of 0-100 will be returned. It is recommended to call this API once every 20 ms.\"}],\"type\":\"p\"},{\"id\":\"J1Vq8zksJUjF2U_eFLHvt\",\"children\":[{\"b\":1,\"text\":\"This API is not applicable to the voice message service.\"}],\"type\":\"p\"},{\"id\":\"8YKMNAPeamAF8Lquue3sl\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\"function-prototype20\",\"type\":\"h4\"},{\"id\":\"3yvOjZMljvF8h2qX1wang\",\"children\":[{\"id\":\"FfmyptbWrMrKmgUvYIF4H\",\"children\":[{\"text\":\"-(int)GetMicLevel;\"}],\"type\":\"code-line\"},{\"id\":\"tMEw3AK1E5ifSnVMIMkSz\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"KV38Q8U7snB66dHPDc2Bb\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code22\",\"type\":\"h4\"},{\"id\":\"r6YmrfUXBM0prhR_7OImc\",\"children\":[{\"id\":\"0eSPrfwYU3U-3WcODTgiA\",\"children\":[{\"text\":\"[[[ITMGContext GetInstance] GetAudioCtrl] GetMicLevel];\"}],\"type\":\"code-line\"},{\"id\":\"vxxTBEHZvpE699viO2smU\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"ATQDMz0facoiNeBZLZRiX\",\"children\":[{\"text\":\"Getting the real-time audio upstreaming volume\"}],\"nodeId\":\"getting-the-real-time-audio-upstreaming-volume\",\"type\":\"h3\"},{\"id\":\"jyRX380leugE1g6vMOg6A\",\"children\":[{\"text\":\"This API is used to get the local real-time audio upstreaming volume. An int-type value in the range of 0-100 will be returned.\"}],\"type\":\"p\"},{\"id\":\"yaMytA_Zm-R-uwTGSfxsF\",\"children\":[{\"b\":1,\"text\":\"This API is not applicable to the voice message service.\"}],\"type\":\"p\"},{\"id\":\"lj1j8LvC6grXhAfmoPaby\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\"function-prototype21\",\"type\":\"h4\"},{\"id\":\"zFtKiLwBkq7GCgtVu87uj\",\"children\":[{\"id\":\"zRBSaxWHgEyprxdTCd8Up\",\"children\":[{\"text\":\"-(int)GetSendStreamLevel();\"}],\"type\":\"code-line\"},{\"id\":\"TH7l0zCuwhGMHkN1zm3m5\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"T26qroLPwsxRILiomSeWb\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code23\",\"type\":\"h4\"},{\"id\":\"ahsP6Uu9Vi1SAFg7fe0Ri\",\"children\":[{\"id\":\"518KASDb3jQS_EA-5dSep\",\"children\":[{\"text\":\"[[[ITMGContext GetInstance] GetAudioCtrl] GetSendStreamLevel];\"}],\"type\":\"code-line\"},{\"id\":\"uW9U9ZI-l7NN8w4HfJ2Bm\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"ZcnWSjl_U9GqBPxaiSEoP\",\"children\":[{\"text\":\"Setting the mic software volume\"}],\"nodeId\":\"setting-the-mic-software-volume\",\"type\":\"h3\"},{\"id\":\"In-WSRnstOzWgaX0rF2g7\",\"children\":[{\"text\":\"This API is used to set the mic volume. The corresponding parameter is \"},{\"code\":1,\"text\":\"volume\"},{\"text\":\", which is equivalent to attenuating or gaining the captured sound. 0 indicates that the audio is mute, while 100 indicates that the volume remains unchanged. The default value is 100.\"}],\"type\":\"p\"},{\"id\":\"fauIfr6r0LWnwfTRZFbrS\",\"children\":[{\"b\":1,\"text\":\"This API is not applicable to the voice message service.\"}],\"type\":\"p\"},{\"id\":\"r5_EWsrvXS18b0nJJ4BLn\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\"function-prototype22\",\"type\":\"h4\"},{\"id\":\"NHWr-qCcVYZaM7EuaJPac\",\"children\":[{\"id\":\"D57SoGXNo5wRUkSoxcfyr\",\"children\":[{\"text\":\"-(QAVResult)SetMicVolume:(int) volume;\"}],\"type\":\"code-line\"},{\"id\":\"62PJ9RjQ-KrEX8MDQ3mGt\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"17LhPxtxUQec9uBRgMZeJ\",\"children\":[{\"id\":\"akelUyykLK2RKs1Iok5Fu\",\"children\":[{\"id\":\"pLpTYU1WWi6KpzLg3qlsk\",\"children\":[{\"id\":\"fkKas8gEItKX0rO76GCzB\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"_TFKKr47YMSnOuX_fFy-C\",\"children\":[{\"id\":\"hSZyxxPp-Jx_wd_BuL8aq\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"P_euHjb2uErVyksnktmEc\",\"children\":[{\"id\":\"7JpjPVBxluh5oe-ZBkXHq\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"PcZZ4Vn71h6nsiQtdyYuA\",\"children\":[{\"id\":\"fhoQVW01JmUyxbfUf_jO2\",\"children\":[{\"id\":\"brlOCFt7sjWchU5eGE4cW\",\"children\":[{\"id\":\"09jktGXbcuxYDIdUbYExl\",\"children\":[{\"text\":\"volume\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"vsEePvK9KaFV9VNxAhE8n\",\"children\":[{\"id\":\"MLGWMoh8uL-Kt50EHMdHJ\",\"children\":[{\"id\":\"kaRzylYhVfVblNjB1IxBe\",\"children\":[{\"text\":\"int\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"_AAsuIy6X9Hd-AGQpYWQZ\",\"children\":[{\"id\":\"4iR0LkuSGvBfhKrgihou2\",\"children\":[{\"id\":\"24kzOykmuP0vMAVGpCY1e\",\"children\":[{\"text\":\"Sets volume. Value range: 0-200\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[24,15,61],\"widthMode\":\"percentage\"},{\"id\":\"JiqDNAFXvasy_Yw1spJCV\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code24\",\"type\":\"h4\"},{\"id\":\"0M2ms4HELpgFowxaafmLP\",\"children\":[{\"id\":\"C8Z22oS6HKQzTF-EbYnf_\",\"children\":[{\"text\":\"[[[ITMGContext GetInstance] GetAudioCtrl] SetMicVolume:100];\"}],\"type\":\"code-line\"},{\"id\":\"_Nrf0yg5tR3FWk2JMVrLa\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"ui_cEIwzGsFgfZPbGEni6\",\"children\":[{\"text\":\"Getting the mic software volume\"}],\"nodeId\":\"getting-the-mic-software-volume\",\"type\":\"h3\"},{\"id\":\"8N3yHL1BHDKXa2wSpjceE\",\"children\":[{\"text\":\"This API is used to obtain the microphone volume. An \\\"int\\\" value is returned. Value 101 represents API SetMicVolume has not been called.\"}],\"type\":\"p\"},{\"id\":\"29m7UiUXpZLWqM-fG3keq\",\"children\":[{\"b\":1,\"text\":\"This API is not applicable to the voice message service.\"}],\"type\":\"p\"},{\"id\":\"P0J5tiPvqvoHmgueyJoqM\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\"function-prototype23\",\"type\":\"h4\"},{\"id\":\"EpCuQlvVUtGvAiA1gQd5a\",\"children\":[{\"id\":\"iNR7D9XnCDUPDfMAc_Pcr\",\"children\":[{\"text\":\"-(int) GetMicVolume;\"}],\"type\":\"code-line\"},{\"id\":\"zyDm_02h1iKz-ZygWMrdT\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"eEuMWDGq7hkflD965aBA7\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code25\",\"type\":\"h4\"},{\"id\":\"JGSdnC-hs1N28SJ0SIvKF\",\"children\":[{\"id\":\"Uv77ZoSRWV1AAgrj9TS3_\",\"children\":[{\"text\":\"[[[ITMGContext GetInstance] GetAudioCtrl] GetMicVolume];\"}],\"type\":\"code-line\"},{\"id\":\"--bFjuxZaNDBk8nRV5UEw\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"Sv1Ub56tHyZhiUi_AUIqu\",\"children\":[{\"text\":\"Voice Chat Playback APIs\"}],\"nodeId\":\"voice-chat-playback-apis\",\"type\":\"h2\"},{\"id\":\"QRZsHqcYlq-7YU8mHNR-F\",\"children\":[{\"id\":\"vCcWJnXiizZ0FnICA1yK8\",\"children\":[{\"text\":\"Enabling or disabling the speaker\"}],\"nodeId\":\"EnableSpeaker\",\"type\":\"p\"}],\"nodeId\":\".3Ca-id.3D.22enablespeaker.22.3Eenabling-or-disabling-the-speaker.3C.2Fa.3E\",\"type\":\"h3\"},{\"id\":\"58CpP2zVYfi42SihFLE7a\",\"children\":[{\"text\":\"This API is used to enable/disable the speaker.\\n\"},{\"b\":1,\"text\":\"If accompaniment is used, please call this API as instructed in \"},{\"id\":\"Cn6iPTmd6qJGtcI7MxqFN\",\"children\":[{\"text\":\"Accompaniment in Voice Chat\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://intl.cloud.tencent.com/document/product/607/31504\",\"props\":{\"type\":\"link\",\"url\":\"https://intl.cloud.tencent.com/document/product/607/31504\"},\"type\":\"ref\"},{\"b\":1,\"text\":\".\"}],\"type\":\"p\"},{\"id\":\"6SwyUJW2u-wz6pa3q81B7\",\"children\":[{\"b\":1,\"text\":\"EnableSpeaker = EnableAudioPlayDevice + EnableAudioRecv\"}],\"type\":\"p\"},{\"id\":\"XwYeJTNdKq9Y_bJdpiMt2\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\"function-prototype24\",\"type\":\"h4\"},{\"id\":\"e6fFjbth37shue-i6jgw8\",\"children\":[{\"id\":\"u6VD59MWKvBlwfXGQtaOb\",\"children\":[{\"text\":\"-(void)EnableSpeaker:(BOOL)enable;\"}],\"type\":\"code-line\"},{\"id\":\"hTY72FprWqmFbgTkzFhgM\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"kx7WAAczp9SZihTV2eJfS\",\"children\":[{\"id\":\"sRo0V5-dFaHg0LxVU0Da-\",\"children\":[{\"id\":\"d2W-jqALxEghDGUv2mplw\",\"children\":[{\"id\":\"qJinT9INEeoiACbJtBMv2\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"4lMb1F0Y-gBn5wBn7jTzg\",\"children\":[{\"id\":\"1vrbXQ8X9wZXlPWiKoT8p\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"jF3eRkmVNPemANGX8LlAr\",\"children\":[{\"id\":\"_4Qz-tSMPIjmAolCpgpk0\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"9rVo08W-aumfqpSy67CkO\",\"children\":[{\"id\":\"6ebn3HH-3WjmeJm0m7VG7\",\"children\":[{\"id\":\"tIMAU05-JlW1mYdseTkBk\",\"children\":[{\"id\":\"UCHtNrA8SFk-gEdfkRStX\",\"children\":[{\"text\":\"isEnabled\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"sLfNpY842ankhnWXyLniP\",\"children\":[{\"id\":\"oRBYYrIOLMopVRF3X45kf\",\"children\":[{\"id\":\"rG62UtetgoV5cNAWIEiRR\",\"children\":[{\"text\":\"boolean\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"fR1ggL3oNQj2i-FnwYRt6\",\"children\":[{\"id\":\"eJhtKElcPISikaDOB7xX2\",\"children\":[{\"id\":\"Y4YcWJmKLvqidQMJIVD1h\",\"children\":[{\"text\":\"To disable the speaker, set this parameter to \"},{\"code\":1,\"text\":\"NO\"},{\"text\":\", otherwise set it to \"},{\"code\":1,\"text\":\"YES\"},{\"text\":\".\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[14,12,74],\"widthMode\":\"percentage\"},{\"id\":\"bzTKIwZUqJRwo6D3lIoi_\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code26\",\"type\":\"h4\"},{\"id\":\"uUxmcIUHZfH4qGUIwccEv\",\"children\":[{\"id\":\"MaFP7EDVMEl7FmpYr1JF0\",\"children\":[{\"text\":\"// Enable the speaker\"}],\"type\":\"code-line\"},{\"id\":\"jMdDuMQq0z7QW4O_cu9SH\",\"children\":[{\"text\":\"[[[ITMGContext GetInstance] GetAudioCtrl] EnableSpeaker:YES];\"}],\"type\":\"code-line\"},{\"id\":\"AAzBJyC9zAFI8Yt-5BpJE\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"0gnaNDI5x-9oX7dVbSiUO\",\"children\":[{\"text\":\"Getting the speaker status\"}],\"nodeId\":\"getting-the-speaker-status\",\"type\":\"h3\"},{\"id\":\"IwFUyWkvXtqaOv5Fc95Aq\",\"children\":[{\"text\":\"This API is used to get the speaker status. 0 indicates that the speaker is off, while 1, on.\"}],\"type\":\"p\"},{\"id\":\"9smKmA0MztFP7aNlP860D\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\"function-prototype25\",\"type\":\"h4\"},{\"id\":\"kGMLoURbvkidodZY5j9hR\",\"children\":[{\"id\":\"kXQzrvbwo1B3tZkC6uUU5\",\"children\":[{\"text\":\"-(int)GetSpeakerState;\"}],\"type\":\"code-line\"},{\"id\":\"rTI_cDj_Eto3YYjLmw_dt\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"XLcgd3nvY8jH8xRD3sUku\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code27\",\"type\":\"h4\"},{\"id\":\"djpN2W5rChSzKcv7QfQnm\",\"children\":[{\"id\":\"HOADyub_mpFMi4eBGi3lT\",\"children\":[{\"text\":\"[[[ITMGContext GetInstance] GetAudioCtrl] GetSpeakerState];\"}],\"type\":\"code-line\"},{\"id\":\"W4zxdVCKZpdX0FBWP1Ifp\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"mXx7aatbd1LQhLwo2qv7s\",\"children\":[{\"text\":\"Enabling or disabling playback device\"}],\"nodeId\":\"enabling-or-disabling-playback-device\",\"type\":\"h3\"},{\"id\":\"O_ryLY96T7k-t35JihaFC\",\"children\":[{\"text\":\"This API is used to enable/disable a playback device.\"}],\"type\":\"p\"},{\"id\":\"Qc0--6Zek5thclajeHQrd\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\"function-prototype26\",\"type\":\"h4\"},{\"id\":\"ULeeExyOtsqEmQ3I2ZI5v\",\"children\":[{\"id\":\"oQmlS_0cCnvTgFiZq06qI\",\"children\":[{\"text\":\"-(QAVResult)EnableAudioPlayDevice:(BOOL)enabled;\"}],\"type\":\"code-line\"},{\"id\":\"PKbcQUE3fBIi1uKLtOVQt\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"IiuugVDYt-svdskQHsHeQ\",\"children\":[{\"id\":\"_mjZxHyULXETncUwwpO1T\",\"children\":[{\"id\":\"zNyH7JtgzGjvUhzYs2GOl\",\"children\":[{\"id\":\"D_bAcegaPfMBgFEj1yBu1\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"pQJyYNofzUuCZpt-E-kuC\",\"children\":[{\"id\":\"rA9Y476KOdRpTmYE7i8bO\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"gHov6Nj1Cq8z8ixEMfSnU\",\"children\":[{\"id\":\"wTAyy4J4dmYHY-WLdvd8V\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"kITuJHC5-PVAEj5gNX2Yu\",\"children\":[{\"id\":\"HtMky4qz2evJGBJdZRDB2\",\"children\":[{\"id\":\"Zjv3Y3SX4FtQzO2UfbHLz\",\"children\":[{\"id\":\"G2F8ftWBhSfTQ4XrX1U1o\",\"children\":[{\"text\":\"enabled\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ydimNTdDKFSvjBa5TVAo0\",\"children\":[{\"id\":\"VeRUca1Ft1VwLiq1IKonF\",\"children\":[{\"id\":\"65foZlCWtGsKLtD3kWIrd\",\"children\":[{\"text\":\"BOOL\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"fljFBgw-KiPE6UWfJCvWE\",\"children\":[{\"id\":\"-8OFgka6Efkd00xpoyOSF\",\"children\":[{\"id\":\"rrT6molcaj9C9FXmNmHsw\",\"children\":[{\"text\":\"To disable a playback device, set this parameter to \"},{\"code\":1,\"text\":\"NO\"},{\"text\":\", otherwise set it to \"},{\"code\":1,\"text\":\"YES\"},{\"text\":\".\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[13,10,77],\"widthMode\":\"percentage\"},{\"id\":\"-7WRCyvbnAJcO2lippRAh\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code28\",\"type\":\"h4\"},{\"id\":\"MltTtgS_11VX0e4hERazZ\",\"children\":[{\"id\":\"wCbsyU-tQKhaOqFzeVmYs\",\"children\":[{\"text\":\"// Enable the playback device\"}],\"type\":\"code-line\"},{\"id\":\"5fFN9fwXyQ0bqSClkVlRL\",\"children\":[{\"text\":\"[[[ITMGContext GetInstance]GetAudioCtrl ]EnableAudioPlayDevice:enabled];\"}],\"type\":\"code-line\"},{\"id\":\"EyYFne8FroR94wrqvppqa\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"D8kdkS5bxMiRM2aNxDnWS\",\"children\":[{\"text\":\"Getting the playback device status\"}],\"nodeId\":\"getting-the-playback-device-status\",\"type\":\"h3\"},{\"id\":\"15SEIG5xU5qmoNRDD2qVX\",\"children\":[{\"text\":\"This API is used to get the status of a playback device.\"}],\"type\":\"p\"},{\"id\":\"K1xNipv___EUmk1RB2v0W\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\"function-prototype27\",\"type\":\"h4\"},{\"id\":\"uIF6VplJX0d3nB2iF718g\",\"children\":[{\"id\":\"sRWBzsOlJjK1ZFyXneKQl\",\"children\":[{\"text\":\"-(BOOL)IsAudioPlayDeviceEnabled;\"}],\"type\":\"code-line\"},{\"id\":\"drxzSU9A3m0guvyJz6Pur\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"fWZWuKN_4J0y7rS8zTsIn\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code29\",\"type\":\"h4\"},{\"id\":\"qvA6ZXctcfZWdsPeo5gYc\",\"children\":[{\"id\":\"40I4CxKWIlY5S9CrQzkub\",\"children\":[{\"text\":\"BOOL IsAudioPlayDevice = [[[ITMGContext GetInstance] GetAudioCtrl] IsAudioPlayDeviceEnabled];\"}],\"type\":\"code-line\"},{\"id\":\"nJ871HDW3A7bzcm9L5T3H\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"_OIJ8U_JZCy3CwF9IdVRe\",\"children\":[{\"text\":\"Enabling or disabling audio downstreaming\"}],\"nodeId\":\"enabling-or-disabling-audio-downstreaming\",\"type\":\"h3\"},{\"id\":\"-_lp0j3ykbMoJ06D8R29L\",\"children\":[{\"text\":\"This API is used to enable/disable audio downstreaming. If a playback device is already enabled, it will play back audio data from other members in the room; otherwise, it will remain mute. For more information on how to enable/disable the playback device, please see the \"},{\"code\":1,\"text\":\"EnableAudioPlayDevice\"},{\"text\":\" API.\"}],\"type\":\"p\"},{\"id\":\"OxkussmTzlSjWeB_YNqKs\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\"function-prototype28\",\"type\":\"h4\"},{\"id\":\"HhkbDCioM0iw8yoYXty-P\",\"children\":[{\"id\":\"7zwg5OzDOWfCqc4jbfz0L\",\"children\":[{\"text\":\"-(QAVResult)EnableAudioRecv:(BOOL)enabled;\"}],\"type\":\"code-line\"},{\"id\":\"PrXktCb93mqEvWc_o20FM\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"xld-ue2ZeVJlGeY5ZauSJ\",\"children\":[{\"id\":\"w4Pf2VJmKcsSChqOo5FFJ\",\"children\":[{\"id\":\"Gn0w8qLh91jjBD4qUlIct\",\"children\":[{\"id\":\"-nsYfhn_rajlt2k0iaZWM\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"NPeLfEJi5LUvuTHFe__x7\",\"children\":[{\"id\":\"JgvvCb6b7pElHVaa4zTxc\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"SM7D7jdM7XvfqXMKfHl_-\",\"children\":[{\"id\":\"ifrendFiYSaLmaDcD2aOq\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"t97mk2JbsjJkDv9nE_iOW\",\"children\":[{\"id\":\"BjT1D0ubahpqrfIEuemU7\",\"children\":[{\"id\":\"Sz8GMWXWO6xkIH7bE2j7s\",\"children\":[{\"id\":\"pe9ZQQRQkr8dOsmQF6X4A\",\"children\":[{\"text\":\"enabled\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"1ev04h0oBSXOPkeM8CPkg\",\"children\":[{\"id\":\"bRdGiEAuGcPVSnHmnRMjs\",\"children\":[{\"id\":\"60OE346xR1bGjyDhpBE-1\",\"children\":[{\"text\":\"BOOL\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"sMj--PoRxl85TP1SSR57e\",\"children\":[{\"id\":\"a0A0omnc53foSCKTK1Pnm\",\"children\":[{\"id\":\"PaGQl-YTERkwUI5QWISwM\",\"children\":[{\"text\":\"To enable audio downstreaming, set this parameter to \"},{\"code\":1,\"text\":\"YES\"},{\"text\":\"; otherwise, set it to \"},{\"code\":1,\"text\":\"NO\"},{\"text\":\".\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[13,9,78],\"widthMode\":\"percentage\"},{\"id\":\"E4aLFS-rn1t7hH5iiE2n5\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code30\",\"type\":\"h4\"},{\"id\":\"YT39W19VL8unxbFLx944v\",\"children\":[{\"id\":\"WWn6wMJiJSHrw5XLolXcH\",\"children\":[{\"text\":\"[[[ITMGContext GetInstance]GetAudioCtrl ]EnableAudioRecv:enabled];\"}],\"type\":\"code-line\"},{\"id\":\"G17qZJJCeQxvep4au6F9W\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"1cgUsi8YVKzgAgheVVqR1\",\"children\":[{\"text\":\"Getting audio downstreaming status\"}],\"nodeId\":\"getting-audio-downstreaming-status\",\"type\":\"h3\"},{\"id\":\"xlhSEZXddUEVfXxQxq88e\",\"children\":[{\"text\":\"This API is used to get the status of audio downstreaming.\"}],\"type\":\"p\"},{\"id\":\"yMPq2hfxd5g5AqmPWRC07\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\"function-prototype29\",\"type\":\"h4\"},{\"id\":\"CFKRrSi7YpjqpuSINIJhe\",\"children\":[{\"id\":\"yMpaxkEravoZoVaJ271AF\",\"children\":[{\"text\":\"-(BOOL)IsAudioRecvEnabled;\"}],\"type\":\"code-line\"},{\"id\":\"2wwYqQUdq2SOkGMY4tSQk\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"vqMBrTnoj1gvbFbd48TC4\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code31\",\"type\":\"h4\"},{\"id\":\"7_PoMw4kpbzJ8u_vpoYf_\",\"children\":[{\"id\":\"cf1-FqhEpc3OGWmFkG5dS\",\"children\":[{\"text\":\"BOOL IsAudioRecv = [[[ITMGContext GetInstance] GetAudioCtrl] IsAudioRecvEnabled];\"}],\"type\":\"code-line\"},{\"id\":\"dOQUhcd62vg-D5Wbb7s6N\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"bfkRyo_gS1lodKQ1cGn-H\",\"children\":[{\"text\":\"Getting the real-time speaker volume\"}],\"nodeId\":\"getting-the-real-time-speaker-volume\",\"type\":\"h3\"},{\"id\":\"37x2uqouNe-mKyIXvzxTV\",\"children\":[{\"text\":\"This API is used to get the real-time speaker volume level. An int-type value will be returned to indicate the volume level. It is recommended to call this API once every 20 ms.\"}],\"type\":\"p\"},{\"id\":\"6Jis33TvtH1D66pUh4mTp\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\"function-prototype30\",\"type\":\"h4\"},{\"id\":\"9zoqy-Vpk302ev4xsGBHS\",\"children\":[{\"id\":\"zdJ_xVmldx7LCLH6u-9W3\",\"children\":[{\"text\":\"-(int)GetSpeakerLevel;\"}],\"type\":\"code-line\"},{\"id\":\"DO0mfki0ZL-1DLyNg9iMR\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"vOj4eiF1gN07eTx1Yldqc\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code32\",\"type\":\"h4\"},{\"id\":\"2Orglqb26QICKC5Wtjq2n\",\"children\":[{\"id\":\"FCalAoOctOupvpeDo72c1\",\"children\":[{\"text\":\"[[[ITMGContext GetInstance] GetAudioCtrl] GetSpeakerLevel];\"}],\"type\":\"code-line\"},{\"id\":\"T2AQaxPUL4rFKZCe7lgZP\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"ipme4atTGm4ADbvUraWra\",\"children\":[{\"text\":\"Getting the real-time downstreaming audio levels of other members in room\"}],\"nodeId\":\"getting-the-real-time-downstreaming-audio-levels-of-other-members-in-room\",\"type\":\"h3\"},{\"id\":\"e5S47-6fr1VJYpyHeBjPJ\",\"children\":[{\"text\":\"This API is used to get the real-time audio downstreaming volume of other members in the room. An int-type value will be returned. Value range: 0-200.\"}],\"type\":\"p\"},{\"id\":\"OBQ4D5VTXin8ZM2H7YvMf\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\"function-prototype31\",\"type\":\"h4\"},{\"id\":\"mx2dx6Kr2ERASCMfBFM3w\",\"children\":[{\"id\":\"NeLG-WH0_OOARvE2fgsQ7\",\"children\":[{\"text\":\"-(int)GetRecvStreamLevel:(NSString*) openID;\"}],\"type\":\"code-line\"},{\"id\":\"-cC5dJbUnPeHps8ZXmYuV\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"nOz6GlHobABqNOsjhh1XK\",\"children\":[{\"id\":\"22yHD696IYvcZNgAEMv5y\",\"children\":[{\"id\":\"pzf1l1oPeYVpEW4VJW5mX\",\"children\":[{\"id\":\"leVOtWn9b29XNKvqRD_AE\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"vFHAxExk_w60Xkw-ZdVdK\",\"children\":[{\"id\":\"E6kMiOFYvaNr-lhFwt8VJ\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"v2h6GgC7M-kJ-uJz6Qezg\",\"children\":[{\"id\":\"bac3U3hCg3K-C8BGtraF9\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"i3vCFEwLeps0-GR1K5iwm\",\"children\":[{\"id\":\"ktUKqFBal-l3jCWs0gg-b\",\"children\":[{\"id\":\"f94aUMzPvKKy1tx6WcLOx\",\"children\":[{\"id\":\"6qy4TTHI3gEYjz_iLcdxn\",\"children\":[{\"text\":\"openID\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"591yC6bUPgV3wev_zimc8\",\"children\":[{\"id\":\"0MWSBn0yrQYlJQXnpjZof\",\"children\":[{\"id\":\"AdxDxVi34K2uz9yzvDHCb\",\"children\":[{\"text\":\"NSString\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"431C3TqFOkHSGskedBvKl\",\"children\":[{\"id\":\"SqOEd1kj3Rctwh7Y2SeSl\",\"children\":[{\"id\":\"JfdWPckgZgLtndlVGdKiK\",\"children\":[{\"code\":1,\"text\":\"openId\"},{\"text\":\" of another member in the room\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[20,18,62],\"widthMode\":\"percentage\"},{\"id\":\"RJ2a2dUTt_OmgAVQXqiRN\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code33\",\"type\":\"h4\"},{\"id\":\"cWTZU6IXadC2U2qxDyRXO\",\"children\":[{\"id\":\"7eWZGY8cERetOCa2Zstpg\",\"children\":[{\"text\":\"[[[ITMGContext GetInstance] GetAudioCtrl] GetRecvStreamLevel:(NSString*) openId\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"sePyKOEGoQRJXBslFpPVA\",\"children\":[{\"text\":\"Dynamic setting of the volume of a member in the room\"}],\"nodeId\":\"dynamic-setting-of-the-volume-of-a-member-in-the-room\",\"type\":\"h3\"},{\"id\":\"YEKIEvkI0solrdOtBmUr-\",\"children\":[{\"text\":\"This API is used to set the volume of a member in the room and only applies to the local device.\"}],\"type\":\"p\"},{\"id\":\"vf2ICESpcOSCzaVIf8S5z\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\"function-prototype32\",\"type\":\"h4\"},{\"id\":\"p95uYyG-y5D51c4tFvICb\",\"children\":[{\"id\":\"Ce5IbyGnr9BjSZKaniI-q\",\"children\":[{\"text\":\"-(int) SetSpeakerVolumeByOpenID:(NSString *)openId volume:(int)volume;\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"XB3hT1ExMn0h3Wu5tEDsY\",\"children\":[{\"text\":\"Parameter description\"}],\"nodeId\":\".23parameter-description\",\"type\":\"h3\"},{\"id\":\"Rib1GQp1KLwbVuJ7ryN4g\",\"children\":[{\"id\":\"yum6FPLVGRZyuerHFf46t\",\"children\":[{\"id\":\"iFDEIIa1ES1gYyN0ZSl5X\",\"children\":[{\"id\":\"4BywB0xftR1kW8vHctZ1u\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"y3G7D8hRwQHVvS6R3VqL5\",\"children\":[{\"id\":\"M_gh8dJtXk1eOA4bkM7Jd\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"HGDoFpqnpSwttcE_CpT6D\",\"children\":[{\"id\":\"aj3VYWV6Sts12F2ovNlyx\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"VL9FBC3Hff0VxhbfFJsl7\",\"children\":[{\"id\":\"VkbYj7a_f5FM_X78BNF3C\",\"children\":[{\"id\":\"1uicuC5kwBlVgbVOIcTCw\",\"children\":[{\"id\":\"RSKmp0595yIrHFLzye3Jg\",\"children\":[{\"text\":\"openId\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"RRcqaeqFB9ht3hDyWP18x\",\"children\":[{\"id\":\"ifAcsI7eScX6kfchbz1Ms\",\"children\":[{\"id\":\"3kAGQQLWUAy_Cqt2OUojK\",\"children\":[{\"text\":\"String *\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"UErtua-yYC7rDLIdNVBnr\",\"children\":[{\"id\":\"7VRgzNkB6g9KTuXootO3G\",\"children\":[{\"id\":\"usp2zRmtcqRlPBCsjYaFz\",\"children\":[{\"text\":\"OpenID that needs to adjust the volume\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"Tk3Qs_dlGJbUCAN-VazmZ\",\"children\":[{\"id\":\"PQfi-Qq-FfkYYVoTD38e_\",\"children\":[{\"id\":\"dN_ak6Qxn1pP1Y389ycJa\",\"children\":[{\"id\":\"j9rRrnxa1fvdT0wn22zYF\",\"children\":[{\"text\":\"volume\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"aFhyVZNDkV7OkFbXhgAu0\",\"children\":[{\"id\":\"VVRjBJqD8AM9VKyetye70\",\"children\":[{\"id\":\"zeDi79eZIDMu5XQqtBiuI\",\"children\":[{\"text\":\"int\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"HJNo10yf-6GnbALJCi5z7\",\"children\":[{\"id\":\"j7oAqU9RCD0LpxqSWCerq\",\"children\":[{\"id\":\"clHE216vxU2iocdJyIMi8\",\"children\":[{\"text\":\"Range: [0-200]; Default: 100\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[21,17,62],\"widthMode\":\"percentage\"},{\"id\":\"8wmP2VVDVtrI13PzpEXx_\",\"children\":[{\"text\":\"Getting the set volume percentage\"}],\"nodeId\":\"getting-the-set-volume-percentage\",\"type\":\"h3\"},{\"id\":\"aUJMmv4kO8G7GBL8CU9cF\",\"children\":[{\"text\":\"Call this API to get volume set by SetSpeakerVolumeByOpenID\"}],\"type\":\"p\"},{\"id\":\"Dj4xRC6hotvmeLLUIabaW\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype3\",\"type\":\"h4\"},{\"id\":\"9GjgfuF1NFANtB_QOH3HH\",\"children\":[{\"id\":\"AmbWAaok47OLksBQq_djI\",\"children\":[{\"text\":\"-(int) GetSpeakerVolumeByOpenID:(NSString *)openId;\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"eh1lK-4fkYK_xFriPZWBF\",\"children\":[{\"text\":\"Returned values\"}],\"nodeId\":\"returned-values2\",\"type\":\"h4\"},{\"id\":\"ExufmRnLHRJRCe7S0Al3J\",\"children\":[{\"text\":\"API returns volume percentage set by OpenID, 100 by default.\"}],\"type\":\"p\"},{\"id\":\"lS9tqpB_zLFjhJ_2zyDx2\",\"children\":[{\"text\":\"Setting the speaker volume\"}],\"nodeId\":\"setting-the-speaker-volume\",\"type\":\"h3\"},{\"id\":\"W0pI1SLQfCubtYs9NCnbw\",\"children\":[{\"text\":\"This API is used to set the speaker volume.\\nThe corresponding parameter is volume. 0 indicates that the audio is mute, while 100 indicates that the volume remains unchanged. The default value is 100.\"}],\"type\":\"p\"},{\"id\":\"mU24WBNbZ6iT9n1MOxcy1\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\"function-prototype33\",\"type\":\"h4\"},{\"id\":\"Weg8I3q7laTeUQizGjdlb\",\"children\":[{\"id\":\"X1idhTziumNHgfsSi1M5P\",\"children\":[{\"text\":\"-(QAVResult)SetSpeakerVolume:(int)vol;\"}],\"type\":\"code-line\"},{\"id\":\"cSCLajLYH4N9zwd4lv6NU\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"s6kuqMy1plzUmWbom77Ew\",\"children\":[{\"id\":\"6nR-X2EitLgGz_aqh61bC\",\"children\":[{\"id\":\"X0CfP3xI2W7QYDssyBboi\",\"children\":[{\"id\":\"gxcmB4HUFzLvjF0kcLbav\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"a0sq4-halzzmog84SGUyd\",\"children\":[{\"id\":\"rwLfuUIFjmgsY5uKk4c_U\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"tK332weL-9vJ3xKKbmSO3\",\"children\":[{\"id\":\"CCjIJDkkCrgsY2x4ogf2N\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"tea_kGonpywd2sllgzMEE\",\"children\":[{\"id\":\"ffSn7sx_heS2baWy1g2ba\",\"children\":[{\"id\":\"okgWsIfJu26wVoxpDGJdU\",\"children\":[{\"id\":\"kLk7ZV76c7DdXnYi4HxVh\",\"children\":[{\"text\":\"vol\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"P0t2Fh-yIELwj6eko1wkA\",\"children\":[{\"id\":\"Ii30o068GaZyXi7VrI-4r\",\"children\":[{\"id\":\"dP8bWpo8MlpsrLz-Yls8g\",\"children\":[{\"text\":\"int\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"jEmmdIacZ9quSJ5i-RtjB\",\"children\":[{\"id\":\"E8t9RuTBNpgkaclgvfld7\",\"children\":[{\"id\":\"9yDM6hkTbcxyG4oxm26cz\",\"children\":[{\"text\":\"Sets volume. Value range: 0-200\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[24,15,61],\"widthMode\":\"percentage\"},{\"id\":\"WilDAzLGP0_9r1MH__x6C\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code34\",\"type\":\"h4\"},{\"id\":\"XuwQGmmwCVWJZpso_qzFx\",\"children\":[{\"id\":\"G3wnGSBXcpRXBYwsNbapx\",\"children\":[{\"text\":\"[[[ITMGContext GetInstance] GetAudioCtrl] SetSpeakerVolume:100];\"}],\"type\":\"code-line\"},{\"id\":\"MDGF6VmAAnTUeMrLWmw0N\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"yxK1iC8p7E5scyzDnv7pb\",\"children\":[{\"text\":\"Getting the speaker volume\"}],\"nodeId\":\"getting-the-speaker-volume\",\"type\":\"h3\"},{\"id\":\"d5UX6lHaTrcn5w2Yh0rle\",\"children\":[{\"text\":\"This API is used to get the speaker volume. An int-type value will be returned to indicate the volume. 101 indicates that the \"},{\"code\":1,\"text\":\"SetSpeakerVolume\"},{\"text\":\" API has not been called.\\n\\\"Level\\\" indicates the real-time volume, and \\\"Volume\\\" the speaker volume. The final volume = Level * Volume%. For example, if the \\\"Level\\\" is 100 and \\\"Volume\\\" is 60, the final volume is \\\"60\\\".\"}],\"type\":\"p\"},{\"id\":\"0SEgqRUr50Cl71HD8oeMB\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\"function-prototype34\",\"type\":\"h4\"},{\"id\":\"3O2eQnGJR0Ks6z5YRUYBK\",\"children\":[{\"id\":\"SI184YbLX9Ri72qgWchie\",\"children\":[{\"text\":\"-(int)GetSpeakerVolume;\"}],\"type\":\"code-line\"},{\"id\":\"qYRXr6ScXCmhdc04trhRw\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"Gokh6rKWoQBiUnvGFZyyb\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code35\",\"type\":\"h4\"},{\"id\":\"Kk3ASJj6dXtGwm99JzY-0\",\"children\":[{\"id\":\"06pug8kxu8xBTLmEHHMhE\",\"children\":[{\"text\":\"[[[ITMGContext GetInstance] GetAudioCtrl] GetSpeakerVolume];\"}],\"type\":\"code-line\"},{\"id\":\"ticmHnBqcdeFuYzOdZygw\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"7qJhT-Hvbw5l5Xr91p1r7\",\"children\":[{\"text\":\"Advanced APIs\"}],\"nodeId\":\"advanced-apis\",\"type\":\"h2\"},{\"id\":\"zafX74EiXVOlVPlnXgqz1\",\"children\":[{\"text\":\"Enabling in-ear monitoring\"}],\"nodeId\":\"enabling-in-ear-monitoring\",\"type\":\"h3\"},{\"id\":\"RCtiUoVDnqA70l375GZHs\",\"children\":[{\"text\":\"This API is used to enable in-ear monitoring. You need to call \"},{\"code\":1,\"text\":\"EnableLoopBack+EnableSpeaker\"},{\"text\":\" before you can hear your own voice.\"}],\"type\":\"p\"},{\"id\":\"X1FyTtAyNsOa11TxZsuHx\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\"function-prototype35\",\"type\":\"h4\"},{\"id\":\"Hg3QxmK0lNRrD42sfX5_Z\",\"children\":[{\"id\":\"DPMVswK1Ck9kv5KeA2VKy\",\"children\":[{\"text\":\"-(QAVResult)EnableLoopBack:(BOOL)enable;\"}],\"type\":\"code-line\"},{\"id\":\"9O897yuNdm21UX7dYXtIn\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"JJAEH25HDcKkS9GxyKTft\",\"children\":[{\"id\":\"uWUJpKv2fm_Vy4vW-tD-k\",\"children\":[{\"id\":\"2Tg9r-WSlvMKE-pS79VLY\",\"children\":[{\"id\":\"Q3HNzN-BBCF0tdhI7GbfG\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"RTyp-u7KUtW1VzLhoQa0G\",\"children\":[{\"id\":\"7wG2xNRmxH5uFKWqWND9Z\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"8TwWa6Z6vN7HoAdccD6vP\",\"children\":[{\"id\":\"2OhnRYpIP0isQ1eMUpxxB\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"rKb7Ax3UOp73i4IHwKI5M\",\"children\":[{\"id\":\"EYvKjaZyVEl28fJNk_y1X\",\"children\":[{\"id\":\"T7r1hr0ZOvqL2UaizT_bN\",\"children\":[{\"id\":\"kalQ9j0aUWM-9wMxkheSe\",\"children\":[{\"text\":\"enable\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ybDkvXw5IQcSs6Z2Rqt-p\",\"children\":[{\"id\":\"okxyW6juuVOUQNNckzIZ7\",\"children\":[{\"id\":\"fSYlDNrkzu88Pk4XXNUIO\",\"children\":[{\"text\":\"boolean\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"BB6ZrPWO5ooa_Ukm4OgHL\",\"children\":[{\"id\":\"f5BBHOnOukEjwK0xe4wIB\",\"children\":[{\"id\":\"mb1iXEra8ySLDYQX4y-Gz\",\"children\":[{\"text\":\"Specifies whether to enable in-ear monitoring.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[19,16,65],\"widthMode\":\"percentage\"},{\"id\":\"pQ33CTiULTZ1mmBDg8Ew6\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code36\",\"type\":\"h4\"},{\"id\":\"G2bijZUv2mrNijzVn473e\",\"children\":[{\"id\":\"K9TZh0jz45ba3b9tOI350\",\"children\":[{\"text\":\"[[[ITMGContext GetInstance] GetAudioCtrl] EnableLoopBack:YES];\"}],\"type\":\"code-line\"},{\"id\":\"Ixt2Z4OyE-czxfKWWqVZs\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"jhcF7q5G5I714-8eYHTkq\",\"children\":[{\"text\":\"Modifying user's room audio type\"}],\"nodeId\":\"modifying-user's-room-audio-type\",\"type\":\"h3\"},{\"id\":\"LHH5TZHYEPnpSbFYsWtAm\",\"children\":[{\"text\":\"This API is used to modify a user's room audio type. For the result, please see the callback event. The event type is \"},{\"code\":1,\"text\":\"ITMG_MAIN_EVENT_TYPE_CHANGE_ROOM_TYPE\"},{\"text\":\". The audio type of the room is determined by the first user to enter the room. After that, if a member in the room changes the room type, it will take effect for all members there.\"}],\"type\":\"p\"},{\"id\":\"2xh5G6JdwfwD7-cjUMcpr\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\"function-prototype36\",\"type\":\"h4\"},{\"id\":\"XgnCNxTmc88mdl0LcMS-9\",\"children\":[{\"id\":\"NS4L2o0KsyFuWRHI_iIJ_\",\"children\":[{\"text\":\"-(int)ChangeRoomType:(int)nRoomType;\"}],\"type\":\"code-line\"},{\"id\":\"yQX_FT8gVGvJA7KzfLWTX\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"2zSSK6NxHMolLqgPufcXz\",\"children\":[{\"id\":\"2YzkNgvqYHg96l0fkaEDG\",\"children\":[{\"id\":\"SkKLkSdwzcCb7hPhRFp-6\",\"children\":[{\"id\":\"3_x-TaykBEOyfavKTZqne\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"atVTwcWvaQgicRwg-Gjg4\",\"children\":[{\"id\":\"fR0AsTsGJCpKOgAc8u2P5\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"9ajvGcfxyiiMQ0e17ZRt3\",\"children\":[{\"id\":\"fUohL5-31K50zFDEmmUhd\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"UL6f59bcM3u9kwCnHltxL\",\"children\":[{\"id\":\"4cC3qvvJEPBFIaRKH7C-m\",\"children\":[{\"id\":\"H48jwouVw7W7_iyrPhsXe\",\"children\":[{\"id\":\"YN24ebq8_XvaothZ9QWL5\",\"children\":[{\"text\":\"nRoomType\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"xw1L5aLvz0JdOFrtzqoPo\",\"children\":[{\"id\":\"3gFaWKddXYZbMbz73AK06\",\"children\":[{\"id\":\"-bDWNv7uE5xcT0KkeeJik\",\"children\":[{\"text\":\"int\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"2VkZWRiwFmEsvCrbZaJNh\",\"children\":[{\"id\":\"iU7SBCI3ydKiu5MwD8wlP\",\"children\":[{\"id\":\"Ro1NcpnYIBRbOgLHYgP3b\",\"children\":[{\"text\":\"Target room type to be switched to. For room audio types, please see the \"},{\"code\":1,\"text\":\"EnterRoom\"},{\"text\":\" API.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[14,8,78],\"widthMode\":\"percentage\"},{\"id\":\"eFEtJaKDgnULVWRgVebdS\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code37\",\"type\":\"h4\"},{\"id\":\"KuW1AtTaRj98dTnxnAjcc\",\"children\":[{\"id\":\"-4__fVVfz_qQttNVJgHQt\",\"children\":[{\"text\":\"[[[ITMGContext GetInstance]GetRoom ]ChangeRoomType:_roomType];\"}],\"type\":\"code-line\"},{\"id\":\"OwdahlK9MZ9IkKFdwydKB\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"_3UMhNuEjUZE6mUfyavF1\",\"children\":[{\"text\":\"Getting user's room audio type\"}],\"nodeId\":\"getting-user's-room-audio-type\",\"type\":\"h3\"},{\"id\":\"tfnu1dtjlIbVxgP5DyMxn\",\"children\":[{\"text\":\"This API is used to get a user's room audio type. The returned value is the room audio type. Value 0 indicates that an error occurred while getting the user's room audio type. For room audio types, please see the \"},{\"code\":1,\"text\":\"EnterRoom\"},{\"text\":\" API.\"}],\"type\":\"p\"},{\"id\":\"vHaKtSWyMie4QmDP4SmLg\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\"function-prototype37\",\"type\":\"h4\"},{\"id\":\"bnfqVY36EVOx1T7jI7WAD\",\"children\":[{\"id\":\"gn0YsuBh8w4jIMRSlPEct\",\"children\":[{\"text\":\"-(int)GetRoomType;\"}],\"type\":\"code-line\"},{\"id\":\"gy9tsi7v-rpGsAzGjjJq1\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"1agNP4TvCJ7yeFCPeIb5b\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code38\",\"type\":\"h4\"},{\"id\":\"jALbSmjbNpMMucGVp7JGn\",\"children\":[{\"id\":\"zFlYjoQiZhHqeS81GRJu2\",\"children\":[{\"text\":\"[[[ITMGContext GetInstance]GetRoom ]GetRoomType];\"}],\"type\":\"code-line\"},{\"id\":\"4hwlwNo8fx7KAJpAn3WBy\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"},{\"id\":\"Wgr6IqMPeuu706nBjwcdD\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"D8RN4_A9ZlZy-7wKKv4k8\",\"children\":[{\"text\":\"Callback for modifying the room type\"}],\"nodeId\":\"callback-for-modifying-the-room-type\",\"type\":\"h3\"},{\"id\":\"LLlwxfMCHlzL-A302fVpL\",\"children\":[{\"text\":\"After the room type is set, the event message \"},{\"code\":1,\"text\":\"ITMG_MAIN_EVENT_TYPE_CHANGE_ROOM_TYPE\"},{\"text\":\" will be returned in the callback. The returned parameters include \"},{\"code\":1,\"text\":\"result\"},{\"text\":\", \"},{\"code\":1,\"text\":\"error_info\"},{\"text\":\", and \"},{\"code\":1,\"text\":\"new_room_type\"},{\"text\":\". The \"},{\"code\":1,\"text\":\"new_room_type\"},{\"text\":\" represents the following information. The event message will be identified in the \"},{\"code\":1,\"text\":\"OnEvent\"},{\"text\":\" function.\"}],\"type\":\"p\"},{\"id\":\"zg8O8xUsaa6GRRRU9VTYh\",\"children\":[{\"id\":\"v4M8Dintl8RU4-0Iwsy1K\",\"children\":[{\"id\":\"xiK8ylj71JOgQa0wGuKbb\",\"children\":[{\"id\":\"V2pNKoMCeZAiAVpoGC5pt\",\"children\":[{\"text\":\"Event Subtype\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"MPArf8hbVZEG9g8jRYKG7\",\"children\":[{\"id\":\"9Ck-bAZ9KGGso0zTwAPr9\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"s_vok1D2cos7as4-TbEEk\",\"children\":[{\"id\":\"g3VDrDdKDREx4P9tVZdbd\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"V9vGW8dJDVE7ofsQI2EZ6\",\"children\":[{\"id\":\"iFX-glpLqn6Id9p7Yk-1N\",\"children\":[{\"id\":\"skc3tKDR4hQG8rK2bdJWm\",\"children\":[{\"id\":\"WUR6YPY8ywdHW4Abmw0rF\",\"children\":[{\"text\":\"ITMG_ROOM_CHANGE_EVENT_ENTERROOM\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"GFRnIFTZeXMcwW8ATt6k7\",\"children\":[{\"id\":\"B91mNmQj7rSmQJsHECC3i\",\"children\":[{\"id\":\"MARewigyknwxOuW2_Zzc2\",\"children\":[{\"text\":\"1\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"2-yEdCZyxMJJWZcWw1yMa\",\"children\":[{\"id\":\"madFkbyg4o0ecSMO1WW4n\",\"children\":[{\"id\":\"Fa6x7Wy4k8kQZl76TH_Zw\",\"children\":[{\"text\":\"Indicates that the existing audio type is inconsistent with and changed to that of the entered room.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"3cYiXX9QaevSu4_tULzOT\",\"children\":[{\"id\":\"-23hJ2gpiLpesFkGAjzmB\",\"children\":[{\"id\":\"3Uymg452SLJ42iYfBcN4e\",\"children\":[{\"id\":\"5MaBtCYAP28wfTqOidjc7\",\"children\":[{\"text\":\"ITMG_ROOM_CHANGE_EVENT_START\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"10a-MheNIDyMFb6UCixWs\",\"children\":[{\"id\":\"Yx2z6YncMUp1FoNKN4wuL\",\"children\":[{\"id\":\"Q9mRDW_rCG47jMIyejW9S\",\"children\":[{\"text\":\"2\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Ifgunjay9J8l-HNnQmfIu\",\"children\":[{\"id\":\"he2Ey780KDEVhhkNGwH9l\",\"children\":[{\"id\":\"6bswCnbrIAHZMzXr1k8q_\",\"children\":[{\"text\":\"Indicates that a user is already in the room and the audio type starts changing (e.g., calling the \"},{\"code\":1,\"text\":\"ChangeRoomType\"},{\"text\":\" API to change the audio type).\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"hqdp8uO1V6SLCXJORNsn6\",\"children\":[{\"id\":\"naAuH__J41iS36Cx9oiEZ\",\"children\":[{\"id\":\"sH9bFqCSraRzHokg73Ui4\",\"children\":[{\"id\":\"Cc73ykHK30wCyQ-YzJUlQ\",\"children\":[{\"text\":\"ITMG_ROOM_CHANGE_EVENT_COMPLETE\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"DkOFEAEMeWekd5alROC3A\",\"children\":[{\"id\":\"EmeseA-QkOQ6a32QFZkXB\",\"children\":[{\"id\":\"zqdnQp0XscHzeDJ740Cii\",\"children\":[{\"text\":\"3\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"PXuTL6rYnw7sh-spTeO3k\",\"children\":[{\"id\":\"qVgmQ6d3g5DyuI-qivZBE\",\"children\":[{\"id\":\"qXwy7brtK-tEAS5yu6rRR\",\"children\":[{\"text\":\"Indicates that a user is already in the room and the audio type has been changed.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"mIpRn1RxsPo2f3e2kaG0W\",\"children\":[{\"id\":\"a2u8lFkub8DrM3Dxq2Upu\",\"children\":[{\"id\":\"ZmPgTm0FGcj9GD4o-Vbsh\",\"children\":[{\"id\":\"E5gmW4N_kztSfFzZosMJs\",\"children\":[{\"text\":\"ITMG_ROOM_CHANGE_EVENT_REQUEST\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"CybSm3UchrYZIrg4bMUTu\",\"children\":[{\"id\":\"1VSpytUNgyCJx1xm1n0dx\",\"children\":[{\"id\":\"NPV3mw1vXxclqXiGCjrC2\",\"children\":[{\"text\":\"4\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"7WkSl979e93Gu4n3X6MVQ\",\"children\":[{\"id\":\"LL3bUx7AZPGrten42OwfT\",\"children\":[{\"id\":\"bMqnNqHdoDZqaEQEnCsVK\",\"children\":[{\"text\":\"Indicates that a room member calls the \"},{\"code\":1,\"text\":\"ChangeRoomType\"},{\"text\":\" API to request a change of room audio type.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[36,11,53],\"widthMode\":\"percentage\"},{\"id\":\"ZBAaDMi-PCvy-7Fsa5x5L\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code39\",\"type\":\"h4\"},{\"id\":\"w1uHd_uwQ4_yXi9Xo73nI\",\"children\":[{\"id\":\"RjWrapx1WHBsPdTRak2EB\",\"children\":[{\"text\":\"-(void)OnEvent:(ITMG_MAIN_EVENT_TYPE)eventType data:(NSDictionary *)data{\"}],\"type\":\"code-line\"},{\"id\":\"9t01NyIVGDGg7Z_8tbvPx\",\"children\":[{\"text\":\" NSLog(@\\\"OnEvent:%lu,data:%@\\\",(unsigned long)eventType,data);\"}],\"type\":\"code-line\"},{\"id\":\"demlmV4C7YXEI3XHsyGin\",\"children\":[{\"text\":\" switch (eventType) {\"}],\"type\":\"code-line\"},{\"id\":\"U_ehgHx4ziiQl-NOzBU7Z\",\"children\":[{\"text\":\" case ITMG_MAIN_EVENT_TYPE_CHANGE_ROOM_TYPE:\"}],\"type\":\"code-line\"},{\"id\":\"vS_B5AmZ-ebvh9UI8cw83\",\"children\":[{\"text\":\" NSLog(@\\\"ITMG_MAIN_EVENT_TYPE_CHANGE_ROOM_TYPE:%@ \\\",data);\"}],\"type\":\"code-line\"},{\"id\":\"mKe_J9CdwMBkmiY1HaL8C\",\"children\":[{\"text\":\" int result = ((NSNumber*)[data objectForKey:@\\\"result\\\"]).intValue;\"}],\"type\":\"code-line\"},{\"id\":\"_cdCg8GDgFE6v2McKbbLM\",\"children\":[{\"text\":\" int newRoomType = ((NSNumber*) [data objectForKey:@\\\"new_room_type\\\"]).intValue;\"}],\"type\":\"code-line\"},{\"id\":\"xd9qlbvMc6ieVNXUXeJca\",\"children\":[{\"text\":\" int subEventType = ((NSNumber*) [data objectForKey:@\\\"sub_event_type\\\"]).intValue;\"}],\"type\":\"code-line\"},{\"id\":\"PLDTwa1JEIbskK4wVkhmI\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"OBwUGUHHVbqtXM9vJkl1s\",\"children\":[{\"text\":\"}\"}],\"type\":\"code-line\"},{\"id\":\"YjXPVrg545owgLUuCv2B-\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"vMWT4x6MIzEnzWzs1bUQ7\",\"children\":[{\"text\":\"Data details\"}],\"nodeId\":\"data-details4\",\"type\":\"h4\"},{\"id\":\"at9PsrSZ5-op5EKXtvse1\",\"children\":[{\"id\":\"ffLx8RHPiAkaAJ6rex5LM\",\"children\":[{\"id\":\"5URgnw4P1EEWr4Tm2Rk9O\",\"children\":[{\"id\":\"ZaaBEf6JGYcDKap78JL25\",\"children\":[{\"text\":\"Message\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"jW8uVwS-uMZnzMxUv5ImK\",\"children\":[{\"id\":\"PxWeHNtMh2oLH969q8nU0\",\"children\":[{\"text\":\"Data\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"8AbcoXlFRHY4VwXI8UZMC\",\"children\":[{\"id\":\"ET4x93gDBsrGFjRAr52dO\",\"children\":[{\"text\":\"Sample\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"opUOg1iXOaseyS0OfR6s2\",\"children\":[{\"id\":\"cFAQVZ7uWbcpRYLOcsIYI\",\"children\":[{\"id\":\"gVPPK9tXmUuHZq2NyFRlU\",\"children\":[{\"id\":\"JVGjEKejR5l4FnZaxeiuR\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_CHANGE_ROOM_TYPE\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"U0BQHfA5wBC24aPzovTL5\",\"children\":[{\"id\":\"NcJL-Dr9hPY_aFQ3RioC-\",\"children\":[{\"id\":\"0wbPWq-KXIZWfsJhvwbnn\",\"children\":[{\"text\":\"result;error_info;new_room_type;subEventType\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"engf-yPZlISXHJ5p70Qy-\",\"children\":[{\"id\":\"dMSt0m4yIKJHDwsL8Zab9\",\"children\":[{\"id\":\"rRzIybXqbIB3fRd0CVFDC\",\"children\":[{\"text\":\"{\\\"error_info\\\":\\\"\\\",\\\"new_room_type\\\":0,\\\"subEventType\\\":0,\\\"result\\\":0}\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[33,29,38],\"widthMode\":\"percentage\"},{\"id\":\"SC5CsvmLDExlpXflHC8w7\",\"children\":[{\"text\":\"The monitoring event of room call quality\"}],\"nodeId\":\"the-monitoring-event-of-room-call-quality\",\"type\":\"h3\"},{\"id\":\"VuZ7VzSQt2y3U7eyENXK6\",\"children\":[{\"text\":\"The message for quality monitoring event triggered once every two seconds after room entry is \"},{\"code\":1,\"text\":\"ITMG_MAIN_EVENT_TYPE_CHANGE_ROOM_QUALITY\"},{\"text\":\". The returned parameters include \"},{\"code\":1,\"text\":\"weight\"},{\"text\":\", \"},{\"code\":1,\"text\":\"loss\"},{\"text\":\", and \"},{\"code\":1,\"text\":\"delay\"},{\"text\":\", which represent the following information.\"}],\"type\":\"p\"},{\"id\":\"JiyqgIBwCPGmMZuKnpOJB\",\"children\":[{\"text\":\"This API is used to monitor the network quality. If the user's network is poor, the business layer will remind the user to switch to a better network through the UI.\"}],\"type\":\"p\"},{\"id\":\"3i3-5S8Kkhj3Kgyr_0XWu\",\"children\":[{\"id\":\"PFkvJUGfXX8vNLeSYqt0F\",\"children\":[{\"id\":\"UpTOmF9t330P9yDXYm-7j\",\"children\":[{\"id\":\"xYmy9KGvD461lFdiYKjb9\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ww5Rl7ISXd6Ztij5vnx5d\",\"children\":[{\"id\":\"PgXPZFjhnP0-TCzCmuY21\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"rjEbKjd_vSA-Gteqdn1AU\",\"children\":[{\"id\":\"fdR733x8oKNTaGh9luXYy\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"dJvDDAwAVRFL7YE5hU_gj\",\"children\":[{\"id\":\"WcaYZlNvNgnUhNLGpdmBU\",\"children\":[{\"id\":\"0xLdIKanrcEoXtAEIMhB2\",\"children\":[{\"id\":\"8lNTDTwwrVkoHjGvHPPn3\",\"children\":[{\"text\":\"weight\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"9E4Z5_PDzbKDdeGqEIBiB\",\"children\":[{\"id\":\"6OiAwkmMOlszdz19MrzCd\",\"children\":[{\"id\":\"o1YwvLh0PxiZ_s5SJi0W3\",\"children\":[{\"text\":\"int\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"5Osr6OxG83CoX8KiCoxEt\",\"children\":[{\"id\":\"IxtkvPfoiDV1Y3bZ7OlsH\",\"children\":[{\"id\":\"Gj0LCXPh7u-70zmK-K9Pq\",\"children\":[{\"text\":\"Value range: 1-50. 50 indicates excellent sound quality, 1 indicates very poor (barely usable) sound quality, and 0 represents an initial meaningless value. Generally, if the value is below 30, you can remind users that the network is poor and recommend them to switch the network.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"n7vH_NpicHNjswpKdpy6A\",\"children\":[{\"id\":\"ZQ9EjUosY6wWdw2ojTpB4\",\"children\":[{\"id\":\"DtC4US_4fk-h2XGq0JS7x\",\"children\":[{\"id\":\"0P9WUztTkj4BFtTPMnmQp\",\"children\":[{\"text\":\"loss\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"UUbi2lB62dpLXWIr6Ux1-\",\"children\":[{\"id\":\"tc3oTbQuUsEXQK6ewe35D\",\"children\":[{\"id\":\"SFkqu8wxC4KA7pfRQQaDY\",\"children\":[{\"text\":\"double\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"yOnmgy9ULnZ2OSl55QjrZ\",\"children\":[{\"id\":\"tNQZNtI-U1B836RV7grbw\",\"children\":[{\"id\":\"qIdB3cVkHiFCnbGb0fP3M\",\"children\":[{\"text\":\"Upstream packet loss rate\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"IQAE78Y3BL7lWdjTRPKoZ\",\"children\":[{\"id\":\"YrkGhKFihMPlXm-nNZCnq\",\"children\":[{\"id\":\"ZaTHD7qasvaT9arVKr4fh\",\"children\":[{\"id\":\"ziiUrZ5gpKPjuDNgwPl37\",\"children\":[{\"text\":\"delay\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"KMAQuK11P1Be6HjF0uBSQ\",\"children\":[{\"id\":\"T_pCMmU7MxTiZwFtRjx0L\",\"children\":[{\"id\":\"1VUpb1tS4t4kNCfNoXDDm\",\"children\":[{\"text\":\"int\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"2zbKSJJSfMR6yjNQJjNOC\",\"children\":[{\"id\":\"vGbny2KXGjuhHdr11cfRy\",\"children\":[{\"id\":\"lMW1AN8H10WacVwAE4q7D\",\"children\":[{\"text\":\"Voice chat delay in ms\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[11,12,77],\"widthMode\":\"percentage\"},{\"id\":\"vof-Aiy_O2ubYExz325Bu\",\"children\":[{\"text\":\"Getting version number\"}],\"nodeId\":\"getting-version-number\",\"type\":\"h3\"},{\"id\":\"tbHBvEk1FxQ_U72_iOO19\",\"children\":[{\"text\":\"This API is used to get the SDK version number for analysis.\"}],\"type\":\"p\"},{\"id\":\"JZK_T8l3kv3-q2GKeu5Bo\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\"function-prototype38\",\"type\":\"h4\"},{\"id\":\"ob_UOyC-htZjqG6sXaxwu\",\"children\":[{\"id\":\"pSgg-kJlNFsXdZHfkSCil\",\"children\":[{\"text\":\"-(NSString*)GetSDKVersion;\"}],\"type\":\"code-line\"},{\"id\":\"3IY2MiiBVbM11V6oMn9wx\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"flvcW70CFGOTNMMiyKeed\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code40\",\"type\":\"h4\"},{\"id\":\"C8EZ0QXcl5trS7MyqCegM\",\"children\":[{\"id\":\"uSAxyV1qZGKw08o5n91xq\",\"children\":[{\"text\":\"[[ITMGContext GetInstance] GetSDKVersion];\"}],\"type\":\"code-line\"},{\"id\":\"mVoeFZ7lWU2FzuXhkSoJk\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"7KTdYHTCIOX_K7kYqcbFc\",\"children\":[{\"text\":\"Checking mic permission\"}],\"nodeId\":\"checking-mic-permission\",\"type\":\"h3\"},{\"id\":\"tsBWMdEEfjQEyXi-PYF__\",\"children\":[{\"text\":\"This API is used to return the mic permission status.\"}],\"type\":\"p\"},{\"id\":\"9W_Qe1DBXrFcATlofjZ6l\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\"function-prototype39\",\"type\":\"h4\"},{\"id\":\"i6kGwA3iF-bz85BWmWuj1\",\"children\":[{\"id\":\"CyKZ4r8wEEWWozDa-q_LW\",\"children\":[{\"text\":\"-(ITMG_RECORD_PERMISSION)CheckMicPermission;\"}],\"type\":\"code-line\"},{\"id\":\"nYLR0eoXU4jj4zIufunHv\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"mexmP1Q9un7cKUhkoVShm\",\"children\":[{\"text\":\"Parameter description\"}],\"nodeId\":\"parameter-description\",\"type\":\"h4\"},{\"id\":\"KsG-XeV64bmAxdYpuzY82\",\"children\":[{\"id\":\"GrIagzCd9p3E1QzS88FgG\",\"children\":[{\"id\":\"Z4t6zrRIJOxj5Gn5HLNBn\",\"children\":[{\"id\":\"B2u6MN26w19ykRjoWXPf3\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"m1WU74DrCoYqE3D2stC9m\",\"children\":[{\"id\":\"rW6EMjOHbCkf0aYFC2GuV\",\"children\":[{\"text\":\"Value\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"TuvA2BvDFELLerGDQgV6F\",\"children\":[{\"id\":\"eLnbinmqiZsSVBj-Wp_Wr\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"Z2mYDMbHRZf30oKzognqG\",\"children\":[{\"id\":\"pvf7JllzdzxLxJcMkshSy\",\"children\":[{\"id\":\"JGKXJjGXr7FCB3GwB-nyO\",\"children\":[{\"id\":\"1zPKlxKRP5VzSKI0DdCSF\",\"children\":[{\"text\":\"ITMG_PERMISSION_GRANTED\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"M7LUdfwdYUG2E8rc28frr\",\"children\":[{\"id\":\"cnsCXNDplEXSPWaJ0g71w\",\"children\":[{\"id\":\"hNKCpp6wR_BiBOFYEjIrU\",\"children\":[{\"text\":\"0\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ZGpt60oXo2tmcanUguPF4\",\"children\":[{\"id\":\"KXIrd3QH4cnB7xpTQCffA\",\"children\":[{\"id\":\"sfLhfspiVxogj1pIx8oWw\",\"children\":[{\"text\":\"Mic permission is granted.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"k_R4dVFb84FwSDmxBklTs\",\"children\":[{\"id\":\"O4rG9Hm7ZztUvO_gLhwGl\",\"children\":[{\"id\":\"Ngqw3OfkItZYbruNpOXuc\",\"children\":[{\"id\":\"wFJIr_219h0WRKWd8hIAm\",\"children\":[{\"text\":\"ITMG_PERMISSION_Denied\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"2pCUia3103HTe-3UXa0FJ\",\"children\":[{\"id\":\"G1KfivQ4DbEaNVpJ-JSPf\",\"children\":[{\"id\":\"OjDLycJVa3gbcdC-5je0Z\",\"children\":[{\"text\":\"1\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"8uba9ayynzs2lnr5T8jUG\",\"children\":[{\"id\":\"KWg28izLmZ1Z6CISdgzWt\",\"children\":[{\"id\":\"h6o9KvOj2QqMj7kGINwt8\",\"children\":[{\"text\":\"Mic is disabled.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"gfqvmd1jIIv3MTgh4MkPu\",\"children\":[{\"id\":\"6o1Ray0lgtGChE9czcw9q\",\"children\":[{\"id\":\"IwZVyxUYW1ktgch8srlIJ\",\"children\":[{\"id\":\"eiU-SyI6rPam4CqsPPMOZ\",\"children\":[{\"text\":\"ITMG_PERMISSION_NotDetermined\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"fK0uHzzRxrN63Y_TQgVLw\",\"children\":[{\"id\":\"zxbByYL6r3uG9ITibBMC_\",\"children\":[{\"id\":\"_B_zAPA5Uks0VMKIBC35N\",\"children\":[{\"text\":\"2\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"yhxUKG5rPBClmgfqR3HCy\",\"children\":[{\"id\":\"jtbHGZgzQKMlSK2WQ3hVb\",\"children\":[{\"id\":\"N7scG4y8g8gYWy9myzjhZ\",\"children\":[{\"text\":\"No authorization box has been popped up to request the permission.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"_7tjahRE6NT9o3rODAIGm\",\"children\":[{\"id\":\"AnnJ6On--EVACCz2OqJ74\",\"children\":[{\"id\":\"AOdQMLj17MxyfKq7_m4kY\",\"children\":[{\"id\":\"6z5QlJ_YL5MPJ_Tl_6Q0r\",\"children\":[{\"text\":\"ITMG_PERMISSION_ERROR\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Zss-rVEZWqcRxvyG_0ii0\",\"children\":[{\"id\":\"6rStEWA7m6ilK7dEiuo7-\",\"children\":[{\"id\":\"zWayXhvyS5A8wayox6hH6\",\"children\":[{\"text\":\"3\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"0N67nieXYvJu57QZhxA0t\",\"children\":[{\"id\":\"f8Zoh2_cqDBsdNFUI0uw6\",\"children\":[{\"id\":\"Jt_W9SMmYknKHz7RJt-h0\",\"children\":[{\"text\":\"An error occurred while calling the API.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[33,8,59],\"widthMode\":\"percentage\"},{\"id\":\"PX5o4rkA27Kvfeh32c_XB\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code41\",\"type\":\"h4\"},{\"id\":\"7zblHhjiuLf-okHUSX7Cp\",\"children\":[{\"id\":\"oSCIVbp_d2sMhSj9owdAB\",\"children\":[{\"text\":\"[[ITMGContext GetInstance] CheckMicPermission];\"}],\"type\":\"code-line\"},{\"id\":\"NW8UvZUtvDmkQrBhituKl\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"q__4lS8T8xdhIuW57IsUp\",\"children\":[{\"text\":\"Setting log printing level\"}],\"nodeId\":\"setting-log-printing-level\",\"type\":\"h3\"},{\"id\":\"HRtyuu5d2026Jmt0rSugk\",\"children\":[{\"text\":\"This API is used to set the level of logs to be printed, and needs to be called before the initialization. It is recommended to keep the default level.\"}],\"type\":\"p\"},{\"id\":\"tJNtO40Z9wYoKtobNKVoW\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\"function-prototype40\",\"type\":\"h4\"},{\"id\":\"zuadoqIloG7keRNqJWMDU\",\"children\":[{\"id\":\"nMom03GFB9oUGEMUFfr9P\",\"children\":[{\"text\":\"-(void)SetLogLevel:(ITMG_LOG_LEVEL)levelWrite (ITMG_LOG_LEVEL)levelPrint;\"}],\"type\":\"code-line\"},{\"id\":\"K9S2sUV35W_fxRsBPve-u\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"VjplroAYLptTDZ-MOJxbH\",\"children\":[{\"text\":\"Parameter description\"}],\"nodeId\":\"parameter-description2\",\"type\":\"h4\"},{\"id\":\"1dNa-olJSwsxxG-Z4GU24\",\"children\":[{\"id\":\"vYUrwQTl26Vd04O4BSk7j\",\"children\":[{\"id\":\"RwOtIdGwStlMiFQEccYPF\",\"children\":[{\"id\":\"jyOWviCFOmze2843yHX1T\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"gRCJYvTx8Q7SQFc2eQ0jF\",\"children\":[{\"id\":\"TIWBQl76Neuf0I4s5owzU\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"5SsrUGTRzU9sXHpS-_2qZ\",\"children\":[{\"id\":\"1rIVh9hW2oJkbLtwQ6nZc\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"93Pb_SEHQFCMfgxqapL8z\",\"children\":[{\"id\":\"U4xfA3itf-McEi3Ebkix8\",\"children\":[{\"id\":\"R-4egkch7bhydhC67N0R0\",\"children\":[{\"id\":\"Fws_kH6IOWfP53NFNoijT\",\"children\":[{\"text\":\"levelWrite\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"D5bx37Hk5xBuOh5P_R2CZ\",\"children\":[{\"id\":\"TuHpztz8HFfmonVgp-zv2\",\"children\":[{\"id\":\"j_3wbt9ISRn_cMFaqMQs9\",\"children\":[{\"text\":\"ITMG_LOG_LEVEL\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"QkU9jOwsFSrp59_e_G-9U\",\"children\":[{\"id\":\"9yuHCxqDbPYRaC3gO9Y1n\",\"children\":[{\"id\":\"cIDBT57Q3yVd_UgN0mufS\",\"children\":[{\"text\":\"Sets the level of logs to be written. \"},{\"code\":1,\"text\":\"TMG_LOG_LEVEL_NONE\"},{\"text\":\" indicates not to write. Default value: TMG_LOG_LEVEL_INFO\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"Uifh_UE6kcpnWRc2jRHny\",\"children\":[{\"id\":\"KLuCEakvcjHXG-82nkbwZ\",\"children\":[{\"id\":\"OMdQu2pGZstNRwnLB_qJS\",\"children\":[{\"id\":\"uO0B9E5XgXDrMP6dx_-Dg\",\"children\":[{\"text\":\"levelPrint\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"zNlDtAs6rlIC7Ft4cee2K\",\"children\":[{\"id\":\"G116E44YT_53U7RscrnZ4\",\"children\":[{\"id\":\"LrM2ERm_CKzz4GgcZUeDv\",\"children\":[{\"text\":\"ITMG_LOG_LEVEL\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"IzdLeCfnYx-28aGZCel0T\",\"children\":[{\"id\":\"KWFVswjU2PWu3NfKCfdSG\",\"children\":[{\"id\":\"F_8BkRuNlTe9XDZJUL7uN\",\"children\":[{\"text\":\"Sets the level of logs to be printed. \"},{\"code\":1,\"text\":\"TMG_LOG_LEVEL_NONE\"},{\"text\":\" indicates not to print. Default value: TMG_LOG_LEVEL_ERROR\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[13,20,67],\"widthMode\":\"percentage\"},{\"id\":\"y4EgwJyA6krvuTGlnkwXF\",\"children\":[{\"id\":\"iUYnHqS75foKPO0CToBDf\",\"children\":[{\"id\":\"Mx9a69YkpuNkm6dyyuUyv\",\"children\":[{\"id\":\"-Qbfyvb6dtws5cx8M2Qta\",\"children\":[{\"text\":\"ITMG_LOG_LEVEL\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"vGuQFcjQBeTXPGcNavMbR\",\"children\":[{\"id\":\"ItK5C0ltzCqnYoyriblPM\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"AfSKcsvmPyflGhZNoSR30\",\"children\":[{\"id\":\"oZnuPfuVZxq5AsqgP7YVp\",\"children\":[{\"id\":\"57ygfxZz8BBXDAMkfvyVa\",\"children\":[{\"id\":\"HcRhPRsuCnEF7u5QTu_kn\",\"children\":[{\"text\":\"TMG_LOG_LEVEL_NONE\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"D4DQoFb8ldChwEy1iClzc\",\"children\":[{\"id\":\"ZUcsM4NX2lQtFoKzDBKAJ\",\"children\":[{\"id\":\"dwfWVaUnPgB7RuJdGQHC5\",\"children\":[{\"text\":\"Does not print logs\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"77ET40VmJ13QdS9RGfv7b\",\"children\":[{\"id\":\"lfTy7MToOwBKCCDtra0me\",\"children\":[{\"id\":\"GdaSmMkvzB9M0nFn9kQFX\",\"children\":[{\"id\":\"yYa7tQ7zVYGhIkarxeU5u\",\"children\":[{\"text\":\"TMG_LOG_LEVEL_ERROR\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"k1tZVde8jj44mUokEVNHf\",\"children\":[{\"id\":\"CxuVdi6oH3AxtAeF8GT69\",\"children\":[{\"id\":\"15QBJyYBxvqn5n0SaI6SP\",\"children\":[{\"text\":\"Prints error logs (default)\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"ruJ-6oEQihq6zs944mVNM\",\"children\":[{\"id\":\"G7dKHbedt1Su-ioX8dnEd\",\"children\":[{\"id\":\"daS-_EX0sSXjTgn3j9UfE\",\"children\":[{\"id\":\"PRjAh4vsfenSiqtkMmHRL\",\"children\":[{\"text\":\"TMG_LOG_LEVEL_INFO\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"87c72P-p46937RuRMMUsD\",\"children\":[{\"id\":\"mJv0cZaiaBT4kPMVdDC7g\",\"children\":[{\"id\":\"Sixt-3xWbFPsMOBA3uU2N\",\"children\":[{\"text\":\"Prints info logs\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"3R7ODInZksWKPGfLdXSR2\",\"children\":[{\"id\":\"kMMU4FyQxm7Q-_r5CrTJ4\",\"children\":[{\"id\":\"XdlL0YgXSGjlJWFbA8x18\",\"children\":[{\"id\":\"HjAlk4Ac2eqULLGmn-L3Q\",\"children\":[{\"text\":\"TMG_LOG_LEVEL_DEBUG\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"zE9Muf-qyjKlckbgCwBVj\",\"children\":[{\"id\":\"96Qpc6p-RdQJbkUlnXmGX\",\"children\":[{\"id\":\"sHoh4BFtnvHrzRqPoA_T0\",\"children\":[{\"text\":\"Prints debug logs\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"Tjco7u2WlB-kqmXxiAqdf\",\"children\":[{\"id\":\"bugbzhU6EOGTv6YuzIr49\",\"children\":[{\"id\":\"Gm5LBy6Tti2-s1_wDy-ju\",\"children\":[{\"id\":\"TXitcpDQKeM161p6QO_31\",\"children\":[{\"text\":\"TMG_LOG_LEVEL_VERBOSE\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"W5L27PT33aAW1gEgW3Rud\",\"children\":[{\"id\":\"F8E2H3EJ8DqxqnFYsgeHd\",\"children\":[{\"id\":\"eXdKG9fzJShAJJ78ywBhN\",\"children\":[{\"text\":\"Prints verbose logs\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[43,57],\"widthMode\":\"percentage\"},{\"id\":\"BF_En3h8Lbe5ZkGSvH2O0\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code42\",\"type\":\"h4\"},{\"id\":\"kubLGJTcIk7V9lR2qpDuJ\",\"children\":[{\"id\":\"1AHqAwQdyiS45fdl0cDA0\",\"children\":[{\"text\":\"[[ITMGContext GetInstance] SetLogLevel:TMG_LOG_LEVEL_INFO TMG_LOG_LEVEL_INFO];\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"nyFkgGWA4YHnVNuMgCY4w\",\"children\":[{\"text\":\"Setting the log printing path\"}],\"nodeId\":\"setting-the-log-printing-path\",\"type\":\"h3\"},{\"id\":\"ha-guUlox3jlLlSFuOxJX\",\"children\":[{\"text\":\"This API is used to set the log printing path, which is /Users/username/Library/Containers/xxx.xxx.xxx/Data/Documents by default.\"}],\"type\":\"p\"},{\"id\":\"GGD7oay4zk_JQlse2pED_\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\"function-prototype41\",\"type\":\"h4\"},{\"id\":\"rsjKzIy4g7l7yocOmEAtQ\",\"children\":[{\"id\":\"QGlMr6euE5mWHzYJHIaQf\",\"children\":[{\"text\":\"-(void)SetLogPath:(NSString*)logDir;\"}],\"type\":\"code-line\"},{\"id\":\"bWnXBEImkBcUQY2eVRwaz\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"XtzCMb4t5PsjYK3_ytHRf\",\"children\":[{\"id\":\"jD20uDcqL1YghgJdaY5wI\",\"children\":[{\"id\":\"bOLCQJ-UnSgluIdg0_Hab\",\"children\":[{\"id\":\"dGCOp7OFHK9yWMR-Ay7cS\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"CPGApJLYJF9Kee4JEJYHU\",\"children\":[{\"id\":\"M6NDu6bjuT9m5ShcY07GT\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"HGpY-gHSezDIad5AvvyO3\",\"children\":[{\"id\":\"iFyh9uR3Lw3UUP76ORvXz\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"EmiaYZ2f_C7xntRBAQbMX\",\"children\":[{\"id\":\"0XN9IkeXhyJDdCYF1GVFD\",\"children\":[{\"id\":\"avOh0FKS_Af7rduxk9r0f\",\"children\":[{\"id\":\"ECU56DjJMpqDSQx89azMc\",\"children\":[{\"text\":\"logDir\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"6gnKtkknbveaYyxJJNzGw\",\"children\":[{\"id\":\"3SGD7eZwi6p_-aRxRI4LD\",\"children\":[{\"id\":\"UcktVQRmh89kklwjZEfPC\",\"children\":[{\"text\":\"NSString\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"IhM1FHSkBHUhKMxMP77jb\",\"children\":[{\"id\":\"469zWm-jxDIm1e5qmDnF-\",\"children\":[{\"id\":\"Led5-N_LSnJxcSwnlRVW-\",\"children\":[{\"text\":\"Path\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[33,30,37],\"widthMode\":\"percentage\"},{\"id\":\"dBc0fmF97Mv2gfFDWwklD\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code43\",\"type\":\"h4\"},{\"id\":\"1XGvIaU46P67wwSxtGdmP\",\"children\":[{\"id\":\"FyTqNWM8U0Fmfs9sWgbjl\",\"children\":[{\"text\":\"[[ITMGContext GetInstance] SetLogPath:Path];\"}],\"type\":\"code-line\"},{\"id\":\"qt5rPlqtV3Sm0PJkv7NwG\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"Rrd8O--58qw51vWEzW0I8\",\"children\":[{\"text\":\"Getting the diagnostic messages\"}],\"nodeId\":\"getting-the-diagnostic-messages\",\"type\":\"h3\"},{\"id\":\"Rl5gmZrzN4ze-zZ4OQ4JM\",\"children\":[{\"text\":\"This API is used to get information on the quality of real-time audio/video calls, which is mainly used to view real-time call quality and troubleshoot and can be ignored on the business side.\"}],\"type\":\"p\"},{\"id\":\"d002CT1o5WCrYFjGDEWts\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\"function-prototype42\",\"type\":\"h4\"},{\"id\":\"Yb8kVLQwyxo9McJkPHOWz\",\"children\":[{\"id\":\"28S_gW75sXDOGkkxK8GqX\",\"children\":[{\"text\":\"-(NSString*)GetQualityTips;\"}],\"type\":\"code-line\"},{\"id\":\"WPWvTS1NkgceFok7_3HT1\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"1M8cxRX_zY54a7GuB2V7U\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code44\",\"type\":\"h4\"},{\"id\":\"lKJHywlKr1WXjTC6REn2i\",\"children\":[{\"id\":\"vpW-8u00Ii_wBc_WXTrhz\",\"children\":[{\"text\":\"[[[ITMGContext GetInstance]GetRoom ] GetQualityTips];\"}],\"type\":\"code-line\"},{\"id\":\"TU8Wop4OxxJPQByQ0CE2d\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"k5GEkWSfotfBIAYHvfo6v\",\"children\":[{\"text\":\"Callback Messages\"}],\"nodeId\":\"callback-messages\",\"type\":\"h2\"},{\"id\":\"evBt1tWYy7o2gnj6iVGyL\",\"children\":[{\"text\":\"Message list\"}],\"nodeId\":\"message-list\",\"type\":\"h3\"},{\"id\":\"iPVmM9WG0uooEGfFJH3S8\",\"children\":[{\"id\":\"vjUrSRy2KewcQ59Swx44B\",\"children\":[{\"id\":\"5meyoTw_dhfp6Lk-IRAqr\",\"children\":[{\"id\":\"ddWd8o0vkXIKQBG-eFo2j\",\"children\":[{\"text\":\"Message\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"cvbD56VLIBoLW75RlAWAz\",\"children\":[{\"id\":\"7fhtbJzznxm8kxl4czbvl\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"GMu6OxVzo0WebWE0SrPls\",\"children\":[{\"id\":\"XOi31OcgAXikHghbkOeuv\",\"children\":[{\"id\":\"hIvJWtCqEarvZoIUdu3zu\",\"children\":[{\"id\":\"T1pj96Dy79DFsFWJrTK_o\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_ENTER_ROOM\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"3RE-mzytGkSxi0af97C78\",\"children\":[{\"id\":\"uSy-PE8GoiS_VrMAcv8V0\",\"children\":[{\"id\":\"2qlZREf_cLOPN6vCl7AMA\",\"children\":[{\"text\":\"Indicates that a member enters an audio room.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"uqZXhmdL9aF-Pf3NgK7lV\",\"children\":[{\"id\":\"aZfKDaM-Vud_AEiRIYGd6\",\"children\":[{\"id\":\"-DkDamTqPcUqo2_X4Vy8x\",\"children\":[{\"id\":\"equXVb5TOLQlccwRhBs_u\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_EXIT_ROOM\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"PDmdhqsFYYk4bEhfs05iQ\",\"children\":[{\"id\":\"TbT2QUMPh8z_P6dURGdmh\",\"children\":[{\"id\":\"L70iU-XMc6pKRs1Byi8B1\",\"children\":[{\"text\":\"Indicates that a member exits an audio room.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"0q54aYUPx88aQtxqTgnn8\",\"children\":[{\"id\":\"qQVHxKnivJuwdH4ysZUzc\",\"children\":[{\"id\":\"44tvk47HnvTtgi2GngiuJ\",\"children\":[{\"id\":\"NWBvuN4aNdEDhVKNaVSXg\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_ROOM_DISCONNECT\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Ydk3OMD7O0BSvo3RgRH0x\",\"children\":[{\"id\":\"P-zpg7pzpbVls3aGbPvX9\",\"children\":[{\"id\":\"6EfehRyK2ka5QrNv8pMAb\",\"children\":[{\"text\":\"Indicates that a room is disconnected for network or other reasons.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"BuzVtAycaS1co6dT7YuUA\",\"children\":[{\"id\":\"fvmMZ04YgjTLttkC1WC4H\",\"children\":[{\"id\":\"m6LTri2WZ6Zt75qri0E5I\",\"children\":[{\"id\":\"_Fxblx82YzW84c8Pl3aUf\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_CHANGE_ROOM_TYPE\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"9Vudpg9oNnmWfoGSaK0gK\",\"children\":[{\"id\":\"tJoG2_w1vY6Td77n1ULzw\",\"children\":[{\"id\":\"8W9H7TJYlUcbqCFhuErtq\",\"children\":[{\"text\":\"Indicates a room type change event.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"OZ_6t18u3cNXiNT9a0mgZ\",\"children\":[{\"id\":\"adDzxQIJGNqbfUyXzR5L2\",\"children\":[{\"id\":\"omX49yNUVpuemNevXgbT_\",\"children\":[{\"id\":\"1hB-4nXdjAbaXCfKyuVHv\",\"children\":[{\"text\":\"ITMG_MAIN_EVNET_TYPE_USER_UPDATE\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"jYrwGxgt0Zeg9CnCLNXrI\",\"children\":[{\"id\":\"BVx7BFzeULt-rIT-zKnyY\",\"children\":[{\"id\":\"caoBPD7RyPNzXFco2JMC7\",\"children\":[{\"text\":\"Indicates that the room members are updated.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"Jtmy-kDgGLjkLJNZvC-US\",\"children\":[{\"id\":\"nAkRj5BH1QC_iEW7X5RxW\",\"children\":[{\"id\":\"SyG9HQYqXcn40dJqH30em\",\"children\":[{\"id\":\"NCb6tSGcKDOWdDBzm_Kq3\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_CHANGE_ROOM_QUALITY\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"NTyMr8zPUECiYp_S5djG-\",\"children\":[{\"id\":\"7M0UHU24kYxTJ2UK-F1BA\",\"children\":[{\"id\":\"n71-HD2GkbrPjFA7idIT-\",\"children\":[{\"text\":\"Indicates the room quality information.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[46,54],\"widthMode\":\"percentage\"},{\"id\":\"XfEm16AAfwMWX7VmscTAz\",\"children\":[{\"text\":\"Data list\"}],\"nodeId\":\"data-list\",\"type\":\"h3\"},{\"id\":\"eZ83qIF3kUmLTIimZWV9A\",\"children\":[{\"id\":\"kuKv2V44nIBUN0Iuj4k4h\",\"children\":[{\"id\":\"PkaUvRrEOS9H89clXDHno\",\"children\":[{\"id\":\"AA2-10ApPGsodZujpD5fw\",\"children\":[{\"text\":\"Message\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"lrcU5fnpICGVIl6-S1s8q\",\"children\":[{\"id\":\"MesLzvSdngIVm40-VjHBs\",\"children\":[{\"text\":\"Data\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"9DhYOPF1z09xtH8PU6K58\",\"children\":[{\"id\":\"-uum4e8rhxzQxKy-Jf2k_\",\"children\":[{\"text\":\"Sample\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"ji5SggQMPHMK2s6Ep5pg8\",\"children\":[{\"id\":\"4azLkexvpCnstKClAsWAz\",\"children\":[{\"id\":\"1ob6m7DoI-X2HLIf6Ebmu\",\"children\":[{\"id\":\"WcVlvNkpHrPoo7F18M27C\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_ENTER_ROOM\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"hdKbArYee39XsjlWN-lDv\",\"children\":[{\"id\":\"AQ0zgHTcMY1GFvFevWtf3\",\"children\":[{\"id\":\"ITx45sDIngxEb9MdySNHu\",\"children\":[{\"text\":\"result; error_info\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ZPfbjD2T8ysSkRLyrFzUL\",\"children\":[{\"id\":\"-Xsy291wTxLNyQEkSR3Br\",\"children\":[{\"id\":\"YwTBmUoNRKhICdfpBfqN1\",\"children\":[{\"text\":\"{\\\"error_info\\\":\\\"\\\",\\\"result\\\":0}\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"CYUyMz7Fd0327BwXx8bby\",\"children\":[{\"id\":\"P7Asn0VCCfF19TyI2Vk5A\",\"children\":[{\"id\":\"g67mt6rB4dMuSNLzE-Td9\",\"children\":[{\"id\":\"FivkXLojX4-LbsPrCXBns\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_EXIT_ROOM\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"1bSMHC7myX7HXVvrwyPWZ\",\"children\":[{\"id\":\"yhGpRSTqQ3yU_xcqb1-hQ\",\"children\":[{\"id\":\"Pnb6Tf-IQd8vVhzgMpzCG\",\"children\":[{\"text\":\"result; error_info\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"xG1E-zHVmLG6UjES5ylM9\",\"children\":[{\"id\":\"yw5g_qH-dHNH2HUxRh70X\",\"children\":[{\"id\":\"uUBhFXw0MqXtiQ8R5O_A3\",\"children\":[{\"text\":\"{\\\"error_info\\\":\\\"\\\",\\\"result\\\":0}\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"i83jFXKSI5eTacWudyBRC\",\"children\":[{\"id\":\"nZhRsW8SzW-xpHetKALh7\",\"children\":[{\"id\":\"2aJdyFbE7p0uAyDsbxDcV\",\"children\":[{\"id\":\"-I29-MVRJ_6rwFkHqFoLg\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_ROOM_DISCONNECT\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"8Yje4600-pO7M3DUDtmJ7\",\"children\":[{\"id\":\"0DraFqJvRv36623eeeflX\",\"children\":[{\"id\":\"yIzw3se9HVBVymNF7vqi_\",\"children\":[{\"text\":\"result; error_info\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"JvdaygXbY0GDTWh8gGayn\",\"children\":[{\"id\":\"itqYKQrw7af6Auqr0LXA3\",\"children\":[{\"id\":\"UmspCil8F3MBO9_wG9I_E\",\"children\":[{\"text\":\"{\\\"error_info\\\":\\\"waiting timeout, please check your network\\\",\\\"result\\\":0}\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"i2kge1P820haiQ_N8d31i\",\"children\":[{\"id\":\"3mv9G1JycKl6zHr7bMWjl\",\"children\":[{\"id\":\"KJ1o_IKsetmOyj8x61hQc\",\"children\":[{\"id\":\"FLYBEJz_x7ONRcqjI3kCd\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_CHANGE_ROOM_TYPE\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"uy4LAr7MFh3uxPPUGvDml\",\"children\":[{\"id\":\"bgmZp8_3eDD3MATklg2NL\",\"children\":[{\"id\":\"M1r2oskGjnR2KeTpxBGfS\",\"children\":[{\"text\":\"result; error_info; sub_event_type; new_room_type\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ETmub9QVfNG0XS4o5mv05\",\"children\":[{\"id\":\"JYU8MGMqc9nTXqoXNjVEq\",\"children\":[{\"id\":\"9EoJoV9DGEnz-tdvz0LY7\",\"children\":[{\"text\":\"{\\\"error_info\\\":\\\"\\\",\\\"new_room_type\\\":0,\\\"result\\\":0}\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"c09JHBtY9VIMMFPQ6-cvd\",\"children\":[{\"id\":\"KNzxnNlr5S4xNEMc9fcTi\",\"children\":[{\"id\":\"yZZrNLgdxilbXueKUSN6x\",\"children\":[{\"id\":\"4oFnYvbBWg3Yh6yTZPiH7\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_SPEAKER_NEW_DEVICE\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"5iZFFTxcpD5TOa03uRA1T\",\"children\":[{\"id\":\"nzjDKQfhdhlUrJvEFVoPY\",\"children\":[{\"id\":\"0DZsWLXUMhl4oE-Kd_QLl\",\"children\":[{\"text\":\"result; error_info\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"vz_1FRqYex8LJhyn9UKjG\",\"children\":[{\"id\":\"SkN8kTjblZao8naPCjsXr\",\"children\":[{\"id\":\"N__Rt8Mal5lCY3jSERnF4\",\"children\":[{\"text\":\"{\\\"deviceID\\\":\\\"{0.0.0.00000000}.{a4f1e8be-49fa-43e2-b8cf-dd00542b47ae}\\\",\\\"deviceName\\\":\\\"Speaker (Realtek High Definition Audio)\\\",\\\"error_info\\\":\\\"\\\",\\\"isNewDevice\\\":true,\\\"isUsedDevice\\\":false,\\\"result\\\":0}\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"btY0g5WPwbBzgGD4V-oWe\",\"children\":[{\"id\":\"N9_gdN0L_GeGYxJj4DbHA\",\"children\":[{\"id\":\"1wKrgHhXY98wUFpOBC-t5\",\"children\":[{\"id\":\"f8PVASpb8qQDnjMZ-2qfq\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_SPEAKER_LOST_DEVICE\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"we0u9J5OfDRnHkNH0h9vY\",\"children\":[{\"id\":\"E1qj04l3DK2vnuRDB3e87\",\"children\":[{\"id\":\"WAQaVCeS9DfGYvz4PhZF8\",\"children\":[{\"text\":\"result; error_info\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"tGiyJIQJ4-Yd5ajwGKpIL\",\"children\":[{\"id\":\"a1H1kJY11vzNz7RaiUpdk\",\"children\":[{\"id\":\"4xgpiqJQ-BcrH7Cso1ohM\",\"children\":[{\"text\":\"{\\\"deviceID\\\":\\\"{0.0.0.00000000}.{a4f1e8be-49fa-43e2-b8cf-dd00542b47ae}\\\",\\\"deviceName\\\":\\\"Speaker (Realtek High Definition Audio)\\\",\\\"error_info\\\":\\\"\\\",\\\"isNewDevice\\\":false,\\\"isUsedDevice\\\":false,\\\"result\\\":0}\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"gpuICXD3FM7U5fo_h0u-3\",\"children\":[{\"id\":\"THeK91aUzTBU5ouDFX_Tm\",\"children\":[{\"id\":\"0PITynFdnPBGjk8DF6j1S\",\"children\":[{\"id\":\"b9CQ5V1y-GCtjGebJssK_\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_MIC_NEW_DEVICE\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"9ZGdPI_gMr1MudaZxvIr2\",\"children\":[{\"id\":\"P5KBOHkqCVGTzyzeuu7Wq\",\"children\":[{\"id\":\"Q54SesYz_wSr1-jMG_4we\",\"children\":[{\"text\":\"result; error_info\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"l_h0Pmp0Vs7v264GW2s6v\",\"children\":[{\"id\":\"Bg5nH1ujvH4-ixiegJj-e\",\"children\":[{\"id\":\"yz5zgaD2Kf70LXUO1kEh2\",\"children\":[{\"text\":\"{\\\"deviceID\\\":\\\"{0.0.1.00000000}.{5fdf1a5b-f42d-4ab2-890a-7e454093f229}\\\",\\\"deviceName\\\":\\\"Mic (Realtek High Definition Audio)\\\",\\\"error_info\\\":\\\"\\\",\\\"isNewDevice\\\":true,\\\"isUsedDevice\\\":true,\\\"result\\\":0}\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"8JgkEI2R0_rLGuZekdbg-\",\"children\":[{\"id\":\"zW8V_fjNnvUDSkZ7zvJHn\",\"children\":[{\"id\":\"3GxN4ucuza9grl2VZi2Vt\",\"children\":[{\"id\":\"PxnupNz5FP8KqWXjL8lz1\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_MIC_LOST_DEVICE\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"GM-bttVCq8jL_Pkd2zilK\",\"children\":[{\"id\":\"YG9Ugxjjc15eLAfLlO_CQ\",\"children\":[{\"id\":\"DTCrRFBHfz7qEQXgiRz4r\",\"children\":[{\"text\":\"result; error_info\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"aI6HcyZz2wgDL05JAaqTu\",\"children\":[{\"id\":\"aTfJu0O7zxnGTFKOHGIYm\",\"children\":[{\"id\":\"jNd89XnM9pCZuVsaE0mW0\",\"children\":[{\"text\":\"{\\\"deviceID\\\":\\\"{0.0.1.00000000}.{5fdf1a5b-f42d-4ab2-890a-7e454093f229}\\\",\\\"deviceName\\\":\\\"Mic (Realtek High Definition Audio)\\\",\\\"error_info\\\":\\\"\\\",\\\"isNewDevice\\\":false,\\\"isUsedDevice\\\":true,\\\"result\\\":0}\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"eV2pHZxCDeOl8Hw7HpQcn\",\"children\":[{\"id\":\"vKDdmX8D4iyRLAy36LF8o\",\"children\":[{\"id\":\"bOM-tuDjcIvRpW11MTfSG\",\"children\":[{\"id\":\"X9z3NhAcod6sInU6cblWw\",\"children\":[{\"text\":\"ITMG_MAIN_EVNET_TYPE_USER_UPDATE\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"9FQ3iEFfY1_l-3fXh80H1\",\"children\":[{\"id\":\"Dl1ryxA6KBtj-9mbgngoh\",\"children\":[{\"id\":\"rNeSl62bDbF73ls4iPL-B\",\"children\":[{\"text\":\"user_list; event_id\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"8w8xY3fk2PJj2YNKrUggt\",\"children\":[{\"id\":\"pSpJfPVNBtXJzhrIw7_Gw\",\"children\":[{\"id\":\"ndgzLjRgiYIZLNpouvGPH\",\"children\":[{\"text\":\"{\\\"event_id\\\":1,\\\"user_list\\\":[\\\"0\\\"]}\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"OeH1Pd9n8ae-_F9pxkFzJ\",\"children\":[{\"id\":\"mABZL__bip0c31atFpHHx\",\"children\":[{\"id\":\"BZX890ItQP3mydSjerfPb\",\"children\":[{\"id\":\"wKJiiMqQOymDN-8Zntf0k\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_NUMBER_OF_USERS_UPDATE\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"wYFjiwxHXok_b51NDMvWu\",\"children\":[{\"id\":\"JiRcuip3-dJEMVUEsoDQd\",\"children\":[{\"id\":\"N9IavTqmnyTTszZM_dKJy\",\"children\":[{\"text\":\"AllUser; AccUser; ProxyUser\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"QmmyCFSBkGfDCTRwWAFNF\",\"children\":[{\"id\":\"VPZPlcVLQ9k_L0E8agY2d\",\"children\":[{\"id\":\"0zEcOpPg3LjObs1dh6Oeh\",\"children\":[{\"text\":\"{\\\"AllUser\\\":3,\\\"AccUser\\\":2,\\\"ProxyUser\\\":1}\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"mYv4Uo2fqnyThrz0dwrZE\",\"children\":[{\"id\":\"m-cUbCDX4mzwDmZYHsw8r\",\"children\":[{\"id\":\"d0CDauTR4TaC3w5Ht-baf\",\"children\":[{\"id\":\"2OTfPpYvPfdZvlELuWp4C\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_NUMBER_OF_AUDIOSTREAMS_UPDATE\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"4RWn95lvKHci265xjX6gW\",\"children\":[{\"id\":\"mw6qco6jN-ECPadznvLIB\",\"children\":[{\"id\":\"DGaQJSLyfjLMKIaZif7eg\",\"children\":[{\"text\":\"AudioStreams\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"xrFliqT2HRh-j70BLgeRY\",\"children\":[{\"id\":\"-PRZ91XTBilzzU5T2-1kr\",\"children\":[{\"id\":\"LSd75Be-pspFYNrg0Hl3y\",\"children\":[{\"text\":\"{\\\"AudioStreams\\\":3}\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"alF3J3Ttvxgx9rDd_qZE8\",\"children\":[{\"id\":\"s8rITjBhlIwPu7EpluEBf\",\"children\":[{\"id\":\"RBtKp7c_K8C8WGMVqFoMh\",\"children\":[{\"id\":\"aAx_7magk8o0-uQIXuaVL\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_CHANGE_ROOM_QUALITY\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"AYftCaNDW57Omu2D7Xu-F\",\"children\":[{\"id\":\"TSJ_KUITKuAqqESRHgYWu\",\"children\":[{\"id\":\"33BCl7MCrjT4GgOZsnUx4\",\"children\":[{\"text\":\"weight; loss; delay\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"DiC81Fda-cAJYfcDb2V18\",\"children\":[{\"id\":\"6XEnRXlbYdEmdQsT3zfZM\",\"children\":[{\"id\":\"ErodtoasPkxUOoRVju5nB\",\"children\":[{\"text\":\"{\\\"weight\\\":5,\\\"loss\\\":0.1,\\\"delay\\\":1}\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[24,17,59],\"widthMode\":\"percentage\"},{\"type\":\"p\",\"children\":[{\"text\":\"\"}],\"id\":\"rW7xSaD1J_h1Rm_IXfE9J\"}]"}},"51124":{"categoryId":607,"weight":80,"type":"page","extension":"","pid":18319,"id":51124,"lang":"en","title":"Voice Chat","pdfUrl":"","docType":"default","children":[],"firstReleaseTime":"2022-10-28 01:22:51","recentReleaseTime":"2022-10-28 01:22:51","content":{"title":"Voice Chat","body":"
This document describes how to access and debug GME client APIs for the voice chat feature for Windows.

Key Considerations for Using GME

GME provides the real-time voice, voice message, and speech-to-text conversion services, which all depend on core APIs such as Init and Poll.

Key notes

You have created a GME application and obtained the AppID and Key of the SDK as instructed in Activating Services.
You have activated the real-time voice, voice message, and speech-to-text services of GME as instructed in Activating Services.
Configure your project before using GME; otherwise, the SDK will not take effect.
After a GME API is called successfully, QAVError.OK will be returned with the value being 0.
GME APIs should be called in the same thread.
The Poll API should be called periodically for GME to trigger event callbacks.
For detailed error code, please see Error Codes.

Connecting to the SDK

Directions

Key processes involved in SDK connection are as follows:

\"\"



C++ classes

Class
Description
ITMGContext
Key APIs
ITMGDelegate
Callback APIs
ITMGRoom
Room APIs
ITMGRoomManager
Room management APIs as described in Integrating GME Chat Room Management
ITMGAudioCtrl
Audio APIs
ITMGAudioEffectCtrl
Sound effect and accompaniment APIs
ITMGPTT
Voice message and speech-to-text conversion APIs

Key APIs

API
Description
Init
Initializes GME
Poll
Triggers event callback
Pause
Pauses the system
Resume
Resumes the system
Uninit
Uninitializes GME

Imported header files

You need to import the header file tmg_sdk.h first before you can access GME. The classes in the header file inherit ITMGDelegate for message delivery and callback.

Sample code

#include "auth_buffer.h"
#include "tmg_sdk.h"
#include "AdvanceHeaders/tmg_sdk_adv.h"
#include <vector>

Callback

Setting callback sample

// When initializing the SDK
m_pTmgContext = ITMGContextGetInstance();
m_pTmgContext->SetTMGDelegate(this);

// In the destructor
CTMGSDK_For_AudioDlg::~CTMGSDK_For_AudioDlg()
{
ITMGContextGetInstance()->SetTMGDelegate(NULL);
}


Message delivery

The API class uses the Delegate method to send callback notifications to the application. ITMG_MAIN_EVENT_TYPE indicates the message type. The data on Windows is in json string format. For the key-value pairs, please see the relevant documentation.
// Declaration in the header file
virtual void OnEvent(ITMG_MAIN_EVENT_TYPE eventType,const char* data);
// Sample code
void CTMGSDK_For_AudioDlg::OnEvent(ITMG_MAIN_EVENT_TYPE eventType, const char* data)
{
switch(eventType)
{
case ITMG_MAIN_EVENT_TYPE_XXXX_XXXX:
{
// Process the callback
}
break;
}
}

Getting singleton

The GME SDK is provided in the form of a singleton, all calls begin with ITMGContext, and callbacks are passed to the application through ITMGDelegate, which should be configured first.

Sample code

ITMGContext* m_pTmgContext;
m_pTmgContext->Init(AppID, OpenID);

Initializing SDK

You need to initialize the SDK through the Init API before you can use the real-time voice, voice message, and speech-to-text services. The Init API must be called in the same thread as other APIs. We recommend you call all APIs in the main thread.

API prototype

ITMGContext virtual int Init(const char* sdkAppId, const char* openId)
Parameter
Type
Description
sdkAppId
const char*
AppID provided in the GME console, which can be obtained as instructed in Activating Services.
openID
const char*
openID can only be in Int64 type, which is passed in after being converted to a const char*. You can customize its rules, and it must be unique in the application. To pass in openID as a string, submit a ticket for application.

Returned values

Returned Value
Description
AV_OK = 0
Initialized SDK successfully.
AV_ERR_SDK_NOT_FULL_UPDATE=7015
Checks whether the SDK file is complete. It is recommended to delete it and then import the SDK again.
Notes on 7015 error code
The 7015 error code is judged by md5. If this error is reported during integration, please check the integrity and version of the SDK file as prompted.
The returned value AV_ERR_SDK_NOT_FULL_UPDATE is only a reminder but will not cause an initialization failure.
Due to the third-party reinforcement, Unity packaging mechanism and other factors, the md5 of the library file will be affected, resulting in misjudgment. Please ignore this error in the logic for official release, and try to avoid displaying it in the UI.

Sample code

#define SDKAPPID3RD "14000xxxxx"
cosnt char* openId="10001";
ITMGContext* context = ITMGContextGetInstance();
context->Init(SDKAPPID3RD, openId);

Triggering event callback

Event callbacks can be triggered by periodically calling the Poll API in update. Poll is the message pump of GME, and the Poll API should be called periodically for GME to trigger event callbacks; otherwise, the entire SDK service will run exceptionally.\nYou can refer to the EnginePollHelper.cpp file in the demo.
Calling the `Poll` API periodically
The Poll API must be called periodically and in the main thread to avoid abnormal API callbacks.

API prototype

class ITMGContext {
protected:
virtual ~ITMGContext() {}

public:
virtual void Poll()= 0;
}

Sample code

// Declaration in the header file

// Code implementation
void TMGTestScene::update(float delta)
{
ITMGContextGetInstance()->Poll();
}

Pausing the system

When a Pause event occurs in the system, the engine should also be notified for pause. If you do not need the background to play back the audio in the room, please call Pause API to pause the GME service.

API prototype

ITMGContext int Pause()

Resuming the system

When a Resume event occurs in the system, the engine should also be notified for resumption. The Resume API only supports resuming voice chat.

API prototype

ITMGContext int Resume()

Uninitializing SDK

This API is used to uninitialize the SDK to make it uninitialized. If the game business account is bound to openid, switching game account requires uninitializing GME and then using the new openid to initialize again.

API prototype

ITMGContext int Uninit()

Voice Chat Room APIs

You should initialize and call the SDK to enter a room before voice chat can start.
If you have any questions when using the service, please see FAQs About Voice Chat.

\"\"


API
Description
GenAuthBuffer
Calculates the local authentication key
EnterRoom
Enters a room
ExitRoom
Exits the room
IsRoomEntered
Determines whether room entry is successful
SwitchRoom
Switches the room quickly

Local authentication key calculation

Generate AuthBuffer for encryption and authentication of relevant features. For release in the production environment, please use the backend deployment key as detailed in Authentication Key.

API prototype

int QAVSDK_AuthBuffer_GenAuthBuffer(unsigned int dwSdkAppID, const char* strRoomID, const char* strOpenID,
const char* strKey, unsigned char* strAuthBuffer, unsigned int bufferLength);
Parameter
Type
Description
dwSdkAppID
unsigned int
AppId from the Tencent Cloud console
strRoomID
const char*
Room ID, which can contain up to 127 characters.
strOpenID
const char*
User ID, which is the same as openID during initialization.
strKey
const char*
Permission key from the Tencent Cloud console
strAuthBuffer
const char*
Returned authbuff
bufferLength
int
Length of the authbuff passed in. 500 is recommended.

Sample code

unsigned int bufferLen = 512;
unsigned char retAuthBuff[512] = {0};
QAVSDK_AuthBuffer_GenAuthBuffer(atoi(SDKAPPID3RD), roomId, "10001", AUTHKEY,retAuthBuff,bufferLen);

Entering a room

This API is used to enter a room with the generated authentication information. The mic and speaker are not enabled by default after room entry.
Note:
If the room entry callback result is 0, the room entry is successful. If 0 is returned from the EnterRoom API, it doesn't necessarily mean that the room entry is successful.
The audio type of the room is determined by the first user entering the room. After that, if a member in the room changes the room type, it will take effect for all members there. For example, if the first user entering the room uses the smooth sound quality, and the second user entering the room uses the HD sound quality, the room audio type of the second user will change to the smooth sound quality. Only after a member in the room calls the ChangeRoomType API will the audio type of the room be changed.

API prototype

ITMGContext virtual int EnterRoom(const char* roomID, ITMG_ROOM_TYPE roomType, const char* authBuff, int buffLen)
Parameter
Type
Description
roomID
const char*
Room ID, which can contain up to 127 characters.
roomType
ITMG_ROOM_TYPE
Room type. We recommend you select ITMG_ROOM_TYPE_FLUENCY for games. For more information on room audio types, see Sound Quality.
authBuffer
const char*
Authentication key
buffLen
int
Authentication key length

Sample code

ITMGContext* context = ITMGContextGetInstance();
context->EnterRoom(roomID, ITMG_ROOM_TYPE_FLUENCY, (char*)retAuthBuff,bufferLen);

Callback for room entry

After the user enters the room, the message ITMG_MAIN_EVENT_TYPE_ENTER_ROOM will be sent and identified in the OnEvent function for callback and processing. A successful callback means that the room entry is successful, and the billing starts.

Sample code

void TMGTestScene::OnEvent(ITMG_MAIN_EVENT_TYPE eventType,const char* data){
switch (eventType) {
case ITMG_MAIN_EVENT_TYPE_ENTER_ROOM:
{
ListMicDevices();
ListSpeakerDevices();

std::string strText = "EnterRoom complete: ret=";
strText += data;
m_EditMonitor.SetWindowText(MByteToWChar(strText).c_str());
}
}
}

Data details

Message
Data
Sample
ITMG_MAIN_EVENT_TYPE_ENTER_ROOM
result; error_info
{"error_info":"","result":0}
ITMG_MAIN_EVENT_TYPE_ROOM_DISCONNECT
result; error_info
{"error_info":"waiting timeout, please check your network","result":0}
If the network is disconnected, there will be a disconnected callback prompt ITMG_MAIN_EVENT_TYPE.ITMG_MAIN_EVENT_TYPE_ROOM_DISCONNECT. At this time, the SDK will automatically reconnect, and the callback is ITMG_MAIN_EVENT_TYPE_RECONNECT_START. When the reconnection is successful, there will be a callback ITMG_MAIN_EVENT_TYPE_RECONNECT_SUCCESS.

Error codes

Error Code Value
Cause and Suggested Solution
7006
Authentication failed:
The AppID does not exist or is incorrect.
An error occurred while authenticating the authbuff.
Authentication expired.
The OpenId does not meet the specification.
7007
Already in another room.
1001
The user was already in the process of entering a room but repeated this operation. It is recommended not to call the room entering API until the room entry callback is returned.
1003
The user was already in the room and called the room entering API again.
1101
Make sure that the SDK is initialized, OpenId complies with the rules, the APIs are called in the same thread, and the Poll API is called normally.

Exiting a room

This API is used to exit the current room. It is an async API. The returned value AV_OK indicates a successful async delivery. If there is a scenario in the application where room entry is performed immediately after room exit, you don't need to wait for the RoomExitComplete callback notification from the ExitRoom API; instead, you can directly call the EnterRoom API.

API prototype

ITMGContext virtual int ExitRoom()

Sample code

ITMGContext* context = ITMGContextGetInstance();
context->ExitRoom();

Callback for room exit

After the user exits a room, a callback will be returned with the message being ITMG_MAIN_EVENT_TYPE_EXIT_ROOM.

Sample code

void TMGTestScene::OnEvent(ITMG_MAIN_EVENT_TYPE eventType,const char* data){
switch (eventType) {
case ITMG_MAIN_EVENT_TYPE_EXIT_ROOM:
{
// Process
break;
}
}
}

Data details

Message
Data
Sample
ITMG_MAIN_EVENT_TYPE_EXIT_ROOM
result; error_info
{"error_info":"","result":0}

Determining whether user has entered room

This API is used to determine whether the user has entered a room. A value in bool type will be returned. Do not call this API during room entry.

API prototype

ITMGContext virtual bool IsRoomEntered()

Sample code

ITMGContext* context = ITMGContextGetInstance();
context->IsRoomEntered();


Switching room

User can call this API to quickly switch the voice chat room after entering the room. After the room is switched, the device is not reset, that is, if the microphone is already enabled in this room, the microphone will keep enabled after the room is switched.\nThe callback for quickly switching rooms is ITMG_MAIN_EVENT_TYPE.ITMG_MAIN_EVENT_TYPE_SWITCH_ROOM, and the fields are error_info and result.

API prototype

ITMGContext virtual int SwitchRoom(const char* targetRoomID, const char* authBuff, int buffLen);

Type descriptions

Parameter
Type
Description
targetRoomID
const char*
ID of the room to enter
authBuffer
const char*
Generates a new authentication key with the ID of the room to enter
buffLen
int
Authentication key length

Room Status Maintenance

APIs in this section are used to display speaking members and members entering or exiting the room and mute a member in the room at the business layer.

\"\"


API/Notification
Description
ITMG_MAIN_EVNET_TYPE_USER_UPDATE
The member status changed
AddAudioBlackList
Mutes a member in the room
RemoveAudioBlackList
Unmutes a user

Notification events of member room entry and speaking status

This API is used to obtain the user speaking in the room and display it in the UI, and to send a notification when someone entering or exiting the room.\nNotification for this event will be sent only when the status changes. To get member status in real time, cache the notification when it is received at a higher layer. The event message is ITMG_MAIN_EVNET_TYPE_USER_UPDATE, where the data contains event_id and user_list. The event message will be identified in the OnEvent function.\nNotifications for audio events are subject to a threshold, and a notification will be sent only when this threshold is exceeded. The notification "A member has stopped sending audio packets" will be sent if no audio packets are received in more than two seconds.
event_id
Description
Maintenance
ITMG_EVENT_ID_USER_ENTER
Return the openid of the member entering the room.
Member list
ITMG_EVENT_ID_USER_EXIT
Return the openid of the member exiting the room.
Member list
ITMG_EVENT_ID_USER_HAS_AUDIO
Return the openid of the member sending audio packets in the room. This event can be used to determine whether a user is speaking and display the voiceprint effect.
Chat member list
ITMG_EVENT_ID_USER_NO_AUDIO
Return the openid of the member stopping sending audio packets in the room.
Chat member list

Sample code

void TMGTestScene::OnEvent(ITMG_MAIN_EVENT_TYPE eventType,const char* data){
switch (eventType) {
case ITMG_MAIN_EVNET_TYPE_USER_UPDATE:
{
// Process
// Parse the parameter to get `eventID` and `user_list`
switch (eventID)
{
case ITMG_EVENT_ID_USER_ENTER:
// A member enters the room
break;
case ITMG_EVENT_ID_USER_EXIT:
// A member exits the room
break;
case ITMG_EVENT_ID_USER_HAS_AUDIO:
// A member sends audio packets
break;
case ITMG_EVENT_ID_USER_NO_AUDIO:
// A member stops sending audio packets
break;
default:
break;
}
break;
}
}
}

Muting a member in the room

This API is used to add an ID to the audio data blocklist. This operation blocks audio from someone and only applies to the local device without affecting other devices. The returned value 0 indicates that the call is successful. Assume that users A, B, and C are all speaking using their mic in a room:
If A blocks C, A can only hear B;
If B blocks neither A nor C, B can hear both of them;
If C blocks neither A nor B, C can hear both of them.
This API is suitable for scenarios where a user is muted in a room.

API prototype

ITMGContext ITMGAudioCtrl int AddAudioBlackList(const char* openId)
Parameter
Type
Description
openId
char*
openid of the user to be blocked

Sample code

ITMGContextGetInstance()->GetAudioCtrl()->AddAudioBlackList(openId);

Unmuting

This API is used to remove an ID from the audio data blacklist. A returned value of 0 indicates the call is successful.

API prototype

ITMGContext ITMGAudioCtrl int RemoveAudioBlackList(const char* openId)
Parameter
Type
Description
openId
char*
ID to be unblocked

Sample code

ITMGContextGetInstance()->GetAudioCtrl()->RemoveAudioBlackList(openId);

Voice Chat Capturing APIs

The voice chat APIs can only be called after SDK initialization and room entry.
When the user clicks the button of enabling/disabling the mic or speaker on the UI, we recommend you call the EnableMic or EnableSpeaker API.
To enable the user to press the mic button on the UI to speak and release it to stop speaking, we recommend you call EnableAudioCaptureDevice once during room entry and call EnableAudioSend to enable the user to speak while pressing the button.
API
Description
EnableMic
Enables/Disables the mic
GetMicState
Gets the mic status
EnableAudioCaptureDevice
Enables/Disables the capturing device
IsAudioCaptureDeviceEnabled
Gets the capturing device status
EnableAudioSend
Enables/Disables audio upstreaming
IsAudioSendEnabled
Gets the audio upstreaming status
GetMicLevel
Gets the real-time mic volume level
GetSendStreamLevel
Gets real-time audio upstreaming volume
SetMicVolume
Sets the mic volume level
GetMicVolume
Gets the mic volume level

Enabling or disabling mic

This API is used to enable/disable the mic. The mic and speaker are not enabled by default after room entry. EnableMic = EnableAudioCaptureDevice + EnableAudioSend

API prototype

ITMGAudioCtrl virtual int EnableMic(bool bEnabled)
Parameter
Type
Description
bEnabled
bool
To enable the mic, set this parameter to true, otherwise, set it to false.

Sample code

// Enable mic
ITMGContextGetInstance()->GetAudioCtrl()->EnableMic(true);

Getting the mic status

This API is used to get the mic status. The returned value 0 indicates that the mic is off, while 1 is on.

API prototype

ITMGAudioCtrl virtual int GetMicState()

Sample code

ITMGContextGetInstance()->GetAudioCtrl()->GetMicState();

Enabling or disabling capturing device

This API is used to enable/disable a capturing device. The device is not enabled by default after room entry.
This API can only be called after room entry. The device will be disabled automatically after room exit.
Operations such as permission application and volume type adjustment will generally be performed when a capturing device is enabled on a mobile device.

API prototype

ITMGAudioCtrl virtual int EnableAudioCaptureDevice(bool enable)
Parameter
Type
Description
enable
bool
To enable the capturing device, set this parameter to true, otherwise, set it to false.

Sample code

// Enable capturing device
ITMGContextGetInstance()->GetAudioCtrl()->EnableAudioCaptureDevice(true);

Getting the capturing device status

This API is used to get the status of a capturing device.

API prototype

ITMGContext virtual bool IsAudioCaptureDeviceEnabled()

Sample code

ITMGContextGetInstance()->GetAudioCtrl()->IsAudioCaptureDeviceEnabled();

Enabling or disabling audio upstreaming

This API is used to enable/disable audio upstreaming. If a capturing device is already enabled, it will send captured audio data; otherwise, it will remain mute. For more information on how to enable/disable the capturing device, please see the EnableAudioCaptureDevice API.

API prototype

ITMGContext virtual int EnableAudioSend(bool bEnable)
Parameter
Type
Description
bEnable
bool
To enable audio upstreaming, set this parameter to true; otherwise, set it to false.

Sample code

ITMGContextGetInstance()->GetAudioCtrl()->EnableAudioSend(true);

Getting audio upstreaming status

This API is used to get the status of audio upstreaming.

API prototype

ITMGContext virtual bool IsAudioSendEnabled()

Sample code

ITMGContextGetInstance()->GetAudioCtrl()->IsAudioSendEnabled();

Getting the real-time mic volume

This API is used to get the real-time mic volume. An int-type value in the range of 0-100 will be returned. It is recommended to call this API once every 20 ms.

API prototype

ITMGAudioCtrl virtual int GetMicLevel()

Sample code

ITMGContextGetInstance()->GetAudioCtrl()->GetMicLevel();

Getting the real-time audio upstreaming volume

This API is used to get the local real-time audio upstreaming volume. An int-type value in the range of 0-100 will be returned.

API prototype

ITMGAudioCtrl virtual int GetSendStreamLevel()

Sample code

ITMGContextGetInstance()->GetAudioCtrl()->GetSendStreamLevel();

Setting the mic software volume

This API is used to set the mic volume level. The corresponding parameter is volume, which is equivalent to attenuating or gaining the captured sound.

API prototype

ITMGAudioCtrl virtual int SetMicVolume(int vol)
Parameter
Type
Description
vol
int
Value range: 0–200. Default value: 100. 0 indicates that the audio is mute, while 100 indicates that the volume level remains unchanged.

Sample code

int micVol = (int)(value * 100);
ITMGContextGetInstance()->GetAudioCtrl()->SetMicVolume(vol);

Getting the mic software volume

This API is used to obtain the microphone volume. An "int" value is returned. Value 101 represents API SetMicVolume has not been called.

API prototype

ITMGAudioCtrl virtual int GetMicVolume()

Sample code

ITMGContextGetInstance()->GetAudioCtrl()->GetMicVolume();

Voice Chat Playback APIs

API
Description
EnableSpeaker
Enables/Disables the speaker
GetSpeakerState
Gets the speaker status
EnableAudioPlayDevice
Enables/Disables the playback device
IsAudioPlayDeviceEnabled
Gets playback device status
EnableAudioRecv
Enables/Disables audio downstreaming
IsAudioRecvEnabled
Gets the audio downstreaming status
GetSpeakerLevel
Gets the real-time speaker volume level
GetRecvStreamLevel
Gets the real-time downstreaming audio volume levels of other members in the room
SetSpeakerVolume
Sets the speaker volume level
GetSpeakerVolume
Gets the speaker volume level

Enabling or disabling speaker

This API is used to enable/disable the speaker. EnableSpeaker = EnableAudioPlayDevice + EnableAudioRecv

API prototype

ITMGAudioCtrl virtual int EnableSpeaker(bool enable)
Parameter
Type
Description
enable
bool
To disable the speaker, set this parameter to false; otherwise, set it to true.

Sample code

// Enable the speaker
ITMGContextGetInstance()->GetAudioCtrl()->EnableSpeaker(true);

Getting the speaker status

This API is used to get the speaker status. 0 indicates that the speaker is off, and 1 is on.

API prototype

ITMGAudioCtrl virtual int GetSpeakerState()

Sample code

ITMGContextGetInstance()->GetAudioCtrl()->GetSpeakerState();

Enabling or disabling playback device

This API is used to enable/disable a playback device.

API prototype

ITMGAudioCtrl virtual int EnableAudioPlayDevice(bool enable)
Parameter
Type
Description
enable
bool
To disable the playback device, set this parameter to false; otherwise, set it to true.

Sample code

ITMGContextGetInstance()->GetAudioCtrl()->EnableAudioPlayDevice(true);

Getting the playback device status

This API is used to get the status of a playback device.

API prototype

ITMGAudioCtrl virtual bool IsAudioPlayDeviceEnabled()

Sample code

ITMGContextGetInstance()->GetAudioCtrl()->IsAudioPlayDeviceEnabled();

Enabling or disabling audio downstreaming

This API is used to enable/disable audio downstreaming. If a playback device is already enabled, it will play back audio data from other members in the room; otherwise, it will remain mute. For more information on how to enable/disable the playback device, please see the EnableAudioPlayDevice API.

API prototype

ITMGAudioCtrl virtual int EnableAudioRecv(bool enable)
Parameter
Type
Description
enable
bool
To enable audio downstreaming, set this parameter to true; otherwise, set it to false.

Sample code

ITMGContextGetInstance()->GetAudioCtrl()->EnableAudioRecv(true);

Getting audio downstreaming status

This API is used to get the status of audio downstreaming.

API prototype

ITMGAudioCtrl virtual bool IsAudioRecvEnabled()

Sample code

ITMGContextGetInstance()->GetAudioCtrl()->IsAudioRecvEnabled();

Getting the real-time speaker volume

This API is used to get the real-time speaker volume. An int-type value will be returned to indicate the volume. It is recommended to call this API once every 20 ms.

API prototype

ITMGAudioCtrl virtual int GetSpeakerLevel()

Sample code

ITMGContextGetInstance()->GetAudioCtrl()->GetSpeakerLevel();

Getting the real-time downstreaming audio levels of other members in room

This API is used to get the real-time audio downstreaming volume of other members in the room. An int-type value will be returned. Value range: 0-200.

API prototype

ITMGAudioCtrl virtual int GetRecvStreamLevel(const char* openId)
Parameter
Type
Description
openId
char*
openId of other members in the room

Sample code

iter->second.level = ITMGContextGetInstance()->GetAudioCtrl()->GetRecvStreamLevel(iter->second.openid.c_str());

Dynamically setting the volume of a member of the room

This API is used to set the volume of a member in the room. It takes effect only on the local.

API prototype

ITMGAudioCtrl virtual int SetSpeakerVolumeByOpenID(const char* openId, int vol) = 0;
Parameter
Type
Description
openId
const char*
OpenID of the user whose volume level needs to be set
vol
int
Percentage. Recommended value range: 0–200. Default value: 100.

Getting volume percentage

This API is used to get the volume level set by SetSpeakerVolumeByOpenID.

API prototype

ITMGAudioCtrl virtual int GetSpeakerVolumeByOpenID(const char* openId) = 0;
Parameter
Type
Description
openId
const char*
OpenID of the user whose volume level needs to be set

Returned values

API returns volume percentage set by OpenID, where 100 is by default.

Setting the speaker volume

This API is used to set the speaker volume.

API prototype

ITMGAudioCtrl virtual int SetSpeakerVolume(int vol)
Parameter
Type
Description
vol
int
Volume level. Value range: 0–200. Default value: 100. 0 indicates that the audio is mute, while 100 indicates that the volume level remains unchanged.

Sample code

int vol = 100;
ITMGContextGetInstance()->GetAudioCtrl()->SetSpeakerVolume(vol);

Getting the speaker volume

This API is used to get the speaker volume. An int-type value will be returned to indicate the volume. 101 indicates that the SetSpeakerVolume API has not been called.\n"Level" indicates the real-time volume, and "Volume" the speaker volume. The final volume = Level * Volume%. For example, if the "Level" is 100 and "Volume" is 60, the final volume is "60".

API prototype

ITMGAudioCtrl virtual int GetSpeakerVolume()

Sample code

ITMGContextGetInstance()->GetAudioCtrl()->GetSpeakerVolume();

Advanced APIs

Enabling in-ear monitoring

This API is used to enable in-ear monitoring. You need to call EnableLoopBack+EnableSpeaker before you can hear your own voice.

API prototype

ITMGAudioCtrl virtual int EnableLoopBack(bool enable)
Parameter
Type
Description
enable
bool
Specifies whether to enable

Sample code

ITMGContextGetInstance()->GetAudioCtrl()->EnableLoopBack(true);

Getting user's room audio type

This API is used to get a user's room audio type. The returned value is the room audio type. Value 0 indicates that an error occurred while getting the user's room audio type. For room audio types, please see the EnterRoom API.

API prototype

class ITMGRoom {
public:
virtual ~ITMGRoom() {} ;
virtual int GetRoomType() = 0;

};


Sample code

ITMGContext* context = ITMGContextGetInstance();
ITMGContextGetInstance()->GetRoom()->GetRoomType();

Getting the room ID

This API is used to get the voice chat room ID and can be called only after a successful room entry.

API prototype

ITMGRoom virtual int GetRoomID(char* pBuffer, int nLength) = 0;
Parameter
Type
Description
pBuffer
char*
It is used to receive the returned roomid.
nLength
int
pBuffer length. Value range: 128–256.

Modifying user's room audio type

This API is used to modify a user's room audio type. For the result, please see the callback event. The event type is ITMG_MAIN_EVENT_TYPE_CHANGE_ROOM_TYPE. The audio type of the room is determined by the first user to enter the room. After that, if a member in the room changes the room type, it will take effect for all members there.

API prototype

IITMGContext TMGRoom public int ChangeRoomType((ITMG_ROOM_TYPE roomType)
Parameter
Type
Description
roomType
ITMG_ROOM_TYPE
Room type to be switched to the target type. For room audio types, please see the EnterRoom API.

Sample code

ITMGContext* context = ITMGContextGetInstance();
ITMGContextGetInstance()->GetRoom()->ChangeRoomType(ITMG_ROOM_TYPE_FLUENCY);

Data details

Message
Data
Sample
ITMG_MAIN_EVENT_TYPE_CHANGE_ROOM_TYPE
result; error_info; new_room_type
{"error_info":"","new_room_type":0,"result":0}

Callback for modifying the room type

After the room type is set, the event message ITMG_MAIN_EVENT_TYPE_CHANGE_ROOM_TYPE will be returned in the callback. The returned parameters include result, error_info, and new_room_type. The new_room_type represents the following information. The event message will be identified in the OnEvent function.
Event Subtype
Parameter
Description
ITMG_ROOM_CHANGE_EVENT_ENTERROOM
1
The existing audio type is inconsistent with and changed to that of the entered room.
ITMG_ROOM_CHANGE_EVENT_START
2
A user is already in the room and the audio type starts changing (e.g., calling the ChangeRoomType API to change the audio type).
ITMG_ROOM_CHANGE_EVENT_COMPLETE
3
A user is already in the room, and the audio type has been changed.
ITMG_ROOM_CHANGE_EVENT_REQUEST
4
A room member calls the ChangeRoomType API to request a change of room audio type.

Sample code

void TMGTestScene::OnEvent(ITMG_MAIN_EVENT_TYPE eventType,const char* data){
if (ITMGContext.ITMG_MAIN_EVENT_TYPE.ITMG_MAIN_EVENT_TYPE_CHANGE_ROOM_TYPE == type)
{
// Process room type events
}
}

The monitoring event of room call quality

This is the quality monitoring event, which is triggered once every two seconds after room entry, and its message is ITMG_MAIN_EVENT_TYPE_CHANGE_ROOM_QUALITY. The returned parameters include weight, loss, and delay, which are as detailed below:
Parameter
Type
Description
weight
int
Value range: 1-50. 50 indicates excellent sound quality, 1 indicates very poor (barely usable) sound quality, and 0 represents an initial meaningless value. Generally, if the value is below 30, the business layer will remind users that the network is poor and recommend them to switch the network.
loss
double
Upstream packet loss rate
delay
int
Voice chat delay in ms

Getting version number

This API is used to get the SDK version number for analysis.

API prototype

ITMGContext virtual const char* GetSDKVersion()

Sample code

ITMGContextGetInstance()->GetSDKVersion();

Checking mic status

Function prototype

ITMGContext virtual ITMG_CHECK_MIC_STATUS CheckMic() = 0;

Returned value handling

Returned Value
Description
Handling
ITMG_CHECK_MIC_STATUS_AVAILABLE = 0
Normally available
No handling required
ITMG_CHECK_MIC_STATUS_NO_GRANTED = 2
Access not obtained/denied
The access permission needs to be obtained before the mic is enabled
ITMG_CHECK_MIC_STATUS_INVALID_MIC = 3
No device available
Generally, this error will be reported on PCs when no mics are available. Prompt the user to insert a headset or mic
ITMG_CHECK_MIC_STATUS_NOT_INIT = 5
Not initialized
Call EnableMic after Init

Setting log printing level

This API is used to set the level of logs to be printed, and needs to be called before the initialization. It is recommended to keep the default level.

API prototype

ITMGContext int SetLogLevel(ITMG_LOG_LEVEL levelWrite, ITMG_LOG_LEVEL levelPrint)

Parameter description

Parameter
Type
Description
levelWrite
ITMG_LOG_LEVEL
Sets the level of logs to be written. TMG_LOG_LEVEL_NONE indicates not to write. Default value: TMG_LOG_LEVEL_INFO
levelPrint
ITMG_LOG_LEVEL
Sets the level of logs to be printed. TMG_LOG_LEVEL_NONE indicates not to print. Default value: TMG_LOG_LEVEL_ERROR
ITMG_LOG_LEVEL is as detailed below:
ITMG_LOG_LEVEL
Description
TMG_LOG_LEVEL_NONE
Does not print logs
TMG_LOG_LEVEL_ERROR
Prints error logs (default)
TMG_LOG_LEVEL_INFO
Prints info logs
TMG_LOG_LEVEL_DEBUG
Prints debug logs
TMG_LOG_LEVEL_VERBOSE
Prints verbose logs

Sample code

ITMGContextGetInstance()->SetLogLevel(TMG_LOG_LEVEL_INFO,TMG_LOG_LEVEL_INFO);

Setting the log printing path

This API is used to set the log printing path. The default path is as follows. It needs to be called before Init.
OS
Path
Windows
%appdata%\\Tencent\\GME\\ProcessName
iOS
Application/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/Documents
Android
/sdcard/Android/data/xxx.xxx.xxx/files
Mac
/Users/username/Library/Containers/xxx.xxx.xxx/Data/Documents

API prototype

ITMGContext virtual int SetLogPath(const char* logDir)
Parameter
Type
Description
logDir
const char*
Path

Sample code

cosnt char* logDir = ""// Set a path by yourself

ITMGContext* context = ITMGContextGetInstance();
context->SetLogPath(logDir);


Getting the printed log path

This API is used to get the log path. Its returned value is a string of const char* type.

API prototype

ITMGContext virtual const char* GetLogPath() = 0;

Getting the diagnostic messages

This API is used to get information on the quality of real-time audio/video calls, which is mainly used to view real-time call quality and troubleshoot and can be ignored on the business side.

API prototype

ITMGRoom virtual const char* GetQualityTips()

Sample code

ITMGContextGetInstance()->GetRoom()->GetQualityTips();


Callback Messages

Message
Description
Parameter
Sample
ITMG_MAIN_EVENT_TYPE_ENTER_ROOM
A member entered the audio room
result; error_info
{"error_info":"","result":0}
ITMG_MAIN_EVENT_TYPE_EXIT_ROOM
A member exited the audio room
result; error_info
{"error_info":"","result":0}
ITMG_MAIN_EVENT_TYPE_ROOM_DISCONNECT
The room was disconnected for network or other reasons
result; error_info
{"error_info":"waiting timeout, please check your network","result":0}
ITMG_MAIN_EVNET_TYPE_USER_UPDATE
The room members were updated
user_list; event_id
{"event_id":1,"user_list":["0"]}
ITMG_MAIN_EVENT_TYPE_RECONNECT_START
Room reconnection started
result; error_info
{"error_info":"","result":0}
ITMG_MAIN_EVENT_TYPE_RECONNECT_SUCCESS
Room reconnection succeeded
result; error_info
{"error_info":"","result":0}
ITMG_MAIN_EVENT_TYPE_SWITCH_ROOM
The room was quickly switched
result; error_info
{"error_info":"","result":0}
ITMG_MAIN_EVENT_TYPE_CHANGE_ROOM_TYPE
The room status changed
result; error_info; sub_event_type; new_room_type
{"error_info":"","new_room_type":0,"result":0}
ITMG_MAIN_EVENT_TYPE_ROOM_SHARING_START
Cross-room mic connect started
result;
{"result":0}
ITMG_MAIN_EVENT_TYPE_ROOM_SHARING_STOP
Cross-room mic connect stopped
result;
{"result":0}
ITMG_MAIN_EVENT_TYPE_SPEAKER_DEFAULT_DEVICE_CHANGED
The default speaker was changed
result; error_info
{"deviceID":"{0.0.0.00000000}.{a4f1e8be-49fa-43e2-b8cf-dd00542b47ae}","deviceName":"speaker (Realtek High Definition Audio)","error_info":"","isNewDevice":true,"isUsedDevice":false,"result":0}
ITMG_MAIN_EVENT_TYPE_SPEAKER_NEW_DEVICE
A speaker was added
result; error_info
{"deviceID":"{0.0.0.00000000}.{a4f1e8be-49fa-43e2-b8cf-dd00542b47ae}","deviceName":"speaker (Realtek High Definition Audio)","error_info":"","isNewDevice":true,"isUsedDevice":false,"result":0}
ITMG_MAIN_EVENT_TYPE_SPEAKER_LOST_DEVICE
A speaker was lost
result; error_info
{"deviceID":"{0.0.0.00000000}.{a4f1e8be-49fa-43e2-b8cf-dd00542b47ae}","deviceName":"speaker (Realtek High Definition Audio)","error_info":"","isNewDevice":false,"isUsedDevice":false,"result":0}
ITMG_MAIN_EVENT_TYPE_MIC_NEW_DEVICE
A mic was added
result; error_info
{"deviceID":"{0.0.1.00000000}.{5fdf1a5b-f42d-4ab2-890a-7e454093f229}","deviceName":"mic (Realtek High Definition Audio)","error_info":"","isNewDevice":true,"isUsedDevice":true,"result":0}
ITMG_MAIN_EVENT_TYPE_MIC_LOST_DEVICE
A mic was lost
result; error_info
{"deviceID":"{0.0.1.00000000}.{5fdf1a5b-f42d-4ab2-890a-7e454093f229}","deviceName":"mic (Realtek High Definition Audio)","error_info":"","isNewDevice":false,"isUsedDevice":true,"result":0}
ITMG_MAIN_EVENT_TYPE_MIC_DEFAULT_DEVICE_CHANGED
The default mic was changed
result; error_info
{"deviceID":"{0.0.1.00000000}.{5fdf1a5b-f42d-4ab2-890a-7e454093f229}","deviceName":"mic (Realtek High Definition Audio)","error_info":"","isNewDevice":false,"isUsedDevice":true,"result":0}
ITMG_MAIN_EVENT_TYPE_CHANGE_ROOM_QUALITY
Room quality message
weight; loss; delay
{"weight":5,"loss":0.1,"delay":1}
ITMG_MAIN_EVNET_TYPE_PTT_RECORD_COMPLETE
Recording of a voice message was completed
result; file_path
{"file_path":"","result":0}
ITMG_MAIN_EVNET_TYPE_PTT_UPLOAD_COMPLETE
Upload of a voice message was completed
result; file_path;file_id
{"file_id":"","file_path":"","result":0}
ITMG_MAIN_EVNET_TYPE_PTT_DOWNLOAD_COMPLETE
Download of a voice message was completed
result; file_path;file_id
{"file_id":"","file_path":"","result":0}
ITMG_MAIN_EVNET_TYPE_PTT_PLAY_COMPLETE
Playback of a voice message was completed
result; file_path
{"file_path":"","result":0}
ITMG_MAIN_EVNET_TYPE_PTT_SPEECH2TEXT_COMPLETE
Fast recording-to-text conversion was completed
result; text;file_id
{"file_id":"","text":"","result":0}
ITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRECOGNITION_COMPLETE
Streaming speech-to-text conversion was completed
result; file_path; text;file_id
{"file_id":"","file_path":","text":"","result":0}
ITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRECOGNITION_IS_RUNNING
A voice message is being converted into text in a streaming manner
result; file_path; text;file_id
{"file_id":"","file_path":","text":"","result":0}
ITMG_MAIN_EVNET_TYPE_PTT_TEXT2SPEECH_COMPLETE
Text-to-speech conversion was completed
result; text;file_id
{"file_id":"","text":"","result":0}
ITMG_MAIN_EVNET_TYPE_PTT_TRANSLATE_TEXT_COMPLETE
Text translation was completed
result; text;file_id
{"file_id":"","text":"","result":0}

","recentReleaseTime":"2024-01-18 15:11:45","slate":"[{\"id\":\"xWUzCYODmlCj9IVuYtc8j\",\"children\":[{\"text\":\"This document describes how to access and debug GME client APIs for the voice chat feature for Windows.\"}],\"type\":\"p\"},{\"id\":\"Vj5Cr7CH7mN1EZK1JILqn\",\"children\":[{\"text\":\"Key Considerations for Using GME\"}],\"nodeId\":\"key-considerations-for-using-gme\",\"type\":\"h2\"},{\"id\":\"BtmZzIyyFdgx7diyRxziv\",\"children\":[{\"text\":\"GME provides the real-time voice, voice message, and speech-to-text conversion services, which all depend on core APIs such as \"},{\"code\":1,\"text\":\"Init\"},{\"text\":\" and \"},{\"code\":1,\"text\":\"Poll\"},{\"text\":\".\"}],\"type\":\"p\"},{\"id\":\"hR67jw0Y8x5yYX-s1yEt2\",\"children\":[{\"text\":\"Key notes\"}],\"nodeId\":\"key-notes\",\"type\":\"h4\"},{\"id\":\"Fj_u5XB2vzXp4_rSJznBM\",\"children\":[{\"text\":\"You have created a GME application and obtained the \"},{\"code\":1,\"text\":\"AppID\"},{\"text\":\" and \"},{\"code\":1,\"text\":\"Key\"},{\"text\":\" of the SDK as instructed in \"},{\"id\":\"rocVfuOxOf0zaxf9-78I3\",\"children\":[{\"text\":\"Activating Services\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://intl.cloud.tencent.com/document/product/607/10782\",\"props\":{\"type\":\"link\",\"url\":\"https://intl.cloud.tencent.com/document/product/607/10782\"},\"type\":\"ref\"},{\"text\":\".\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"Kgfya-VFUUsjJgOWsCZ7Z\",\"children\":[{\"text\":\"You have \"},{\"b\":1,\"text\":\"activated the real-time voice, voice message, and speech-to-text services of GME\"},{\"text\":\" as instructed in \"},{\"id\":\"fw-YRpy89HZtWw_GNCLmK\",\"children\":[{\"text\":\"Activating Services\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://intl.cloud.tencent.com/document/product/607/10782\",\"props\":{\"type\":\"link\",\"url\":\"https://intl.cloud.tencent.com/document/product/607/10782\"},\"type\":\"ref\"},{\"text\":\".\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"ncPEOEf6lnsXLlaEF1qZV\",\"children\":[{\"text\":\"Configure your project before using GME; otherwise, the SDK will not take effect.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"lkJHR7pRjT1TMsnXuUfak\",\"children\":[{\"text\":\"After a GME API is called successfully, \"},{\"code\":1,\"text\":\"QAVError.OK\"},{\"text\":\" will be returned with the value being 0.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"tSYnNxOdaL1Vnm1px_E22\",\"children\":[{\"text\":\"GME APIs should be called in the same thread.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"vKw3hp5BfN0VbaDOTsauQ\",\"children\":[{\"text\":\"The \"},{\"code\":1,\"text\":\"Poll\"},{\"text\":\" API should be called periodically for GME to trigger event callbacks.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"nWnsN7EallizUtXyq6wWp\",\"children\":[{\"text\":\"For detailed error code, please see \"},{\"type\":\"ref\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/15173?from_cn_redirect=1\"},\"children\":[{\"text\":\"Error Codes\"}],\"id\":\"_31xJZsM-EI3C2v4WVmoo\"},{\"text\":\".\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"3Xl48J2TjsRiMDi5lsYEU\",\"children\":[{\"text\":\"Connecting to the SDK\"}],\"nodeId\":\"connecting-to-the-sdk\",\"type\":\"h2\"},{\"id\":\"miWK1532In1Bvow1smkFW\",\"children\":[{\"text\":\"Directions\"}],\"nodeId\":\"directions\",\"type\":\"h3\"},{\"id\":\"x-7r909fMZjwykiLtn03W\",\"children\":[{\"text\":\"Key processes involved in SDK connection are as follows:\"}],\"type\":\"p\"},{\"type\":\"p\",\"children\":[{\"text\":\"\"},{\"id\":\"LjXePSkt4NNkKTedx-yqh\",\"alt\":\"\",\"children\":[{\"text\":\"\"}],\"inline\":true,\"type\":\"image\",\"url\":\"https://cloudcache.intl.tencent-cloud.com/cms/backend-cms/1cbe39a2b34611ee9fd6525400bb593a.jpeg\",\"naturalSize\":[1560,1030],\"size\":[801,528]},{\"text\":\"\"}],\"id\":\"3816V-Y0MgJyMlTU0AAe2\"},{\"type\":\"oli\",\"children\":[{\"text\":\"\"},{\"type\":\"ref\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/51124?!editLang=en&!preview=&lang=en&pg=#Init\"},\"children\":[{\"text\":\"Initializing GME, API: Init\"}],\"id\":\"MXOod9n8gi6Sb4ikoUdbV\"},{\"text\":\"\"}],\"id\":\"M8qC6tfce2nMZRtT8Ghqh\"},{\"type\":\"oli\",\"children\":[{\"text\":\"\"},{\"type\":\"ref\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/51124?!editLang=en&!preview=&lang=en&pg=#Poll\"},\"children\":[{\"text\":\"Calling Poll periodically to trigger event callbacks, API: Poll\"}],\"id\":\"GBvPWXp3qFz7RPFIZOzXw\"},{\"text\":\"\"}],\"id\":\"atOhC3-uGefkb4izFzHCO\"},{\"type\":\"oli\",\"children\":[{\"text\":\"\"},{\"type\":\"ref\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/51124?!editLang=en&!preview=&lang=en&pg=#EnterRoom\"},\"children\":[{\"text\":\"Entering a voice chat room, API: EnterRoom\"}],\"id\":\"ilTuOgicwSKy_FnmQi-Ki\"},{\"text\":\"\"}],\"id\":\"zvJuO5XyLX3f10m4hpfdo\"},{\"type\":\"oli\",\"children\":[{\"text\":\"\"},{\"type\":\"ref\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/51124?!editLang=en&!preview=&lang=en&pg=#EnableMic\"},\"children\":[{\"text\":\"Enabling the microphone, API: EnableMic\"}],\"id\":\"_HeiUpzXg1UA28WwbE0rt\"},{\"text\":\"\"}],\"id\":\"syeQ5jl7Mi0Rw14sJyFuz\"},{\"type\":\"oli\",\"children\":[{\"text\":\"\"},{\"type\":\"ref\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/51124?!editLang=en&!preview=&lang=en&pg=#EnableSpeaker\"},\"children\":[{\"text\":\"Enabling the speaker, API: EnableSpeaker\"}],\"id\":\"q6gQhR0YJfaHWgRJIFb5V\"},{\"text\":\"\"}],\"id\":\"yikmgfmj9roq1PJA_FM6H\"},{\"type\":\"oli\",\"children\":[{\"text\":\"\"},{\"type\":\"ref\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/51124?!editLang=en&!preview=&lang=en&pg=#ExitRoom\"},\"children\":[{\"text\":\"Exiting a voice room, API: ExitRoom\"}],\"id\":\"Xw4Ql5pdOQa4kfrLuXY2S\"},{\"text\":\"\"}],\"id\":\"A4TmXe6PdqADa_fNZ0NWM\"},{\"type\":\"oli\",\"children\":[{\"text\":\"\"},{\"type\":\"ref\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/51124?!editLang=en&!preview=&lang=en&pg=#UnInit\"},\"children\":[{\"text\":\"Uninitializing GME, API: UnInit\"}],\"id\":\"6B4bHg0bB3YwHkmNrauFJ\"},{\"text\":\"\"}],\"id\":\"w-Qqse3VPdKeMPrHanRt8\"},{\"id\":\"Q7b000h4CeVBBysp8F-U5\",\"children\":[{\"text\":\"C++ classes\"}],\"nodeId\":\"c.2B.2B-classes\",\"type\":\"h3\"},{\"id\":\"rHD_VFHNW0LQAOklgNyZs\",\"children\":[{\"id\":\"zFCt6237oSeVsAjDj1PaY\",\"children\":[{\"id\":\"RPG91Q55ElFckymSEBKH5\",\"children\":[{\"id\":\"lOwZM6P8_cqCqX3PwiIZ_\",\"children\":[{\"text\":\"Class\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"gKYcgwQj7RT_ZIC6kUYpv\",\"children\":[{\"id\":\"7lE7-C7lf_hTmy-SA3nu0\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"gn9OyOzI3i5jX0eJtVT9i\",\"children\":[{\"id\":\"_nTuQ692GYBUyoQcooU6q\",\"children\":[{\"id\":\"32dx-LNKPD-Uc5lU1Aa3w\",\"children\":[{\"id\":\"1qQM-nFJNCf7afvPA8Tee\",\"children\":[{\"text\":\"ITMGContext\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"JW-NawZ3siQwhTEC3-nZX\",\"children\":[{\"id\":\"dXoGTbcxrr2qOyqtnXTF9\",\"children\":[{\"id\":\"rVVmehBt6S9fk-ghtsE5m\",\"children\":[{\"text\":\"Key APIs\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"kuaUrjt8v86vcNQ_R_1bt\",\"children\":[{\"id\":\"c4wAzElGEP2kdR_nUlGmF\",\"children\":[{\"id\":\"NRA7rQV2dfolHoaLiAMVL\",\"children\":[{\"id\":\"Z1O9w0yLci8laKYLIJQR9\",\"children\":[{\"text\":\"ITMGDelegate\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"1Vjd1-kFa6DsM6dT0Qg_T\",\"children\":[{\"id\":\"TaRwnXyZNG94eQ4oPXaE1\",\"children\":[{\"id\":\"RMgq2DyTibdcUhW6WlSAc\",\"children\":[{\"text\":\"Callback APIs\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"OyisXyc_sC0airTxwRDSN\",\"children\":[{\"id\":\"i9T3Wvd54Wv8fo8yFl0lV\",\"children\":[{\"id\":\"v2Du7XEpkoOAhhkAlQ8Ma\",\"children\":[{\"id\":\"D7wg64RrB-7xkSok5iPrw\",\"children\":[{\"text\":\"ITMGRoom\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"m656Aecu2TXG7SiIqSYlr\",\"children\":[{\"id\":\"Q4K9U0c2ztfuaMBl67X3p\",\"children\":[{\"id\":\"-oszUgzQptqDABoUqrn0O\",\"children\":[{\"text\":\"Room APIs\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"mik99mq3OlRZ1gSAkA7fc\",\"children\":[{\"id\":\"bPyn06g5LSG8W_y3RCvHr\",\"children\":[{\"id\":\"YonO_IyHO04pdDgDLHdIP\",\"children\":[{\"id\":\"ZdkKvJXDXlvGbQJk1QjAs\",\"children\":[{\"text\":\"ITMGRoomManager\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"xw70jBF8dEe0CooC2JuSh\",\"children\":[{\"id\":\"coQEuGNHHJgMEXuL8uQ50\",\"children\":[{\"id\":\"fQ4BNHBd-gDYbJqSCuF4b\",\"children\":[{\"text\":\"Room management APIs as described in \"},{\"id\":\"o_xj9wwP66_ADgFKswV7H\",\"children\":[{\"text\":\"Integrating GME Chat Room Management\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://intl.cloud.tencent.com/document/product/607/51115\",\"props\":{\"type\":\"link\",\"url\":\"https://intl.cloud.tencent.com/document/product/607/51115\"},\"type\":\"ref\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"dklEnDaLhEuoD8ZWyalko\",\"children\":[{\"id\":\"ZOfx3ID3ynk8K3Aw8Ngks\",\"children\":[{\"id\":\"rh4wC2E_FOdBLvkwhFZTs\",\"children\":[{\"id\":\"yFqNGgEPZjT1KIMPvr_SP\",\"children\":[{\"text\":\"ITMGAudioCtrl\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"WahitkcM9Is9a_ddME3dK\",\"children\":[{\"id\":\"dZeV_dBk1-FpN3oXz69_Q\",\"children\":[{\"id\":\"bVcF4eBG6OYQ_QlyZr6MG\",\"children\":[{\"text\":\"Audio APIs\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"wbg2QTUGnxb1LORX8HIvh\",\"children\":[{\"id\":\"x5NxN9yot_kT0z58WwU3z\",\"children\":[{\"id\":\"t3b4lioqzcMGitHkHua1m\",\"children\":[{\"id\":\"hfvbnEYdcQogdem_JRLkJ\",\"children\":[{\"text\":\"ITMGAudioEffectCtrl\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"TWJr19hrs3zovF3gfmmZk\",\"children\":[{\"id\":\"lPOdre84-XHRkVeheT0N6\",\"children\":[{\"id\":\"4sWjy0vRWg7Te-Ou-VMQV\",\"children\":[{\"text\":\"Sound effect and accompaniment APIs\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"qQsjOLRX1d4jYO7nA-N-G\",\"children\":[{\"id\":\"ed5npuHOov3BMFBn4Dty-\",\"children\":[{\"id\":\"LeGe8QeQARxIdxxdhW3z-\",\"children\":[{\"id\":\"w0Verrm2eRr49qFL5vws6\",\"children\":[{\"text\":\"ITMGPTT\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"XZPlPz9HTY1sB_AC9lO-R\",\"children\":[{\"id\":\"5pmr8OXGHlU_puQo8PtYD\",\"children\":[{\"id\":\"Cl1xrmsj7vywcTWP5nNrY\",\"children\":[{\"text\":\"Voice message and speech-to-text conversion APIs\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[22,78],\"widthMode\":\"percentage\"},{\"id\":\"YsgFwQeoXmUyCtIGWtdB1\",\"children\":[{\"text\":\"Key APIs\"}],\"nodeId\":\"key-apis\",\"type\":\"h2\"},{\"id\":\"J5nZOnTPZ1Il7-lMykAf9\",\"children\":[{\"id\":\"fhYFk7HKBwgLnfu9GSWMI\",\"children\":[{\"id\":\"-RcnDzFRo3rC8G3KX4XsW\",\"children\":[{\"id\":\"v-RSJdFMS-L7ys-0pLiMY\",\"children\":[{\"text\":\"API\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ZrMIyLyY9n8n0ZPT9jhyb\",\"children\":[{\"id\":\"U4W1wnHB8KmNO498uOOvY\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"eaAKx2RyqDr24VQBUjx4v\",\"children\":[{\"id\":\"fTzNSBZ7uXhLelZCN12PS\",\"children\":[{\"id\":\"KFXTSjZYX7jYtPRtmvSRb\",\"children\":[{\"id\":\"5W0tTx58L76F6TEkYQU9g\",\"children\":[{\"text\":\"Init\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"qWMwkfE7ReUN5hTQsQFvV\",\"children\":[{\"id\":\"kBOFyLOQQax6cf6kJmzPY\",\"children\":[{\"id\":\"Wj5hZK3ADpPGp1jViKB8s\",\"children\":[{\"text\":\"Initializes GME\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"pN2lQ2glcOymMHitkNNq7\",\"children\":[{\"id\":\"JtcwRfXrKgRfrbDGrST6C\",\"children\":[{\"id\":\"3Mf7FHYN5wQrMEQTHeaQ6\",\"children\":[{\"id\":\"c7s85XRSkg2-r18b-0AT4\",\"children\":[{\"text\":\"Poll\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"NjoT_TegJfv0wliiXIZU-\",\"children\":[{\"id\":\"vYgFxwWLG7Xcjhf3RkX4R\",\"children\":[{\"id\":\"PI1mraWRg4tLJXK8Z2d9d\",\"children\":[{\"text\":\"Triggers event callback\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"fQ5aajKyto9rUByvqlRze\",\"children\":[{\"id\":\"bwQPpUqsXRZrgpGeIRfr_\",\"children\":[{\"id\":\"TfRsujuRqWIqvk2Q0rdzd\",\"children\":[{\"id\":\"HcG5NypSBGWW-bR_v0kVN\",\"children\":[{\"text\":\"Pause\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"k1SssiW4TmBIs9PfPJIhp\",\"children\":[{\"id\":\"7Csj6mc8MJDjO6RWrdc4G\",\"children\":[{\"id\":\"YtUEIT64WXfF81X2bmM4v\",\"children\":[{\"text\":\"Pauses the system\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"kK7N6HetF84gog0e_aoRs\",\"children\":[{\"id\":\"6oyz1BN0pzON9u4fc80lr\",\"children\":[{\"id\":\"8GFiF9igHwdIsfZvmUYir\",\"children\":[{\"id\":\"iiJhEwIySqUU37ioU6kRS\",\"children\":[{\"text\":\"Resume\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"GsnOgCsZOGhcW7wvMwXM6\",\"children\":[{\"id\":\"BsGzz3vYJZL_MiHmn7rlL\",\"children\":[{\"id\":\"oIee8PoXHT8uOI3R84QXR\",\"children\":[{\"text\":\"Resumes the system\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"5HwBA6e3oTgE8Qfyl6Owp\",\"children\":[{\"id\":\"B1Mskm-I39HmA2-G4RKTs\",\"children\":[{\"id\":\"LN5dF6kj-ry0IYrhWFh8p\",\"children\":[{\"id\":\"K3c0Z_5MgwGMUc9jftT7b\",\"children\":[{\"text\":\"Uninit\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"9ih84ZY4ajddGCOIezw7e\",\"children\":[{\"id\":\"N9iPB3ymWy6rJozjuHhxC\",\"children\":[{\"id\":\"mGriIog38cK3LZTt551vz\",\"children\":[{\"text\":\"Uninitializes GME\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[22,78],\"widthMode\":\"percentage\"},{\"id\":\"NTHWnDbz34zba8Q-VJNC-\",\"children\":[{\"text\":\"Imported header files\"}],\"nodeId\":\"imported-header-files\",\"type\":\"h3\"},{\"id\":\"-YIAH95N2H0ylhW1rQRS5\",\"children\":[{\"text\":\"You need to import the header file \"},{\"code\":1,\"text\":\"tmg_sdk.h\"},{\"text\":\" first before you can access GME. The classes in the header file inherit \"},{\"code\":1,\"text\":\"ITMGDelegate\"},{\"text\":\" for message delivery and callback.\"}],\"type\":\"p\"},{\"id\":\"QXHT3W8L-veKmo7J4PnUs\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code\",\"type\":\"h4\"},{\"id\":\"4516xtYAvkSl7NBvXmZYz\",\"children\":[{\"id\":\"N0-__f9rQETJVph5k4bVV\",\"children\":[{\"text\":\"#include \\\"auth_buffer.h\\\"\"}],\"type\":\"code-line\"},{\"id\":\"AZfL_cbHahFe9h3S11Cnk\",\"children\":[{\"text\":\"#include \\\"tmg_sdk.h\\\"\"}],\"type\":\"code-line\"},{\"id\":\"a1KZtIdQ4bQNT3tUNRKvq\",\"children\":[{\"text\":\"#include \\\"AdvanceHeaders/tmg_sdk_adv.h\\\"\"}],\"type\":\"code-line\"},{\"id\":\"XEGhmCN8rxEGvDTNvJszG\",\"children\":[{\"text\":\"#include \"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"8gKuPXsc3iWCK9gFZcRoH\",\"children\":[{\"text\":\"Callback\"}],\"nodeId\":\"callback\",\"type\":\"h3\"},{\"id\":\"XPuVultExLAU_tlSPXSMd\",\"children\":[{\"text\":\"Setting callback sample\"}],\"nodeId\":\"setting-callback-sample\",\"type\":\"h4\"},{\"id\":\"AzrQ0kymWiQ1eucAfvd67\",\"children\":[{\"id\":\"7OXXXLk9XMEevtg64knE4\",\"children\":[{\"text\":\"// When initializing the SDK\"}],\"type\":\"code-line\"},{\"id\":\"dbodg9wTqdTb9TplEj9eO\",\"children\":[{\"text\":\"m_pTmgContext = ITMGContextGetInstance();\"}],\"type\":\"code-line\"},{\"id\":\"4XUNCDWygDc6ZmrS4ljG8\",\"children\":[{\"text\":\"m_pTmgContext->SetTMGDelegate(this);\"}],\"type\":\"code-line\"},{\"id\":\"YvGon7g4c69-LpSRh_7H9\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"},{\"id\":\"pFO09Ga0yZX--Xjv_BQ0i\",\"children\":[{\"text\":\"// In the destructor\"}],\"type\":\"code-line\"},{\"id\":\"DBM1bm2PT33kPjwQbBgnB\",\"children\":[{\"text\":\"CTMGSDK_For_AudioDlg::~CTMGSDK_For_AudioDlg()\"}],\"type\":\"code-line\"},{\"id\":\"qXCYeJY0FllPzS1JtdIcQ\",\"children\":[{\"text\":\"{\"}],\"type\":\"code-line\"},{\"id\":\"8TxMMsa_4jtj7mEaaqnQL\",\"children\":[{\"text\":\" ITMGContextGetInstance()->SetTMGDelegate(NULL);\"}],\"type\":\"code-line\"},{\"id\":\"9PC5invI4UcTwuUNjgY0P\",\"children\":[{\"text\":\"}\"}],\"type\":\"code-line\"},{\"id\":\"Hh_HwMA7cRggHRAbt8cIY\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"21yjC85jotcbF3srHwWvA\",\"children\":[{\"text\":\"Message delivery\"}],\"nodeId\":\"message-delivery\",\"type\":\"h4\"},{\"id\":\"DhTNgQ8qFdo8W_ejAO2e9\",\"children\":[{\"text\":\"The API class uses the \"},{\"code\":1,\"text\":\"Delegate\"},{\"text\":\" method to send callback notifications to the application. \"},{\"code\":1,\"text\":\"ITMG_MAIN_EVENT_TYPE\"},{\"text\":\" indicates the message type. The data on Windows is in json string format. For the key-value pairs, please see the relevant documentation.\"}],\"type\":\"p\"},{\"id\":\"bX383rBhcAF4azlR_3xm-\",\"children\":[{\"id\":\"SA6cfH0AQWljoJCCazJGS\",\"children\":[{\"text\":\"// Declaration in the header file\"}],\"type\":\"code-line\"},{\"id\":\"1r4gkLhG1Qpmq5ZGgQ6iV\",\"children\":[{\"text\":\"virtual void OnEvent(ITMG_MAIN_EVENT_TYPE eventType,const char* data);\"}],\"type\":\"code-line\"},{\"id\":\"3_kd3QdlzmfaG_--qSCYU\",\"children\":[{\"text\":\"// Sample code\"}],\"type\":\"code-line\"},{\"id\":\"j-Q9k5vu67g0hgoMGD_ch\",\"children\":[{\"text\":\"void CTMGSDK_For_AudioDlg::OnEvent(ITMG_MAIN_EVENT_TYPE eventType, const char* data)\"}],\"type\":\"code-line\"},{\"id\":\"Gy_1i_uLC-sSUIhqG2691\",\"children\":[{\"text\":\"{\"}],\"type\":\"code-line\"},{\"id\":\"s5qawDJ245BYfE0kUYD1U\",\"children\":[{\"text\":\" switch(eventType)\"}],\"type\":\"code-line\"},{\"id\":\"eOpCYw9ZWHt_6Uxm2Vecn\",\"children\":[{\"text\":\" {\"}],\"type\":\"code-line\"},{\"id\":\"dGXHTZE660VLyGmxwSbBC\",\"children\":[{\"text\":\" case ITMG_MAIN_EVENT_TYPE_XXXX_XXXX:\"}],\"type\":\"code-line\"},{\"id\":\"eHDrJxfMxp7PLbtU9cRO-\",\"children\":[{\"text\":\" {\"}],\"type\":\"code-line\"},{\"id\":\"upINDRkqQHCGrJyXG9IPP\",\"children\":[{\"text\":\" // Process the callback\"}],\"type\":\"code-line\"},{\"id\":\"ZaoKDmxfG4UgB245Vh1lB\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"6J43-NM3m7cqRanCdua42\",\"children\":[{\"text\":\" break;\"}],\"type\":\"code-line\"},{\"id\":\"azVy3Uzi-AU5bcOe1rJxk\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"5kFnrPdlujlXtDBEmMwtU\",\"children\":[{\"text\":\"}\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"_03osVEfJyaiLOiW8m13-\",\"children\":[{\"text\":\"Getting singleton\"}],\"nodeId\":\"getting-singleton\",\"type\":\"h3\"},{\"id\":\"K-0XLuveLT2Mpr0u9DAOj\",\"children\":[{\"text\":\"The GME SDK is provided in the form of a singleton, all calls begin with \"},{\"code\":1,\"text\":\"ITMGContext\"},{\"text\":\", and callbacks are passed to the application through \"},{\"code\":1,\"text\":\"ITMGDelegate\"},{\"text\":\", which should be configured first.\"}],\"type\":\"p\"},{\"id\":\"NrLDoASLJa0r27XydjNom\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code2\",\"type\":\"h4\"},{\"id\":\"g25ENflzjr-AHmCt3O_Ux\",\"children\":[{\"id\":\"T36fVf5j33VaiwASdpgDz\",\"children\":[{\"text\":\"ITMGContext* m_pTmgContext;\"}],\"type\":\"code-line\"},{\"id\":\"HroY_eBG5I_DQ_RKDWKst\",\"children\":[{\"text\":\"m_pTmgContext->Init(AppID, OpenID);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"wF1cszb7mUiuxa9JdygAn\",\"children\":[{\"id\":\"7ofApQZAZfxa7doEcRUPV\",\"children\":[{\"text\":\"Initializing SDK\"}],\"nodeId\":\"Init\",\"type\":\"p\"}],\"nodeId\":\".3Ca-id.3D.22init.22.3Einitializing-sdk.3C.2Fa.3E\",\"type\":\"h3\"},{\"id\":\"vwj8m0lEg4v4mnhrekTzM\",\"children\":[{\"b\":1,\"text\":\"You need to initialize the SDK through the \"},{\"b\":1,\"code\":1,\"text\":\"Init\"},{\"b\":1,\"text\":\" API\"},{\"text\":\" before you can use the real-time voice, voice message, and speech-to-text services. The \"},{\"code\":1,\"text\":\"Init\"},{\"text\":\" API must be called in the same thread as other APIs. We recommend you call all APIs in the main thread.\"}],\"type\":\"p\"},{\"id\":\"jWTnuupQyr-ag3BbXkOyb\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype\",\"type\":\"h4\"},{\"id\":\"92qwstoR0-8eZkzSCG9dv\",\"children\":[{\"id\":\"UWz6ZJy1iY1H0DgAqFsMZ\",\"children\":[{\"text\":\"ITMGContext virtual int Init(const char* sdkAppId, const char* openId)\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"tFDBRJUAg5pm4XqIAoBhM\",\"children\":[{\"id\":\"QycVtIvFkILoghQdmHdiS\",\"children\":[{\"id\":\"HcOBy60vDVKhD30_Juk6R\",\"children\":[{\"id\":\"0_zVne2TVGCIF7jCY0ueV\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"7NPEfLtzB8Ao-njkBWYLl\",\"children\":[{\"id\":\"IpThiqgoUus9HPNmWJ0Iq\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"LrGa7QS-IP3i8PIPZsRR4\",\"children\":[{\"id\":\"Qg7HV14W8lIOSaTuFrRpz\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"f4BgNedalhc9BAyy-28ec\",\"children\":[{\"id\":\"VUs-gx3SwbngQqUdZs7QS\",\"children\":[{\"id\":\"8cdJJBfNEn3NCXhVRWeZh\",\"children\":[{\"id\":\"99yzUqdGjaC55O_4TOP20\",\"children\":[{\"text\":\"sdkAppId\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"qWntCcOfW0_WijuofwhEN\",\"children\":[{\"id\":\"OGXkbwoW96PRhWsf3V-zo\",\"children\":[{\"id\":\"g7ckVZNf9MiRP7sgdOo_8\",\"children\":[{\"text\":\"const char*\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"F5JSJCLyNF4jexVEhaiRC\",\"children\":[{\"id\":\"47-6f3PtTPgNPndjxjMTF\",\"children\":[{\"id\":\"YNrOQhoAk_q2cBmmiB5dB\",\"children\":[{\"code\":1,\"text\":\"AppID\"},{\"text\":\" provided in the \"},{\"id\":\"6bugV1SYQrfDvrnRm9RbA\",\"children\":[{\"text\":\"GME console\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://console.tencentcloud.com/gamegme\",\"props\":{\"type\":\"link\",\"url\":\"https://console.tencentcloud.com/gamegme\"},\"type\":\"ref\"},{\"text\":\", which can be obtained as instructed in \"},{\"id\":\"wrA5t_TpmUbZkitswH_Oj\",\"children\":[{\"text\":\"Activating Services\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://intl.cloud.tencent.com/document/product/607/10782#.E9.87.8D.E7.82.B9.E5.8F.82.E6.95.B0\",\"props\":{\"type\":\"link\",\"url\":\"https://intl.cloud.tencent.com/document/product/607/10782#.E9.87.8D.E7.82.B9.E5.8F.82.E6.95.B0\"},\"type\":\"ref\"},{\"text\":\".\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"AYXNuwIlKuO2LwsY7guKR\",\"children\":[{\"id\":\"q9SwGLjMhW8JwsBj9LnxU\",\"children\":[{\"id\":\"YCI0TK3QZyGkIz7_pQXEu\",\"children\":[{\"id\":\"NFA39Gsq7tVS-UBazyYMU\",\"children\":[{\"text\":\"openID\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"uwy8FLnpgjZ_sW5nOYcXQ\",\"children\":[{\"id\":\"5teRLHe6bRofRz6FWcTlt\",\"children\":[{\"id\":\"7Z4o1I-zImF1WCQMZzhyx\",\"children\":[{\"text\":\"const char*\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"j5YwYKLQAN8JOdHwoqvai\",\"children\":[{\"id\":\"cQPu7CJgwZi2KjbCRlGSK\",\"children\":[{\"id\":\"6la9M0gEtJw8QvL3eS4ZZ\",\"children\":[{\"code\":1,\"text\":\"openID\"},{\"text\":\" can only be in \"},{\"code\":1,\"text\":\"Int64\"},{\"text\":\" type, which is passed in after being converted to a \"},{\"code\":1,\"text\":\"const char*\"},{\"text\":\". You can customize its rules, and it must be unique in the application. To pass in \"},{\"code\":1,\"text\":\"openID\"},{\"text\":\" as a string, \"},{\"id\":\"01zfnNLB3ixb1W67HZ-PG\",\"children\":[{\"text\":\"submit a ticket\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://console.tencentcloud.com/workorder/category?level1_id=438&level2_id=445&source=0&data_title=%E6%B8%B8%E6%88%8F%E5%A4%9A%E5%AA%92%E4%BD%93%E5%BC%95%E6%93%8EGME&step=1\",\"props\":{\"type\":\"link\",\"url\":\"https://console.tencentcloud.com/workorder/category?level1_id=438&level2_id=445&source=0&data_title=%E6%B8%B8%E6%88%8F%E5%A4%9A%E5%AA%92%E4%BD%93%E5%BC%95%E6%93%8EGME&step=1\"},\"type\":\"ref\"},{\"text\":\" for application.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[12,17,71],\"widthMode\":\"percentage\"},{\"id\":\"aqrlY8U_bIAyWIi6Dj2Im\",\"children\":[{\"text\":\"Returned values\"}],\"nodeId\":\"returned-values\",\"type\":\"h4\"},{\"id\":\"HQ6k6X_t1w_WWFqLq-WXI\",\"children\":[{\"id\":\"PkEh7EAfYexmFKsAn3MOB\",\"children\":[{\"id\":\"VhUWU19U174nhI_N9ns8a\",\"children\":[{\"id\":\"WIntQztnHRSSatDPfkHuj\",\"children\":[{\"text\":\"Returned Value\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"WhYwxceoJslDQvGYnXzuS\",\"children\":[{\"id\":\"0M9hI4AXXp7-BVehMFjWk\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"ep9xfcGryVbeJuxmHRBc5\",\"children\":[{\"id\":\"Xp9iEumZjrPDRIScHlmY8\",\"children\":[{\"id\":\"Wo3D39O-8QlGmS74W5qEG\",\"children\":[{\"id\":\"Yn9GzXsjiFHZfvDdcqRx_\",\"children\":[{\"text\":\"AV_OK = 0\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"zVVu-euRxXy6BwipXen7r\",\"children\":[{\"id\":\"Y4ePH4RZwp0q1ipAvDIWi\",\"children\":[{\"id\":\"VdHbpi3Eo6nrJtxoet9GI\",\"children\":[{\"text\":\"Initialized SDK successfully.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"OQ0H3IIF-EiWOEGq9HraY\",\"children\":[{\"id\":\"hDpPgZzZAY8bAvPVdB7rD\",\"children\":[{\"id\":\"R01OkKqpuxK8VM8e4TcPb\",\"children\":[{\"id\":\"i4ZjIp4xI7uLwG3G9xCRF\",\"children\":[{\"text\":\"AV_ERR_SDK_NOT_FULL_UPDATE=7015\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Td5TGqUpRuZ28dAari4Gx\",\"children\":[{\"id\":\"hoMtB89OEnIB_mG8-CXjT\",\"children\":[{\"id\":\"K2BkMDKb4CUxC5kQhqQU7\",\"children\":[{\"text\":\"Checks whether the SDK file is complete. It is recommended to delete it and then import the SDK again.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[36,64],\"widthMode\":\"percentage\"},{\"id\":\"9us57FoID5XOv2Yca1LgW\",\"children\":[{\"id\":\"oBlWxP2PLjhOw4Ehy8rLm\",\"children\":[{\"b\":1,\"color\":\"#04C8DC\",\"text\":\"Notes on 7015 error code\"}],\"type\":\"p\"},{\"id\":\"m7iskwg9Uj55Wxex0Xgmr\",\"children\":[{\"text\":\"The 7015 error code is judged by md5. If this error is reported during integration, please check the integrity and version of the SDK file as prompted.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"25XECLZ_TXx-YWL9kARxa\",\"children\":[{\"text\":\"The returned value \"},{\"code\":1,\"text\":\"AV_ERR_SDK_NOT_FULL_UPDATE\"},{\"text\":\" is \"},{\"b\":1,\"text\":\"only a reminder\"},{\"text\":\" but will not cause an initialization failure.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"aeZVe8tjs8xjf3Wf1FgGQ\",\"children\":[{\"text\":\"Due to the third-party reinforcement, Unity packaging mechanism and other factors, the md5 of the library file will be affected, resulting in misjudgment. \"},{\"b\":1,\"text\":\"Please ignore this error in the logic for official release\"},{\"text\":\", and try to avoid displaying it in the UI.\"}],\"start\":false,\"type\":\"uli\"}],\"hintType\":\"alert\",\"type\":\"hint\"},{\"id\":\"gzSG0BWVBudSwOOf0_3f2\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code3\",\"type\":\"h4\"},{\"id\":\"pbZqoGWjdk0qWsE9BXjnL\",\"children\":[{\"id\":\"Pqmn7Au6zEqfqHlVMXWjL\",\"children\":[{\"text\":\"#define SDKAPPID3RD \\\"14000xxxxx\\\"\"}],\"type\":\"code-line\"},{\"id\":\"FK7zlQSeV2zlLE_t-nSP6\",\"children\":[{\"text\":\"cosnt char* openId=\\\"10001\\\";\"}],\"type\":\"code-line\"},{\"id\":\"eBOLbbZccnlcVLbBRqBBE\",\"children\":[{\"text\":\"ITMGContext* context = ITMGContextGetInstance();\"}],\"type\":\"code-line\"},{\"id\":\"jxR2igeZUbq2w-Mxlg7we\",\"children\":[{\"text\":\"context->Init(SDKAPPID3RD, openId);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"QPTVom34YRltwrgYlAWua\",\"children\":[{\"text\":\"Triggering event callback\"}],\"nodeId\":\"triggering-event-callback\",\"type\":\"h3\"},{\"id\":\"4gdfjrTPNKQoYiOU86xpo\",\"children\":[{\"text\":\"Event callbacks can be triggered by periodically calling the \"},{\"code\":1,\"text\":\"Poll\"},{\"text\":\" API in \"},{\"code\":1,\"text\":\"update\"},{\"text\":\". \"},{\"code\":1,\"text\":\"Poll\"},{\"text\":\" is the message pump of GME, and the \"},{\"code\":1,\"text\":\"Poll\"},{\"text\":\" API should be called periodically for GME to trigger event callbacks; otherwise, the entire SDK service will run exceptionally.\\nYou can refer to the \"},{\"code\":1,\"text\":\"EnginePollHelper.cpp\"},{\"text\":\" file in the demo.\"}],\"nodeId\":\"Poll\",\"type\":\"p\"},{\"id\":\"1O3fC4so0Q3mCk6DCz2uy\",\"children\":[{\"id\":\"BcQ6E4FFnuN5MbSpsv-fP\",\"children\":[{\"b\":1,\"color\":\"#FF7800\",\"text\":\"Calling the `Poll` API periodically\"}],\"type\":\"p\"},{\"id\":\"q5OD2See7mCa8BTURjPwz\",\"children\":[{\"text\":\"The \"},{\"code\":1,\"text\":\"Poll\"},{\"text\":\" API must be called periodically and in the main thread to avoid abnormal API callbacks.\"}],\"type\":\"p\"}],\"hintType\":\"warn\",\"type\":\"hint\"},{\"id\":\"jgRd4ouWVvGhsJAZq9JUc\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype2\",\"type\":\"h4\"},{\"id\":\"o0jP5XPuRC1Mikx1Qi6NZ\",\"children\":[{\"id\":\"fPnCvhRPOvjVldRzYIAqz\",\"children\":[{\"text\":\"class ITMGContext {\"}],\"type\":\"code-line\"},{\"id\":\"svu_UdPPhxlqAcl8tKpy0\",\"children\":[{\"text\":\"protected:\"}],\"type\":\"code-line\"},{\"id\":\"jXLFNzlX_Z1nAWEE9KBJU\",\"children\":[{\"text\":\" virtual ~ITMGContext() {}\"}],\"type\":\"code-line\"},{\"id\":\"PaS818_poIFt7p_8bgArN\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"},{\"id\":\"sU49kDHZk6_pxkwmIdOix\",\"children\":[{\"text\":\"public: \"}],\"type\":\"code-line\"},{\"id\":\"RbfVoc1brRWmlYgFK1kG3\",\"children\":[{\"text\":\" virtual void Poll()= 0;\"}],\"type\":\"code-line\"},{\"id\":\"jHC1K83waemO4QO9ingay\",\"children\":[{\"text\":\"}\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"2MUOZGeuos4MmKUul4Hp-\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code4\",\"type\":\"h4\"},{\"id\":\"stPwTIKPjG1AeNkqnlm_H\",\"children\":[{\"id\":\"OIQoE_alVhvL-nu31C0hg\",\"children\":[{\"text\":\"// Declaration in the header file\"}],\"type\":\"code-line\"},{\"id\":\"Bjb3r-8Cq3L6DM8ZKAx-j\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"},{\"id\":\"IRk4b7peaOqfLRn5-JVY9\",\"children\":[{\"text\":\"// Code implementation\"}],\"type\":\"code-line\"},{\"id\":\"ldv1Qp5XLvXQRbvam6vMn\",\"children\":[{\"text\":\"void TMGTestScene::update(float delta)\"}],\"type\":\"code-line\"},{\"id\":\"Y1zQdIUGFc6z1VlSVE2gu\",\"children\":[{\"text\":\"{\"}],\"type\":\"code-line\"},{\"id\":\"71WsOBhhhYqaSfd27ABw4\",\"children\":[{\"text\":\" ITMGContextGetInstance()->Poll();\"}],\"type\":\"code-line\"},{\"id\":\"Z_9wg-wHm0Ft91s59_dBH\",\"children\":[{\"text\":\"}\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"qB5BII0I9bRWCrCzhVqN-\",\"children\":[{\"text\":\"Pausing the system\"}],\"nodeId\":\"pausing-the-system\",\"type\":\"h3\"},{\"id\":\"SUeqDJxLfywZX5wnBCO3D\",\"children\":[{\"text\":\"When a \"},{\"code\":1,\"text\":\"Pause\"},{\"text\":\" event occurs in the system, the engine should also be notified for pause. If you do not need the background to play back the audio in the room, please call \"},{\"code\":1,\"text\":\"Pause\"},{\"text\":\" API to pause the GME service.\"}],\"type\":\"p\"},{\"id\":\"HKeFVGeeUV_d6XL5Pw0Z6\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype3\",\"type\":\"h4\"},{\"id\":\"gmirtPD2OqzWVY4VTRxp_\",\"children\":[{\"id\":\"R55teOI8dq_fhnxDXizmp\",\"children\":[{\"text\":\"ITMGContext int Pause()\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"Kjz7CdG-CWkWDrdFemoMx\",\"children\":[{\"text\":\"Resuming the system\"}],\"nodeId\":\"resuming-the-system\",\"type\":\"h3\"},{\"id\":\"TkJwOXsJPdd63Raz_N6nG\",\"children\":[{\"text\":\"When a \"},{\"code\":1,\"text\":\"Resume\"},{\"text\":\" event occurs in the system, the engine should also be notified for resumption. The \"},{\"code\":1,\"text\":\"Resume\"},{\"text\":\" API only supports resuming voice chat.\"}],\"type\":\"p\"},{\"id\":\"YRv8qxS1a8JevZDZfy0u9\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype4\",\"type\":\"h4\"},{\"id\":\"IYkhP4y-VDJ6Fll4Lc956\",\"children\":[{\"id\":\"aXC_2u61pvesBJBtDKfSg\",\"children\":[{\"text\":\"ITMGContext int Resume()\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"CJBNDmJe2FrYL74IMh9jB\",\"children\":[{\"text\":\"Uninitializing SDK\"}],\"nodeId\":\"uninitializing-sdk\",\"type\":\"h3\"},{\"id\":\"fEQe8zBaiUIcvgTzRfYuL\",\"children\":[{\"text\":\"This API is used to uninitialize the SDK to make it uninitialized. \"},{\"b\":1,\"text\":\"If the game business account is bound to \"},{\"b\":1,\"code\":1,\"text\":\"openid\"},{\"b\":1,\"text\":\", switching game account requires uninitializing GME and then using the new \"},{\"b\":1,\"code\":1,\"text\":\"openid\"},{\"b\":1,\"text\":\" to initialize again.\"}],\"nodeId\":\"UnInit\",\"type\":\"p\"},{\"id\":\"7rMAoWlXtOdr6yWAbKUmg\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype5\",\"type\":\"h4\"},{\"id\":\"YMrh6PG7R00DSU3Bl7-_l\",\"children\":[{\"id\":\"oSDiL-GY12TJPiGuBu9nj\",\"children\":[{\"text\":\"ITMGContext int Uninit()\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"9vwVoypZvzNXRmthFF5Ei\",\"children\":[{\"text\":\"Voice Chat Room APIs\"}],\"nodeId\":\"voice-chat-room-apis\",\"type\":\"h2\"},{\"id\":\"XLtwHJvX3gIC810YtN6Av\",\"children\":[{\"text\":\"You should initialize and call the SDK to enter a room before voice chat can start.\"}],\"type\":\"p\"},{\"id\":\"M1GrLQrURlV-iSGec4eGo\",\"type\":\"p\",\"children\":[{\"text\":\"If you have any questions when using the service, please see \"},{\"id\":\"8JpLGwZGI4qsDLntQez1r\",\"children\":[{\"text\":\"FAQs About Voice Chat\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://intl.cloud.tencent.com/document/product/607/39524\",\"props\":{\"type\":\"link\",\"url\":\"https://intl.cloud.tencent.com/document/product/607/39524\"},\"type\":\"ref\"},{\"text\":\".\"}]},{\"type\":\"p\",\"children\":[{\"text\":\"\"},{\"id\":\"plyEaL-edb0WgSJXeg5HE\",\"alt\":\"\",\"children\":[{\"text\":\"\"}],\"inline\":true,\"type\":\"image\",\"url\":\"https://cloudcache.intl.tencent-cloud.com/cms/backend-cms/1cbe73bcb34611ee9fd6525400bb593a.jpeg\",\"naturalSize\":[1556,1264],\"size\":[801,650]},{\"text\":\"\"}],\"id\":\"vd4XAxDw-tjV_nKKv9Bn9\"},{\"id\":\"OYLxUU_Tvx_YfMbKJsk58\",\"children\":[{\"id\":\"B2JfhtGzNTzqtEUwkz56A\",\"children\":[{\"id\":\"qknJL6WK7u99xbRV_ZQLQ\",\"children\":[{\"id\":\"xx5ubi1RTJBQs4SJ93Clj\",\"children\":[{\"text\":\"API\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"X-Idi04tnvBCLnjt7bGmP\",\"children\":[{\"id\":\"O2h7R-3m6jX5hDFelV00p\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"p4Fjytdo9If6g5Isqv58z\",\"children\":[{\"id\":\"wv0T5QWgsnKMKunRi1I7l\",\"children\":[{\"id\":\"j1sUxsD5jJxqId3OX3Q_7\",\"children\":[{\"id\":\"ssIkUgz_3yAro6v5FlTIJ\",\"children\":[{\"text\":\"GenAuthBuffer\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"JLeQSXnEClIB-M4i79bKe\",\"children\":[{\"id\":\"e9WX44CKx5Rkg2XpXHz9m\",\"children\":[{\"id\":\"kMylHCaneSs3gvdzjJT0e\",\"children\":[{\"text\":\"Calculates the local authentication key\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"LB4seAR7nKT1NIeyVd9eE\",\"children\":[{\"id\":\"8AvuelHohVD8vO5WTz-qq\",\"children\":[{\"id\":\"9WhlkPMjB3A_FW_hgx3A3\",\"children\":[{\"id\":\"VlMY0tGEz6gfjiUsXEY_D\",\"children\":[{\"text\":\"EnterRoom\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"C56Wiww8a8levILQ_LGW2\",\"children\":[{\"id\":\"pGZtlf91si0S4VqGsiyC6\",\"children\":[{\"id\":\"6LecgwEq2UIWYqMo3NJg-\",\"children\":[{\"text\":\"Enters a room\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"ElYAEnJh3sYObOk3A-xQe\",\"children\":[{\"id\":\"I9jHdP-seP6oG2WbRG83V\",\"children\":[{\"id\":\"aHOIt3PBcheXzF3WNnwb2\",\"children\":[{\"id\":\"pADJk18bQKKfo3Dz_gPai\",\"children\":[{\"text\":\"ExitRoom\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"9tDXRJ6nOMx5UvF4e27AS\",\"children\":[{\"id\":\"72tGN4KSuq6ejqj6U-U34\",\"children\":[{\"id\":\"ZlS56cSPh1eVmKHpcGkxg\",\"children\":[{\"text\":\"Exits the room\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"3ROcY82bGoWE_eGUQ_nXA\",\"children\":[{\"id\":\"IZKum3ntlttJR6xHO6Nkx\",\"children\":[{\"id\":\"rtbVRjDTIcjRJJX60rNJ_\",\"children\":[{\"id\":\"akQljIACsdjedrNLqV53k\",\"children\":[{\"text\":\"IsRoomEntered\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"_TzfrUOTzbcEoicS3rurz\",\"children\":[{\"id\":\"PsfFJ30nN8cdqhVgyR4gI\",\"children\":[{\"id\":\"uJonm3Pa8QU13fmMAjHiG\",\"children\":[{\"text\":\"Determines whether room entry is successful\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"jPjs_A6jL1rVyuCUWD58W\",\"children\":[{\"id\":\"MNwmVMo9xhGQTnmwlj2xs\",\"children\":[{\"id\":\"cTXH4ghsG52p5rLTDUhKT\",\"children\":[{\"id\":\"jHuNUc8yGzyrRPfp5XS0q\",\"children\":[{\"text\":\"SwitchRoom\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"lbOExU91m_0Zh7FWmN00E\",\"children\":[{\"id\":\"qnu7vsvC9XMC12SjI0-yR\",\"children\":[{\"id\":\"kkJgrWrmlounCinMINadV\",\"children\":[{\"text\":\"Switches the room quickly\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[29,71],\"widthMode\":\"percentage\"},{\"id\":\"PMTtkk46lFkk5Dg4DLD0i\",\"children\":[{\"text\":\"Local authentication key calculation\"}],\"nodeId\":\"local-authentication-key-calculation\",\"type\":\"h3\"},{\"id\":\"mRPlXeKQe7TR5e_Ko5fWf\",\"children\":[{\"text\":\"Generate \"},{\"code\":1,\"text\":\"AuthBuffer\"},{\"text\":\" for encryption and authentication of relevant features. For release in the production environment, please use the backend deployment key as detailed in \"},{\"id\":\"yCvxxby45z5XjORtspFj-\",\"children\":[{\"text\":\"Authentication Key\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://intl.cloud.tencent.com/document/product/607/12218\",\"props\":{\"type\":\"link\",\"url\":\"https://intl.cloud.tencent.com/document/product/607/12218\"},\"type\":\"ref\"},{\"text\":\". \"}],\"type\":\"p\"},{\"id\":\"wrT2E06CJ0SKGrZql-0YC\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype6\",\"type\":\"h4\"},{\"id\":\"ae-JOizP3KrxkQ5X4KXMD\",\"children\":[{\"id\":\"jW98QEBaoUbzi2b6Odu5-\",\"children\":[{\"text\":\"int QAVSDK_AuthBuffer_GenAuthBuffer(unsigned int dwSdkAppID, const char* strRoomID, const char* strOpenID,\"}],\"type\":\"code-line\"},{\"id\":\"-AziwrXS-8VHJqgNVl68r\",\"children\":[{\"text\":\" const char* strKey, unsigned char* strAuthBuffer, unsigned int bufferLength);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"bj_f54B4MzO87Rsr1gSWG\",\"children\":[{\"id\":\"dYMk_ywwii4MluOuws7jP\",\"children\":[{\"id\":\"eZ_oseV1TKpWUS_UCPVL6\",\"children\":[{\"id\":\"A76MnD6Po_qel7fAqrOz8\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"AQNiXIvG_UX9U6P7-GXgU\",\"children\":[{\"id\":\"KOmSMr_3Y9zItS3ZcleWa\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"7HXd2VAkW6L59HlpwNe2-\",\"children\":[{\"id\":\"BivVpnIqEZ3_-e7KWzTlX\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"xszSr5kQNEKmnU4wGnnKF\",\"children\":[{\"id\":\"-et0Ow4Skrg6t2BobwvHS\",\"children\":[{\"id\":\"3c56WQtR76qUIvikLt3pe\",\"children\":[{\"id\":\"4TKh4tspDbCGgy8fOFilf\",\"children\":[{\"text\":\"dwSdkAppID\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"2izYA2ig0q4YqMArJKNYx\",\"children\":[{\"id\":\"PjO4KWho2Me2pZQYaDeSF\",\"children\":[{\"id\":\"ceGGu--PFKhJZw9UaH2nP\",\"children\":[{\"text\":\"unsigned int\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"LTqgC9vgnIl3KldHNXKhF\",\"children\":[{\"id\":\"Gh7U23NbU6rPKOWY-DMGP\",\"children\":[{\"id\":\"w99AH3SSN64OtS8uCslRk\",\"children\":[{\"code\":1,\"text\":\"AppId\"},{\"text\":\" from the Tencent Cloud console\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"Yjvy18644xfVaDkm3-ATF\",\"children\":[{\"id\":\"vpWoSPkBQcNfSV_Kdn0Fy\",\"children\":[{\"id\":\"Bkz--4DMLAZSUxE-cxRuP\",\"children\":[{\"id\":\"MT-HO8dmeTG6wwAi7254v\",\"children\":[{\"text\":\"strRoomID\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"eUZfp67h5GiW1tcF8O4rJ\",\"children\":[{\"id\":\"hVv8BOM9sO_MOvoUagYLG\",\"children\":[{\"id\":\"9Rnq6h9CJpeaoAYNNklaE\",\"children\":[{\"text\":\"const char*\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"_co1oVm88Wv6OgrgN6bqx\",\"children\":[{\"id\":\"7-IITV67RBwU8nmg72Cjj\",\"children\":[{\"id\":\"wK8cYjhIvnYTO9EFTkSQe\",\"children\":[{\"text\":\"Room ID, which can contain up to 127 characters.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"oScMlhg7ogRslZ59UMUxr\",\"children\":[{\"id\":\"L8DgeBH1Uiv3J_iIH0Nvg\",\"children\":[{\"id\":\"CvSnd1Zz_L85Pa3scNHiT\",\"children\":[{\"id\":\"RLZGGl8G7ES0uIQM7Mtnv\",\"children\":[{\"text\":\"strOpenID\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"8w3HM6-4IBS2VeOuoz11b\",\"children\":[{\"id\":\"Nz-yMTzp6HG9PgcvQsrgh\",\"children\":[{\"id\":\"z_92Fqs1Gi38l4fX5I4ju\",\"children\":[{\"text\":\"const char*\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Deyvr_iu5UoREZcE2c_zf\",\"children\":[{\"id\":\"IFnhzhgF_KK-yKoYzhCdk\",\"children\":[{\"id\":\"bbYD5JBI-ECpnN7jwv-mZ\",\"children\":[{\"text\":\"User ID, which is the same as \"},{\"code\":1,\"text\":\"openID\"},{\"text\":\" during initialization.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"TA6Cd1A6y1Y-yS9vbvvga\",\"children\":[{\"id\":\"eGgVbx6FuniQMWGKX0ByK\",\"children\":[{\"id\":\"o79B2ZIskosyc1zGghEuU\",\"children\":[{\"id\":\"l0Z9V96kSDkZIeRzHBxFB\",\"children\":[{\"text\":\"strKey\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"a0D4HdxCxMqDZ1k547gS3\",\"children\":[{\"id\":\"RJVf4t3F4hTCHb-wGl1PX\",\"children\":[{\"id\":\"1YlEWcz0NwyORaQjjAuGV\",\"children\":[{\"text\":\"const char*\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"j1pmPiUhw-QzC5Yijb_ri\",\"children\":[{\"id\":\"amOrOflAOITorX1xEQqAe\",\"children\":[{\"id\":\"yUTIdriU06Aw2VqgkBhT9\",\"children\":[{\"text\":\"Permission key from the \"},{\"id\":\"aS9S36QKzkTrWbX7s0IvN\",\"children\":[{\"text\":\"Tencent Cloud console\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://console.tencentcloud.com/gamegme\",\"props\":{\"type\":\"link\",\"url\":\"https://console.tencentcloud.com/gamegme\"},\"type\":\"ref\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"H3HhPaTzSvOJ1txkHjlke\",\"children\":[{\"id\":\"SgMGjVtAGXQinihbfWsp3\",\"children\":[{\"id\":\"gcPU3CxIZb_uzv4w9iJly\",\"children\":[{\"id\":\"eZlNEIoNcNjTJY-N-wLs0\",\"children\":[{\"text\":\"strAuthBuffer\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"-djVt5YoxYpHUgYpcQM6n\",\"children\":[{\"id\":\"hfKCxYvyqxQ4H-1SsCH18\",\"children\":[{\"id\":\"tRTYV-inmZ7eC-_vsmlaR\",\"children\":[{\"text\":\"const char*\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"1O1iqt0bD75DcY3oYNyNJ\",\"children\":[{\"id\":\"o-SAeuPDkV4pM8sz5KJZr\",\"children\":[{\"id\":\"1zMueaHXyBIODXD_MLsjR\",\"children\":[{\"text\":\"Returned \"},{\"code\":1,\"text\":\"authbuff\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"DceqfkIstiONYeSw1WFIp\",\"children\":[{\"id\":\"acyOlaTldRiVowuzWQrGQ\",\"children\":[{\"id\":\"_P_IoYYJEDYFCh_qrspBZ\",\"children\":[{\"id\":\"EC0lJ9lpliDT3jmJpxWvx\",\"children\":[{\"text\":\"bufferLength\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ScRgn3wgOy1W6DNCTKkXn\",\"children\":[{\"id\":\"hflSm7K2ZuWdizWOwqUrD\",\"children\":[{\"id\":\"AR5BkIHDpNsRcwMi6isFv\",\"children\":[{\"text\":\"int\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"B7voqvBfNPEFu1an9pfmo\",\"children\":[{\"id\":\"oxEE9j6rovt9iFS_ZqO77\",\"children\":[{\"id\":\"9TnZ8aslGXknhXvNY0HyW\",\"children\":[{\"text\":\"Length of the \"},{\"code\":1,\"text\":\"authbuff\"},{\"text\":\" passed in. 500 is recommended.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[18,17,65],\"widthMode\":\"percentage\"},{\"id\":\"pEXc5eBbp0EbD4N8Ezw-c\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code5\",\"type\":\"h4\"},{\"id\":\"OT2V-3y2KaLyZdTXjgMZW\",\"children\":[{\"id\":\"GU5Cg5QiX5OfJzz_hzoIs\",\"children\":[{\"text\":\"unsigned int bufferLen = 512;\"}],\"type\":\"code-line\"},{\"id\":\"65KSultr7Yqxq5OlJABd-\",\"children\":[{\"text\":\"unsigned char retAuthBuff[512] = {0};\"}],\"type\":\"code-line\"},{\"id\":\"Wm9BXHc-ByBTLMAhMqMYO\",\"children\":[{\"text\":\"QAVSDK_AuthBuffer_GenAuthBuffer(atoi(SDKAPPID3RD), roomId, \\\"10001\\\", AUTHKEY,retAuthBuff,bufferLen);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"GJE3MrR7btepOY1mjo3Rl\",\"children\":[{\"text\":\"Entering a room\"}],\"nodeId\":\"entering-a-room\",\"type\":\"h3\"},{\"id\":\"852qj2J4f2BMdL_YeO2Eb\",\"children\":[{\"text\":\"This API is used to enter a room with the generated authentication information. The mic and speaker are not enabled by default after room entry.\"}],\"nodeId\":\"EnterRoom\",\"type\":\"p\"},{\"id\":\"_5hsyo0EeyP492-HzWpdJ\",\"children\":[{\"id\":\"29LMittpoex0Gto31K-l3\",\"children\":[{\"b\":1,\"color\":\"#04C8DC\",\"text\":\"Note:\"}],\"type\":\"p\"},{\"id\":\"BWryYPfjx24rbvqrVDMVB\",\"children\":[{\"text\":\"If the room entry callback result is \"},{\"code\":1,\"text\":\"0\"},{\"text\":\", the room entry is successful. If \"},{\"code\":1,\"text\":\"0\"},{\"text\":\" is returned from the \"},{\"code\":1,\"text\":\"EnterRoom\"},{\"text\":\" API, it doesn't necessarily mean that the room entry is successful.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"ympUy-Bz652kpUpo3sJgC\",\"children\":[{\"text\":\"The audio type of the room is determined by the first user entering the room. After that, if a member in the room changes the room type, it will take effect for all members there. For example, if the first user entering the room uses the smooth sound quality, and the second user entering the room uses the HD sound quality, the room audio type of the second user will change to the smooth sound quality. Only after a member in the room calls the \"},{\"code\":1,\"text\":\"ChangeRoomType\"},{\"text\":\" API will the audio type of the room be changed.\"}],\"start\":false,\"type\":\"uli\"}],\"hintType\":\"alert\",\"type\":\"hint\"},{\"id\":\"Pn4kvlxWepP0YpLutOxHa\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype7\",\"type\":\"h4\"},{\"id\":\"wKiLtJEpFvCB-2UoEcWV_\",\"children\":[{\"id\":\"KuVESgYJVrFAM1dsoiecQ\",\"children\":[{\"text\":\"ITMGContext virtual int EnterRoom(const char* roomID, ITMG_ROOM_TYPE roomType, const char* authBuff, int buffLen)\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"5spY95KmPIbnDq1Y1YYWr\",\"children\":[{\"id\":\"X1dfgo4lyGmud2RtZBW7_\",\"children\":[{\"id\":\"9_n2oaHmhqBVx-n9yPtjL\",\"children\":[{\"id\":\"DAo2iCBx4NKiH80LwpgNS\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"FOGTdhzJOfzs8RVCkM8DB\",\"children\":[{\"id\":\"ky9dbEHNdFYO0N0N9PqDT\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"tIEBqCmzhC8NA5zW0mblf\",\"children\":[{\"id\":\"mXRa1vbB5qbCfNutlYHLf\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"_HymA3g20bSPA4f_0OrAU\",\"children\":[{\"id\":\"UPZJR_8JCLLbAI5tVCIzN\",\"children\":[{\"id\":\"F_4V5CXJdIvtVrHzKH_Ax\",\"children\":[{\"id\":\"eZxQqsvEuXCoAHoljjStj\",\"children\":[{\"text\":\"roomID\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"scAD4CE2ulSsdGM7jDLKx\",\"children\":[{\"id\":\"hZcP_BUwhC-SyjANxGtb0\",\"children\":[{\"id\":\"y8Xg3rl11ZvPsOAAIlWYY\",\"children\":[{\"text\":\"const char*\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"OGGf2F_ccsqL4KAqllEFV\",\"children\":[{\"id\":\"dMutuEgio3d-pJqvdNtXU\",\"children\":[{\"id\":\"v94A0Ao-fCRdQcpyXmPl8\",\"children\":[{\"text\":\"Room ID, which can contain up to 127 characters.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"R3UR2r9YUfz2_I0BvP_IW\",\"children\":[{\"id\":\"4WjdQncp93mGFoXeiG__M\",\"children\":[{\"id\":\"OaKObGH_Vfh1SZy7c-rp6\",\"children\":[{\"id\":\"XJ6d3GJtLAkv3M9Gtzkmp\",\"children\":[{\"text\":\"roomType\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"nH8MNFT7nMR9q6S6AsmBW\",\"children\":[{\"id\":\"NwbM4wg0lDJCRH7ESn_Ll\",\"children\":[{\"id\":\"8EZAyW-tGU_mbNV6pC3MA\",\"children\":[{\"text\":\"ITMG_ROOM_TYPE\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"pnup174q0dnGtJ7cr0y4v\",\"children\":[{\"id\":\"itykRv6Q4obVxSJQYzKBJ\",\"children\":[{\"id\":\"KWnNKv4py3BIm-OQACgTo\",\"children\":[{\"text\":\"Room type. We recommend you select \"},{\"code\":1,\"text\":\"ITMG_ROOM_TYPE_FLUENCY\"},{\"text\":\" for games. For more information on room audio types, see \"},{\"id\":\"nnr8bQ9wSbXo77GaaEgQZ\",\"children\":[{\"text\":\"Sound Quality\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://intl.cloud.tencent.com/document/product/607/18522\",\"props\":{\"type\":\"link\",\"url\":\"https://intl.cloud.tencent.com/document/product/607/18522\"},\"type\":\"ref\"},{\"text\":\".\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"ziX4thUzdqsIlM_A6Hnoe\",\"children\":[{\"id\":\"yMyBzrdHjgZwoXi3kr6JX\",\"children\":[{\"id\":\"i0Z3bfCE1stgZOIX7B9ik\",\"children\":[{\"id\":\"J2tbHfov3GeqtZvzS8uJP\",\"children\":[{\"text\":\"authBuffer\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"DGi814DP_JrQcjuX5eCvq\",\"children\":[{\"id\":\"O5_FRuADgqUh0WAiFHinE\",\"children\":[{\"id\":\"3pnZt3HbX-MtUaL-MpvqO\",\"children\":[{\"text\":\"const char*\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"WUNoi4h8zcs7KHkXwfGXq\",\"children\":[{\"id\":\"gLaYAoZJ8KffPkcB9uT0S\",\"children\":[{\"id\":\"8Y8J5ZmyrNWZodmsmD2xl\",\"children\":[{\"text\":\"Authentication key\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"RalHKM0NlEXonuQwZO6BL\",\"children\":[{\"id\":\"gw9pzjnPcryMK0vhRIdx5\",\"children\":[{\"id\":\"Mc25vZgDlU-V5Zhye0UJE\",\"children\":[{\"id\":\"_78lKgAE3QYvSmn1Wv0cU\",\"children\":[{\"text\":\"buffLen\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Y-QuHmMq-b5eTGjI8dBcw\",\"children\":[{\"id\":\"GmgdZO2WowhBMrk7IVY0R\",\"children\":[{\"id\":\"uBOLnV90kMVWQllxNNUmt\",\"children\":[{\"text\":\"int\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"fumU-82njlF04TG-fKeaD\",\"children\":[{\"id\":\"TzTPziM8OJDhB4Quh80iT\",\"children\":[{\"id\":\"CUKJzM7PbdZJ2HEyZszJ-\",\"children\":[{\"text\":\"Authentication key length\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[14,20,66],\"widthMode\":\"percentage\"},{\"id\":\"uKoR9954ZXB_as7Wl-_mC\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code6\",\"type\":\"h4\"},{\"id\":\"PpaA-BGdEGp3Gu9FQ9GzO\",\"children\":[{\"id\":\"4DHoOKRx5uhpXtjoXM9gL\",\"children\":[{\"text\":\"ITMGContext* context = ITMGContextGetInstance();\"}],\"type\":\"code-line\"},{\"id\":\"lASq73ClUNQvHt4mlmNx4\",\"children\":[{\"text\":\"context->EnterRoom(roomID, ITMG_ROOM_TYPE_FLUENCY, (char*)retAuthBuff,bufferLen);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"KEThjGr2utOi_wV2c-0pG\",\"children\":[{\"text\":\"Callback for room entry\"}],\"nodeId\":\"callback-for-room-entry\",\"type\":\"h3\"},{\"id\":\"UlMq765qUuCC_ku1eQNdj\",\"children\":[{\"text\":\"After the user enters the room, the message \"},{\"code\":1,\"text\":\"ITMG_MAIN_EVENT_TYPE_ENTER_ROOM\"},{\"text\":\" will be sent and identified in the \"},{\"code\":1,\"text\":\"OnEvent\"},{\"text\":\" function for callback and processing. A successful callback means that the room entry is successful, and the billing starts.\"}],\"type\":\"p\"},{\"type\":\"accordion\",\"children\":[{\"type\":\"accordion-line\",\"id\":\"BzCl-yP_Zxk1HHcsImzOi\",\"children\":[{\"type\":\"accordion-line-title\",\"children\":[{\"text\":\"Billing references\",\"b\":1}],\"id\":\"8LX9o95Ast1xMFR0TB5fE\"},{\"type\":\"uli\",\"children\":[{\"text\":\"\"},{\"type\":\"ref\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/50009\"},\"linkTarget\":\"self\",\"children\":[{\"text\":\"Purchase Guide\"}],\"id\":\"FRmOTUEPa1EgSkvbN0cj8\"},{\"text\":\"\"}],\"id\":\"I8S6LK64qFS66DEz_Nh05\"},{\"type\":\"uli\",\"id\":\"P-gCVc60HHsi121pSTcaZ\",\"children\":[{\"text\":\"\"},{\"type\":\"ref\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/30255\"},\"linkTarget\":\"self\",\"children\":[{\"text\":\"Billing FAQs\"}],\"id\":\"5RPaTAnNn6PDGNMHHNnbl\"},{\"text\":\"\"}]},{\"type\":\"uli\",\"id\":\"uItHqJSIHa4VmoB9bfJAC\",\"children\":[{\"text\":\"\"},{\"type\":\"ref\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/30255#.E4.BD.BF.E7.94.A8.E5.AE.9E.E6.97.B6.E8.AF.AD.E9.9F.B3.E5.90.8E.EF.BC.8C.E5.A6.82.E6.9E.9C.E5.AE.A2.E6.88.B7.E7.AB.AF.E6.8E.89.E7.BA.BF.E4.BA.86.EF.BC.8C.E6.98.AF.E5.90.A6.E8.BF.98.E4.BC.9A.E7.BB.A7.E7.BB.AD.E8.AE.A1.E8.B4.B9.EF.BC.9F\"},\"linkTarget\":\"self\",\"children\":[{\"text\":\"Will Voice Chat still be charged when client is offlined?\"}],\"id\":\"z-NH88-B4QpTdDtacXmrQ\"},{\"color\":\"red\",\"text\":\"\"}]}]}],\"id\":\"KU9gBV8RWGjLj53u8ZR1S\"},{\"id\":\"n1oZRVPuMBDy30lSrnS5c\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code7\",\"type\":\"h4\"},{\"id\":\"mtLMqq-dilczH2vVOiMdR\",\"children\":[{\"id\":\"eCn1-CVTZcRmIuXMjldnJ\",\"children\":[{\"text\":\"void TMGTestScene::OnEvent(ITMG_MAIN_EVENT_TYPE eventType,const char* data){\"}],\"type\":\"code-line\"},{\"id\":\"Ql7P9UBjYODZYwSRTmOID\",\"children\":[{\"text\":\" switch (eventType) {\"}],\"type\":\"code-line\"},{\"id\":\"fu5ErsPX8q2oOhWL0QYXj\",\"children\":[{\"text\":\" case ITMG_MAIN_EVENT_TYPE_ENTER_ROOM:\"}],\"type\":\"code-line\"},{\"id\":\"WNyCVb9MtVptJVC7W5BPK\",\"children\":[{\"text\":\" {\"}],\"type\":\"code-line\"},{\"id\":\"AnlvVes784cTIS8eqfbKC\",\"children\":[{\"text\":\" ListMicDevices();\"}],\"type\":\"code-line\"},{\"id\":\"59J34JNxaCg9hcc4J83eW\",\"children\":[{\"text\":\" ListSpeakerDevices();\"}],\"type\":\"code-line\"},{\"id\":\"hqESedHSenhJKa6oQbrOa\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"},{\"id\":\"qgbPWoodAjbNYEUdAOD_a\",\"children\":[{\"text\":\" std::string strText = \\\"EnterRoom complete: ret=\\\";\"}],\"type\":\"code-line\"},{\"id\":\"uoePA1eYMQ_w25AtED1hQ\",\"children\":[{\"text\":\" strText += data;\"}],\"type\":\"code-line\"},{\"id\":\"hLUZquPsIIYOPSEbqj40Q\",\"children\":[{\"text\":\" m_EditMonitor.SetWindowText(MByteToWChar(strText).c_str());\"}],\"type\":\"code-line\"},{\"id\":\"mZfiqf69aVpqRV6MFfYV-\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"Vl7DUqy04_mY_RTW6I792\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"ud026SxCOo9bqliwiaLLT\",\"children\":[{\"text\":\"}\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"yF5MGusQy3MuRaCUalBDh\",\"children\":[{\"text\":\"Data details\"}],\"nodeId\":\"data-details\",\"type\":\"h4\"},{\"id\":\"NZS7Zz_TPl8kulzLyERIx\",\"children\":[{\"id\":\"xPkhMIBmNg8z8CGL994NS\",\"children\":[{\"id\":\"tpZEJNnef58AyAB8PE_Xc\",\"children\":[{\"id\":\"B604QWoCS9F7ya5oKK29H\",\"children\":[{\"text\":\"Message\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"BcNkOOuIo5kpj9aOlDzQf\",\"children\":[{\"id\":\"-TOGIJ_nuwjmNjYsGToNJ\",\"children\":[{\"text\":\"Data\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"9kUumUF8o-2XNgyMooc3r\",\"children\":[{\"id\":\"l0l35Ysfv1JSlaW8ZJ-DQ\",\"children\":[{\"text\":\"Sample\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"2ZB75NnoQaNthNzByxqVp\",\"children\":[{\"id\":\"CwxR0fMcO5WUnzNtga7Fc\",\"children\":[{\"id\":\"XzuDa7uWoSVcIifk7FCmF\",\"children\":[{\"id\":\"yQIixjFLsVYp7Zm3jmx92\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_ENTER_ROOM\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Ig0y7C_s3WDnpgh0IHCvR\",\"children\":[{\"id\":\"L0PMIGOCCTzf7aWNY9Cou\",\"children\":[{\"id\":\"fhwrfrRmXtMb5SJQ8YL1P\",\"children\":[{\"text\":\"result; error_info\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"9qh4cIY9mQYc3FAVrp7OG\",\"children\":[{\"id\":\"-plTjgwDm5xYSRIaMzwyV\",\"children\":[{\"id\":\"rbQ98ZUq9anGoB1wmpvkX\",\"children\":[{\"text\":\"{\\\"error_info\\\":\\\"\\\",\\\"result\\\":0}\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"ZAYsZLCEzDuLCm23fwblB\",\"children\":[{\"id\":\"dwTeL-qqf_uxwja6A7dTb\",\"children\":[{\"id\":\"TTDLI8hwcgl7nGyU-4qGO\",\"children\":[{\"id\":\"K_FeYuaa4AYPLB5QibwnT\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_ROOM_DISCONNECT\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"XiTnzNMKlQvljT3FugUKV\",\"children\":[{\"id\":\"a1VExuipRItoINm0bL0mQ\",\"children\":[{\"id\":\"d2tYtxU_YePCZdTfS-QKr\",\"children\":[{\"text\":\"result; error_info\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"t6GA6vKyVfrxr3fuxfb9Z\",\"children\":[{\"id\":\"5UUmmazCIvK3WgrV7TZv5\",\"children\":[{\"id\":\"XbIN4iE10qlhvLb7JqkkB\",\"children\":[{\"text\":\"{\\\"error_info\\\":\\\"waiting timeout, please check your network\\\",\\\"result\\\":0}\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[38,14,48],\"widthMode\":\"percentage\"},{\"id\":\"__WVoe1HI2xpeVGelNEiA\",\"children\":[{\"text\":\"If the network is disconnected, there will be a disconnected callback prompt \"},{\"code\":1,\"text\":\"ITMG_MAIN_EVENT_TYPE.ITMG_MAIN_EVENT_TYPE_ROOM_DISCONNECT\"},{\"text\":\". At this time, the SDK will automatically reconnect, and the callback is \"},{\"code\":1,\"text\":\"ITMG_MAIN_EVENT_TYPE_RECONNECT_START\"},{\"text\":\". When the reconnection is successful, there will be a callback \"},{\"code\":1,\"text\":\"ITMG_MAIN_EVENT_TYPE_RECONNECT_SUCCESS\"},{\"text\":\".\"}],\"type\":\"p\"},{\"id\":\"W2PtvmonRofJETgSRuXPa\",\"children\":[{\"text\":\"Error codes\"}],\"nodeId\":\"error-codes\",\"type\":\"h4\"},{\"id\":\"IzxGOkR0LexBqlOz1F3cz\",\"children\":[{\"id\":\"6GeVkT5qRAiiZ7PI8WbyO\",\"children\":[{\"id\":\"sgS0PPaq8-seBqKHWvOcd\",\"children\":[{\"id\":\"Ca1w5bRfl9FynnIUUTFIA\",\"children\":[{\"text\":\"Error Code Value\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"WV0BNgsam5PHU0U4v6EQw\",\"children\":[{\"id\":\"kpnpVRM_CLXnmH90Txhjx\",\"children\":[{\"text\":\"Cause and Suggested Solution\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"dvd3hXIuDEj_qJKfim7e3\",\"children\":[{\"id\":\"GP25otCgThVbHAForH9vm\",\"children\":[{\"id\":\"L7XkMOBkkxsL4UcRFKVXm\",\"children\":[{\"id\":\"3SSBv-3K0b5717vdSYQ0Q\",\"children\":[{\"text\":\"7006\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"EX8Z3qT8eeLZ5IiKlrtCn\",\"children\":[{\"id\":\"haT7wVr0Yv_4leCJNe7cS\",\"children\":[{\"text\":\"Authentication failed:\"}],\"type\":\"p\"},{\"id\":\"1NnD2f3dA2IxFgjnsHiW9\",\"type\":\"uli\",\"children\":[{\"text\":\"The \"},{\"code\":1,\"text\":\"AppID\"},{\"text\":\" does not exist or is incorrect.\"}]},{\"id\":\"morM_6p1VGYMZyYafI6KK\",\"type\":\"uli\",\"children\":[{\"text\":\"An error occurred while authenticating the \"},{\"code\":1,\"text\":\"authbuff\"},{\"text\":\".\"}]},{\"id\":\"6dB7sXXWKAjZt-Sn2j3-H\",\"type\":\"uli\",\"children\":[{\"text\":\"Authentication expired.\"}]},{\"id\":\"MRm6qX4rJvWsyBsk9JaLO\",\"type\":\"uli\",\"children\":[{\"text\":\"The \"},{\"code\":1,\"text\":\"OpenId\"},{\"text\":\" does not meet the specification.\"}]}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"aIFJsu4YJ5cjEQ0HTYNZl\",\"children\":[{\"id\":\"wZmXqHpWlkKH433uY3pfc\",\"children\":[{\"id\":\"K3cIHz087WUwaf8lIUJCP\",\"children\":[{\"id\":\"sBD0CIAyc19D7dnSQypI_\",\"children\":[{\"text\":\"7007\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"j5_WbptqVPoD4MwCXfUnQ\",\"children\":[{\"id\":\"qeqEjMCvOFKwCQ-Z2JN3U\",\"children\":[{\"id\":\"SCuWsa1kd5suRfxX_uGHm\",\"children\":[{\"text\":\"Already in another room.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"klDDzy-FPoCCknNxTuuzA\",\"children\":[{\"id\":\"g4amfoNlTOZ0vwmhPrS2A\",\"children\":[{\"id\":\"rRde3b4LTei9KeZDI6dP2\",\"children\":[{\"id\":\"PiWYq6iJavsCubiC45klI\",\"children\":[{\"text\":\"1001\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"f_ub82Pa9oMByN7_Bn7Xi\",\"children\":[{\"id\":\"cNL2trYZHfqb5aWgjgeew\",\"children\":[{\"id\":\"LpnNliHIWGPZ_WaSFc8Ij\",\"children\":[{\"text\":\"The user was already in the process of entering a room but repeated this operation. It is recommended not to call the room entering API until the room entry callback is returned.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"k_uoj9vxin0h19XSVr-GS\",\"children\":[{\"id\":\"RPjtnQn3h2LsRDpj6Y4HC\",\"children\":[{\"id\":\"erXEK1SbEjQw2N7KmXIql\",\"children\":[{\"id\":\"v7I7HgsiyQcR8RG-XYctD\",\"children\":[{\"text\":\"1003\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"UZpDt7mj3J9grymd4WkoC\",\"children\":[{\"id\":\"tDfBhD2X7jbS9oS60bLFH\",\"children\":[{\"id\":\"9xwbbG5g1H9TY00QggEus\",\"children\":[{\"text\":\"The user was already in the room and called the room entering API again.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"StAbRTirEOmYUDDO8DNWC\",\"children\":[{\"id\":\"bQeno98V5aZvoVK2R4a8u\",\"children\":[{\"id\":\"JjteZ7h8deteaLSc6SzmI\",\"children\":[{\"id\":\"edMV2EY1HgXqXXiiiZZcm\",\"children\":[{\"text\":\"1101\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ok2ufdrogA2CO5aeOStWn\",\"children\":[{\"id\":\"LLtHJJZG8fwnBQ9EZtpr-\",\"children\":[{\"text\":\"Make sure that the SDK is initialized, \"},{\"code\":1,\"text\":\"OpenId\"},{\"text\":\" complies with the rules, the APIs are called in the same thread, and the \"},{\"code\":1,\"text\":\"Poll\"},{\"text\":\" API is called normally.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[19,81],\"widthMode\":\"percentage\"},{\"id\":\"Atc2SLhTyOCDxvUxq7zCI\",\"children\":[{\"text\":\"Exiting a room\"}],\"nodeId\":\"exiting-a-room\",\"type\":\"h3\"},{\"id\":\"c0V5PhOhty1JpSMAJR-RJ\",\"children\":[{\"text\":\"This API is used to exit the current room. It is an async API. The returned value \"},{\"code\":1,\"text\":\"AV_OK\"},{\"text\":\" indicates a successful async delivery. If there is a scenario in the application where room entry is performed immediately after room exit, you don't need to wait for the \"},{\"code\":1,\"text\":\"RoomExitComplete\"},{\"text\":\" callback notification from the \"},{\"code\":1,\"text\":\"ExitRoom\"},{\"text\":\" API; instead, you can directly call the \"},{\"code\":1,\"text\":\"EnterRoom\"},{\"text\":\" API.\"}],\"nodeId\":\"ExitRoom\",\"type\":\"p\"},{\"id\":\"JMsQtwLrPojJIjfo1byLp\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype8\",\"type\":\"h4\"},{\"id\":\"esppaH1ceSpo3hiQdtlA8\",\"children\":[{\"id\":\"yyC9DJPJQovk5td7V98Y-\",\"children\":[{\"text\":\"ITMGContext virtual int ExitRoom()\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"RmWrv1kPr05gpeIajZ1F6\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code8\",\"type\":\"h4\"},{\"id\":\"QaIPcdu8jVfYH1_FWKE6S\",\"children\":[{\"id\":\"oB-6MsseMuWbwSN9-kiIN\",\"children\":[{\"text\":\"ITMGContext* context = ITMGContextGetInstance();\"}],\"type\":\"code-line\"},{\"id\":\"-zFIWDYOS1KfAnOx8jZGA\",\"children\":[{\"text\":\"context->ExitRoom();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"qtKrkmVN7Z-MiYTvCJ9LB\",\"children\":[{\"text\":\"Callback for room exit\"}],\"nodeId\":\"callback-for-room-exit\",\"type\":\"h4\"},{\"id\":\"mdH7PdwcWOhNNROfbNs5D\",\"children\":[{\"text\":\"After the user exits a room, a callback will be returned with the message being \"},{\"code\":1,\"text\":\"ITMG_MAIN_EVENT_TYPE_EXIT_ROOM\"},{\"text\":\".\"}],\"type\":\"p\"},{\"id\":\"m0Q-0X6gXKWUeKwMg6tSb\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code9\",\"type\":\"h4\"},{\"id\":\"trp9kCay5YQF_ZCX4Amcm\",\"children\":[{\"id\":\"ZDbbtMONtPi2Z9b-xuMvY\",\"children\":[{\"text\":\"void TMGTestScene::OnEvent(ITMG_MAIN_EVENT_TYPE eventType,const char* data){\"}],\"type\":\"code-line\"},{\"id\":\"TNL8cwhXnu7PNoHe65nIg\",\"children\":[{\"text\":\" switch (eventType) {\"}],\"type\":\"code-line\"},{\"id\":\"rpLPYuRb6QQxHR1nXLghV\",\"children\":[{\"text\":\" case ITMG_MAIN_EVENT_TYPE_EXIT_ROOM:\"}],\"type\":\"code-line\"},{\"id\":\"q6VYaUGOlhHzGUMtgqtVS\",\"children\":[{\"text\":\" {\"}],\"type\":\"code-line\"},{\"id\":\"jka9ccOIg0cFeV39EBtm-\",\"children\":[{\"text\":\" // Process\"}],\"type\":\"code-line\"},{\"id\":\"Ejzc5TiqgG__CIfPdpR9r\",\"children\":[{\"text\":\" break;\"}],\"type\":\"code-line\"},{\"id\":\"aN6wjcxppNdtDTkzl4ZTp\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"Bw6QpR57Vckq51kFkngo8\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"8D0O4J3RG-zaciJryDoWO\",\"children\":[{\"text\":\"}\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"zw13b2ZktmD3JwPbe-PkA\",\"children\":[{\"text\":\"Data details\"}],\"nodeId\":\"data-details2\",\"type\":\"h4\"},{\"id\":\"M-nFo3_tENaQtZGcSVnkw\",\"children\":[{\"id\":\"GZy_H852xsKkfKzlJEAUM\",\"children\":[{\"id\":\"0TMvPpIFiCuyhEKMJAJ6x\",\"children\":[{\"id\":\"QMf6MWp-BTwkqf-jotKJI\",\"children\":[{\"text\":\"Message\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"fwxzCXV9ze9QZI9TwFh8W\",\"children\":[{\"id\":\"kqScACWKJdMk4ZZbxNogh\",\"children\":[{\"text\":\"Data\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"kTj7pfMNME3z-IRHOzMZa\",\"children\":[{\"id\":\"0FlEzJcjhQXYnuvIARL6V\",\"children\":[{\"text\":\"Sample\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"WcqlR7X8bKSmCl0DxA0hQ\",\"children\":[{\"id\":\"yiS8OLBygT5g_y5q62AHa\",\"children\":[{\"id\":\"U6WaLgeiBtIeHrxReD3d3\",\"children\":[{\"id\":\"LKAp9MECht_OuBmXgowYS\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_EXIT_ROOM\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"FtN6NLGQLnpUlznMf0IeA\",\"children\":[{\"id\":\"hPQcNUdfbEt9Kj0sDdTr8\",\"children\":[{\"id\":\"qfFE-eCmbq-IC3RoZ9tqm\",\"children\":[{\"text\":\"result; error_info\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"KYcZVfS9RPZcZz7B7_9k6\",\"children\":[{\"id\":\"ApFvMq0WnpRnjYxV0KkK3\",\"children\":[{\"id\":\"_mtNphL1xbUJEjHKIEZkM\",\"children\":[{\"text\":\"{\\\"error_info\\\":\\\"\\\",\\\"result\\\":0}\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[48,21,31],\"widthMode\":\"percentage\"},{\"id\":\"NvuUoUSXrq-BRWiRsf42T\",\"children\":[{\"text\":\"Determining whether user has entered room\"}],\"nodeId\":\"determining-whether-user-has-entered-room\",\"type\":\"h3\"},{\"id\":\"YOwjn4DjtgA-bKYexMyGR\",\"children\":[{\"text\":\"This API is used to determine whether the user has entered a room. A value in bool type will be returned. Do not call this API during room entry.\"}],\"type\":\"p\"},{\"id\":\"9FgSul_EDQz_M_ykGszkF\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype9\",\"type\":\"h4\"},{\"id\":\"Upg4gMqrfBhC_bMUoJ6Kl\",\"children\":[{\"id\":\"KA8-Ygk8YwNy73yqB5ncN\",\"children\":[{\"text\":\"ITMGContext virtual bool IsRoomEntered()\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"KYYFhUmAF7DVCdG_TZySG\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code10\",\"type\":\"h4\"},{\"id\":\"f2gTe9PEYDp3de3hy8fFV\",\"children\":[{\"id\":\"TmADsA5GsTqpR9yn8qKpc\",\"children\":[{\"text\":\"ITMGContext* context = ITMGContextGetInstance();\"}],\"type\":\"code-line\"},{\"id\":\"Aw4nHiIfBGHElPuF7ib1n\",\"children\":[{\"text\":\"context->IsRoomEntered();\"}],\"type\":\"code-line\"},{\"id\":\"Br22aGphyI_DbCpCDv2My\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"SrOiG5VkggXO4s2iqNuDO\",\"children\":[{\"text\":\"Switching room\"}],\"nodeId\":\"switching-room\",\"type\":\"h3\"},{\"id\":\"SMQ9R-qZP1M2HXN_e2ZQ2\",\"children\":[{\"text\":\"User can call this API to quickly switch the voice chat room after entering the room. After the room is switched, the device is not reset, that is, if the microphone is already enabled in this room, the microphone will keep enabled after the room is switched.\\nThe callback for quickly switching rooms is \"},{\"code\":1,\"text\":\"ITMG_MAIN_EVENT_TYPE.ITMG_MAIN_EVENT_TYPE_SWITCH_ROOM\"},{\"text\":\", and the fields are \"},{\"code\":1,\"text\":\"error_info\"},{\"text\":\" and \"},{\"code\":1,\"text\":\"result\"},{\"text\":\".\"}],\"type\":\"p\"},{\"id\":\"tp8jjeULN5UVWePFsbsnE\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype10\",\"type\":\"h4\"},{\"id\":\"wTCFyjozf7-b_U0W6BfA-\",\"children\":[{\"id\":\"pCizwxRRLEuIKct8maLES\",\"children\":[{\"text\":\"ITMGContext virtual int SwitchRoom(const char* targetRoomID, const char* authBuff, int buffLen);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"tSXOJnMZMuS5Xr2uJa8RZ\",\"children\":[{\"text\":\"Type descriptions\"}],\"nodeId\":\"type-descriptions\",\"type\":\"h4\"},{\"id\":\"6BeL1S0sCFevPTmxNxsWK\",\"children\":[{\"id\":\"nqJTYOsvc7g45_HnqyTyu\",\"children\":[{\"id\":\"tB9jBbqFXw9RrefY6m30s\",\"children\":[{\"id\":\"dJDlQx2BaNC7p9hfdZN9r\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"JCis2Faf2-M6jQcBJ-cDG\",\"children\":[{\"id\":\"rfy_KDSrQko2Ovm8SZaWM\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"l9z1xjzflKDH70qWMExKa\",\"children\":[{\"id\":\"LbnkZ9YmLAiYG9WFEDu64\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"6bCSW2odkQRivA1MmjQim\",\"children\":[{\"id\":\"l3vo26IIOlvB-dLv0gI3D\",\"children\":[{\"id\":\"TVutcgjCYrDEnPio5jCh_\",\"children\":[{\"id\":\"60qHbiQK6gvpFvx8acmrm\",\"children\":[{\"text\":\"targetRoomID\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"HapsEFmPCoNaVb5-ly_ns\",\"children\":[{\"id\":\"7FOAeWBmhftySxMfqZy_r\",\"children\":[{\"id\":\"Ul8_BaFZSSPc-uLs22VAB\",\"children\":[{\"text\":\"const char*\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"upmUq0ckndesVDl_I6FxI\",\"children\":[{\"id\":\"1GUoCfmO29w-yB3te4dnQ\",\"children\":[{\"id\":\"zMsomIvgRKoURLiKs1fRO\",\"children\":[{\"text\":\"ID of the room to enter\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"nBuAToDwzsaBjdVCpVMVj\",\"children\":[{\"id\":\"K-BbOhJzWMUU_rn5depqm\",\"children\":[{\"id\":\"Lwx1wG4kBzhk5RbZ4PMEN\",\"children\":[{\"id\":\"A4Nla-oBsDUfJU_8pEIrG\",\"children\":[{\"text\":\"authBuffer\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Z2YRAwgBF3f8FrxVW4-nG\",\"children\":[{\"id\":\"6PSmb38DqvU0LNCOtLdwH\",\"children\":[{\"id\":\"Z5miHAhCenxdCue_x3jqo\",\"children\":[{\"text\":\"const char*\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"NsKJJaDjaYmkyQPdEXrVu\",\"children\":[{\"id\":\"5KiSd3NPCeH4DTMRcbBs6\",\"children\":[{\"id\":\"xOpLJWV0-INj-p_yr1VM1\",\"children\":[{\"text\":\"Generates a new authentication key with the ID of the room to enter\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"-Jm7alVSts2R9L3N4Da3-\",\"children\":[{\"id\":\"0dbFeBsKucLA_u8_ItL1v\",\"children\":[{\"id\":\"3utYm51TjAISc_Xel8t8_\",\"children\":[{\"id\":\"VudaeBRS4AmafdJYRIg_g\",\"children\":[{\"text\":\"buffLen\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"6zxx1nELNAAf9wmdS3XZ6\",\"children\":[{\"id\":\"Ky-uSigDlwdPScW43QSpt\",\"children\":[{\"id\":\"sobSEO1ntNaFO1PmZOZul\",\"children\":[{\"text\":\"int\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"BbTgHTnPDV2akm6HIE8hE\",\"children\":[{\"id\":\"ph3gag4CEsuIu7cqYf6FS\",\"children\":[{\"id\":\"nb1ntwVrjFuBhn5wFukj6\",\"children\":[{\"text\":\"Authentication key length\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[17,15,68],\"widthMode\":\"percentage\"},{\"id\":\"4CiyDqw1eRClB0cgmq9Sp\",\"children\":[{\"text\":\"Room Status Maintenance\"}],\"nodeId\":\"room-status-maintenance\",\"type\":\"h2\"},{\"id\":\"WOahVqh7tfjBoXmlL3c-c\",\"children\":[{\"text\":\"APIs in this section are used to display speaking members and members entering or exiting the room and mute a member in the room at the business layer.\"}],\"type\":\"p\"},{\"type\":\"p\",\"children\":[{\"text\":\"\"},{\"id\":\"ijaBc9hCnDPKV0M_OhYbJ\",\"alt\":\"\",\"children\":[{\"text\":\"\"}],\"inline\":true,\"type\":\"image\",\"url\":\"https://cloudcache.intl.tencent-cloud.com/cms/backend-cms/1cbe1bcbb34611eeb2a1525400170219.png\",\"naturalSize\":[521,410],\"size\":[521,410]},{\"text\":\"\"}],\"id\":\"7zen5N3CMHJecfDjgP5-C\"},{\"id\":\"se7UHUeFU-RPOo68e4VTQ\",\"children\":[{\"id\":\"c-B2iWPcicUu6bS6vUKho\",\"children\":[{\"id\":\"ybNinDM_3DknH_2wYtArO\",\"children\":[{\"id\":\"_X0LUGBQYEekR2ZJqctYa\",\"children\":[{\"text\":\"API/Notification\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"5UcmzVp7ZW2FKahRxGXx7\",\"children\":[{\"id\":\"LX3cx-z0-vA00TolFgRKM\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"tF1jIFh4zhoLv9HEV7gep\",\"children\":[{\"id\":\"7JDi4p0dcSRQv3bZF9NEt\",\"children\":[{\"id\":\"ynRqWfyw5pokTF7wWJRZf\",\"children\":[{\"id\":\"zVtDrIPghkpDiqgBzHzg9\",\"children\":[{\"text\":\"ITMG_MAIN_EVNET_TYPE_USER_UPDATE\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ORXadmzbQrHfGvmQr4gyL\",\"children\":[{\"id\":\"XDMRsWriw9utniDnWzVCd\",\"children\":[{\"id\":\"dU83M66fh_I7rvSOBsZE8\",\"children\":[{\"text\":\"The member status changed\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"7oDcyZAjobAUCu4j-CtxS\",\"children\":[{\"id\":\"Pld8osSGhgRGAQC7AVkhJ\",\"children\":[{\"id\":\"wmUg3M_CURAGQPlvGJPGq\",\"children\":[{\"id\":\"_Ja1679MuYxlR3tOaG1o0\",\"children\":[{\"text\":\"AddAudioBlackList\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"4Q11tQ1qR2m8URE03uTFk\",\"children\":[{\"id\":\"WfiuBdg659bBXCkyCcGfE\",\"children\":[{\"id\":\"PlKt6vuac2gJ_2iULfivj\",\"children\":[{\"text\":\"Mutes a member in the room\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"0XVH4TvQPQUKNRfBWnGBr\",\"children\":[{\"id\":\"CkIMvqcwbIaL0u3gb5ThP\",\"children\":[{\"id\":\"oQ_F5DoET5CaX7qYLtJeL\",\"children\":[{\"id\":\"EIkhOOUGyNb0RTW1eBlnF\",\"children\":[{\"text\":\"RemoveAudioBlackList\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"OHGGk7FcWyRtZJZI80FdT\",\"children\":[{\"id\":\"5PvQux-T3_UjrxpvNLGzL\",\"children\":[{\"id\":\"kr3NBY81H7fPgGyC4HZ6g\",\"children\":[{\"text\":\"Unmutes a user\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[47,53],\"widthMode\":\"percentage\"},{\"id\":\"uoUse_G9qdmbuWkvhwLd6\",\"children\":[{\"text\":\"Notification events of member room entry and speaking status\"}],\"nodeId\":\"notification-events-of-member-room-entry-and-speaking-status\",\"type\":\"h3\"},{\"id\":\"nTkAYqXsZiDWEgI7VVN9o\",\"children\":[{\"text\":\"This API is used to obtain the user speaking in the room and display it in the UI, and to send a notification when someone entering or exiting the room.\\nNotification for this event will be sent only when the status changes. To get member status in real time, cache the notification when it is received at a higher layer. The event message is \"},{\"code\":1,\"text\":\"ITMG_MAIN_EVNET_TYPE_USER_UPDATE\"},{\"text\":\", where the data contains \"},{\"code\":1,\"text\":\"event_id\"},{\"text\":\" and \"},{\"code\":1,\"text\":\"user_list\"},{\"text\":\". The event message will be identified in the \"},{\"code\":1,\"text\":\"OnEvent\"},{\"text\":\" function.\\nNotifications for audio events are subject to a threshold, and a notification will be sent only when this threshold is exceeded. The notification \\\"A member has stopped sending audio packets\\\" will be sent if no audio packets are received in more than two seconds.\"}],\"type\":\"p\"},{\"id\":\"mgqPWCNZwazsZY66x_T0Y\",\"children\":[{\"id\":\"u0qKhk9v099yp66Rev2J0\",\"children\":[{\"id\":\"Qz-gbRYffuZCYmLwJEtVY\",\"children\":[{\"id\":\"gGZpRpEvhoYrwmv_dY26B\",\"children\":[{\"text\":\"event_id\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"orLUUz8KVCsoucmZj5gey\",\"children\":[{\"id\":\"uC2czo-3YcAWmBfvrHKY9\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"0anE6vuIuyOK_Cl3EVpxo\",\"children\":[{\"id\":\"GX2904xkxtUg3zL4IcDhs\",\"children\":[{\"text\":\"Maintenance\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"QGJKjmkhpBvfDor0SCuNj\",\"children\":[{\"id\":\"cG29lxbfPHzmbXCN53B8X\",\"children\":[{\"id\":\"7keb3jEjRbAUoOaIq58P5\",\"children\":[{\"id\":\"dgd09WhxBqvsmSwBIop2l\",\"children\":[{\"text\":\"ITMG_EVENT_ID_USER_ENTER\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"wq9KLNJ1Cm_fGEzX0kXjD\",\"children\":[{\"id\":\"kxUslnNE5yA1v6qbdcxBK\",\"children\":[{\"id\":\"QYAjtkzAsekJ0uvBGwD0J\",\"children\":[{\"text\":\"Return the \"},{\"code\":1,\"text\":\"openid\"},{\"text\":\" of the member entering the room.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"-wRTvE-eUpuUQhYCet8hK\",\"children\":[{\"id\":\"eMhFbdt2TwKwyqHIf2fG2\",\"children\":[{\"id\":\"qYVnU_2ZVv1KdlMdn34DJ\",\"children\":[{\"text\":\"Member list\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"jbWktbMO0cKUyveYAKyry\",\"children\":[{\"id\":\"VF6Yuh4JCCxlczDtEU6W0\",\"children\":[{\"id\":\"LIvu7a07_AKqlgHwA2Yz5\",\"children\":[{\"id\":\"30rLkXiCJWRrZ04x87eyH\",\"children\":[{\"text\":\"ITMG_EVENT_ID_USER_EXIT\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Ib7Yh8r9Trb9OHEknLpVv\",\"children\":[{\"id\":\"UAaRFQqe7k1TVbSH4hYUy\",\"children\":[{\"id\":\"rEMk4ym25SLT3mUg7V8By\",\"children\":[{\"text\":\"Return the \"},{\"code\":1,\"text\":\"openid\"},{\"text\":\" of the member exiting the room.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"bOYvSdjza9UY3qLR3rE7r\",\"children\":[{\"id\":\"rO9A2lNKnn-WaoEg5RlEP\",\"children\":[{\"id\":\"2Kg-lYZ9Bxj3Pz5pUqWDd\",\"children\":[{\"text\":\"Member list\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"K0qBoa3oWs9Q0SLcerdQJ\",\"children\":[{\"id\":\"B9eBcf9iWydzetJLgJM1-\",\"children\":[{\"id\":\"EYD-mf2TtBGQ_PtALrvSK\",\"children\":[{\"id\":\"_XzB4DLc3kU6Eaj95NwNm\",\"children\":[{\"text\":\"ITMG_EVENT_ID_USER_HAS_AUDIO\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"1SQgtN2MpSSQAO224C2sL\",\"children\":[{\"id\":\"0FVgZOb-wJO1GfvUTRQFn\",\"children\":[{\"id\":\"egTGnBXuscOduPDc7-9LH\",\"children\":[{\"text\":\"Return the \"},{\"code\":1,\"text\":\"openid\"},{\"text\":\" of the member sending audio packets in the room. This event can be used to determine whether a user is speaking and display the voiceprint effect.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"IDOCwm_8SLRHA6oqPtjro\",\"children\":[{\"id\":\"z-N2wfTgNz7lyRiWRkR9E\",\"children\":[{\"id\":\"Ndz3UMLR77NYRjzAgkbFT\",\"children\":[{\"text\":\"Chat member list\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"SeUm00lpGRO3EKn_BA1sO\",\"children\":[{\"id\":\"kpBAEH2sDAU_9rhEys8uX\",\"children\":[{\"id\":\"HDVCj231Kf0j2m4GYxR0p\",\"children\":[{\"id\":\"ep-_asjZufC_OJTyoCOng\",\"children\":[{\"text\":\"ITMG_EVENT_ID_USER_NO_AUDIO\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"mnzhXPyC7FOG0d86Zbmyb\",\"children\":[{\"id\":\"WyINCtP7btX-HPoRch6d4\",\"children\":[{\"id\":\"aJPqPauxVJyoympOcYQVi\",\"children\":[{\"text\":\"Return the \"},{\"code\":1,\"text\":\"openid\"},{\"text\":\" of the member stopping sending audio packets in the room.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Pfhv_Z9P1RSKCsG5IW34m\",\"children\":[{\"id\":\"kzNq1zHlyE5FkhsvLb7ir\",\"children\":[{\"id\":\"gwVicgLjfL0HDXoLWSIC7\",\"children\":[{\"text\":\"Chat member list\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[19,67,14],\"widthMode\":\"percentage\"},{\"id\":\"yyRO1DeSdeAWBm2gvvGih\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code11\",\"type\":\"h4\"},{\"id\":\"RYq2WO9MSbgj7tCfy8ZaB\",\"children\":[{\"id\":\"vLLiUF-iyCVC2y81_deT_\",\"children\":[{\"text\":\"void TMGTestScene::OnEvent(ITMG_MAIN_EVENT_TYPE eventType,const char* data){\"}],\"type\":\"code-line\"},{\"id\":\"o8R60UmmXPBDbqmwbsjR0\",\"children\":[{\"text\":\" switch (eventType) {\"}],\"type\":\"code-line\"},{\"id\":\"_6di99TOfo3jG7LO5Q9Pb\",\"children\":[{\"text\":\" case ITMG_MAIN_EVNET_TYPE_USER_UPDATE:\"}],\"type\":\"code-line\"},{\"id\":\"Y00PWu__rid0X9QTm1i14\",\"children\":[{\"text\":\" {\"}],\"type\":\"code-line\"},{\"id\":\"q3EYdFeJM4Vluq_3mtSQ5\",\"children\":[{\"text\":\" // Process\"}],\"type\":\"code-line\"},{\"id\":\"Up1mh95ypPrPnMTUM5uGS\",\"children\":[{\"text\":\" // Parse the parameter to get `eventID` and `user_list`\"}],\"type\":\"code-line\"},{\"id\":\"37s9XwtI2b4xa_t0gMvu6\",\"children\":[{\"text\":\" switch (eventID)\"}],\"type\":\"code-line\"},{\"id\":\"E_OiC2M4TFRN5QzjPJV7N\",\"children\":[{\"text\":\" {\"}],\"type\":\"code-line\"},{\"id\":\"HaJWcxxl8_dmCxzhKt5vm\",\"children\":[{\"text\":\" case ITMG_EVENT_ID_USER_ENTER:\"}],\"type\":\"code-line\"},{\"id\":\"mVm3kw0sDJyl8V3n05Rgh\",\"children\":[{\"text\":\" // A member enters the room\"}],\"type\":\"code-line\"},{\"id\":\"n_1uanP5fCNOY-cIKgZNC\",\"children\":[{\"text\":\" break;\"}],\"type\":\"code-line\"},{\"id\":\"irDlQjQpfHphmME3pd3Ra\",\"children\":[{\"text\":\" case ITMG_EVENT_ID_USER_EXIT:\"}],\"type\":\"code-line\"},{\"id\":\"XjmLfW-gI5BXUT3UbSIdz\",\"children\":[{\"text\":\" // A member exits the room\"}],\"type\":\"code-line\"},{\"id\":\"ymV7nHfYtUFEbOtfHFvmN\",\"children\":[{\"text\":\" break;\"}],\"type\":\"code-line\"},{\"id\":\"V6PjOubMtlVgs8AtW6Xvl\",\"children\":[{\"text\":\" case ITMG_EVENT_ID_USER_HAS_AUDIO:\"}],\"type\":\"code-line\"},{\"id\":\"-IpNDGogjpA9Mhcrt40Zo\",\"children\":[{\"text\":\" // A member sends audio packets\"}],\"type\":\"code-line\"},{\"id\":\"YPJNfizYbrL4PcXs5wTHa\",\"children\":[{\"text\":\" break;\"}],\"type\":\"code-line\"},{\"id\":\"sBvQ-k4Uf7EIKkJL1WOiT\",\"children\":[{\"text\":\" case ITMG_EVENT_ID_USER_NO_AUDIO:\"}],\"type\":\"code-line\"},{\"id\":\"l9U-pokPdN92ZiNAbN4sA\",\"children\":[{\"text\":\" // A member stops sending audio packets\"}],\"type\":\"code-line\"},{\"id\":\"RdCMrboBq1aWnHTGeNDl5\",\"children\":[{\"text\":\" break;\"}],\"type\":\"code-line\"},{\"id\":\"k74-jkCy9gSFRr0O3COFS\",\"children\":[{\"text\":\" default:\"}],\"type\":\"code-line\"},{\"id\":\"MHCu_UiRTGzShmwhHT0CH\",\"children\":[{\"text\":\" break;\"}],\"type\":\"code-line\"},{\"id\":\"vxcyiV7qHqjXO49IYgVD4\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"Av9gdm4Z3sxnqrZnm2AWm\",\"children\":[{\"text\":\" break;\"}],\"type\":\"code-line\"},{\"id\":\"D1DkG6W666rKFR7D_WSI5\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"JMromqITi1F-uTk5wArMO\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"3kma7x2M3WR94lAcgytXU\",\"children\":[{\"text\":\"}\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"MRPgPqdCx1MONBzAyjeer\",\"children\":[{\"text\":\"Muting a member in the room\"}],\"nodeId\":\"muting-a-member-in-the-room\",\"type\":\"h3\"},{\"id\":\"cGh-k-PVLTIufa649i8A6\",\"children\":[{\"text\":\"This API is used to add an ID to the audio data blocklist. This operation blocks audio from someone and only applies to the local device without affecting other devices. The returned value \"},{\"code\":1,\"text\":\"0\"},{\"text\":\" indicates that the call is successful. Assume that users A, B, and C are all speaking using their mic in a room: \"}],\"type\":\"p\"},{\"id\":\"ZOjqI1VgOmM3skDSJllhf\",\"children\":[{\"text\":\"If A blocks C, A can only hear B;\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"eC0qaoRHqzipK640XPw4R\",\"children\":[{\"text\":\"If B blocks neither A nor C, B can hear both of them;\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"j1sp-QP181eptsm4UW1jf\",\"children\":[{\"text\":\"If C blocks neither A nor B, C can hear both of them.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"R8XVA-JSyGRUSZ1cUL_BE\",\"children\":[{\"text\":\"This API is suitable for scenarios where a user is muted in a room.\"}],\"type\":\"p\"},{\"id\":\"Bc48tMQtXx_lRaBjmhL2a\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype11\",\"type\":\"h4\"},{\"id\":\"coWsv-B3rB2KVf876oy8l\",\"children\":[{\"id\":\"B_exmOmI3GKHPvxSk2aWU\",\"children\":[{\"text\":\"ITMGContext ITMGAudioCtrl int AddAudioBlackList(const char* openId)\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"drPLYtgRFgtDZMJwa_FPY\",\"children\":[{\"id\":\"U162bI9ll-hLezN8JDH89\",\"children\":[{\"id\":\"-Ho2Qc5dMrroG85K__uL8\",\"children\":[{\"id\":\"-eITgIuwTZ05H_E9RaoGk\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"6XYUYACk9TE-u2443VAxj\",\"children\":[{\"id\":\"iE0uvh7TL_vODstxONffQ\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"bwvA-5hO28AMNH5PPEc5I\",\"children\":[{\"id\":\"0ZglsGJ95vq5ezayTs8UN\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"voHbBKna3MQ_-Hr052KGJ\",\"children\":[{\"id\":\"jYaQbeuAd3aW303t2nFk0\",\"children\":[{\"id\":\"aqJREkaMfLh3pO8e35t_V\",\"children\":[{\"id\":\"f2PzfNfB0CJmvdxzGftsI\",\"children\":[{\"text\":\"openId\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"_4DdbG7GXEzSRjtbLxUp4\",\"children\":[{\"id\":\"KZ330MZUJoYGJC-n0ddjY\",\"children\":[{\"id\":\"3XHGO9O-KdQ2UOx0jfknG\",\"children\":[{\"text\":\"char*\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"tOiwe7L2E6Sf-0qNMqulN\",\"children\":[{\"id\":\"ufAaq5Kk0nYpi7fdBsiiI\",\"children\":[{\"id\":\"To85UFDOkUkyeRBAAvX5x\",\"children\":[{\"code\":1,\"text\":\"openid\"},{\"text\":\" of the user to be blocked\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[23,15,62],\"widthMode\":\"percentage\"},{\"id\":\"Ww1Swgt3ILYdasNOpSoq_\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code12\",\"type\":\"h4\"},{\"id\":\"CKbGNKkhxFv_jb0FrNKDx\",\"children\":[{\"id\":\"104NhOscYkNuo9TIHi_il\",\"children\":[{\"text\":\"ITMGContextGetInstance()->GetAudioCtrl()->AddAudioBlackList(openId);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"DQC7Wt-himzPdKPdABSbw\",\"children\":[{\"text\":\"Unmuting\"}],\"nodeId\":\"unmuting\",\"type\":\"h3\"},{\"id\":\"5pmVktWtCy7-mOMKYZ5tt\",\"children\":[{\"text\":\"This API is used to remove an ID from the audio data blacklist. A returned value of 0 indicates the call is successful.\"}],\"type\":\"p\"},{\"id\":\"yO_5v9pzKHYprGOkbYmcH\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype12\",\"type\":\"h4\"},{\"id\":\"M0pqek4e6S-HfQAICp_sP\",\"children\":[{\"id\":\"GukfMIalFSUZJsvqZRJw8\",\"children\":[{\"text\":\"ITMGContext ITMGAudioCtrl int RemoveAudioBlackList(const char* openId)\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"_kdUwjbuQ6j8qHbAp1PeQ\",\"children\":[{\"id\":\"DdZ_HnJtxqaPTK1uHsWk6\",\"children\":[{\"id\":\"2dzgEm-shCrNfWKsI5Mpt\",\"children\":[{\"id\":\"KwnOCOk9WvKQrfcULlg0K\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"QoWMm1WUE0PTIQI9QatDn\",\"children\":[{\"id\":\"0_r17jOJSYg36jSNRPZVA\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"818wDrsNi2aiCsAeJvtfe\",\"children\":[{\"id\":\"8qnOU61o39_6LnnXWlSeX\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"vvTd7qAqwOg3aM3BAGKmw\",\"children\":[{\"id\":\"e59CW2CnbBUGcDYmIY85g\",\"children\":[{\"id\":\"S5ij1rMKPaNHRuPzWfEPU\",\"children\":[{\"id\":\"vTOGauc1eJiKyDS6YcN8y\",\"children\":[{\"text\":\"openId\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"LP3J9pwHVXvmjNHKukojU\",\"children\":[{\"id\":\"OHKc_LqUVARvUI2re_qDk\",\"children\":[{\"id\":\"M7G10t1jCFpUm_wJkO5I_\",\"children\":[{\"text\":\"char*\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Tc_OD6RdmkYQ_jMVO4o7m\",\"children\":[{\"id\":\"HFxhDxLMNINiWm4MLG6Ir\",\"children\":[{\"id\":\"UtZGqymeJq_daVIoxRA8v\",\"children\":[{\"text\":\"ID to be unblocked\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[31,20,49],\"widthMode\":\"percentage\"},{\"id\":\"LLu7oKkuzKf1D4M_qJapr\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code13\",\"type\":\"h4\"},{\"id\":\"Ij69vfM9JdyKk1tKv0c2y\",\"children\":[{\"id\":\"7c-HKZAdZGA8oXEEzOEHe\",\"children\":[{\"text\":\"ITMGContextGetInstance()->GetAudioCtrl()->RemoveAudioBlackList(openId);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"YLTEDHv9nCQLwfujsYyHi\",\"children\":[{\"text\":\"Voice Chat Capturing APIs\"}],\"nodeId\":\"voice-chat-capturing-apis\",\"type\":\"h2\"},{\"id\":\"cOD2rAasldjzGEArhLSLm\",\"children\":[{\"text\":\"The voice chat APIs can only be called after SDK initialization and room entry.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"Ydd0MhGf5BSUphFyBMY9I\",\"children\":[{\"text\":\"When the user clicks the button of enabling/disabling the mic or speaker on the UI, we recommend you call the \"},{\"code\":1,\"text\":\"EnableMic\"},{\"text\":\" or \"},{\"code\":1,\"text\":\"EnableSpeaker\"},{\"text\":\" API.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"FLlBI6ugpB3UK-NE6hDfr\",\"children\":[{\"text\":\"To enable the user to press the mic button on the UI to speak and release it to stop speaking, we recommend you call \"},{\"code\":1,\"text\":\"EnableAudioCaptureDevice\"},{\"text\":\" once during room entry and call \"},{\"code\":1,\"text\":\"EnableAudioSend\"},{\"text\":\" to enable the user to speak while pressing the button.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"yi_b0vymWBruFcbraHsqr\",\"children\":[{\"id\":\"YdmfF6KzF_OTpTGqgou55\",\"children\":[{\"id\":\"Glq9tCTtkaJMJ9a5MpsXP\",\"children\":[{\"id\":\"PzoG45KB3dXbkaoYIQYAk\",\"children\":[{\"text\":\"API\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"msB8BE1dw7ptRrtCoQROV\",\"children\":[{\"id\":\"9_e36qw7yjv8oNbWYhJ9B\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"4XOS-2j8aD-JmB73f9oZn\",\"children\":[{\"id\":\"x3kL-j-Uh9npE9G_xQRbS\",\"children\":[{\"id\":\"Sx5ZgZEm2tavOPCc_1iFD\",\"children\":[{\"id\":\"7VbKvxpjWrUStaOigNGTk\",\"children\":[{\"text\":\"EnableMic\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ObJpbQeC43h9ZLAelOGJW\",\"children\":[{\"id\":\"Rrf-gEniQWQIWqvNTJg6n\",\"children\":[{\"id\":\"ynL17SVeT-8zZyssZXqT-\",\"children\":[{\"text\":\"Enables/Disables the mic\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"oX8HXRP7T3qzXgo-bV5Na\",\"children\":[{\"id\":\"DTwyHyfFM9d7gxh5jiiA2\",\"children\":[{\"id\":\"c0EzaKzII7ZH5FkwkgK_w\",\"children\":[{\"id\":\"ncZ0RsuG9yMq3DnYSSusK\",\"children\":[{\"text\":\"GetMicState\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"pufYLbyJrcZkM37YS7B3U\",\"children\":[{\"id\":\"RthNsFG0nGoOEuVvQOghL\",\"children\":[{\"id\":\"PN9f6xUkaLA9HOKu8eUOp\",\"children\":[{\"text\":\"Gets the mic status\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"lY6CiN9dTMTsoygC0lpv6\",\"children\":[{\"id\":\"fSZfisrOeYOOyLKdayayP\",\"children\":[{\"id\":\"9OObzhDSj1x6EOPVoU4Qy\",\"children\":[{\"id\":\"Ye5FSOCsIW-4mlv13CRCn\",\"children\":[{\"text\":\"EnableAudioCaptureDevice\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"SagXbGXrzc_HhMVx0b00u\",\"children\":[{\"id\":\"nN3wScV3ID9dTeKyjpghC\",\"children\":[{\"id\":\"0ao1Ix12FnI0WBhemTVpz\",\"children\":[{\"text\":\"Enables/Disables the capturing device\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"cb1wqQ9U9AaVJMKA4MgM2\",\"children\":[{\"id\":\"Xn3Bf3IOt94snltlmNR3O\",\"children\":[{\"id\":\"q7-4MESRRXVTIxan3KeuH\",\"children\":[{\"id\":\"Q0oarPCrjOKsvqFl5OAse\",\"children\":[{\"text\":\"IsAudioCaptureDeviceEnabled\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"9uabwauYRVHswbYSVLRpM\",\"children\":[{\"id\":\"gxsIRGKTDgr2l-LR9ZSww\",\"children\":[{\"id\":\"DhqV1erzXiefRTTbWF7hs\",\"children\":[{\"text\":\"Gets the capturing device status\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"qASem16fFIJMm_sKxYUJ7\",\"children\":[{\"id\":\"cRP7v_a9S3YkOT89Sn2ZP\",\"children\":[{\"id\":\"Ua_V9yCRbzkDcW1xw4pxS\",\"children\":[{\"id\":\"As6z39TJxT-z7enSavRdC\",\"children\":[{\"text\":\"EnableAudioSend\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"JgrcLkpnrggdlSZy8xYM0\",\"children\":[{\"id\":\"s7Tk5WiPexjhOvX8FgS50\",\"children\":[{\"id\":\"mO4ItchQ4KI8ZUHaATP7f\",\"children\":[{\"text\":\"Enables/Disables audio upstreaming\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"SGX3PW5Up95uezeopheJy\",\"children\":[{\"id\":\"pYjbG-uKsrkYR6C_Dh71j\",\"children\":[{\"id\":\"ykEy1FGWaSnOvE8hN41J_\",\"children\":[{\"id\":\"yfWM6bU-YeJAUqhhelEop\",\"children\":[{\"text\":\"IsAudioSendEnabled\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"B6LUVEFN55Z6D7o9SE1p3\",\"children\":[{\"id\":\"R3YIaLGrzrd4Hd_E3LStt\",\"children\":[{\"id\":\"-SX4Icz8v_z1yzul0gd3H\",\"children\":[{\"text\":\"Gets the audio upstreaming status\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"PTfs1GRfFFSpT5qlxltYW\",\"children\":[{\"id\":\"nQrf7OLYUV-nWrrcWnfBi\",\"children\":[{\"id\":\"SD_VZaslSFev3pjf77iMN\",\"children\":[{\"id\":\"jdAgNXaMCTZ-9H9KFLEyn\",\"children\":[{\"text\":\"GetMicLevel\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"6vzopqgFvJPMrdQddSJUw\",\"children\":[{\"id\":\"00x-I_7ja-7CPoMuZavIG\",\"children\":[{\"id\":\"4wYuaw5HqP5ss6rCoW952\",\"children\":[{\"text\":\"Gets the real-time mic volume level\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"N9QGk_h8mgCkZL_t2qdvx\",\"children\":[{\"id\":\"Wk_Hi1cTA3XTeIlL8YXmU\",\"children\":[{\"id\":\"Xwqg10vwvdcawoVyC9bY3\",\"children\":[{\"id\":\"nKZlAarA5HV7uOMaLKp_e\",\"children\":[{\"text\":\"GetSendStreamLevel\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"DXaIJHYuHLuAY_m7ih7Nl\",\"children\":[{\"id\":\"7MoUWjY6wJzLbDaEShc87\",\"children\":[{\"id\":\"5G8NhbJwPf1Bp4eILf5ev\",\"children\":[{\"text\":\"Gets real-time audio upstreaming volume\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"qpxfPKVLZHFKYGXV4NFyE\",\"children\":[{\"id\":\"SRH1hDfbvHiMMFz6aJhn9\",\"children\":[{\"id\":\"dCIYSlT8cXLEg4ONgmnbO\",\"children\":[{\"id\":\"mns5lo10BXdJr0d2UMlcn\",\"children\":[{\"text\":\"SetMicVolume\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"C7JkZJUnAH7Y4jQ-sX7P7\",\"children\":[{\"id\":\"fELQhkNhsxTNCChuJkCri\",\"children\":[{\"id\":\"sylPdBCywvk3PVFTsfp7y\",\"children\":[{\"text\":\"Sets the mic volume level\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"67q6RTU0gcZkdsPHsSxPt\",\"children\":[{\"id\":\"shnodsAVl7by-pf7E5jyD\",\"children\":[{\"id\":\"c-JX4JeeNynt3dbNG8sbt\",\"children\":[{\"id\":\"R3hI7YsV7ThWOFfPugYTJ\",\"children\":[{\"text\":\"GetMicVolume\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"DurQW4JoUCBvFvx1naP_o\",\"children\":[{\"id\":\"CuhPAzY0BuxcQoG3dfH8I\",\"children\":[{\"text\":\"Gets the mic volume level\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[43,57],\"widthMode\":\"percentage\"},{\"id\":\"ZMmF52nAHQQGTaeghat6j\",\"children\":[{\"text\":\"Enabling or disabling mic\"}],\"nodeId\":\"enabling-or-disabling-mic\",\"type\":\"h3\"},{\"id\":\"64ilvvPHHkef4AqyQj_2C\",\"children\":[{\"text\":\"This API is used to enable/disable the mic. The mic and speaker are not enabled by default after room entry. \"},{\"b\":1,\"text\":\"EnableMic = EnableAudioCaptureDevice + EnableAudioSend\"}],\"nodeId\":\"EnableMic\",\"type\":\"p\"},{\"id\":\"UOqiwlMzd1t8uoFLU04Zo\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype13\",\"type\":\"h4\"},{\"id\":\"23PKC0sFpXCosF9S-cPju\",\"children\":[{\"id\":\"PdMteg9dPlNuY5JFE711I\",\"children\":[{\"text\":\"ITMGAudioCtrl virtual int EnableMic(bool bEnabled)\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"AQoD0tIC8ZG7FbBLr8Rk6\",\"children\":[{\"id\":\"U_bi-VnH9_1kyzKlIkFtY\",\"children\":[{\"id\":\"ZDwFFRZFK-Sm7-oFZzMBJ\",\"children\":[{\"id\":\"zgcO70FqUD16egzsPDoAJ\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"v0A5mbItYJDSnGuf6SeKR\",\"children\":[{\"id\":\"8Wm6I97MzFQAFGIHXtcxp\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"yKDszSCAdYrbrN2pTObEq\",\"children\":[{\"id\":\"tU1RyGh1Y0fEFgOZaIVvO\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"26JNHVwWVoUHlc7B___8U\",\"children\":[{\"id\":\"9X1p1sM_HUFTeeLkPaHx_\",\"children\":[{\"id\":\"zlWh7uE7CCoshat7caQit\",\"children\":[{\"id\":\"O3LT3G8cAwlt9we578C9I\",\"children\":[{\"text\":\"bEnabled\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"zy8nSM931JdJUldYxhXJh\",\"children\":[{\"id\":\"g6MQbNkoFu2j9gvtmC6_F\",\"children\":[{\"id\":\"EfInBKl8bujpD3AQzpy-8\",\"children\":[{\"text\":\"bool\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"rLm49B0xJBXusuf21T92Q\",\"children\":[{\"id\":\"Rzn8TtftTvwfIH-6pAcLV\",\"children\":[{\"id\":\"_is2FCILXe-oPBHCceFdc\",\"children\":[{\"text\":\"To enable the mic, set this parameter to \"},{\"code\":1,\"text\":\"true\"},{\"text\":\", otherwise, set it to \"},{\"code\":1,\"text\":\"false\"},{\"text\":\".\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[14,9,77],\"widthMode\":\"percentage\"},{\"id\":\"amObG4gcjlt1jPsb1orbf\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code14\",\"type\":\"h4\"},{\"id\":\"adDt64ux5n-J0rTvaFtMa\",\"children\":[{\"id\":\"UJszj4nK6lxTk39Q8cmPp\",\"children\":[{\"text\":\"// Enable mic\"}],\"type\":\"code-line\"},{\"id\":\"peWuY4GLlWwbs8_lhCrGc\",\"children\":[{\"text\":\"ITMGContextGetInstance()->GetAudioCtrl()->EnableMic(true);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"rW5yEOau0XNejrpBnW7G5\",\"children\":[{\"text\":\"Getting the mic status\"}],\"nodeId\":\"getting-the-mic-status\",\"type\":\"h3\"},{\"id\":\"fLx4DSzWUAGDj4MkC4N5n\",\"children\":[{\"text\":\"This API is used to get the mic status. The returned value 0 indicates that the mic is off, while 1 is on.\"}],\"type\":\"p\"},{\"id\":\"9ou8ryN8-qr7Q74Q7LQI7\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype14\",\"type\":\"h4\"},{\"id\":\"1KXzpHO2hwuyajIgpraZh\",\"children\":[{\"id\":\"IlUgsebcbQI9wGNXWAMba\",\"children\":[{\"text\":\"ITMGAudioCtrl virtual int GetMicState()\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"FnxbYU7Gu-iRseEu2XOeW\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code15\",\"type\":\"h4\"},{\"id\":\"OkMrSX96gStGIQuLAL9mZ\",\"children\":[{\"id\":\"foH1RyvS1xIKQfgYnFe1k\",\"children\":[{\"text\":\"ITMGContextGetInstance()->GetAudioCtrl()->GetMicState();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"Tt2qUGgL1KJ48_medZe56\",\"children\":[{\"text\":\"Enabling or disabling capturing device\"}],\"nodeId\":\"enabling-or-disabling-capturing-device\",\"type\":\"h3\"},{\"id\":\"tw5NxpRVVRjUirsC278tT\",\"children\":[{\"text\":\"This API is used to enable/disable a capturing device. The device is not enabled by default after room entry.\"}],\"type\":\"p\"},{\"id\":\"KaXQ4fRTvb0_7aSfgef-G\",\"children\":[{\"text\":\"This API can only be called after room entry. The device will be disabled automatically after room exit.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"FANzQ-0tHvHJJM6h0GpZ4\",\"children\":[{\"text\":\"Operations such as permission application and volume type adjustment will generally be performed when a capturing device is enabled on a mobile device.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"d9fZBGLIA3-OrwhXeLzJX\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype15\",\"type\":\"h4\"},{\"id\":\"fyxxD6fjBq4MslGUYRyCO\",\"children\":[{\"id\":\"WSBZXLO2uaoHIUTSRzKsc\",\"children\":[{\"text\":\"ITMGAudioCtrl virtual int EnableAudioCaptureDevice(bool enable)\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"L4H07HBaGvYEUaN1ODV6h\",\"children\":[{\"id\":\"1bMU0GQulBTWXMlSgnCZo\",\"children\":[{\"id\":\"NbdSWsnEZGHnAZRbXCMro\",\"children\":[{\"id\":\"ne6qSrgT80Ffc3Ccq6Ryj\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"0QDhueLK5WCLIEiaXFDGU\",\"children\":[{\"id\":\"H8pwKdNT5HzhHzgpayxFx\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"az9r3kEqUqrhcdGXoDDAN\",\"children\":[{\"id\":\"khfsL5sEZjn9MXgfFCEVP\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"ihA9shuMNzyD9oLvUvU7W\",\"children\":[{\"id\":\"_wd5VtxVGDNov9sHpLYFZ\",\"children\":[{\"id\":\"BuYSMrEBA1b2BWXEsvsxI\",\"children\":[{\"id\":\"zBl-q4RhVMNFkCQ81EdGW\",\"children\":[{\"text\":\"enable\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"RlnKyPxu-PyXhdREQUK_h\",\"children\":[{\"id\":\"q_SZOeJl07cRqSthjKDth\",\"children\":[{\"id\":\"FrR8YmCCkKGRARVJ_pvcV\",\"children\":[{\"text\":\"bool\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Elg2uPWPXfIva3CJd5LC4\",\"children\":[{\"id\":\"lQOMvlbrv3uXzKnJheHxy\",\"children\":[{\"id\":\"0J5K9KqQ3ej4-cnuXNzyj\",\"children\":[{\"text\":\"To enable the capturing device, set this parameter to \"},{\"code\":1,\"text\":\"true\"},{\"text\":\", otherwise, set it to \"},{\"code\":1,\"text\":\"false\"},{\"text\":\".\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[13,8,79],\"widthMode\":\"percentage\"},{\"id\":\"jGnDfKdJZzP9WXeqccauC\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code16\",\"type\":\"h4\"},{\"id\":\"4QR_55-DUTg9ap2_lXtYo\",\"children\":[{\"id\":\"lbb0OMQWCS_xzZO-CZmmJ\",\"children\":[{\"text\":\"// Enable capturing device\"}],\"type\":\"code-line\"},{\"id\":\"eFL2gJqmTEIyzfKSaIUcC\",\"children\":[{\"text\":\"ITMGContextGetInstance()->GetAudioCtrl()->EnableAudioCaptureDevice(true);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"HCeJaK1xZmjCUnIDZUpWB\",\"children\":[{\"text\":\"Getting the capturing device status\"}],\"nodeId\":\"getting-the-capturing-device-status\",\"type\":\"h3\"},{\"id\":\"KJwHPwM7NwdAW4aeBSOnl\",\"children\":[{\"text\":\"This API is used to get the status of a capturing device.\"}],\"type\":\"p\"},{\"id\":\"k2wQzwuJ5B2yeOq8T3T6a\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype16\",\"type\":\"h4\"},{\"id\":\"GQUWgt0snzyfBNGdS_vqv\",\"children\":[{\"id\":\"kYIAp9svOb7HeofbzttF9\",\"children\":[{\"text\":\"ITMGContext virtual bool IsAudioCaptureDeviceEnabled()\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"MuAbvKV6IqvtOfV7w0AaC\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code17\",\"type\":\"h4\"},{\"id\":\"FdBwsTiWWXIbvGFNmXzgc\",\"children\":[{\"id\":\"p4ZJSQUUvbrbaYnLORqvM\",\"children\":[{\"text\":\"ITMGContextGetInstance()->GetAudioCtrl()->IsAudioCaptureDeviceEnabled();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"bW_ybyuHVt6Jjzqhfs5I5\",\"children\":[{\"text\":\"Enabling or disabling audio upstreaming\"}],\"nodeId\":\"enabling-or-disabling-audio-upstreaming\",\"type\":\"h3\"},{\"id\":\"RkrXM361QB-ZzYlDEGZjk\",\"children\":[{\"text\":\"This API is used to enable/disable audio upstreaming. If a capturing device is already enabled, it will send captured audio data; otherwise, it will remain mute. For more information on how to enable/disable the capturing device, please see the \"},{\"code\":1,\"text\":\"EnableAudioCaptureDevice\"},{\"text\":\" API.\"}],\"type\":\"p\"},{\"id\":\"JJoxtg6DCxATxQsHGovwp\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype17\",\"type\":\"h4\"},{\"id\":\"L13BLh5XtxgoON5EqsfM7\",\"children\":[{\"id\":\"T76L5ZQldLIkLfi3Ku20Z\",\"children\":[{\"text\":\"ITMGContext virtual int EnableAudioSend(bool bEnable)\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"Xe7fjuEcGVBRFI3WBMULn\",\"children\":[{\"id\":\"ToIG1qb3plR1uHOIMEZVL\",\"children\":[{\"id\":\"iu8Hsav7v7o2-E-NBrmco\",\"children\":[{\"id\":\"ClbGO2tA49Z7gb8n4mPs5\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"o9NUOJ9qkUO16lVRNyiiy\",\"children\":[{\"id\":\"RUetUDU0pWgFV9L2XNLjM\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"vvAgjwomMHE5KLcSV373v\",\"children\":[{\"id\":\"CnlfQyEDEa1kSD-X9a0E3\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"4T8J_BbstPZYY2TkHSG_6\",\"children\":[{\"id\":\"LsYqON2iEReh1PacylfCq\",\"children\":[{\"id\":\"8D_Hj6ErmkC2uBAnxpGsK\",\"children\":[{\"id\":\"lQemLisJANSwd5iOmxRdQ\",\"children\":[{\"text\":\"bEnable\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"fuOPfVhvv0Fd7AfB9KhNx\",\"children\":[{\"id\":\"1FlKTSUINk69IWzvczmqf\",\"children\":[{\"id\":\"Br3Uzls9AmaguH-_MICxc\",\"children\":[{\"text\":\"bool\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"7ooyJ_vFq8qmZbMxpHJvV\",\"children\":[{\"id\":\"pENuZXVmHA20Q954GLvE5\",\"children\":[{\"id\":\"emcr7z4029VYMBTea65lI\",\"children\":[{\"text\":\"To enable audio upstreaming, set this parameter to \"},{\"code\":1,\"text\":\"true\"},{\"text\":\"; otherwise, set it to \"},{\"code\":1,\"text\":\"false\"},{\"text\":\".\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[13,8,79],\"widthMode\":\"percentage\"},{\"id\":\"LJmI22pt5s-6cfOjNHz60\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code18\",\"type\":\"h4\"},{\"id\":\"AYE9z01kpkAi67ER1h-u6\",\"children\":[{\"id\":\"rHjGaqUxLDfTsZSP6xaW4\",\"children\":[{\"text\":\"ITMGContextGetInstance()->GetAudioCtrl()->EnableAudioSend(true);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"MawPh7mfpCyPKV91cBOrj\",\"children\":[{\"text\":\"Getting audio upstreaming status\"}],\"nodeId\":\"getting-audio-upstreaming-status\",\"type\":\"h3\"},{\"id\":\"tWwjHX9dOcjsTq-n22Cnr\",\"children\":[{\"text\":\"This API is used to get the status of audio upstreaming.\"}],\"type\":\"p\"},{\"id\":\"M717Z09baM_ZEX1nZVgtG\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype18\",\"type\":\"h4\"},{\"id\":\"sZjSJuKuZR7Y500kx5its\",\"children\":[{\"id\":\"-UwIcy2ovkTzIElSC8xpP\",\"children\":[{\"text\":\"ITMGContext virtual bool IsAudioSendEnabled()\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"gdZQssGF6QgeaxJ9WGfQl\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code19\",\"type\":\"h4\"},{\"id\":\"HvIrBofdsKQJiNL5s0C3u\",\"children\":[{\"id\":\"OsLJ7jJLsYW3s46094LRX\",\"children\":[{\"text\":\"ITMGContextGetInstance()->GetAudioCtrl()->IsAudioSendEnabled();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"7lQ4c_O-kj9GNg1y8_InD\",\"children\":[{\"text\":\"Getting the real-time mic volume\"}],\"nodeId\":\"getting-the-real-time-mic-volume\",\"type\":\"h3\"},{\"id\":\"RVw3oJqB9EDGTJA5Re9G1\",\"children\":[{\"text\":\"This API is used to get the real-time mic volume. An int-type value in the range of 0-100 will be returned. It is recommended to call this API once every 20 ms.\"}],\"type\":\"p\"},{\"id\":\"lKMACucG9xDWC1Mw0ARZG\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype19\",\"type\":\"h4\"},{\"id\":\"qkJHxtpxuzZlt3Wmk9e5g\",\"children\":[{\"id\":\"bFIz8Ar2aq2fYhBEeFnr3\",\"children\":[{\"text\":\"ITMGAudioCtrl virtual int GetMicLevel()\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"lbMcAiKfG0YgZL_n09f1V\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code20\",\"type\":\"h4\"},{\"id\":\"ACTfAF-a37Gwvyn1pCCX_\",\"children\":[{\"id\":\"SOrX96U7Crdl1HHKS7MZt\",\"children\":[{\"text\":\"ITMGContextGetInstance()->GetAudioCtrl()->GetMicLevel();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"otJI-AJViDhmHpSnye_zI\",\"children\":[{\"text\":\"Getting the real-time audio upstreaming volume\"}],\"nodeId\":\"getting-the-real-time-audio-upstreaming-volume\",\"type\":\"h3\"},{\"id\":\"Wc7ZQtZoW8omEhcXxMao9\",\"children\":[{\"text\":\"This API is used to get the local real-time audio upstreaming volume. An int-type value in the range of 0-100 will be returned.\"}],\"type\":\"p\"},{\"id\":\"pvMAPn5NopXj37wrboFxE\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype20\",\"type\":\"h4\"},{\"id\":\"D8z_xavDf6jGiuSCFBF7h\",\"children\":[{\"id\":\"sNQljmIs2sufnuuI-apDi\",\"children\":[{\"text\":\"ITMGAudioCtrl virtual int GetSendStreamLevel()\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"KvaimwMSKDyezKeW90jud\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code21\",\"type\":\"h4\"},{\"id\":\"i3EC5DQ18wj5R0QKxLO8U\",\"children\":[{\"id\":\"i2hZ0EEcY11qV4NvRFuUB\",\"children\":[{\"text\":\"ITMGContextGetInstance()->GetAudioCtrl()->GetSendStreamLevel();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"Xjnz4pyQHjozXscRRz_BQ\",\"children\":[{\"text\":\"Setting the mic software volume\"}],\"nodeId\":\"setting-the-mic-software-volume\",\"type\":\"h3\"},{\"id\":\"0lWonF6F89ySGoFsqG-UQ\",\"children\":[{\"text\":\"This API is used to set the mic volume level. The corresponding parameter is \"},{\"code\":1,\"text\":\"volume\"},{\"text\":\", which is equivalent to attenuating or gaining the captured sound.\"}],\"type\":\"p\"},{\"id\":\"3MVmKZBdEB2XffI1fyF-l\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype21\",\"type\":\"h4\"},{\"id\":\"TYGXjd8hE76XtTHOvFQDT\",\"children\":[{\"id\":\"ZSpao1oYrAClssfcxY-C7\",\"children\":[{\"text\":\"ITMGAudioCtrl virtual int SetMicVolume(int vol)\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"3C3aAcjPbjvV4N_OgUkqh\",\"children\":[{\"id\":\"dFBQf-zjM6XQFRqdcDXSO\",\"children\":[{\"id\":\"z45q_E65kJO3uDrKdULgR\",\"children\":[{\"id\":\"AFXe98kLM-hwq2x03F7BE\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ZJmHDquDb8C3Jd_BPgHHn\",\"children\":[{\"id\":\"459WAPTRPRJMtm11RKCPj\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"IHbwvPm6y7hJPBEQSvqRK\",\"children\":[{\"id\":\"-3QPiwXtInksjCZshvjWu\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"NhkBAf4XPEf1ZVMdgbGBf\",\"children\":[{\"id\":\"JUVfIJUVXfnPmEyQ0fOGV\",\"children\":[{\"id\":\"egbZLFOonb2lWU8m5uK9n\",\"children\":[{\"id\":\"B51QbPe1OT9Bpco-8P7N_\",\"children\":[{\"text\":\"vol\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ulntveO3LQLqgln5mU9W7\",\"children\":[{\"id\":\"pdB8pr1BumX4sUdC7Cifu\",\"children\":[{\"id\":\"PVbs-7UVkEMkF4yYIADvN\",\"children\":[{\"text\":\"int\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ogZmX5mkyQM5VvuY33X88\",\"children\":[{\"id\":\"qRI5m7moFq3tqO14VrPCQ\",\"children\":[{\"id\":\"oJ8lx547XePNl3Xedkhja\",\"children\":[{\"text\":\"Value range: 0–200. Default value: 100. \"},{\"code\":1,\"text\":\"0\"},{\"text\":\" indicates that the audio is mute, while \"},{\"code\":1,\"text\":\"100\"},{\"text\":\" indicates that the volume level remains unchanged.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[12,9,79],\"widthMode\":\"percentage\"},{\"id\":\"wHDi0WoMLsruYyBYX8gJR\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code22\",\"type\":\"h4\"},{\"id\":\"2eOd6PCavJK9jnj3_oOLU\",\"children\":[{\"id\":\"aI40DEGcSzF1qWCrga_XQ\",\"children\":[{\"text\":\"int micVol = (int)(value * 100);\"}],\"type\":\"code-line\"},{\"id\":\"IP0z3dLyy7LDz9sj4iLeL\",\"children\":[{\"text\":\"ITMGContextGetInstance()->GetAudioCtrl()->SetMicVolume(vol);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"Zyua1ZBass7P2mTRLIgmt\",\"children\":[{\"text\":\"Getting the mic software volume\"}],\"nodeId\":\"getting-the-mic-software-volume\",\"type\":\"h3\"},{\"id\":\"5qOx--2ctRxWaPlTrfrJx\",\"children\":[{\"text\":\"This API is used to obtain the microphone volume. An \\\"int\\\" value is returned. Value 101 represents API SetMicVolume has not been called.\"}],\"type\":\"p\"},{\"id\":\"OU0xSF-3a4HgywdhnmS6B\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype22\",\"type\":\"h4\"},{\"id\":\"sb6VL5C5g7ngK854h534W\",\"children\":[{\"id\":\"g1XOj9AJK2hBih0WnI-ou\",\"children\":[{\"text\":\"ITMGAudioCtrl virtual int GetMicVolume()\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"hHTUCG1X1SwoAdumjYkGw\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code23\",\"type\":\"h4\"},{\"id\":\"oqaz5ku4Es6BsdE6o2CsW\",\"children\":[{\"id\":\"6n9ftLMoVS4R0X-Ka8k1T\",\"children\":[{\"text\":\"ITMGContextGetInstance()->GetAudioCtrl()->GetMicVolume();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"9yHBz6s8pwQ8pa81sdXWV\",\"children\":[{\"text\":\"Voice Chat Playback APIs\"}],\"nodeId\":\"voice-chat-playback-apis\",\"type\":\"h2\"},{\"id\":\"YNJjAddv17eeRoZZwM1fD\",\"children\":[{\"id\":\"O_pcOKonIBFU_5TSTf1Sp\",\"children\":[{\"id\":\"MUmEUx-OAfG0487mIccXr\",\"children\":[{\"id\":\"uwgiOSnIwCk7bxvR0uWDY\",\"children\":[{\"text\":\"API\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"qIf52lc0VGSRLQNZYw46I\",\"children\":[{\"id\":\"G1TnBMqfCK4AX-KWBLuPB\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"5510evODFGn1pIqiRNLcW\",\"children\":[{\"id\":\"h8yWZY_kJe_GrpUw_wDfi\",\"children\":[{\"id\":\"Qh-EIgCoAHM7RGOhxBunq\",\"children\":[{\"id\":\"EUIOfX4zYLRGmkuSxlvZ-\",\"children\":[{\"text\":\"EnableSpeaker\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"bsM1BX0uoWawuqsMt2eFy\",\"children\":[{\"id\":\"NG2TxgQFLWAvFuaQrNQbz\",\"children\":[{\"id\":\"gizkbjWSMf3jQkRzSldc8\",\"children\":[{\"text\":\"Enables/Disables the speaker\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"y5pusgI2xExZrPdcTiFBo\",\"children\":[{\"id\":\"nIb2gfDCPVfRruTTp_26g\",\"children\":[{\"id\":\"vvYD-qvID34s_pqRi_uV4\",\"children\":[{\"id\":\"AyQHXIsSDAOSoJx4mnLyy\",\"children\":[{\"text\":\"GetSpeakerState\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"2WUje4UeNizrX5G7_wHpv\",\"children\":[{\"id\":\"4zZoo-CjlgVyonlRiZpmI\",\"children\":[{\"id\":\"LiuPWSV31kMO9AoyBZVnf\",\"children\":[{\"text\":\"Gets the speaker status\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"zpUYoDa-qSdFEL2rCyqwt\",\"children\":[{\"id\":\"TQTrxSgpuCPF0daeRO52W\",\"children\":[{\"id\":\"CZLvmucpUdCdDf4V2_Yrk\",\"children\":[{\"id\":\"mdXvZbsJgURNG8y6t3unM\",\"children\":[{\"text\":\"EnableAudioPlayDevice\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"8hdIuY6b-UYXSB-mYbjat\",\"children\":[{\"id\":\"NmBpg5CanrTNOS2G1nF9x\",\"children\":[{\"id\":\"cLe8SYmJXMq70xTUFwGcA\",\"children\":[{\"text\":\"Enables/Disables the playback device\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"VhxmeYyFAvCIw8bX9HCTr\",\"children\":[{\"id\":\"Om5oIVX0CHfeINEsnpS-7\",\"children\":[{\"id\":\"D2N9YN0d888gD1kt0_bGI\",\"children\":[{\"id\":\"QQHLNPlZnzMRcA80FBFf4\",\"children\":[{\"text\":\"IsAudioPlayDeviceEnabled\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Wv86Ja7mnePDniu6FgrKL\",\"children\":[{\"id\":\"pVotgSiZ6dMnBF5cXhA77\",\"children\":[{\"id\":\"GVsEfjuU-Eelu9tNtOzNz\",\"children\":[{\"text\":\"Gets playback device status\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"pOm5BGiQM0n9rUFI3iHy1\",\"children\":[{\"id\":\"SHBhO7IG2K38BMNd_JCJd\",\"children\":[{\"id\":\"SFuD7EPsxi2grJF5YkaNR\",\"children\":[{\"id\":\"vAf91iYbS_xOoGx2IKMsZ\",\"children\":[{\"text\":\"EnableAudioRecv\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"68zb5J35jZfFN-VcYsWq1\",\"children\":[{\"id\":\"xBN1w9_aKTdRHIzYMzM_k\",\"children\":[{\"id\":\"Bu-gSk6hLOVV-dhRWKsLZ\",\"children\":[{\"text\":\"Enables/Disables audio downstreaming\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"o-bI2CICAEfxbAU3Y1A2b\",\"children\":[{\"id\":\"8fuWM2zzr57inKc8kOTZ_\",\"children\":[{\"id\":\"0Id71aMtYrVPP2X2yZByE\",\"children\":[{\"id\":\"gQUOHzrcTxrzo4t3ZsH6C\",\"children\":[{\"text\":\"IsAudioRecvEnabled\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"MkKawZZ8uEF0tyxZ4juAU\",\"children\":[{\"id\":\"vasZJgja3Ly4oA7ZJoUcY\",\"children\":[{\"id\":\"QexMnSZGMJKQhNHxg6dna\",\"children\":[{\"text\":\"Gets the audio downstreaming status\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"1TiEmTC0z2NFcxH27_Ydr\",\"children\":[{\"id\":\"T94JrRfXrHWvR66y9fthn\",\"children\":[{\"id\":\"YAd27JqPUJDlX8HS5h1Gb\",\"children\":[{\"id\":\"Tv5G3HISy6w8HPs0NVbVh\",\"children\":[{\"text\":\"GetSpeakerLevel\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"IaLDp_8EBp2TcYqOVWcQU\",\"children\":[{\"id\":\"Iju8Q1uASLZDgVSYLWKLl\",\"children\":[{\"id\":\"SCm909vctZz0NwuAwqs2n\",\"children\":[{\"text\":\"Gets the real-time speaker volume level\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"atuO329BVYuvqSw9iJmFG\",\"children\":[{\"id\":\"OY2slbd_eaS8Jxcs-BxZQ\",\"children\":[{\"id\":\"ObNv7W4TkKYGcpnYgUar1\",\"children\":[{\"id\":\"eD8FPAOGTE1lPj8W1DDpP\",\"children\":[{\"text\":\"GetRecvStreamLevel\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"HWyb5DMG-IhgAO2zCZcYx\",\"children\":[{\"id\":\"LAMzd1KPMs1BMooN5p-e4\",\"children\":[{\"id\":\"2VZj4FAl3h6aHsx5bPT9o\",\"children\":[{\"text\":\"Gets the real-time downstreaming audio volume levels of other members in the room\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"Tg1moDSICRZW-7xjsBAdI\",\"children\":[{\"id\":\"jXrEhTVbOJ5z80m9OvbtQ\",\"children\":[{\"id\":\"Vlcs9ciIVHaWWsbeFJOjj\",\"children\":[{\"id\":\"9nSTX6Ko9KluV1p8aKHtv\",\"children\":[{\"text\":\"SetSpeakerVolume\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"nYW5b9w7NiWDS0rxxh6a-\",\"children\":[{\"id\":\"Q-WICoOl56g_WUYpOuAly\",\"children\":[{\"id\":\"bRNVAIJqnwf7jJVWfahqS\",\"children\":[{\"text\":\"Sets the speaker volume level\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"X5ez_U0heLvf8pTu4-IbV\",\"children\":[{\"id\":\"xm8IaH-_6OSxisp14YXYe\",\"children\":[{\"id\":\"uCCTVUvUNkxZRBlzgjQYw\",\"children\":[{\"id\":\"_l5qteNVExuKz8r682kjv\",\"children\":[{\"text\":\"GetSpeakerVolume\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"7zz9wokxOmBXEOKJcj9ba\",\"children\":[{\"id\":\"LPEO43Fiis33gXiqbVadK\",\"children\":[{\"text\":\"Gets the speaker volume level\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[26,74],\"widthMode\":\"percentage\"},{\"id\":\"I8mL8Sa8nHSAmFpS3KkGd\",\"children\":[{\"text\":\"Enabling or disabling speaker\"}],\"nodeId\":\"enabling-or-disabling-speaker\",\"type\":\"h3\"},{\"id\":\"rDuDRWox2N8Zm0xXogMZP\",\"children\":[{\"text\":\"This API is used to enable/disable the speaker. \"},{\"b\":1,\"text\":\"EnableSpeaker = EnableAudioPlayDevice + EnableAudioRecv\"}],\"nodeId\":\"EnableSpeaker\",\"type\":\"p\"},{\"id\":\"WZQaWrHlvzSLEw6EnTJMq\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype23\",\"type\":\"h4\"},{\"id\":\"76TPzGZisvhqs_ri-ubPe\",\"children\":[{\"id\":\"EfoGrtVYPZeIdi9qfKxnB\",\"children\":[{\"text\":\"ITMGAudioCtrl virtual int EnableSpeaker(bool enable)\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"rXuDuJC7l8e3tdp3d3bJM\",\"children\":[{\"id\":\"6M_aanGJAVWngOtDw8A0I\",\"children\":[{\"id\":\"UElAJh3yk5IGbDCJVtUQl\",\"children\":[{\"id\":\"wUQMjVMega2vJpOxZ_FF8\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"lw6qh19WrGyj_qXO6JTHr\",\"children\":[{\"id\":\"N1Cw-OJKwSi6jgVDoZBPj\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"oHxeIQHTPei1O1YljIknZ\",\"children\":[{\"id\":\"I_i08qRG5ZcLZzlKORbWW\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"KyGjer_CG0QCE7cauXGjS\",\"children\":[{\"id\":\"gjShGF3o-YRkzeT0SwIvr\",\"children\":[{\"id\":\"iI8zAzgUUEzXSDpJ2oMnh\",\"children\":[{\"id\":\"bPizkekNpK12LFGIOPsHA\",\"children\":[{\"text\":\"enable\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"em0NYf81XMNzyeAXi8IzR\",\"children\":[{\"id\":\"B7RrGGEpCDFclVaNMe2bs\",\"children\":[{\"id\":\"9OCMztMU3bMX5nU9tfvio\",\"children\":[{\"text\":\"bool\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"wbJlTRG3aJTJWfnUlZ2uM\",\"children\":[{\"id\":\"OTklfkIz2ERKpMZKpwbC8\",\"children\":[{\"id\":\"xXKdSBxR4cpoOKe4VfT3p\",\"children\":[{\"text\":\"To disable the speaker, set this parameter to \"},{\"code\":1,\"text\":\"false\"},{\"text\":\"; otherwise, set it to \"},{\"code\":1,\"text\":\"true\"},{\"text\":\".\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[14,9,77],\"widthMode\":\"percentage\"},{\"id\":\"abMm2N_1PeIwPbl33B0gm\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code24\",\"type\":\"h4\"},{\"id\":\"H9iAsJNVrv4ovv7bFtcRL\",\"children\":[{\"id\":\"wbyi1u8CeGHao54Ru5lwk\",\"children\":[{\"text\":\"// Enable the speaker\"}],\"type\":\"code-line\"},{\"id\":\"gQ4gtORvW9aS7iIEhPP-c\",\"children\":[{\"text\":\"ITMGContextGetInstance()->GetAudioCtrl()->EnableSpeaker(true);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"P5Wgv3ci37zoca1rp28Vo\",\"children\":[{\"text\":\"Getting the speaker status\"}],\"nodeId\":\"getting-the-speaker-status\",\"type\":\"h3\"},{\"id\":\"CjJjMiawCd1Ie9q60gJ2s\",\"children\":[{\"text\":\"This API is used to get the speaker status. 0 indicates that the speaker is off, and 1 is on.\"}],\"type\":\"p\"},{\"id\":\"szX1ZZ4gKgEYHAOCdkrin\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype24\",\"type\":\"h4\"},{\"id\":\"n9fbr47e6YxinGnbtW2E1\",\"children\":[{\"id\":\"INC4bT3iG6AvypkZy-B4K\",\"children\":[{\"text\":\"ITMGAudioCtrl virtual int GetSpeakerState()\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"wBHdWaupHnW1KJ2VP3sVg\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code25\",\"type\":\"h4\"},{\"id\":\"spaHw1aNvNm4e9DlXgS32\",\"children\":[{\"id\":\"weWrJ3HcIVytPuorfkF_M\",\"children\":[{\"text\":\"ITMGContextGetInstance()->GetAudioCtrl()->GetSpeakerState();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"lo4eD90Zi_b7L-Gzs479d\",\"children\":[{\"text\":\"Enabling or disabling playback device\"}],\"nodeId\":\"enabling-or-disabling-playback-device\",\"type\":\"h3\"},{\"id\":\"4S_ffPiF1JnTX776gg8W9\",\"children\":[{\"text\":\"This API is used to enable/disable a playback device.\"}],\"type\":\"p\"},{\"id\":\"05hmt_2qr8ac6mArSb60B\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype25\",\"type\":\"h4\"},{\"id\":\"N2i9cGpZCF0AyFaj14oRB\",\"children\":[{\"id\":\"Ug0NHBfMwF8q1WC31-Muh\",\"children\":[{\"text\":\"ITMGAudioCtrl virtual int EnableAudioPlayDevice(bool enable) \"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"bGm-iqxcsnqNQ5pmnJKQK\",\"children\":[{\"id\":\"77rFIahF30KeLlc2hfHbd\",\"children\":[{\"id\":\"EeydnkWAZtPPH4nob_i3a\",\"children\":[{\"id\":\"-g_IrT5HtgKDtKbJH91D4\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Y0MgzwnYGWNV9O60_E2RW\",\"children\":[{\"id\":\"QqgjauVbAUdOBpfNTdfO-\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"DDf-HUeBnYQd9JrA9weHt\",\"children\":[{\"id\":\"nJQLyFf9B79uJ4pc6M6OX\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"W4rtbps50enAUJeSQalhE\",\"children\":[{\"id\":\"XqPtNU54ZhwvHlrbcS6ib\",\"children\":[{\"id\":\"gJNxOcWOOX-FmEMTut08a\",\"children\":[{\"id\":\"jNAXfAkdCZaQ5W0StaEA0\",\"children\":[{\"text\":\"enable\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"RFAIrJOoJtRTEKzv10DMQ\",\"children\":[{\"id\":\"Y8yGmJqIMnZ_DRwvexPsH\",\"children\":[{\"id\":\"LLlQyo8MCrGZOlqAabKCA\",\"children\":[{\"text\":\"bool\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ahFogqWmhuV5ccp4CMPt1\",\"children\":[{\"id\":\"ITG-zBNBvn_CsPpf8C1OZ\",\"children\":[{\"id\":\"TvJ_MWRnXi_PxNcJesqrc\",\"children\":[{\"text\":\"To disable the playback device, set this parameter to \"},{\"code\":1,\"text\":\"false\"},{\"text\":\"; otherwise, set it to \"},{\"code\":1,\"text\":\"true\"},{\"text\":\".\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[13,8,79],\"widthMode\":\"percentage\"},{\"id\":\"Q-BI3b9MvHMhWfTWvTW-P\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code26\",\"type\":\"h4\"},{\"id\":\"cCS-p31A_SKR1uUVHUEcz\",\"children\":[{\"id\":\"D7JFXiOMmJhoTid6g59wx\",\"children\":[{\"text\":\"ITMGContextGetInstance()->GetAudioCtrl()->EnableAudioPlayDevice(true);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"EgmTtJcTrkT1MTH4k7noC\",\"children\":[{\"text\":\"Getting the playback device status\"}],\"nodeId\":\"getting-the-playback-device-status\",\"type\":\"h3\"},{\"id\":\"U1PXJDZS9W_HU3BU39PVT\",\"children\":[{\"text\":\"This API is used to get the status of a playback device.\"}],\"type\":\"p\"},{\"id\":\"A_X7TVfwZdcla2gD6t6zD\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype26\",\"type\":\"h4\"},{\"id\":\"WK2sSydfjzIpbyg-xkAOG\",\"children\":[{\"id\":\"fPiy8KkDARf0BMK8Ak6lE\",\"children\":[{\"text\":\"ITMGAudioCtrl virtual bool IsAudioPlayDeviceEnabled()\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"vCkiA8qG9bh-ZBjXG6asw\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code27\",\"type\":\"h4\"},{\"id\":\"dGt42rfF8Mff1g4B2o0f0\",\"children\":[{\"id\":\"18kgSjaITA1Wlv7bckaOq\",\"children\":[{\"text\":\"ITMGContextGetInstance()->GetAudioCtrl()->IsAudioPlayDeviceEnabled();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"a8Ow0vNuKJ4jt8WiTEBTS\",\"children\":[{\"text\":\"Enabling or disabling audio downstreaming\"}],\"nodeId\":\"enabling-or-disabling-audio-downstreaming\",\"type\":\"h3\"},{\"id\":\"b84RBXb7ciqbfGhEb1UWi\",\"children\":[{\"text\":\"This API is used to enable/disable audio downstreaming. If a playback device is already enabled, it will play back audio data from other members in the room; otherwise, it will remain mute. For more information on how to enable/disable the playback device, please see the \"},{\"code\":1,\"text\":\"EnableAudioPlayDevice\"},{\"text\":\" API.\"}],\"type\":\"p\"},{\"id\":\"h7PX99d2dNnRKmbuhIrgQ\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype27\",\"type\":\"h4\"},{\"id\":\"7B9M_QE_Vjl_2WdKnLVoE\",\"children\":[{\"id\":\"zxymAejE0J6baaQ3hdgEI\",\"children\":[{\"text\":\"ITMGAudioCtrl virtual int EnableAudioRecv(bool enable)\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"Nd9s5s8wMpahaM-Kh9JNA\",\"children\":[{\"id\":\"Q9ufJDZd1R4SKs2tJjlL0\",\"children\":[{\"id\":\"nWC8OKwk8mM18Ub6UnsM_\",\"children\":[{\"id\":\"_O1GLPNuO7voJrNKNTmwQ\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"HGsRyOV1DgFlAzkAJTaZS\",\"children\":[{\"id\":\"SXlW5GO8OIPs6FF1ZMdk-\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"BjuNFgzBsv1uBkk-HCEzn\",\"children\":[{\"id\":\"Ps-r4l1ocANhWQ0YfRc7A\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"kB1lZ42sfDNUNwrwMy00P\",\"children\":[{\"id\":\"t5sxuC1qeiGshv23NKCok\",\"children\":[{\"id\":\"DjeOvpyCQ_Uyo7C_0Lczq\",\"children\":[{\"id\":\"XaZwNGIFS1uFRe0lgvm0B\",\"children\":[{\"text\":\"enable\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"5oolo1dw2QNm479qdWBMD\",\"children\":[{\"id\":\"3vF-zIrvvAadk8KzP6w7_\",\"children\":[{\"id\":\"S0DdiELPGJ8pD-_wRtrVC\",\"children\":[{\"text\":\"bool\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"HVZTT-GYZ3SxTX2lV9P9-\",\"children\":[{\"id\":\"B87iezMY2BJ6felcxRngS\",\"children\":[{\"id\":\"n2MJJ86QlAucf-jCNEerC\",\"children\":[{\"text\":\"To enable audio downstreaming, set this parameter to \"},{\"code\":1,\"text\":\"true\"},{\"text\":\"; otherwise, set it to \"},{\"code\":1,\"text\":\"false\"},{\"text\":\".\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[13,8,79],\"widthMode\":\"percentage\"},{\"id\":\"bDMvlLfPmFgjucUCWkVat\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code28\",\"type\":\"h4\"},{\"id\":\"trNzRyhow8dvtYzdmQUKv\",\"children\":[{\"id\":\"-sDEuV_cdXVIKlEwMAT2X\",\"children\":[{\"text\":\"ITMGContextGetInstance()->GetAudioCtrl()->EnableAudioRecv(true);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"pS9i43kjcfbPDe6N8XKv9\",\"children\":[{\"text\":\"Getting audio downstreaming status\"}],\"nodeId\":\"getting-audio-downstreaming-status\",\"type\":\"h3\"},{\"id\":\"UQuB_dO4VK6AQXzZ1m_8l\",\"children\":[{\"text\":\"This API is used to get the status of audio downstreaming.\"}],\"type\":\"p\"},{\"id\":\"e4R4r-E6AMnhwdWruRzwk\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype28\",\"type\":\"h4\"},{\"id\":\"f-a5ukRknZbkiAgOByha-\",\"children\":[{\"id\":\"tDndP40EPIrEu8HkMkcFI\",\"children\":[{\"text\":\"ITMGAudioCtrl virtual bool IsAudioRecvEnabled() \"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"q3AwqJzVRzIKdTUSYg8xd\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code29\",\"type\":\"h4\"},{\"id\":\"JH2Jik-JBbEmA-nIAj8Eh\",\"children\":[{\"id\":\"nuvo8w1-32gLDfemqhJTE\",\"children\":[{\"text\":\"ITMGContextGetInstance()->GetAudioCtrl()->IsAudioRecvEnabled();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"DPfD28RLwPVOrd-7gjDuN\",\"children\":[{\"text\":\"Getting the real-time speaker volume\"}],\"nodeId\":\"getting-the-real-time-speaker-volume\",\"type\":\"h3\"},{\"id\":\"nMJmSgXyukF9Vw1b8VjaH\",\"children\":[{\"text\":\"This API is used to get the real-time speaker volume. An int-type value will be returned to indicate the volume. It is recommended to call this API once every 20 ms.\"}],\"type\":\"p\"},{\"id\":\"euyTJjur9G2r0WV27c-78\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype29\",\"type\":\"h4\"},{\"id\":\"1NJaIcHRb1Zh5CXmundVs\",\"children\":[{\"id\":\"rgHbDY4kwxsMWAyRokZoH\",\"children\":[{\"text\":\"ITMGAudioCtrl virtual int GetSpeakerLevel()\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"tl0lcbfg1oIWurW-si_Wx\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code30\",\"type\":\"h4\"},{\"id\":\"YV5N4xi_mTUc5IC9WwxU2\",\"children\":[{\"id\":\"pugwSmzqiVFFM4ccQplX8\",\"children\":[{\"text\":\"ITMGContextGetInstance()->GetAudioCtrl()->GetSpeakerLevel();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"VBnevhQhADtywkNs0SX2B\",\"children\":[{\"text\":\"Getting the real-time downstreaming audio levels of other members in room\"}],\"nodeId\":\"getting-the-real-time-downstreaming-audio-levels-of-other-members-in-room\",\"type\":\"h3\"},{\"id\":\"yz6QYuvpJc7JY6j8eXnBq\",\"children\":[{\"text\":\"This API is used to get the real-time audio downstreaming volume of other members in the room. An int-type value will be returned. Value range: 0-200.\"}],\"type\":\"p\"},{\"id\":\"0tpCfHoPUrjNub-h1gXGi\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype30\",\"type\":\"h4\"},{\"id\":\"yk6a__udE3MwoW52E1Tol\",\"children\":[{\"id\":\"_7U9yqR_fzWuL3Dcc9gjW\",\"children\":[{\"text\":\"ITMGAudioCtrl virtual int GetRecvStreamLevel(const char* openId)\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"sQy9c5Hvy0RnFKBxLchpi\",\"children\":[{\"id\":\"OTshKnvsijRKgKZ72jHDO\",\"children\":[{\"id\":\"tmJadZclDVyl0rLGdEnEJ\",\"children\":[{\"id\":\"_gIT0wPrkF919G9p9KIM_\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"_kXi2sxRleLgBHhCIq8M-\",\"children\":[{\"id\":\"zFWDtxPmlxqfWY2a7ImtY\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"9G3svKatYQxsyGRJIMUWe\",\"children\":[{\"id\":\"fcZHkfb2kmSXaBUuCI4eQ\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"N3YftvOKO4hnkNzdjh7gk\",\"children\":[{\"id\":\"CX96ei9e5EcrKMuyoOc9Z\",\"children\":[{\"id\":\"-x1QF8SH3zFNfI4-fiiRk\",\"children\":[{\"id\":\"fTWsM2rAazBpFj_gCbngq\",\"children\":[{\"text\":\"openId\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"tME5ASInwMOmUOtWAwNYO\",\"children\":[{\"id\":\"dxHfIMIpHimOtkOzHIoo8\",\"children\":[{\"id\":\"s_Ii7YRfAWv54XhcSwpuC\",\"children\":[{\"text\":\"char*\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"itHhppOP_XL0yfs09ACWE\",\"children\":[{\"id\":\"r5g7QVu9iQjyLbklWJP8_\",\"children\":[{\"id\":\"gCzcl-FOr89JZgfgtTPAF\",\"children\":[{\"code\":1,\"text\":\"openId\"},{\"text\":\" of other members in the room\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[22,14,64],\"widthMode\":\"percentage\"},{\"id\":\"H9EV63fN4AWqNIlvq6MON\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code31\",\"type\":\"h4\"},{\"id\":\"n8AJcGgP1-aRJfEU-aRwU\",\"children\":[{\"id\":\"xsRR7_kBH7rrDl0e-f6pG\",\"children\":[{\"text\":\"iter->second.level = ITMGContextGetInstance()->GetAudioCtrl()->GetRecvStreamLevel(iter->second.openid.c_str());\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"m9ZV8vlNo51kcJptjQeSX\",\"children\":[{\"text\":\"Dynamically setting the volume of a member of the room\"}],\"nodeId\":\"dynamically-setting-the-volume-of-a-member-of-the-room\",\"type\":\"h3\"},{\"id\":\"STGqpLz5zwagKWSf6FDa6\",\"children\":[{\"text\":\"This API is used to set the volume of a member in the room. It takes effect only on the local.\"}],\"type\":\"p\"},{\"id\":\"60RbSJn9gsL75oy7FGSIF\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype31\",\"type\":\"h4\"},{\"id\":\"PPto-RtNWJSELJyy3OU2q\",\"children\":[{\"id\":\"WBTnaTRNoLzp2jfY_Sc-u\",\"children\":[{\"text\":\"ITMGAudioCtrl virtual int SetSpeakerVolumeByOpenID(const char* openId, int vol) = 0;\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"ZzFQfyg5t03-i6yJu1uEm\",\"children\":[{\"id\":\"dw9VRUAMJOO5GKj_URV_a\",\"children\":[{\"id\":\"0JynmmF5I-i6rfREuEBBO\",\"children\":[{\"id\":\"egYFNmk_6EetLwnzb0dly\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"27hWDRSjOmcwANOXrEUtr\",\"children\":[{\"id\":\"vQkisvGMj6gN7uaTYIkrj\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"0pyUMUtls3HhFiKZjfnmu\",\"children\":[{\"id\":\"2ViQTVv1nALrJrhPM74wI\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"dzkfELw6z0giBJa6ojis3\",\"children\":[{\"id\":\"W_TSqS4ctkQgaRMsypldL\",\"children\":[{\"id\":\"5-I7ORxq9nf-kX-GbcfpP\",\"children\":[{\"id\":\"zCzk_BHgqIcnM3RNM8sw0\",\"children\":[{\"text\":\"openId\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"aElJqs_KGHgsbvzvuT7to\",\"children\":[{\"id\":\"ZdMuEpsf3CiDTdJuMWgtO\",\"children\":[{\"id\":\"WgZaaSSADrg15i_A0w3T2\",\"children\":[{\"text\":\"const char*\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"7Ju-M2VanFLNOrrF3j5oU\",\"children\":[{\"id\":\"sg7dAdVdRP35NyWK6g0v8\",\"children\":[{\"id\":\"noWo463LmSis_aVwq6ab4\",\"children\":[{\"code\":1,\"text\":\"OpenID\"},{\"text\":\" of the user whose volume level needs to be set\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"tVm_O2QiIIzYq_Ui_vsxE\",\"children\":[{\"id\":\"MPKXpNQNIWKOY_UAuZnBe\",\"children\":[{\"id\":\"bQn5rfHK8lkCW5wUQsui1\",\"children\":[{\"id\":\"TroXMnC2KshTKZopnFZlC\",\"children\":[{\"text\":\"vol\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"6L-5kcmlHQoxva5W2lw0W\",\"children\":[{\"id\":\"V6dk3wRJmaim1a9E8Ww-V\",\"children\":[{\"id\":\"v7I3ScC09NljSISKksROa\",\"children\":[{\"text\":\"int\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"pu5n_feFM1Hcb-5pZ0n5d\",\"children\":[{\"id\":\"jDzXpjiR8ERIkR28fPmzq\",\"children\":[{\"id\":\"KmEUCGcyEoxB5VPWm5EOM\",\"children\":[{\"text\":\"Percentage. Recommended value range: 0–200. Default value: \"},{\"code\":1,\"text\":\"100\"},{\"text\":\".\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[14,15,71],\"widthMode\":\"percentage\"},{\"id\":\"oGMvVHy8YQJx8M4xHCbqD\",\"children\":[{\"text\":\"Getting volume percentage\"}],\"nodeId\":\"getting-volume-percentage\",\"type\":\"h3\"},{\"id\":\"l9GuBf524Mi3ZRiNo4Kkw\",\"children\":[{\"text\":\"This API is used to get the volume level set by \"},{\"code\":1,\"text\":\"SetSpeakerVolumeByOpenID\"},{\"text\":\".\"}],\"type\":\"p\"},{\"id\":\"Cq-ybNCE7_gnhKDGQwIqo\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype32\",\"type\":\"h4\"},{\"id\":\"vVTNv2m3krqSpgwecDZC6\",\"children\":[{\"id\":\"7kQqxmLUM8JQANE1yKri7\",\"children\":[{\"text\":\"ITMGAudioCtrl virtual int GetSpeakerVolumeByOpenID(const char* openId) = 0;\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"gcxrco-FxrETnGcr3Cr_a\",\"children\":[{\"id\":\"98-oFjOZoDw4amULhxGu2\",\"children\":[{\"id\":\"cXat_P-sCwt6rRC-9FyUz\",\"children\":[{\"id\":\"EKOzx7lBT4pnfI4fD9yFx\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"rxA9NmUmz1itz-NdMrmwp\",\"children\":[{\"id\":\"dtA7GFc3tAmJx5Jxe0XOl\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"m1UjhAuz70zQxKbqYyNHX\",\"children\":[{\"id\":\"Z5hKeN4YVfviAz5JdC7gq\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"l6IRRxvqRlKH8VZxx592J\",\"children\":[{\"id\":\"U-6T5LK5OUYYk8--ehaFm\",\"children\":[{\"id\":\"CpZZp5zq0wV_y0KFcXdwA\",\"children\":[{\"id\":\"4ERVlkiZgPpe9_sKpyl8d\",\"children\":[{\"text\":\"openId\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"XSEyY-LRtY_7fGtuWAXZG\",\"children\":[{\"id\":\"6H58F8CY59N8NQfg6ZNq4\",\"children\":[{\"id\":\"nNO3LKmZFvsMY3eM-17Bq\",\"children\":[{\"text\":\"const char*\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"2HB-Jp8GMaZZzCoC1DjYn\",\"children\":[{\"id\":\"dFHQAEMtVLswHYJe4SGRX\",\"children\":[{\"id\":\"zTm_fUVOZb8ds2cUvxFbU\",\"children\":[{\"code\":1,\"text\":\"OpenID\"},{\"text\":\" of the user whose volume level needs to be set\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[16,17,67],\"widthMode\":\"percentage\"},{\"id\":\"cPaX_GNEegZFrj3CTGUxR\",\"children\":[{\"text\":\"Returned values\"}],\"nodeId\":\"returned-values2\",\"type\":\"h4\"},{\"id\":\"HcTiH1HQ7YIiZLA2TjBGv\",\"children\":[{\"text\":\"API returns volume percentage set by OpenID, where 100 is by default.\"}],\"type\":\"p\"},{\"id\":\"CR4FcweV3sZIb5uCCIwtA\",\"children\":[{\"text\":\"Setting the speaker volume\"}],\"nodeId\":\"setting-the-speaker-volume\",\"type\":\"h3\"},{\"id\":\"yLcYnkb5aBaMueLOpLFt-\",\"children\":[{\"text\":\"This API is used to set the speaker volume.\"}],\"type\":\"p\"},{\"id\":\"FlmOte7YTrdkDmagvs2qn\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype33\",\"type\":\"h4\"},{\"id\":\"OiXCPCvS36aDSp93sDllS\",\"children\":[{\"id\":\"Jk2V23i_VjnYd-43QCKry\",\"children\":[{\"text\":\"ITMGAudioCtrl virtual int SetSpeakerVolume(int vol)\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"kDjr1hBEpgAeReigkJoYc\",\"children\":[{\"id\":\"zfC3kf50AYZ0mDrwkHgRM\",\"children\":[{\"id\":\"Z0Oc28jm-TnK-AwPqTyd4\",\"children\":[{\"id\":\"PR_jYva9hDYWGwvQEiq2b\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ZHGDqmH4W_eX9U1fxXunp\",\"children\":[{\"id\":\"v3tlL4rxr6ljXgNgghhXq\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Q2IEeWnvhOyeWEHZzGIHV\",\"children\":[{\"id\":\"MrMZ5Yco1HbD2uRLU__g6\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"ZRQBKQWKfm5inbv8AiEGv\",\"children\":[{\"id\":\"x5uYj0ZmPGspgAUVEmUHQ\",\"children\":[{\"id\":\"Q0gF3e1k6eGh8t30W5eHb\",\"children\":[{\"id\":\"jmGAXYbH8W0s873Y2by9M\",\"children\":[{\"text\":\"vol\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"9Ve4zwEy_jXCpf8SPE6Am\",\"children\":[{\"id\":\"22MmIJ94wKwdTwVu_8Sub\",\"children\":[{\"id\":\"e18al6q5cBLBczoJsb79x\",\"children\":[{\"text\":\"int\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"cCCs1rNmviJmKA3JXWCwu\",\"children\":[{\"id\":\"Q78Y52o2DXDoz8458bcyO\",\"children\":[{\"id\":\"KxlwLds5InIfwtQk4t99x\",\"children\":[{\"text\":\"Volume level. Value range: 0–200. Default value: 100. \"},{\"code\":1,\"text\":\"0\"},{\"text\":\" indicates that the audio is mute, while \"},{\"code\":1,\"text\":\"100\"},{\"text\":\" indicates that the volume level remains unchanged.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[14,12,74],\"widthMode\":\"percentage\"},{\"id\":\"TbZXJ4V-mySzg-q6TNemE\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code32\",\"type\":\"h4\"},{\"id\":\"Y3p04KwfCcdNxljSHBa9T\",\"children\":[{\"id\":\"ztjL5drxVBW3zZAbM9C-P\",\"children\":[{\"text\":\"int vol = 100;\"}],\"type\":\"code-line\"},{\"id\":\"2SaAtTwgCZmZn0gbO58K7\",\"children\":[{\"text\":\"ITMGContextGetInstance()->GetAudioCtrl()->SetSpeakerVolume(vol);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"R1ufXknys9Adm4IN4kfSm\",\"children\":[{\"text\":\"Getting the speaker volume\"}],\"nodeId\":\"getting-the-speaker-volume\",\"type\":\"h3\"},{\"id\":\"B9nmCTtZgegw5XN2yHTnE\",\"children\":[{\"text\":\"This API is used to get the speaker volume. An int-type value will be returned to indicate the volume. 101 indicates that the \"},{\"code\":1,\"text\":\"SetSpeakerVolume\"},{\"text\":\" API has not been called.\\n\\\"Level\\\" indicates the real-time volume, and \\\"Volume\\\" the speaker volume. The final volume = Level * Volume%. For example, if the \\\"Level\\\" is 100 and \\\"Volume\\\" is 60, the final volume is \\\"60\\\".\"}],\"type\":\"p\"},{\"id\":\"cFG1SM4ccfwsMn0lbBEfL\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype34\",\"type\":\"h4\"},{\"id\":\"jVc57JlF3KUTAwH4wx84o\",\"children\":[{\"id\":\"vTbJlatCdSQiN1eoZGu1_\",\"children\":[{\"text\":\"ITMGAudioCtrl virtual int GetSpeakerVolume()\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"dgqE014XoUlX9qokwfzWK\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code33\",\"type\":\"h4\"},{\"id\":\"C2mOj_zOifPDiEd-rmpoD\",\"children\":[{\"id\":\"0pQ7uSQ61Oqb1901zREAP\",\"children\":[{\"text\":\"ITMGContextGetInstance()->GetAudioCtrl()->GetSpeakerVolume();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"9hBTUZeQy1KPw63iT41-3\",\"children\":[{\"text\":\"Advanced APIs\"}],\"nodeId\":\"advanced-apis\",\"type\":\"h2\"},{\"id\":\"sAERp-OrxA7UpbQBvLAJD\",\"children\":[{\"text\":\"Enabling in-ear monitoring\"}],\"nodeId\":\"enabling-in-ear-monitoring\",\"type\":\"h3\"},{\"id\":\"S-ccCNnKYP_GJOZPfRhzY\",\"children\":[{\"text\":\"This API is used to enable in-ear monitoring. You need to call \"},{\"code\":1,\"text\":\"EnableLoopBack+EnableSpeaker\"},{\"text\":\" before you can hear your own voice.\"}],\"type\":\"p\"},{\"id\":\"a-09LkRxX0KDyBDrK_yiI\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype35\",\"type\":\"h4\"},{\"id\":\"V7Gx2bLuMGELw1n1uproo\",\"children\":[{\"id\":\"bQmu8vED5BHjB2IoEGfVx\",\"children\":[{\"text\":\"ITMGAudioCtrl virtual int EnableLoopBack(bool enable)\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"2UvwN1qJ6Vz4d-9SPksth\",\"children\":[{\"id\":\"l9Y7_ZgiLiZh_oPueK0a3\",\"children\":[{\"id\":\"xmJbcWTXjXDQ3ZxLbI3fr\",\"children\":[{\"id\":\"sqmK9FihDqKGrX76aEeZX\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"nJdgFvhTD4bIkRtFyzRzY\",\"children\":[{\"id\":\"KA9CtLt34PlUrvc-gw5Sj\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"yc2rNgCaltVch62fvRATx\",\"children\":[{\"id\":\"OPGdilR2e3OVYCxhAONd6\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"fSGzstm0fSgxd05kNKDGo\",\"children\":[{\"id\":\"I87PNW3yVSqi-1g87B6Ab\",\"children\":[{\"id\":\"9KV1_ogAdHMmIS8TzIooT\",\"children\":[{\"id\":\"favc6Gcj3WGQq5oS-eoSE\",\"children\":[{\"text\":\"enable\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"nPTwiGp-pvQVT65b8M5DW\",\"children\":[{\"id\":\"xhbORDABbarPFfSpTpeo7\",\"children\":[{\"id\":\"gXN0n_u8hfWr9ZfzKH4g7\",\"children\":[{\"text\":\"bool\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"vZsCXT8nGfRlOGmjYhrLE\",\"children\":[{\"id\":\"mR8ejfa2js4NlEWWDw2ss\",\"children\":[{\"id\":\"1xsjc3ocZEQoSD-niLHOD\",\"children\":[{\"text\":\"Specifies whether to enable\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[26,17,57],\"widthMode\":\"percentage\"},{\"id\":\"3ovrTxSZ0da8LdQA1LD1X\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code34\",\"type\":\"h4\"},{\"id\":\"uyciGgTsaAZ4Dtuw90MHa\",\"children\":[{\"id\":\"bUUA2sIwbg863cbv26sFE\",\"children\":[{\"text\":\"ITMGContextGetInstance()->GetAudioCtrl()->EnableLoopBack(true);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"yW03G5_A2bFcZIcDojYmz\",\"children\":[{\"text\":\"Getting user's room audio type\"}],\"nodeId\":\"getting-user's-room-audio-type\",\"type\":\"h3\"},{\"id\":\"cTc3Jyi34l4yRWOAvOyFk\",\"children\":[{\"text\":\"This API is used to get a user's room audio type. The returned value is the room audio type. Value 0 indicates that an error occurred while getting the user's room audio type. For room audio types, please see the \"},{\"code\":1,\"text\":\"EnterRoom\"},{\"text\":\" API.\"}],\"type\":\"p\"},{\"id\":\"oCCkpRIV21ro2DLrCT8SB\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype36\",\"type\":\"h4\"},{\"id\":\"BAItM_KQmQZALLewUWBrh\",\"children\":[{\"id\":\"OsOk7vAzOnhHza1EDP22_\",\"children\":[{\"text\":\"class ITMGRoom {\"}],\"type\":\"code-line\"},{\"id\":\"c4wqGotSY75M1dI3vZEWv\",\"children\":[{\"text\":\"public:\"}],\"type\":\"code-line\"},{\"id\":\"8LJF7xdsgL6ByMZxGnGwZ\",\"children\":[{\"text\":\" virtual ~ITMGRoom() {} ;\"}],\"type\":\"code-line\"},{\"id\":\"EAjaGakgW1woE1jP5WpA_\",\"children\":[{\"text\":\" virtual int GetRoomType() = 0;\"}],\"type\":\"code-line\"},{\"id\":\"fQaK45OeZeaNrIPeRa0z_\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"},{\"id\":\"xAhGxoP0yhZBsyFBBUJcb\",\"children\":[{\"text\":\"};\"}],\"type\":\"code-line\"},{\"id\":\"DbdFXCBRyqZZ0S0WxfKiz\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"hxBM_oinA62K_YFRkd-ay\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code35\",\"type\":\"h4\"},{\"id\":\"sahCDX9NG0jzzC1PH6x1N\",\"children\":[{\"id\":\"ef-ougzORStR8E7MVY-kN\",\"children\":[{\"text\":\"ITMGContext* context = ITMGContextGetInstance();\"}],\"type\":\"code-line\"},{\"id\":\"Y11V1yCxWaUD8FftWj-pM\",\"children\":[{\"text\":\"ITMGContextGetInstance()->GetRoom()->GetRoomType();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"fdADuYFL0Uddce3EOWPfY\",\"children\":[{\"text\":\"Getting the room ID\"}],\"nodeId\":\"getting-the-room-id\",\"type\":\"h3\"},{\"id\":\"QtmcZHgAeiCQzFFJCNCym\",\"children\":[{\"text\":\"This API is used to get the voice chat room ID and can be called only after a successful room entry.\"}],\"type\":\"p\"},{\"id\":\"gNBNtan4qJIBjOh2G5FLl\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype37\",\"type\":\"h4\"},{\"id\":\"oZcrTUEYQrXYfT_DrWwqq\",\"children\":[{\"id\":\"jJhQBLfPbX0g9xwrz5wth\",\"children\":[{\"text\":\"ITMGRoom virtual int GetRoomID(char* pBuffer, int nLength) = 0;\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"04jACTvq48TP2sGVSmhQ2\",\"children\":[{\"id\":\"1ikJGytgSp5gZbU6cxoEV\",\"children\":[{\"id\":\"uUGTPIaFsDtxf2lhlqFDN\",\"children\":[{\"id\":\"4Ri0HIiC37kToWYI9c-hI\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"45DQFX8UX0BRpGVN212ee\",\"children\":[{\"id\":\"VKYUN4AZqCbdVBHizW2ug\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"IUGK0eF7JUVcrad6ZaH7e\",\"children\":[{\"id\":\"iLyNTrC7JvkRIjMtjCXkU\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"3S_RVUazdkbq0ERSxuuJg\",\"children\":[{\"id\":\"iwoe2gtNP0W3HSJoE8vA7\",\"children\":[{\"id\":\"0-U0Zf98v1nkuqtcaTrNI\",\"children\":[{\"id\":\"CPPSFvNJYhUvq3RZLaD96\",\"children\":[{\"text\":\"pBuffer\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"4FpKHeH2_T2w3lcQZPNlN\",\"children\":[{\"id\":\"n8Z4cjWTZnZRTd8RmmT0k\",\"children\":[{\"id\":\"z-9Wyo9zhMgQRxihwKAJG\",\"children\":[{\"text\":\"char*\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"RpPSobWm1qR_Ek9kx8_zD\",\"children\":[{\"id\":\"0KakmzhXXh9jGm6aA-2t_\",\"children\":[{\"id\":\"WSSGfR6lkFn0QTEOHka4b\",\"children\":[{\"text\":\"It is used to receive the returned \"},{\"code\":1,\"text\":\"roomid\"},{\"text\":\".\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"SS-aS5o6Wph-sb9VPT6Or\",\"children\":[{\"id\":\"BmnenCIge5ZXAUEUleEo0\",\"children\":[{\"id\":\"nFqEcbudEe8aG6Uj9NxLB\",\"children\":[{\"id\":\"usnVhZvHrKpqJR4tXq_tC\",\"children\":[{\"text\":\"nLength\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"TZz3dnT5RwTQKulfQG1Be\",\"children\":[{\"id\":\"NeA5GuMm88ectYnzyrByf\",\"children\":[{\"id\":\"KoQj30tLKV86ygHU7B6yM\",\"children\":[{\"text\":\"int\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"syImFUHy6u5g6G1JhhG9d\",\"children\":[{\"id\":\"cfD0am8ZQr6sbYXTFFdJd\",\"children\":[{\"id\":\"5KkTCx7R9TSjxhtMpFb90\",\"children\":[{\"code\":1,\"text\":\"pBuffer\"},{\"text\":\" length. Value range: 128–256.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[21,14,65],\"widthMode\":\"percentage\"},{\"id\":\"T4C7B5ZQB7OxqVIDrUdoM\",\"children\":[{\"text\":\"Modifying user's room audio type\"}],\"nodeId\":\"modifying-user's-room-audio-type\",\"type\":\"h3\"},{\"id\":\"BhWzHCPF8HVr3Giy2HFNT\",\"children\":[{\"text\":\"This API is used to modify a user's room audio type. For the result, please see the callback event. The event type is \"},{\"code\":1,\"text\":\"ITMG_MAIN_EVENT_TYPE_CHANGE_ROOM_TYPE\"},{\"text\":\". The audio type of the room is determined by the first user to enter the room. After that, if a member in the room changes the room type, it will take effect for all members there.\"}],\"type\":\"p\"},{\"id\":\"Atq6i_9nSx9rWqDJCmOZR\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype38\",\"type\":\"h4\"},{\"id\":\"EnK795-3qgPa1eji8OM2s\",\"children\":[{\"id\":\"nnuMJk6vXIy4MfKF9v-_e\",\"children\":[{\"text\":\"IITMGContext TMGRoom public int ChangeRoomType((ITMG_ROOM_TYPE roomType)\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"phzH9AXhhdciw2c6-B1jJ\",\"children\":[{\"id\":\"x6qpfEKmpYOlnr-C1BKwa\",\"children\":[{\"id\":\"gqEAQyvyNyinUvE4Ddhz-\",\"children\":[{\"id\":\"IwyOf_LlgoKW4Lxq93bTa\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"pVECi9CKCpPN6mTre_uG_\",\"children\":[{\"id\":\"S5aXGSll2f0ZjDBt3zscl\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"wdkJ1Phi0_248ozHrnjX9\",\"children\":[{\"id\":\"Quo-v7BjeIXtPjKAItKJg\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"4_sjX3kKTt-1XzUot7s4L\",\"children\":[{\"id\":\"sVeuID27WzTxt0ypIrC7F\",\"children\":[{\"id\":\"XcMhZPuCZCk_tTHBb8pAE\",\"children\":[{\"id\":\"lzcBeaKM_2zZVLk7ALzii\",\"children\":[{\"text\":\"roomType\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"T4FuZyviXF05AlmHMsYrY\",\"children\":[{\"id\":\"YdilyE1bn0ezEdEomwq-X\",\"children\":[{\"id\":\"vlucgY26nAh4ovkJg-kYd\",\"children\":[{\"text\":\"ITMG_ROOM_TYPE\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"leJEe7O9NPetUNJZH1X4r\",\"children\":[{\"id\":\"eLLqU0y_Horykl2L-JyjP\",\"children\":[{\"id\":\"djnexUkAcCBAewCFW_9BK\",\"children\":[{\"text\":\"Room type to be switched to the target type. For room audio types, please see the \"},{\"code\":1,\"text\":\"EnterRoom\"},{\"text\":\" API.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[12,18,70],\"widthMode\":\"percentage\"},{\"id\":\"XcB7EDI5bEZWjfuOW9AP9\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code36\",\"type\":\"h4\"},{\"id\":\"noY6SnYFZNczpQbVmE5Wo\",\"children\":[{\"id\":\"3c8mdP5ubQZ76vQJJamUA\",\"children\":[{\"text\":\"ITMGContext* context = ITMGContextGetInstance();\"}],\"type\":\"code-line\"},{\"id\":\"PW7iZsGM3binDlzuVo9aA\",\"children\":[{\"text\":\"ITMGContextGetInstance()->GetRoom()->ChangeRoomType(ITMG_ROOM_TYPE_FLUENCY);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"9t9VHB7NkimJbL87Ll3Wh\",\"children\":[{\"text\":\"Data details\"}],\"nodeId\":\"data-details3\",\"type\":\"h4\"},{\"id\":\"jQgakUmqCqj684HSJ8pUG\",\"children\":[{\"id\":\"NoboEDUcaqMtqaA6thWVW\",\"children\":[{\"id\":\"fuG3CPwUJvDpDtLC75RgD\",\"children\":[{\"id\":\"E245whZpMWH7mr1GZ-Wpb\",\"children\":[{\"text\":\"Message\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"cLfN5N1ONtvsalORGT5YL\",\"children\":[{\"id\":\"B40Y_5sLLS2EtjXngJ0Lo\",\"children\":[{\"text\":\"Data\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"1_yNYvaK13z55HEmb69tM\",\"children\":[{\"id\":\"dEsvLHDuq5ViuzHPnq6cZ\",\"children\":[{\"text\":\"Sample\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"GVV1FnMITcs-7kBn5dLAw\",\"children\":[{\"id\":\"xT31BUMsfX_1JwjsOYD8r\",\"children\":[{\"id\":\"cQniLk4cDqzl31jAMsMZh\",\"children\":[{\"id\":\"HKiBjRYLKQBxN7LGf2BXk\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_CHANGE_ROOM_TYPE\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"AoQEzTpxdq8txT_34awJR\",\"children\":[{\"id\":\"d4UHhZdDcv93Gb1hmcy46\",\"children\":[{\"id\":\"vizZtyyfWLCeOSaM8-3I-\",\"children\":[{\"text\":\"result; error_info; new_room_type\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"2v_HbB_9cL0YmMCLIGF1Z\",\"children\":[{\"id\":\"UFk0wVLscx6Xky6p8PFUp\",\"children\":[{\"id\":\"2cbbnILqy4NQI-pTGmue4\",\"children\":[{\"text\":\"{\\\"error_info\\\":\\\"\\\",\\\"new_room_type\\\":0,\\\"result\\\":0}\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[40,26,34],\"widthMode\":\"percentage\"},{\"id\":\"2bapqek6Uzpuj70fXUXwO\",\"children\":[{\"text\":\"Callback for modifying the room type\"}],\"nodeId\":\"callback-for-modifying-the-room-type\",\"type\":\"h3\"},{\"id\":\"bycLvViLdxM5idWJ7mHv1\",\"children\":[{\"text\":\"After the room type is set, the event message \"},{\"code\":1,\"text\":\"ITMG_MAIN_EVENT_TYPE_CHANGE_ROOM_TYPE\"},{\"text\":\" will be returned in the callback. The returned parameters include \"},{\"code\":1,\"text\":\"result\"},{\"text\":\", \"},{\"code\":1,\"text\":\"error_info\"},{\"text\":\", and \"},{\"code\":1,\"text\":\"new_room_type\"},{\"text\":\". The \"},{\"code\":1,\"text\":\"new_room_type\"},{\"text\":\" represents the following information. The event message will be identified in the \"},{\"code\":1,\"text\":\"OnEvent\"},{\"text\":\" function.\"}],\"type\":\"p\"},{\"id\":\"PP2QHZbiRof59qCCuoL56\",\"children\":[{\"id\":\"bpzCAtxsQ2dRHRvZzXPRp\",\"children\":[{\"id\":\"z5Fx2uAlNv9_HPvdRn2hO\",\"children\":[{\"id\":\"V1SdrQpb-x-9FUW6wVYFs\",\"children\":[{\"text\":\"Event Subtype\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"RD_MopaJJBAS81OXiVAE8\",\"children\":[{\"id\":\"6f0uRaULO3Ttwh6eiq_td\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"W8nfPKuYh1eY-4kbkOPPR\",\"children\":[{\"id\":\"JytvKNWl2su8UDspX0BP1\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"d4hlb2x4P8ugOFQe7vIOg\",\"children\":[{\"id\":\"p4Uar7BWZNsnoMq__8M8t\",\"children\":[{\"id\":\"FyeM_wBu7rWIqNoA5w9be\",\"children\":[{\"id\":\"oqX8ShSljaNHiUpNMBArS\",\"children\":[{\"text\":\"ITMG_ROOM_CHANGE_EVENT_ENTERROOM\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"pJOWtsMSMDv_dESqaGPB8\",\"children\":[{\"id\":\"4Y5CWQLe3vK9PnM0ML5Qn\",\"children\":[{\"id\":\"anq_62gv4d7vxuurbIcPx\",\"children\":[{\"text\":\"1\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"9xNQSMPz5YveWqdtoYuY_\",\"children\":[{\"id\":\"6r3j4bEBvhtJ-pkuB_4HL\",\"children\":[{\"id\":\"MIx8TLGkcWROucSZ8fkZu\",\"children\":[{\"text\":\"The existing audio type is inconsistent with and changed to that of the entered room.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"qvxU5hXjMBDKrMYATZff-\",\"children\":[{\"id\":\"DAoeGLhuQD94vBvVtIBcU\",\"children\":[{\"id\":\"wIQcCddMz8RZnny3oncMJ\",\"children\":[{\"id\":\"jOWbDfHV3O4P2K3J4OjSr\",\"children\":[{\"text\":\"ITMG_ROOM_CHANGE_EVENT_START\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"vIFTOK5lXh-ja_YongtIq\",\"children\":[{\"id\":\"YojjV07UgkQKGKIRqwQ8S\",\"children\":[{\"id\":\"Q9306DYDLSdx8rdn75RWb\",\"children\":[{\"text\":\"2\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"fnkdupHlKlUPqGvvmawob\",\"children\":[{\"id\":\"28FXNglseNkQ_XUuCSdR7\",\"children\":[{\"id\":\"u8WJUxzZAVKDWjJUur-qB\",\"children\":[{\"text\":\"A user is already in the room and the audio type starts changing (e.g., calling the \"},{\"code\":1,\"text\":\"ChangeRoomType\"},{\"text\":\" API to change the audio type).\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"oLVhDLRIbOeEHN0RZieT-\",\"children\":[{\"id\":\"l2GuwFgbgf8WGIxltUYNq\",\"children\":[{\"id\":\"RQd9wjP2juMOEXbuuVu5T\",\"children\":[{\"id\":\"LiYyNQP8Jg1en1rUaA2Dh\",\"children\":[{\"text\":\"ITMG_ROOM_CHANGE_EVENT_COMPLETE\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"lZVssc-mXmkNl_yrQefn8\",\"children\":[{\"id\":\"VJx3kOEVXAOl6uhJ_r5E1\",\"children\":[{\"id\":\"nkqLG16dVIp_d5M7b2Do2\",\"children\":[{\"text\":\"3\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"HGO_iQKIYERhTFcmcv-h-\",\"children\":[{\"id\":\"zCxFp5tNhe4WuxmKUsn7s\",\"children\":[{\"id\":\"SgCyF5_m1aO_QAqyu_evT\",\"children\":[{\"text\":\"A user is already in the room, and the audio type has been changed.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"1Lq3lXU5McgZ7vnKCxZKq\",\"children\":[{\"id\":\"NBGcg2u6x47SrY02ssAso\",\"children\":[{\"id\":\"E0kRX71WA0ucTOIztF9Iz\",\"children\":[{\"id\":\"CjMJjg_Z5PAG_ViQ5wGKw\",\"children\":[{\"text\":\"ITMG_ROOM_CHANGE_EVENT_REQUEST\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"1GfgVJZr85RMJG2DzeHmA\",\"children\":[{\"id\":\"Hhou2W_g3bk1Y4lmy2LBH\",\"children\":[{\"id\":\"nEA--Hpw2cF-wPEB9KYGr\",\"children\":[{\"text\":\"4\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"_6n5MhxJAQTJ3eHu8B4zc\",\"children\":[{\"id\":\"7sUO7uB3uqaI9-hW3CRbm\",\"children\":[{\"id\":\"SMKCfqZMLzB9BwAbdexxk\",\"children\":[{\"text\":\"A room member calls the \"},{\"code\":1,\"text\":\"ChangeRoomType\"},{\"text\":\" API to request a change of room audio type.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[36,12,52],\"widthMode\":\"percentage\"},{\"id\":\"K1pnAu4cHyUuFHiT4bLw8\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code37\",\"type\":\"h4\"},{\"id\":\"ZzHPabjYCiYSl_fo-FB5k\",\"children\":[{\"id\":\"QYKfLWNUdvXiY1xo78yfU\",\"children\":[{\"text\":\"void TMGTestScene::OnEvent(ITMG_MAIN_EVENT_TYPE eventType,const char* data){\"}],\"type\":\"code-line\"},{\"id\":\"Pcav2bnqbJlPn4Z5rGhh_\",\"children\":[{\"text\":\" if (ITMGContext.ITMG_MAIN_EVENT_TYPE.ITMG_MAIN_EVENT_TYPE_CHANGE_ROOM_TYPE == type)\"}],\"type\":\"code-line\"},{\"id\":\"RYWqqqdALPkooY3WcwRV3\",\"children\":[{\"text\":\" {\"}],\"type\":\"code-line\"},{\"id\":\"ce-l13rZ9DwHYkDz4Mds7\",\"children\":[{\"text\":\" // Process room type events\"}],\"type\":\"code-line\"},{\"id\":\"6nCZLgdZjfp5G_o4s2iRU\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"t-T5jVmuYa80j_Og2q1V5\",\"children\":[{\"text\":\"}\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"be973Zapx874c1E54hsoi\",\"children\":[{\"text\":\"The monitoring event of room call quality\"}],\"nodeId\":\"the-monitoring-event-of-room-call-quality\",\"type\":\"h3\"},{\"id\":\"XUN2D87DNN7uBDLdzKp_b\",\"children\":[{\"text\":\"This is the quality monitoring event, which is triggered once every two seconds after room entry, and its message is \"},{\"code\":1,\"text\":\"ITMG_MAIN_EVENT_TYPE_CHANGE_ROOM_QUALITY\"},{\"text\":\". The returned parameters include \"},{\"code\":1,\"text\":\"weight\"},{\"text\":\", \"},{\"code\":1,\"text\":\"loss\"},{\"text\":\", and \"},{\"code\":1,\"text\":\"delay\"},{\"text\":\", which are as detailed below:\"}],\"type\":\"p\"},{\"id\":\"NuAs1G4bKpurn1cU4XH2L\",\"children\":[{\"id\":\"_f9tMfbutVYT7MXTTSQVG\",\"children\":[{\"id\":\"cHhCe6dLycuwnVzqVC6qT\",\"children\":[{\"id\":\"R_WPkLEB2hxrpptyEQI4A\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"zz9m_qyCsFdK0kQCGGtIL\",\"children\":[{\"id\":\"tZmooxI91AzcYGyM9JV5g\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"LDnkHd-xuKDqnaB_5DFxN\",\"children\":[{\"id\":\"ASaD2XSdo9wHu8CKyAADL\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"S3Ae4Es1ErdjU7P3Z3GcB\",\"children\":[{\"id\":\"Q4Fgu0R1aRdAycTqkkGEP\",\"children\":[{\"id\":\"URIIXjj3WcLT9YvjKJ653\",\"children\":[{\"id\":\"uongbb0dCGxQXFtPiqYii\",\"children\":[{\"text\":\"weight\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"drgh64Y_4xNm2szxZzN-N\",\"children\":[{\"id\":\"C2mis3-7qmn_x1toW7Uzi\",\"children\":[{\"id\":\"4EvOHbLQWom0f4eO1460M\",\"children\":[{\"text\":\"int\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"fFm4mYS5XKsnB9jkVHXK_\",\"children\":[{\"id\":\"Z4LAj0p9D57b1JaL0lrDU\",\"children\":[{\"id\":\"v9Y7bGMlEVXYiRrPMt8a1\",\"children\":[{\"text\":\"Value range: 1-50. 50 indicates excellent sound quality, 1 indicates very poor (barely usable) sound quality, and 0 represents an initial meaningless value. Generally, if the value is below 30, the business layer will remind users that the network is poor and recommend them to switch the network.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"oevKjnPHmysCisj5gHEwx\",\"children\":[{\"id\":\"gjmuAKBdaIoFj3rK4Puyx\",\"children\":[{\"id\":\"L3ZwQH845nZCbJmUgviDe\",\"children\":[{\"id\":\"N6O7jvGi7pzWa7qNausfU\",\"children\":[{\"text\":\"loss\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"gXEGPeLV0uWXQcl2Ytna0\",\"children\":[{\"id\":\"IiwTBS6F0cuDnUZ9BA9gH\",\"children\":[{\"id\":\"_EPJWw-zubzBscFiDaQSX\",\"children\":[{\"text\":\"double\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Ieg23juyyYcjp9AtB90-X\",\"children\":[{\"id\":\"CZ0WOWv8zA3DC5R2kSAez\",\"children\":[{\"id\":\"uKyB1vWsSIJd7zLTenwNI\",\"children\":[{\"text\":\"Upstream packet loss rate\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"RdSvczgn--z8Y_Z0zX8bi\",\"children\":[{\"id\":\"jeSHmBtw31DC9jLY_l2OO\",\"children\":[{\"id\":\"Agph3ydkhWRxtQHWEq9LU\",\"children\":[{\"id\":\"6OvLz10BQuwRtQ3GaXOxU\",\"children\":[{\"text\":\"delay\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"5nq-cmleMyCB7rWEqBC8s\",\"children\":[{\"id\":\"hA2kuFSOiH4VCs-Yb9j86\",\"children\":[{\"id\":\"cWEmC8GMm5S82BImBgC-u\",\"children\":[{\"text\":\"int\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"qtzOt0guqi9s1FOrJm8XC\",\"children\":[{\"id\":\"Jh7ha_Og4_QVho5xMFVmf\",\"children\":[{\"id\":\"Y7foUlQnw5HapH9FQCqbp\",\"children\":[{\"text\":\"Voice chat delay in ms\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[12,11,77],\"widthMode\":\"percentage\"},{\"id\":\"8aRcOng1pqrW4M8Ev6NSH\",\"children\":[{\"text\":\"Getting version number\"}],\"nodeId\":\"getting-version-number\",\"type\":\"h3\"},{\"id\":\"yZpzm91O-b0P2e0w0oVk5\",\"children\":[{\"text\":\"This API is used to get the SDK version number for analysis.\"}],\"type\":\"p\"},{\"id\":\"uvO-7Sl_H_VdzLwXlISPy\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype39\",\"type\":\"h4\"},{\"id\":\"LvKB6FL5171ZCJTEoj8jQ\",\"children\":[{\"id\":\"PIWToCTYqQGBh-liz1I4r\",\"children\":[{\"text\":\"ITMGContext virtual const char* GetSDKVersion()\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"S9jos4TCnZS4ol6UV2_-r\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code38\",\"type\":\"h4\"},{\"id\":\"lk4YAV2OgzewHcatkTDQJ\",\"children\":[{\"id\":\"L1bJnXEheQusJMCR2D2ML\",\"children\":[{\"text\":\"ITMGContextGetInstance()->GetSDKVersion();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"mpgoIjDqlAm15kPcca753\",\"children\":[{\"text\":\"Checking mic status\"}],\"nodeId\":\"checking-mic-status\",\"type\":\"h3\"},{\"id\":\"dWT4fB_0mmNtZk4_bq0Y0\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\"function-prototype\",\"type\":\"h4\"},{\"id\":\"bKZLkejn2BrY2QfD3JJKq\",\"children\":[{\"id\":\"SdhNisO6LhxYkIe84DzOh\",\"children\":[{\"text\":\"ITMGContext virtual ITMG_CHECK_MIC_STATUS CheckMic() = 0;\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"yNwI3aFUoenjqC8yXb8K8\",\"children\":[{\"text\":\"Returned value handling\"}],\"nodeId\":\"returned-value-handling\",\"type\":\"h4\"},{\"id\":\"3oRfyWWNqMgt7PZEDkDBX\",\"children\":[{\"id\":\"VfICcOCKoa2N919ttek2i\",\"children\":[{\"id\":\"cf-NfcxdXL4si2RTeyjt-\",\"children\":[{\"id\":\"g6hekB9FXdX5QQ4UzFPPG\",\"children\":[{\"text\":\"Returned Value\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"3zpoJVwiQexSBerUUnnFJ\",\"children\":[{\"id\":\"jc28CbszfiHZImwBeSGhO\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"C8AzO1JDUwuHfekdO-1x0\",\"children\":[{\"id\":\"3P24P6eX_dUn0XRqyJDAD\",\"children\":[{\"text\":\"Handling\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"EuF-W1BsYE_RqF-GA4hxw\",\"children\":[{\"id\":\"BOIdpLc8KQ-eVaceOrawc\",\"children\":[{\"id\":\"Na-wOwBLPsBX5Yb4yl6SS\",\"children\":[{\"id\":\"5DFmTa29-0SpnPvTke6Ch\",\"children\":[{\"text\":\"ITMG_CHECK_MIC_STATUS_AVAILABLE = 0\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"6N_ZPvZgdbu1gjEEulf9d\",\"children\":[{\"id\":\"yVCMOoheK0ziXlgeJ39f1\",\"children\":[{\"id\":\"BeNKZw3whZ5Wx6oRZIBmd\",\"children\":[{\"text\":\"Normally available\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"nscKP28S98hU5IH73bYvF\",\"children\":[{\"id\":\"taCaZztqSbW2U6dNyMNNg\",\"children\":[{\"id\":\"KTlkMXm5clgfCAQOr4NU9\",\"children\":[{\"text\":\"No handling required\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"x3sn6l2qSAR0Sr2FjgG2Q\",\"children\":[{\"id\":\"7pX7LP7B1pnZf7G-nnLaA\",\"children\":[{\"id\":\"tyeCpRxyKNyU8q9Ie4BpW\",\"children\":[{\"id\":\"jDF88A-pq8uqw4XGa5sZs\",\"children\":[{\"text\":\"ITMG_CHECK_MIC_STATUS_NO_GRANTED = 2\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"3wzfW3a176H_rGHIErine\",\"children\":[{\"id\":\"cSLXyWK7Q4zd-gYGyGSuz\",\"children\":[{\"id\":\"pbb-iuvFHVkFVqcWZtCJ6\",\"children\":[{\"text\":\"Access not obtained/denied\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"8yvW2vasAat6Z7SfWFsYY\",\"children\":[{\"id\":\"La3QXLbqZtdBPCCWNiYvr\",\"children\":[{\"id\":\"Lhs0lwIYYt4dcsCK9VhSL\",\"children\":[{\"text\":\"The access permission needs to be obtained before the mic is enabled\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"y_-fG-mPf9Q4mZcVMFnJS\",\"children\":[{\"id\":\"yasU8GmkukvwNXQa3zFlL\",\"children\":[{\"id\":\"jZU5Y5aYo5pbtrwfL8oEJ\",\"children\":[{\"id\":\"aTFJgVWUZaa5Q2PkHcC3M\",\"children\":[{\"text\":\"ITMG_CHECK_MIC_STATUS_INVALID_MIC = 3\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"4BpXkGv3FkOym1MQ-J8Jj\",\"children\":[{\"id\":\"wYOT4S5ajV6OpTGZqn1IV\",\"children\":[{\"id\":\"N5rwxvhra9osT5aSrYBv6\",\"children\":[{\"text\":\"No device available\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Hu50GMYw_aL58ROgrvT5K\",\"children\":[{\"id\":\"PhXJIGBdH_hhVcj7vrX9g\",\"children\":[{\"id\":\"-3lDU3J04sClY_vVqP8fB\",\"children\":[{\"text\":\"Generally, this error will be reported on PCs when no mics are available. Prompt the user to insert a headset or mic\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"eW_B1qXBJoYcqjTkvFo_o\",\"children\":[{\"id\":\"wEbubMHDQ5dRekrxIcUAM\",\"children\":[{\"id\":\"UmPL_L1wDhSLdqoDsqd16\",\"children\":[{\"id\":\"Fp7cVBlaCar59EZ0dwkHq\",\"children\":[{\"text\":\"ITMG_CHECK_MIC_STATUS_NOT_INIT = 5\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"UcqW8L4F1k-jciLcXILAv\",\"children\":[{\"id\":\"G9wW54EJ9DdbTaHMndyL9\",\"children\":[{\"id\":\"knAtggYIxj-6P1LqvM088\",\"children\":[{\"text\":\"Not initialized\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"acZK8K4x4LN8ZuTYREd2q\",\"children\":[{\"id\":\"3BBwqOR4yXcCjhn9vHfBf\",\"children\":[{\"id\":\"ZYpNdH2bJ0YIM7n8iVBgQ\",\"children\":[{\"text\":\"Call \"},{\"code\":1,\"text\":\"EnableMic\"},{\"text\":\" after \"},{\"code\":1,\"text\":\"Init\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[26,16,58],\"widthMode\":\"percentage\"},{\"id\":\"QL1-qgOAfprJQujJxobMG\",\"children\":[{\"text\":\"Setting log printing level\"}],\"nodeId\":\"setting-log-printing-level\",\"type\":\"h3\"},{\"id\":\"t7LqMTgj1jrnkVO51lvnE\",\"children\":[{\"text\":\"This API is used to set the level of logs to be printed, and needs to be called before the initialization. It is recommended to keep the default level.\"}],\"type\":\"p\"},{\"id\":\"s9OD3nZOS-DgWwPQcLwpQ\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype40\",\"type\":\"h4\"},{\"id\":\"_pIpwk5rzPJwEy2CUMKZP\",\"children\":[{\"id\":\"X8254jstiOZHrTzelRPYA\",\"children\":[{\"text\":\"ITMGContext int SetLogLevel(ITMG_LOG_LEVEL levelWrite, ITMG_LOG_LEVEL levelPrint)\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"2fUzdJdOefFAP3o1sUpLx\",\"children\":[{\"text\":\"Parameter description\"}],\"nodeId\":\"parameter-description\",\"type\":\"h4\"},{\"id\":\"6dJ1tWn11KPmrxUvbtp-S\",\"children\":[{\"id\":\"DFswgk8fvm3xG8IyAtG9y\",\"children\":[{\"id\":\"6njnKmvtdBV-d2Ii13ihe\",\"children\":[{\"id\":\"TruknUfxq6gtskVF89Aew\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"iIvAsaeo55Aq8Z--UPRfw\",\"children\":[{\"id\":\"DZYETGw4Sg2lsLQDi1LRG\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"9l2_TPWAE6COlnPU6ZWM9\",\"children\":[{\"id\":\"2uy0gI0nwC1vCUa4-ilt0\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"uOLtlGeEZzdbfKIU8tkLO\",\"children\":[{\"id\":\"3aGzpLEjZWdGPVBp0qMmN\",\"children\":[{\"id\":\"aU_r_wskEbIUm7JebJiRc\",\"children\":[{\"id\":\"SBEeS-Ar1hDSpfzwgE6iy\",\"children\":[{\"text\":\"levelWrite\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"7yjpZ28nAZM8EjPdy4X1N\",\"children\":[{\"id\":\"G3wjWi-qh_X8b0kZr3jDq\",\"children\":[{\"id\":\"i19H4szJcQ22sY0C-dmuM\",\"children\":[{\"text\":\"ITMG_LOG_LEVEL\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"nQBUpw4tM80d1KFG1um0i\",\"children\":[{\"id\":\"-pyLe0H9nxHa_UN0XqvRg\",\"children\":[{\"id\":\"DQV-ukmnX9ob2CwM-KlgX\",\"children\":[{\"text\":\"Sets the level of logs to be written. \"},{\"code\":1,\"text\":\"TMG_LOG_LEVEL_NONE\"},{\"text\":\" indicates not to write. Default value: TMG_LOG_LEVEL_INFO\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"k4PE5XqsJkuJH5mUQ5AWD\",\"children\":[{\"id\":\"bKWmzPuszBRBe_oHvn6-z\",\"children\":[{\"id\":\"OYGkYMDNBfH91kPgaA55T\",\"children\":[{\"id\":\"4wOiiqEsq826R29v2p4c2\",\"children\":[{\"text\":\"levelPrint\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"N1zQ0h1zPMvwgPc3SIQLS\",\"children\":[{\"id\":\"VAkriyLg9KJn9WMZ61rF7\",\"children\":[{\"id\":\"Gf6kiIig12D0TLbmTB-wG\",\"children\":[{\"text\":\"ITMG_LOG_LEVEL\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"BM66Qi-hd0yeSDyc7_CUD\",\"children\":[{\"id\":\"rQ1M_CBhWdthMsFZKKeFX\",\"children\":[{\"id\":\"S3KlezU_0HCHOGVlqFWHg\",\"children\":[{\"text\":\"Sets the level of logs to be printed. \"},{\"code\":1,\"text\":\"TMG_LOG_LEVEL_NONE\"},{\"text\":\" indicates not to print. Default value: TMG_LOG_LEVEL_ERROR\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[13,17,70],\"widthMode\":\"percentage\"},{\"id\":\"AWTgC4_i1buE6FTAvpm1l\",\"children\":[{\"code\":1,\"text\":\"ITMG_LOG_LEVEL\"},{\"text\":\" is as detailed below:\"}],\"type\":\"p\"},{\"id\":\"QN8iZh2bKeNAJxjj-z27f\",\"children\":[{\"id\":\"pA1shR2ud-UGKlyUDoXer\",\"children\":[{\"id\":\"7aMOHr9ZnGHglpxV08VsJ\",\"children\":[{\"id\":\"2Nr26upaC08MZ6Dyqghcx\",\"children\":[{\"text\":\"ITMG_LOG_LEVEL\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"jw0TWu51zzb1GtcIF0xLE\",\"children\":[{\"id\":\"vJv0t0o7F3rrahx-jLMAn\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"XRq6ojpWB5ljLBzdOUMOC\",\"children\":[{\"id\":\"kyUAPnUriqU6UfboKrgKV\",\"children\":[{\"id\":\"OF0KLpg9Ah7GerGeUDGHr\",\"children\":[{\"id\":\"O5FwBddZr-ZgVoCNz6j9C\",\"children\":[{\"text\":\"TMG_LOG_LEVEL_NONE\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"8LYbLyUK6r_iK4JmBvl6w\",\"children\":[{\"id\":\"17SMeJbkXuY4ZuyB3qrk3\",\"children\":[{\"id\":\"SLhG054OFyl_qHH1LpXqU\",\"children\":[{\"text\":\"Does not print logs\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"xugFTJe7K1Z_5hAMvvOXm\",\"children\":[{\"id\":\"wMsLFhd1e60o2AObStB7L\",\"children\":[{\"id\":\"4oMMXGdn6J55OJhmW5G4P\",\"children\":[{\"id\":\"k02SU_M9-aLI6DDRhX6an\",\"children\":[{\"text\":\"TMG_LOG_LEVEL_ERROR\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"j-Nq-K2pj8gtm-5_PtKu8\",\"children\":[{\"id\":\"fN4nrJ58wRWxohr-KdmWK\",\"children\":[{\"id\":\"ziIFDzGmZo5k6JXnqUW3E\",\"children\":[{\"text\":\"Prints error logs (default)\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"kAGKfK5krfB948bKt1bDy\",\"children\":[{\"id\":\"27ltYMhRYzUPAHUjnizug\",\"children\":[{\"id\":\"yLV2giP_FgAnYVoeCdbU4\",\"children\":[{\"id\":\"ado62hkUUldQmXrFTFt5W\",\"children\":[{\"text\":\"TMG_LOG_LEVEL_INFO\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ta2QMGD330q-80YWNj56W\",\"children\":[{\"id\":\"3CalUbh5WuIW8MhcshZ4C\",\"children\":[{\"id\":\"PJOyAd2-NB4hEsCyLNw-w\",\"children\":[{\"text\":\"Prints info logs\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"O3lYTcyNNN5jwcED2dvYQ\",\"children\":[{\"id\":\"0LbgScehch-ETljqJWaHN\",\"children\":[{\"id\":\"kmJajA9wdjzE0Al-2hEqT\",\"children\":[{\"id\":\"_8GHIJ7ghL_e9_jBiCoVk\",\"children\":[{\"text\":\"TMG_LOG_LEVEL_DEBUG\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"PEdgIl0vkx-J0DkxbLB4j\",\"children\":[{\"id\":\"H-F1CZf5ync16fdUkI7O9\",\"children\":[{\"id\":\"G669lS5TMUEfYgiPHaPeL\",\"children\":[{\"text\":\"Prints debug logs\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"0FLgu2GxdP9-vxaGOqG_X\",\"children\":[{\"id\":\"NCkLa-WcXB9oSEFdKy6V8\",\"children\":[{\"id\":\"YGtIz6SjgqRtP6jIRAkeg\",\"children\":[{\"id\":\"QqAPwllAaNFfoMTj4TR7Z\",\"children\":[{\"text\":\"TMG_LOG_LEVEL_VERBOSE\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"xgPM7c7pZ3Rxl4NhBwV4l\",\"children\":[{\"id\":\"AHlbRrTHaWpBm_lmS5mkl\",\"children\":[{\"id\":\"Jk5hK2Jtj2qBtqDJDUicm\",\"children\":[{\"text\":\"Prints verbose logs\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[45,55],\"widthMode\":\"percentage\"},{\"id\":\"4GKAzhy3MNtu6AVCtNSx7\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code39\",\"type\":\"h4\"},{\"id\":\"5kSgzZarkOuW2UiZYF-HQ\",\"children\":[{\"id\":\"c7ezQhYe07u-ihg_kTig4\",\"children\":[{\"text\":\"ITMGContextGetInstance()->SetLogLevel(TMG_LOG_LEVEL_INFO,TMG_LOG_LEVEL_INFO);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"YUd9ymgL0mIVxLFlWopV0\",\"children\":[{\"text\":\"Setting the log printing path\"}],\"nodeId\":\"setting-the-log-printing-path\",\"type\":\"h3\"},{\"id\":\"m84OnH4OugRLkCY6zSe-8\",\"children\":[{\"text\":\"This API is used to set the log printing path. The default path is as follows. It needs to be called before Init.\"}],\"type\":\"p\"},{\"id\":\"2soisQLu8C-qU5GLWtdDe\",\"children\":[{\"id\":\"Z0hCuoWsRb9W8SBIrBjGs\",\"children\":[{\"id\":\"JBWSyx_AQpoAYBPhR0Yr_\",\"children\":[{\"id\":\"ZFk5A8NsNIH1hScRkpD2I\",\"children\":[{\"text\":\"OS\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"3sldY-rE4JkZPQ33RR3oR\",\"children\":[{\"id\":\"Vudzx8LcFfw64VMj9vdKj\",\"children\":[{\"text\":\"Path\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"EGyNGt5NJhbnMzSOgtnfB\",\"children\":[{\"id\":\"AIR3H6yLwIP7Fv9u3ltlL\",\"children\":[{\"id\":\"dqQEGqB69uI3gKhWgugds\",\"children\":[{\"id\":\"OHUWO9MnZi_jjUeZv2s6N\",\"children\":[{\"text\":\"Windows\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"aE2MJp5tI9qlAthgPVoh8\",\"children\":[{\"id\":\"HauC_m-0svs_GeV2-9U1j\",\"children\":[{\"id\":\"BZ7iFIeJ2HH5r5xgf2Kj2\",\"children\":[{\"text\":\"%appdata%\\\\Tencent\\\\GME\\\\ProcessName\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"zn8Z8w3cXwjj3jTAk6Eff\",\"children\":[{\"id\":\"wXYjo3aOAh1akKlMSVUfi\",\"children\":[{\"id\":\"ArG6pLmBgKCvvz3TfQq-P\",\"children\":[{\"id\":\"B4iaXU8zwrpamgtBvQK59\",\"children\":[{\"text\":\"iOS\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"0ewirL1GzaGv2-UEYRTbD\",\"children\":[{\"id\":\"VsQGt9VF7XP0xoiVdEBmh\",\"children\":[{\"id\":\"oAE38M7Q5Bph35zumsvr2\",\"children\":[{\"text\":\"Application/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/Documents\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"g7ErBTI-84ZmeS8hWULED\",\"children\":[{\"id\":\"7OyND_JQchZdWpN39_UiM\",\"children\":[{\"id\":\"xSpnDU7pcFdzX2QjwuoqX\",\"children\":[{\"id\":\"UKpgtlE2HINU95xeYeIFk\",\"children\":[{\"text\":\"Android\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"DhnggeTdOZUS6fT_WhM0R\",\"children\":[{\"id\":\"EvMsBWoSkZwWRO40xDWIQ\",\"children\":[{\"id\":\"am0RUDP1oMQA39wH7-yPJ\",\"children\":[{\"text\":\"/sdcard/Android/data/xxx.xxx.xxx/files\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"1tdeuS3zqArOfvf5ZWa9C\",\"children\":[{\"id\":\"Av98YZNrkXl_9MeOJqaF_\",\"children\":[{\"id\":\"_pzsgmd_sVTBbfpqRBY1e\",\"children\":[{\"id\":\"EN4KV6IE7b6j5JEE5emUL\",\"children\":[{\"text\":\"Mac\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"6eLu7yjHKRTBOGgZOFyjm\",\"children\":[{\"id\":\"ttkxB2aHWzeB-TpNwCPNn\",\"children\":[{\"id\":\"UVWfobtUcSy2QX0gEDXUu\",\"children\":[{\"text\":\"/Users/username/Library/Containers/xxx.xxx.xxx/Data/Documents\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[16,84],\"widthMode\":\"percentage\"},{\"id\":\"do95b1ZY6i370Zhf9oCD0\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype41\",\"type\":\"h4\"},{\"id\":\"ah1F5ca4F_gJXI-IHmzzC\",\"children\":[{\"id\":\"eFJEFnjvPLg5tSh7uC969\",\"children\":[{\"text\":\"ITMGContext virtual int SetLogPath(const char* logDir) \"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"LLyjIy1EPPZjyIKKKbi-m\",\"children\":[{\"id\":\"ko5HwyTfvGcYvqXAkIwQt\",\"children\":[{\"id\":\"grlWVJmcvCFy3QBQ4EeTZ\",\"children\":[{\"id\":\"Ze_AgFC94PMJD93Nppfk6\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"7o6gnGAtGSsHAZdV80yUL\",\"children\":[{\"id\":\"ye8a-iBY3v1fQ9BBZyTay\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"RoepVOIJgAfTiFKAbAbDx\",\"children\":[{\"id\":\"4GfxvPh-mZX9GWj3-yMSP\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"HMJ1V2RF42IYk8rTU9I03\",\"children\":[{\"id\":\"4TDR8zj-__VU8eYVmWrAj\",\"children\":[{\"id\":\"0UaKokEkmRmr-HCiTNOUq\",\"children\":[{\"id\":\"L45VsvKw5GqCD7BzDo1b0\",\"children\":[{\"text\":\"logDir\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"VMPVYefFN0dMLM-KmtE8v\",\"children\":[{\"id\":\"UdiVN3Frw25C7PR88wn1H\",\"children\":[{\"id\":\"NnZZw90QqB_GLGROcGIcK\",\"children\":[{\"text\":\"const char*\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"v8W5TUuaNtHggaYlEJ4Jx\",\"children\":[{\"id\":\"uL8naSZ38x03ZEKFhYncV\",\"children\":[{\"id\":\"3_mXj1umdO7tQk7BAT2P5\",\"children\":[{\"text\":\"Path\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[32,33,35],\"widthMode\":\"percentage\"},{\"id\":\"yIjK_TUr5DBQauVlZlpSa\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code40\",\"type\":\"h4\"},{\"id\":\"gwzL_hKZ3fMbjyEKYVjqW\",\"children\":[{\"id\":\"y1CPoNsJpO6UIjnRyu_im\",\"children\":[{\"text\":\"cosnt char* logDir = \\\"\\\"// Set a path by yourself\"}],\"type\":\"code-line\"},{\"id\":\"F03uPwWyPoom0xUGlpUAk\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"},{\"id\":\"eSPjmtU0bgpD5GuXabgVg\",\"children\":[{\"text\":\"ITMGContext* context = ITMGContextGetInstance();\"}],\"type\":\"code-line\"},{\"id\":\"LuvSwOCVs2Bk_9TZa1367\",\"children\":[{\"text\":\"context->SetLogPath(logDir);\"}],\"type\":\"code-line\"},{\"id\":\"aRKPuPtWQ71zCIzxuXNPs\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"G2-bpt2ZJfXkUjcPLwxvC\",\"children\":[{\"text\":\"Getting the printed log path\"}],\"nodeId\":\"getting-the-printed-log-path\",\"type\":\"h3\"},{\"id\":\"TCpxe-J7CAIgPQ15lVya8\",\"children\":[{\"text\":\"This API is used to get the log path. Its returned value is a string of \"},{\"code\":1,\"text\":\"const char*\"},{\"text\":\" type.\"}],\"type\":\"p\"},{\"id\":\"58htvd2tKi6r20kMFcsmH\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype42\",\"type\":\"h4\"},{\"id\":\"iCndccdOYrW96gl5JB-p9\",\"children\":[{\"id\":\"haaPoHXHF1yzHxs5fDg2l\",\"children\":[{\"text\":\"ITMGContext virtual const char* GetLogPath() = 0; \"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"NHKS_ahxwZwChUvV2IULY\",\"children\":[{\"text\":\"Getting the diagnostic messages\"}],\"nodeId\":\"getting-the-diagnostic-messages\",\"type\":\"h3\"},{\"id\":\"tO3bpZTeKpO0Iaw2tnLzV\",\"children\":[{\"text\":\"This API is used to get information on the quality of real-time audio/video calls, which is mainly used to view real-time call quality and troubleshoot and can be ignored on the business side.\"}],\"type\":\"p\"},{\"id\":\"GyiWJxI-iI4GYgJgHzBpf\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype43\",\"type\":\"h4\"},{\"id\":\"zpx5z1Twg_CmvYlMb1txQ\",\"children\":[{\"id\":\"IQaDwnnK2zCb8ng4lH9Oz\",\"children\":[{\"text\":\"ITMGRoom virtual const char* GetQualityTips()\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"g75slG9uC-a9Dt6vo1FfD\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code41\",\"type\":\"h4\"},{\"id\":\"p7EESI1xIf6uM_SnaWUTL\",\"children\":[{\"id\":\"MTEfHb8YLQbfLWwyyOLg_\",\"children\":[{\"text\":\"ITMGContextGetInstance()->GetRoom()->GetQualityTips();\"}],\"type\":\"code-line\"},{\"id\":\"9yN_W0-AO42MHzgLHRjGc\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"oo54ri0MXITzlEjTfT1ym\",\"children\":[{\"text\":\"Callback Messages\"}],\"nodeId\":\"callback-messages\",\"type\":\"h2\"},{\"type\":\"table\",\"rowHeader\":true,\"children\":[{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"Message\"}],\"id\":\"T0VjSWL8B8Q0OrlmVi4j7\"}],\"id\":\"flcjgpKUzOfJLmzaRnjao\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"Description\"}],\"id\":\"Xnurlm5dZTkVDPdTG8V34\"}],\"id\":\"OX4tWEN-1EY6-HLjsLpq2\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"Parameter\"}],\"id\":\"PyKccg3p09_4ab9PZKtUj\"}],\"id\":\"e8NnFc_3GyEslWq-OzWba\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"Sample\"}],\"id\":\"8hHCBq9NvZB5Vjdjyi5RY\"}],\"id\":\"7tOZOd5Zro4OrbgAswyRU\"}],\"id\":\"JSx5IugVltWKkjw3CFYdr\"},{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_ENTER_ROOM\"}],\"id\":\"ka62PID3YdIs5zA5tLDo_\"}],\"id\":\"WHjR3sBTwasT3mbIfGmPO\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"A member entered the audio room\"}],\"id\":\"T9lns9NmsmlWYbTOB2EA8\"}],\"id\":\"AB0pbk-sIikwP6mzlch9u\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"result; error_info\"}],\"id\":\"ww0zQQCAwRI_F-z8MDSn1\"}],\"id\":\"8PUf_olvfBTl6Vgb5kb_u\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"{\\\"error_info\\\":\\\"\\\",\\\"result\\\":0}\"}],\"id\":\"A_aWDRyIfVrnzzjWN7Ec8\"}],\"id\":\"HBmRBzjAMEP2uadvRTsKl\"}],\"id\":\"GXdDRWUhAjBqw2Q-SfrPK\"},{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_EXIT_ROOM\"}],\"id\":\"FcsR9S0XGaUEolb2CZJB5\"}],\"id\":\"Xer0ZZBZw5aNbcGmFo4ur\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"A member exited the audio room\"}],\"id\":\"Id52A3NEopmhk0uq_ecvv\"}],\"id\":\"a6bmKYQ1Sjmr6ziLfqcAF\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"result; error_info\"}],\"id\":\"Bt553kmchK0rf-xOb2MfZ\"}],\"id\":\"skzOGQvSFBsZeLgogdPt8\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"{\\\"error_info\\\":\\\"\\\",\\\"result\\\":0}\"}],\"id\":\"AnEzmwPvNKXMXtkqSJRMK\"}],\"id\":\"nDrflYx1g4_c53GIFhoPN\"}],\"id\":\"GWHj-Wo-vRx_wB3icTx3G\"},{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_ROOM_DISCONNECT\"}],\"id\":\"tNwFfIDlUkvXpYbGkb0lD\"}],\"id\":\"4VdtOs0VH3OVqYfwSthld\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"The room was disconnected for network or other reasons\"}],\"id\":\"-0OS517_ZtSIBdAXimxhA\"}],\"id\":\"HqD6937fANrhty4VIt7VO\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"result; error_info\"}],\"id\":\"_Kfab6VlTiVvdwHKVIg5L\"}],\"id\":\"3jjz9-xxGRiMPvcUZQoT8\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"{\\\"error_info\\\":\\\"waiting timeout, please check your network\\\",\\\"result\\\":0}\"}],\"id\":\"Da146fYkL5GkbK6TjplXb\"}],\"id\":\"fIC8OsXvZZ7qMtXvpqi50\"}],\"id\":\"l4CIP5h49535Os-CH2fV8\"},{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"ITMG_MAIN_EVNET_TYPE_USER_UPDATE\"}],\"id\":\"AauUR0_kHOe_vkiPlQQMK\"}],\"id\":\"c4Ah2wy_qkZp_JPRqkZ-S\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"The room members were updated\"}],\"id\":\"jrDz_e98qHMRUmj-AC2cF\"}],\"id\":\"HFxWSjBrRFzHV4Lmbh4jd\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"user_list; event_id\"}],\"id\":\"7omTyFhPPEfBK_KrY4U8-\"}],\"id\":\"aj9DbRy_Oo4-gXBMgS4Pj\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"{\\\"event_id\\\":1,\\\"user_list\\\":[\\\"0\\\"]}\"}],\"id\":\"aSWdBoTkTW5K77CMwLWQV\"}],\"id\":\"YU_UEMO_NKR4mkd3raZYJ\"}],\"id\":\"AgeoUzSM2r5zalxuGxlqr\"},{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_RECONNECT_START\"}],\"id\":\"6lEM-0UbdXngmQu4XCeDU\"}],\"id\":\"0A2oovm6wTbT4cwEXSgBe\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"Room reconnection started\"}],\"id\":\"qq-1BGzlJeRELpkrGg2AV\"}],\"id\":\"WRU7tv_Ms5mwen0BV_aKr\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"result; error_info\"}],\"id\":\"E1JzWu3APMlWOxXdHqjrr\"}],\"id\":\"fsTH_FWGigfg7tCKYNJmj\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"{\\\"error_info\\\":\\\"\\\",\\\"result\\\":0}\"}],\"id\":\"4MXwf_9C6GFCg1DDR9w1I\"}],\"id\":\"vLwrSkht3BGaxEGO6Bw6q\"}],\"id\":\"uLhirJxeE__8LvF3qxfc0\"},{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_RECONNECT_SUCCESS\"}],\"id\":\"fLqTtZRA6-hA96vZo-VWf\"}],\"id\":\"7acnMIUrBc5-aCeghQt5C\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"Room reconnection succeeded\"}],\"id\":\"lmXY8fiHO-aRDmdheKNdZ\"}],\"id\":\"X_YU0chZN02jMwjpt_rMK\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"result; error_info\"}],\"id\":\"7TZ85WjmKP_e6rvteT9wH\"}],\"id\":\"eq6WwoNwqfmCx_eAVgCCd\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"{\\\"error_info\\\":\\\"\\\",\\\"result\\\":0}\"}],\"id\":\"gM-bJ7-FR0kf86SB1qP6l\"}],\"id\":\"Ct2qCgRsqi9_szg0qGl5R\"}],\"id\":\"9jBYdDt17v53jv6XpsLs1\"},{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_SWITCH_ROOM\"}],\"id\":\"yZ4FcdaGifY5qFWhk1MRo\"}],\"id\":\"v5SU6pkfXJM-ijWvA7HT3\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"The room was quickly switched\"}],\"id\":\"SWcHEqm-2xkb1eTWh0iRU\"}],\"id\":\"UsxsblJ5MC6a4EPDgawNn\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"result; error_info\"}],\"id\":\"Ykyl3qGB0uKzuQxlKCpxI\"}],\"id\":\"x-q9-85YEo7HbvfXX1DZi\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"{\\\"error_info\\\":\\\"\\\",\\\"result\\\":0}\"}],\"id\":\"PxmZcSEKe8MZKdrC6naVa\"}],\"id\":\"_0D7plBM3hdf5phLuL8d-\"}],\"id\":\"6fOj8PqX3AdlLaIzaQVHS\"},{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_CHANGE_ROOM_TYPE\"}],\"id\":\"v28pbhwc66Iu_S-WjgfwK\"}],\"id\":\"UHZLr8cPgOk4XnB0Kz8H0\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"The room status changed\"}],\"id\":\"bPXT3cR4AKbbT3vG3xFJV\"}],\"id\":\"nAeBI7XrBlMJBMCX3Cu4q\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"result; error_info; sub_event_type; new_room_type\"}],\"id\":\"a28ZrA8RITU5JuT017yWG\"}],\"id\":\"Uaq9dwpumzsN5bIuRNowx\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"{\\\"error_info\\\":\\\"\\\",\\\"new_room_type\\\":0,\\\"result\\\":0}\"}],\"id\":\"hyadGOotaHLVstXMkrOfI\"}],\"id\":\"aSaWF-MzBjiuRjm7ZauLp\"}],\"id\":\"-fbvUXEKzKijsyxqZjag5\"},{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_ROOM_SHARING_START\"}],\"id\":\"AaxjzcoR3-V00o-ufWQGg\"}],\"id\":\"nsckxuqzlfvWYx-RHSQfn\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"Cross-room mic connect started\"}],\"id\":\"s-VUIieNB1jhWc2o7JaMc\"}],\"id\":\"_J3XZYsszGIdR7LMs1dm1\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"result;\"}],\"id\":\"PFn6pZQMOyvLITE_AhykW\"}],\"id\":\"0dfJyxuxqcEK8KK-ZEYcC\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"{\\\"result\\\":0}\"}],\"id\":\"0qnwzqMLfCmZ5CdjV-_EU\"}],\"id\":\"ilGA6bq8U_oC30v32JETy\"}],\"id\":\"pFQ4Kem0O4qgK7B6zrCDn\"},{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_ROOM_SHARING_STOP\"}],\"id\":\"r4NkHmtB3NKGTPOsuoQYJ\"}],\"id\":\"mCMnVg6PWJ5AeRe7moLi-\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"Cross-room mic connect stopped\"}],\"id\":\"BAAjJIbrpRqXyMZNME9R2\"}],\"id\":\"a50lvw84cupGrzeWsqoUK\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"result;\"}],\"id\":\"o-6AcYiwtaAQmx-0Uworj\"}],\"id\":\"LS1FP_fBhq0M32XFcRoRe\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"{\\\"result\\\":0}\"}],\"id\":\"k8tTWEUdqZpsI_daHNqkH\"}],\"id\":\"4ciePMnQJ75uhH4KMtcWq\"}],\"id\":\"erKAHCXpxQyNxQL0HljZq\"},{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_SPEAKER_DEFAULT_DEVICE_CHANGED\"}],\"id\":\"c06buVLpRDTkZzEWTxloM\"}],\"id\":\"ODxa4568_iVgTL3va80BT\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"The default speaker was changed\"}],\"id\":\"2o8vqKv20O61Qpehy-KH5\"}],\"id\":\"Nc6OxLc9GCxLF5m6uJBmm\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"result; error_info\"}],\"id\":\"YQLgFjKir_fbf-esTzS_J\"}],\"id\":\"QSY9H_1GEB3lqmTvbKgKE\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"{\\\"deviceID\\\":\\\"{0.0.0.00000000}.{a4f1e8be-49fa-43e2-b8cf-dd00542b47ae}\\\",\\\"deviceName\\\":\\\"speaker (Realtek High Definition Audio)\\\",\\\"error_info\\\":\\\"\\\",\\\"isNewDevice\\\":true,\\\"isUsedDevice\\\":false,\\\"result\\\":0}\"}],\"id\":\"g37aHQPiy5jO8BdO15nk9\"}],\"id\":\"wwzFlhPUxc1TXi0_qjAdy\"}],\"id\":\"UoFzcmBkBvoD_IqST9Nn2\"},{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_SPEAKER_NEW_DEVICE\"}],\"id\":\"qmmRCbmSNRyJtFUpf3H4N\"}],\"id\":\"3CsBzXdUAO5koY26CsGMm\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"A speaker was added\"}],\"id\":\"0qg_RrDc4dIuzSSPwP46u\"}],\"id\":\"XNEyDNzcT1OXFBkUZqufE\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"result; error_info\"}],\"id\":\"yY9F75PCHk8TDMY9IAaMm\"}],\"id\":\"hUyytHwfUW5kvdrQAKEzt\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"{\\\"deviceID\\\":\\\"{0.0.0.00000000}.{a4f1e8be-49fa-43e2-b8cf-dd00542b47ae}\\\",\\\"deviceName\\\":\\\"speaker (Realtek High Definition Audio)\\\",\\\"error_info\\\":\\\"\\\",\\\"isNewDevice\\\":true,\\\"isUsedDevice\\\":false,\\\"result\\\":0}\"}],\"id\":\"StcmZiM3qbX0icLD3C2z6\"}],\"id\":\"blq894YdZK1LO4vr7KUXk\"}],\"id\":\"9JJUbmxM8xWJfogWv77oH\"},{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_SPEAKER_LOST_DEVICE\"}],\"id\":\"8ASJ6HlJIS2nzaezTi6HL\"}],\"id\":\"WYbtTY9woEnULx0b3uws3\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"A speaker was lost\"}],\"id\":\"BL1xTzBDuekR9ufP2KyuO\"}],\"id\":\"hkiblm4vYzGogkcjFpghM\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"result; error_info\"}],\"id\":\"6C5vgKED8PuOUDij0duSZ\"}],\"id\":\"adjvhUdjR8LWN1c83E0RC\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"{\\\"deviceID\\\":\\\"{0.0.0.00000000}.{a4f1e8be-49fa-43e2-b8cf-dd00542b47ae}\\\",\\\"deviceName\\\":\\\"speaker (Realtek High Definition Audio)\\\",\\\"error_info\\\":\\\"\\\",\\\"isNewDevice\\\":false,\\\"isUsedDevice\\\":false,\\\"result\\\":0}\"}],\"id\":\"yjL--Ruk9s7yq1HvIa5Mi\"}],\"id\":\"5cVAh6n2rDP62ODpaibmH\"}],\"id\":\"KGx7oYzDuSlMJRQBx7Dsl\"},{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_MIC_NEW_DEVICE\"}],\"id\":\"wDlYR7RdR4H1EQAIqQWag\"}],\"id\":\"w0amTtx9lN78rXJJNPH3V\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"A mic was added\"}],\"id\":\"PObb5N4FebCCFRejXpkB1\"}],\"id\":\"ftgKG5Q7UMbVtkiUi8oHQ\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"result; error_info\"}],\"id\":\"CKYuhxvJMp8J0HE40318P\"}],\"id\":\"nyiByxL8wv1XuwiOwDHLE\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"{\\\"deviceID\\\":\\\"{0.0.1.00000000}.{5fdf1a5b-f42d-4ab2-890a-7e454093f229}\\\",\\\"deviceName\\\":\\\"mic (Realtek High Definition Audio)\\\",\\\"error_info\\\":\\\"\\\",\\\"isNewDevice\\\":true,\\\"isUsedDevice\\\":true,\\\"result\\\":0}\"}],\"id\":\"cjZ5gNwNv4fFKnGRusD_S\"}],\"id\":\"Ij8g7fFSuoVQoJ1JJ_gdK\"}],\"id\":\"BdO1R9ZtbyzUiqb3JjSsx\"},{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_MIC_LOST_DEVICE\"}],\"id\":\"HvJAawo1m_9EpesnU0Yr5\"}],\"id\":\"P9Zd_D1b0InBk-8GeguVi\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"A mic was lost\"}],\"id\":\"l6TaKZTqfXabNKOsDLwIK\"}],\"id\":\"7NzVirMO4tDweS_hDwiIJ\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"result; error_info\"}],\"id\":\"oVfX09UR1sHd2ts2XcSBp\"}],\"id\":\"a1LzmQ6FN0wDZSFL1B794\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"{\\\"deviceID\\\":\\\"{0.0.1.00000000}.{5fdf1a5b-f42d-4ab2-890a-7e454093f229}\\\",\\\"deviceName\\\":\\\"mic (Realtek High Definition Audio)\\\",\\\"error_info\\\":\\\"\\\",\\\"isNewDevice\\\":false,\\\"isUsedDevice\\\":true,\\\"result\\\":0}\"}],\"id\":\"BgrqI-WaaIIbvQEz4lQ7s\"}],\"id\":\"fdrpo54XvylUmJaR9B8ux\"}],\"id\":\"ZDwfnEAmqfmCipwLYX9-a\"},{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_MIC_DEFAULT_DEVICE_CHANGED\"}],\"id\":\"Hc6z93IvDVHlgSc9KOv2M\"}],\"id\":\"yf5ga-MlBtRqKoNekZ6GG\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"The default mic was changed\"}],\"id\":\"Xbqx6IOMDqSoq1svFcZAE\"}],\"id\":\"SR_07wXJc_wfG3inwKiQB\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"result; error_info\"}],\"id\":\"gcWsMjHqZI0fLx68-KIZy\"}],\"id\":\"rUv-CAscWT4R49fEwRPLn\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"{\\\"deviceID\\\":\\\"{0.0.1.00000000}.{5fdf1a5b-f42d-4ab2-890a-7e454093f229}\\\",\\\"deviceName\\\":\\\"mic (Realtek High Definition Audio)\\\",\\\"error_info\\\":\\\"\\\",\\\"isNewDevice\\\":false,\\\"isUsedDevice\\\":true,\\\"result\\\":0}\"}],\"id\":\"YEh0C9g9utK7Nc4UOelzs\"}],\"id\":\"cFvxFxSmD5AGVgzuo6Yfv\"}],\"id\":\"M-qpwfZeE1Tf6fyYoOgJC\"},{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_CHANGE_ROOM_QUALITY\"}],\"id\":\"bAd7RB_g8ZxJXfpuqND0X\"}],\"id\":\"LAVxTrsbEcEd2IHYzLPaa\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"Room quality message\"}],\"id\":\"2Joi7rrOnv79cG6SnGfxk\"}],\"id\":\"Y3SzXIKJuPQyYHwBWWrFZ\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"weight; loss; delay\"}],\"id\":\"iBehF4s9c3mZwjzFer6y-\"}],\"id\":\"H8ogHWpayLN5DcTiE-Xty\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"{\\\"weight\\\":5,\\\"loss\\\":0.1,\\\"delay\\\":1}\"}],\"id\":\"kvMUaQCf8Gn0yQl3V5HOz\"}],\"id\":\"ie2AriEl0I2jutWjDloF3\"}],\"id\":\"8Zz_7dmxxK17lnUZyoIKs\"},{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_RECORD_COMPLETE\"}],\"id\":\"73jUIXoTDTdOhSWr3_Lj7\"}],\"id\":\"J_B2P6ucKej0FpszTHHSO\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"Recording of a voice message was completed\"}],\"id\":\"YhSrGN_kRTs81CpmZqy78\"}],\"id\":\"047itb7IB6wHqLjk4IAl1\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"result; file_path\"}],\"id\":\"VP6PQQXOXDqXZ44r8_hXA\"}],\"id\":\"DRzTvI3VivNcGskoj8Qx6\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"{\\\"file_path\\\":\\\"\\\",\\\"result\\\":0}\"}],\"id\":\"DltfxyyNCXuawAz_DtTQx\"}],\"id\":\"yZySQc0t2V-Q-xi3WVamZ\"}],\"id\":\"zlbRn0KCpgQ4kSYJOWjfZ\"},{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_UPLOAD_COMPLETE\"}],\"id\":\"9Q0KLOyw6pkFOPmIazx_A\"}],\"id\":\"aTeNGZtrpbON5NBISTj3D\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"Upload of a voice message was completed\"}],\"id\":\"uZFPK49HIWhom-8H1e4_9\"}],\"id\":\"nl2yn5zdwimf0uFr0LRfb\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"result; file_path;file_id\"}],\"id\":\"YI78N_Ghrf_9eeMXT7q-o\"}],\"id\":\"OMQrGORd1-IygAbcVQZHP\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"{\\\"file_id\\\":\\\"\\\",\\\"file_path\\\":\\\"\\\",\\\"result\\\":0}\"}],\"id\":\"JmCg3znTiOEMo5ZOThDCL\"}],\"id\":\"oBOdd0spcYLWPj_9hqVLE\"}],\"id\":\"RPRFLJKLV4Tp4mCxoKY9M\"},{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_DOWNLOAD_COMPLETE\"}],\"id\":\"lH0IbBDV8cZk5LmBhsdCX\"}],\"id\":\"P1k5idXTohBuNSWLXhKjd\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"Download of a voice message was completed\"}],\"id\":\"K6OUqJabQ86G2TZSmvolg\"}],\"id\":\"soVeNZC5v-PwWLCldO-G6\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"result; file_path;file_id\"}],\"id\":\"e6QhWZVIbCLLYZzWFfI9K\"}],\"id\":\"vyiIjpVXrCPCjtYIwPIfF\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"{\\\"file_id\\\":\\\"\\\",\\\"file_path\\\":\\\"\\\",\\\"result\\\":0}\"}],\"id\":\"Z8fwF-B_xNIgsUotrkpt8\"}],\"id\":\"F3kYDCDQFVlqeZStlsRIt\"}],\"id\":\"thYqN8gvsKUKjwPcqJBBZ\"},{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_PLAY_COMPLETE\"}],\"id\":\"-E7-xZ5AXdZoGSor5pcu9\"}],\"id\":\"zlFkNJls_mfxnJUIMhwd-\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"Playback of a voice message was completed\"}],\"id\":\"09UB8w5b2uIQ2Pbb7JVnV\"}],\"id\":\"QDhI2YgruY9jHMWniRPMq\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"result; file_path\"}],\"id\":\"SQKpBnxSfvNEL3SheoiB3\"}],\"id\":\"vj-KJaHizliUryUDJfUMP\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"{\\\"file_path\\\":\\\"\\\",\\\"result\\\":0}\"}],\"id\":\"XiGihDhWBGtwS80xP4ihS\"}],\"id\":\"Es2p5Kd6clQQGHdGedcH_\"}],\"id\":\"_KAB1yWEtC_t3hdAWh1uc\"},{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_SPEECH2TEXT_COMPLETE\"}],\"id\":\"HlvIOtRtdd6aGFXzMwhup\"}],\"id\":\"KHy7Cywg3GNJPUrFLUosl\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"Fast recording-to-text conversion was completed\"}],\"id\":\"6wSEY9MeuKV0giTxthy45\"}],\"id\":\"4OVQlhjLTdfENJg3yUSmI\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"result; text;file_id\"}],\"id\":\"XLfTq7ADUtzYbOihUoXoQ\"}],\"id\":\"4JD0eipDXD_X33FvYrrOg\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"{\\\"file_id\\\":\\\"\\\",\\\"text\\\":\\\"\\\",\\\"result\\\":0}\"}],\"id\":\"UqmVTYQHsPq4VlBJga2rA\"}],\"id\":\"6d54gArrDZrlsBqr5v4b0\"}],\"id\":\"C5G3gFZlwJadtESj7WR_A\"},{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRECOGNITION_COMPLETE\"}],\"id\":\"Rca2kfKJkvn4fyU4Zgkml\"}],\"id\":\"WEd0-MsCyMZ9wPs5Z6MEB\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"Streaming speech-to-text conversion was completed\"}],\"id\":\"h_xmKFAuGRP6TQYFQad3h\"}],\"id\":\"NxcCNC1AT1sRc3KK0a4rP\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"result; file_path; text;file_id\"}],\"id\":\"BSn3CWlZZ5V81yH4JX74m\"}],\"id\":\"YkMkoNVd6dTN-bmft0wq6\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"{\\\"file_id\\\":\\\"\\\",\\\"file_path\\\":\\\",\\\"text\\\":\\\"\\\",\\\"result\\\":0}\"}],\"id\":\"2w_wO3z_klhVNBu2EZ3Ik\"}],\"id\":\"-2xDwrar6dfHtfkW-plNd\"}],\"id\":\"Qpvgf-z1ylThh6b3gBpbQ\"},{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRECOGNITION_IS_RUNNING\"}],\"id\":\"R8aWiCgF1XPY94GvM1NtS\"}],\"id\":\"R-zBiDKvB4SxU0uc4lrsi\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"A voice message is being converted into text in a streaming manner\"}],\"id\":\"qz46eaUF77dDXy8tGd9dw\"}],\"id\":\"jabeYageQSTB4k3MlHX5P\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"result; file_path; text;file_id\"}],\"id\":\"fQAqD5l99XTJft2gzs_G7\"}],\"id\":\"NC_ezPInVwlbfg4pWYgHH\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"{\\\"file_id\\\":\\\"\\\",\\\"file_path\\\":\\\",\\\"text\\\":\\\"\\\",\\\"result\\\":0}\"}],\"id\":\"07ZZVUfUWfFnSYV4Ew18t\"}],\"id\":\"hZmimJl00P0wJg4UWLHbV\"}],\"id\":\"PY0VBR-WTMeLUcF4JFGcI\"},{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_TEXT2SPEECH_COMPLETE\"}],\"id\":\"MweIORbMdV5stEaQNOBZn\"}],\"id\":\"GWk_ZdUGDSNv2JNNKNkSN\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"Text-to-speech conversion was completed\"}],\"id\":\"_bdLrvTObihyvALD5Gtvz\"}],\"id\":\"gWYzKBe6b3G4R2gFWROsb\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"result; text;file_id\"}],\"id\":\"WuhC9VOC1E2j2htyk4sws\"}],\"id\":\"ZQJUmtng_mSuH84aw1LbZ\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"{\\\"file_id\\\":\\\"\\\",\\\"text\\\":\\\"\\\",\\\"result\\\":0}\"}],\"id\":\"uLD_5VraMmtSmJoMUtHKi\"}],\"id\":\"mt37b54dFlKPHDdF06zb5\"}],\"id\":\"PdyjXYWa1_gadmXmSPC8H\"},{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_TRANSLATE_TEXT_COMPLETE\"}],\"id\":\"oHKKTXAMNtkL0K6wt3la0\"}],\"id\":\"LAKR3KMxFKjNPrn0VGCXI\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"Text translation was completed\"}],\"id\":\"D_rOTKtopIEQaFmFv3lZo\"}],\"id\":\"P17gj0hgGGUf_xFqD57gP\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"result; text;file_id\"}],\"id\":\"WUa7EkKqXv_woDS6-sosu\"}],\"id\":\"FbGdkhywYi9eT6LJI5sDH\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"{\\\"file_id\\\":\\\"\\\",\\\"text\\\":\\\"\\\",\\\"result\\\":0}\"}],\"id\":\"aS6PVkEdWGq6ehc0E3RFk\"}],\"id\":\"CMJqU7KyeQyTXwePVZ63L\"}],\"id\":\"vbWjQeg5LTQtG8L1OvTdO\"}],\"id\":\"WhY6riQwZv5LhqRJYjuUn\",\"widths\":[21,23,19,37],\"widthMode\":\"percentage\"},{\"type\":\"p\",\"children\":[{\"text\":\"\"}],\"id\":\"onRKxpPuEXUI0EW4o1fQr\"}]"}},"51125":{"categoryId":607,"weight":60,"type":"page","extension":"","pid":18319,"id":51125,"lang":"en","title":"Speech-to-Text Service","pdfUrl":"","docType":"default","children":[],"firstReleaseTime":"2022-10-28 01:22:51","recentReleaseTime":"2022-10-28 01:22:51","content":{"title":"Speech-to-Text Service","body":"
This document describes how to integrate with and debug GME client APIs for the voice messaging and speech-to-text services for Windows.

Key Considerations for Using GME

GME provides the real-time voice and voice messaging and speech-to-text services, which all depend on core APIs such as Init and Poll.

Notes

You have created a GME application and obtained the SDK AppID and key. For more information, see Activating Services.
You have activated GME real-time voice and voice messaging and speech-to-text services. For more information, see Activating Services.
Configure your project before using GME; otherwise, the SDK will not take effect.
After a GME API is called successfully, QAVError.OK will be returned with the value being 0.
GME APIs should be called in the same thread.
The Poll API should be called periodically for GME to trigger event callbacks.
For detailed error code, see Error Codes.
Note:
There is a default call rate limit for speech-to-text APIs. For more information on how calls are billed within the limit, see Purchase Guide. If you want to increase the limit or learn more about how excessive calls are billed, submit a ticket.
Non-streaming speech-to-text API SpeechToText(): There can be up to 10 concurrent requests per account.
Streaming speech-to-text API StartRecordingWithStreamingRecognition(): There can be up to 50 concurrent requests per account.
Real-time streaming speech-to-text API StartRealTimeASR(): There can be up to 50 concurrent requests per account.

Integrating the SDK

Directions

Key processes involved in SDK integration are as follows:

\"\"



C++ classes

Class
Description
ITMGContext
Key APIs
ITMGPTT
Voice messaging and speech-to-text APIs

Key APIs

API
Description
Init
Initializes GME
Poll
Triggers event callback
Pause
Pauses the system
Resume
Resumes the system
Uninit
Uninitializes GME

Importing the header file

#include "auth_buffer.h"
#include "tmg_sdk.h"
#include "AdvanceHeaders/tmg_sdk_adv.h"
#include <vector>

Callback

Setting callback sample

// When initializing the SDK
m_pTmgContext = ITMGContextGetInstance();
m_pTmgContext->SetTMGDelegate(this);

// In the destructor
CTMGSDK_For_AudioDlg::~CTMGSDK_For_AudioDlg()
{
ITMGContextGetInstance()->SetTMGDelegate(NULL);
}


Message delivery

The API class uses the Delegate method to send callback notifications to the application. ITMG_MAIN_EVENT_TYPE indicates the message type. The data on Windows is in json string format. For the key-value pairs, please see the relevant documentation.
// Declaration in the header file
virtual void OnEvent(ITMG_MAIN_EVENT_TYPE eventType,const char* data);
// Sample code
void CTMGSDK_For_AudioDlg::OnEvent(ITMG_MAIN_EVENT_TYPE eventType, const char* data)
{
switch(eventType)
{
case ITMG_MAIN_EVENT_TYPE_XXXX_XXXX:
{
// Process the callback
}
break;
}
}

Getting singleton

The GME SDK is provided in the form of a singleton, all calls begin with ITMGContext, and callbacks are passed to the application through ITMGDelegate, which should be configured first.

Sample code

ITMGContext* m_pTmgContext;
m_pTmgContext->Init(AppID, OpenID);

Initializing the SDK

You need to initialize the SDK through the Init API before you can use the real-time voice, voice message, and speech-to-text services. The Init API must be called in the same thread as other APIs. We recommend you call all APIs in the main thread.

API prototype

ITMGContext virtual int Init(const char* sdkAppId, const char* openId)
Parameter
Type
Description
sdkAppId
const char*
AppID provided in the GME console, which can be obtained as instructed in Activating Services.
openID
const char*
openID can only be in Int64 type, which is passed in after being converted to a const char*. You can customize its rules, and it must be unique in the application. To pass in openID as a string, submit a ticket for application.

Returned values

Returned Value
Description
AV_OK = 0
Initialized SDK successfully.
AV_ERR_SDK_NOT_FULL_UPDATE=7015
Checks whether the SDK file is complete. It is recommended to delete it and then import the SDK again.
Notes on 7015 error code
The 7015 error code is judged by md5. If this error is reported during integration, please check the integrity and version of the SDK file as prompted.
The returned value AV_ERR_SDK_NOT_FULL_UPDATE is only a reminder but will not cause an initialization failure.
Due to the third-party reinforcement, Unity packaging mechanism and other factors, the md5 of the library file will be affected, resulting in misjudgment. Please ignore this error in the logic for official release, and try to avoid displaying it in the UI.

Sample code

#define SDKAPPID3RD "14000xxxxxx"
cosnt char* openId="10001";
ITMGContext* context = ITMGContextGetInstance();
context->Init(SDKAPPID3RD, openId);

Triggering event callback

Event callbacks can be triggered by periodically calling the Poll API in update. Poll is the message pump of GME, and the Poll API should be called periodically for GME to trigger event callbacks; otherwise, the entire SDK service will run exceptionally.\nYou can refer to the EnginePollHelper.cpp file in the demo.
Note:
The Poll API must be called periodically and in the main thread to avoid abnormal API callbacks.

API prototype

class ITMGContext {
protected:
virtual ~ITMGContext() {}

public:
virtual void Poll()= 0;
}

Sample code

void TMGTestScene::update(float delta)
{
ITMGContextGetInstance()->Poll();
}

Pausing the system

When a Pause event occurs in the system, the engine should also be notified for pause. If you do not need the background to play back the audio in the room, please call Pause API to pause the GME service.

API prototype

ITMGContext int Pause()

Resuming the system

When a Resume event occurs in the system, the engine should also be notified for resumption. The Resume API only supports resuming voice chat.

API prototype

ITMGContext int Resume()


Uninitializing SDK

This API is used to uninitialize the SDK to make it uninitialized. If the game business account is bound to openid, switching game account requires uninitializing GME and then using the new openid to initialize again.

API prototype

ITMGContext int Uninit()

Voice Messaging and Speech-to-Text Services

Note:
The speech-to-text service consists of fast recording-to-text conversion and streaming speech-to-text conversion.
You do not need to enter a voice chat room when using the voice message service.
The maximum recording duration of a voice message is 58 seconds by default, and the minimum recording duration cannot be less than 1 second. If you want to customize the recording duration, for example, to modify the maximum recording duration to 10 seconds, call the SetMaxMessageLength API to set it after initialization.

\"\"



Flowchart for using the speech-to-text service


\"\"


API
Description
GenAuthBuffer
Generates the local authentication key
ApplyPTTAuthbuffer
Initializes authentication
SetMaxMessageLength
Specifies the maximum length of voice message

Generating the local authentication key

Generate AuthBuffer for encryption and authentication of relevant features. For release in the production environment, please use the backend deployment key as detailed in Authentication Key.

API prototype

int QAVSDK_AuthBuffer_GenAuthBuffer(unsigned int dwSdkAppID, const char* strRoomID, const char* strOpenID,
const char* strKey, unsigned char* strAuthBuffer, unsigned int bufferLength);
Parameter
Type
Description
dwSdkAppID
int
AppId from the Tencent Cloud console.
strRoomID
const char*
Enter null or an empty string
strOpenID
const char*
User ID, which is the same as openID during initialization.
strKey
const char*
Permission key from the Tencent Cloud console.
strAuthBuffer
const char*
Returned authbuff.
bufferLength
int
Length of the authbuff passed in. 500 is recommended.

Application authentication

After the authentication information is generated, the authentication is assigned to the SDK.

API prototype

ITMGPTT virtual int ApplyPTTAuthbuffer(const char* authBuffer, int authBufferLen)
Parameter
Type
Description
authBuffer
const char*
Authentication
authBufferLen
int
Authentication length

Sample code

ITMGContextGetInstance()->GetPTT()->ApplyPTTAuthbuffer(authBuffer,authBufferLen);

Specifying the maximum duration of voice message

This API is used to specify the maximum duration of a voice message, which can be up to 58 seconds.

API prototype

ITMGPTT virtual int SetMaxMessageLength(int msTime)
Parameter
Type
Description
msTime
int
Audio duration in ms. Value range: 1000 < msTime <= 58000

Sample code

int msTime = 10000;
ITMGContextGetInstance()->GetPTT()->SetMaxMessageLength(msTime);

Streaming Speech Recognition

Voice message and speech-to-text APIs

API
Description
StartRecordingWithStreamingRecognition
Starts streaming recording
StopRecording
Stops recording


Starting streaming speech recognition

This API is used to start streaming speech recognition. Text obtained from speech-to-text conversion will be returned in real time in its callback. It can specify a language for recognition or translate the information recognized in speech into a specified language and return the translation. To stop recording, call Stop recording.

API prototype

ITMGPTT virtual int StartRecordingWithStreamingRecognition(const char* filePath)
ITMGPTT virtual int StartRecordingWithStreamingRecognition(const char* filePath,const char* translateLanguage,const char* translateLanguage)
Parameter
Type
Description
filePath
const char*
Path of stored audio file
speechLanguage
const char*
The language in which the audio file is to be converted to text. For parameters, see Language Parameter Reference List.
translateLanguage
const char*
The language in which the audio file is to be translated to text. For parameters, see Language Parameter Reference List.

Sample code

ITMGContextGetInstance()->GetPTT()->StartRecordingWithStreamingRecognition(filePath,"cmn-Hans-CN","cmn-Hans-CN");
Note:
Translation incurs additional fees. For more information, see Purchase Guide.

Callback for streaming speech recognition

After streaming speech recognition is started, you need to listen on callback messages in the OnEvent notification, which is as detailed below:
ITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRECOGNITION_COMPLETE returns text after the recording is stopped and the recognition is completed, which is equivalent to returning the recognized text after a paragraph of speech.
ITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRECOGNITION_IS_RUNNING returns the recognized text in real-time during the recording, which is equivalent to returning the recognized text while speaking.
The event message will be identified in the OnEvent notification based on the actual needs. The passed parameters include the following four messages.
Message Name
Description
result
Return code indicating whether streaming speech recognition is successful
text
Text converted from speech
file_path
Local path of stored recording file
file_id
Backend URL address of recording file, which will be retained for 90 days
Note:
The file_id is empty when the 'ITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRecognition_IS_RUNNING' message is listened.

Error codes

Error Code
Description
Suggested Solution
32775
Streaming speech-to-text conversion failed, but recording succeeded.
Call the UploadRecordedFile API to upload the recording file and then call the SpeechToText API to perform speech-to-text conversion.
32777
Streaming speech-to-text conversion failed, but recording and upload succeeded.
The message returned contains a backend URL after successful upload. Call the SpeechToText API to perform speech-to-text conversion.
32786
Streaming speech-to-text conversion failed.
During streaming recording, wait for the execution result of the streaming recording API to return.
32787
Speech-to-text conversion succeeded, but the text translation service was not activated.
Activate the text translation service in the console.
32788
Speech-to-text conversion succeeded, but the language parameter of the text translation service was invalid.
Check the parameter passed in.
If the error code 4098 is reported, see FAQs for solutions.

Sample code

void TMGTestScene::OnEvent(ITMG_MAIN_EVENT_TYPE eventType,const char* data){
switch (eventType) {
case ITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRECOGNITION_COMPLETE:
{
HandleSTREAM2TEXTComplete(data,true);
break;
}
...
case ITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRECOGNITION_IS_RUNNING:
{
HandleSTREAM2TEXTComplete(data, false);
break;
}
}
}

void CTMGSDK_For_AudioDlg::HandleSTREAM2TEXTComplete(const char* data, bool isComplete)
{
std::string strText = "STREAM2TEXT: ret=";
strText += data;
m_EditMonitor.SetWindowText(MByteToWChar(strText).c_str());
Json::Reader reader;
Json::Value root;
bool parseRet = reader.parse(data, root);
if (!parseRet) {
::SetWindowText(m_EditInfo.GetSafeHwnd(),MByteToWChar(std::string("parse result Json error")).c_str());
}
else
{
if (isComplete) {
::SetWindowText(m_EditUpload.GetSafeHwnd(), MByteToWChar(root["file_id"].asString()).c_str());
}
else {
std::string isruning = "STREAMINGRECOGNITION_IS_RUNNING";
::SetWindowText(m_EditUpload.GetSafeHwnd(), MByteToWChar(isruning).c_str());
}
}
}

Voice Message Recording

The recording process is as follows: start recording > stop recording > return recording callback > start the next recording.

Voice message and speech-to-text APIs

API
Description
StartRecording
Starts recording
PauseRecording
Pauses recording
ResumeRecording
Resumes recording
StopRecording
Stops recording
CancelRecording
Cancels recording

Starting recording

This API is used to start recording.

API prototype

ITMGPTT virtual int StartRecording(const char* fileDir)
Parameter
Type
Description
fileDir
const char*
Path of stored audio file

Sample code

char buffer[256]={0};
snprintf(buffer, sizeof(buffer), "%sunreal_ptt_local.file", getFilePath().c_str());
ITMGContextGetInstance()->GetPTT()->StartRecording(buffer);

Stopping recording

This API is used to stop recording. It is async, and a callback for recording completion will be returned after recording stops. A recording file will be available only after recording succeeds.

API prototype

ITMGPTT virtual int StopRecording()

Sample code

ITMGContextGetInstance()->GetPTT()->StopRecording();

Callback for recording start

The recording start result will be returned through the callback.
To stop recording, call StopRecording. The callback for recording start will be returned after the recording is stopped.
Parameter
Type
Description
result
int32
0: recording is completed
filepath
FString
Path of stored recording file, which must be accessible and cannot be the fileid

Error codes

Error Code Value
Cause
Suggested Solution
4097
Parameter is empty.
Check whether the API parameters in the code are correct.
4098
Initialization error.
Check whether the device is being used, whether the permissions are normal, and whether the initialization is normal.
4099
Recording is in progress.
Ensure that the SDK recording feature is used at the right time.
4100
Audio data is not captured.
Check whether the mic is working properly.
4101
An error occurred while accessing the file during recording.
Ensure the existence of the file and the validity of the file path.
4102
The mic is not authorized.
Mic permission is required for using the SDK. To add the permission, please see the SDK project configuration document for the corresponding engine or platform.
4103
The recording duration is too short.
The recording duration should be in ms and longer than 1,000 ms.
4104
No recording operation is started.
Check whether the recording starting API has been called.

Sample code

void TMGTestScene::OnEvent(ITMG_MAIN_EVENT_TYPE eventType,const char* data){
switch (eventType) {
case ITMG_MAIN_EVENT_TYPE_ENTER_ROOM:
{
// Process
break;
}
...
case ITMG_MAIN_EVNET_TYPE_PTT_RECORD_COMPLETE:
{
// Process
break;
}
}
}

Pausing recording

This API is used to pause recording. If you want to resume recording, please call the ResumeRecording API.

API prototype

ITMGPTT virtual int PauseRecording()

Sample code

ITMGContextGetInstance()->GetPTT()->PauseRecording();

Resuming recording

This API is used to resume recording.

API prototype

ITMGPTT virtual int ResumeRecording()

Sample code

ITMGContextGetInstance()->GetPTT()->ResumeRecording();

Canceling recording

This API is used to cancel recording. There is no callback after cancellation.

API prototype

ITMGPTT virtual int CancelRecording()

Sample code

ITMGContextGetInstance()->GetPTT()->CancelRecording();

Voice Message Upload, Download, and Playback

API
Description
UploadRecordedFile
Uploads the audio file
DownloadRecordedFile
Downloads the audio file
PlayRecordedFile
Plays back the audio file
StopPlayFile
Stops playing back the audio file
GetFileSize
Gets audio file size
GetVoiceFileDuration
Gets the audio file duration

Uploading an audio file

This API is used to upload an audio file.

API prototype

ITMGPTT virtual int UploadRecordedFile(const char* filePath)
Parameter
Type
Description
filePath
const char*
Path of uploaded audio file, which is a local path

Sample code

ITMGContextGetInstance()->GetPTT()->UploadRecordedFile(filePath);

Callback for audio file upload completion

After the audio file is uploaded, the event message ITMG_MAIN_EVNET_TYPE_PTT_UPLOAD_COMPLETE will be returned, which will be identified in the OnEvent function.\nThe passed parameters include result, file_path, and file_id.
Parameter
Type
Description
result
int32
0: recording is completed
filepath
FString
Path of stored recording file
fileid
FString
File URL path

Error codes

Error Code Value
Cause
Suggested Solution
8193
An error occurred while accessing the file during upload.
Ensure the existence of the file and the validity of the file path.
8194
Signature verification failed.
Check whether the authentication key is correct and whether the voice message and speech-to-text feature is initialized.
8195
A network error occurred.
Check whether the device can access the internet.
8196
The network failed while getting the upload parameters.
Check whether the authentication is correct and whether the device can access the internet.
8197
The packet returned during the process of getting the upload parameters is empty.
Check whether the authentication is correct and whether the device network can normally access the internet.
8198
Failed to decode the packet returned during the process of getting the upload parameters.
Check whether the authentication is correct and whether the device can access the internet.
8200
No appinfo is set.
Check whether the apply API is called or whether the input parameters are empty.

Sample code

void TMGTestScene::OnEvent(ITMG_MAIN_EVENT_TYPE eventType,const char* data){
switch (eventType) {
case ITMG_MAIN_EVENT_TYPE_ENTER_ROOM:
{
// Process
break;
}
...
case ITMG_MAIN_EVNET_TYPE_PTT_UPLOAD_COMPLETE:
{
// Process
break;
}
}
}

Downloading the audio file

This API is used to download an audio file.

API prototype

ITMGPTT virtual int DownloadRecordedFile(const char* fileId, const char* filePath)
Parameter
Type
Description
fileId
const char*
URL path of file
filePath
const char*
Local path of saved file

Sample code

ITMGContextGetInstance()->GetPTT()->DownloadRecordedFile(fileID,filePath);

Callback for audio file download completion

After the audio file is downloaded, the event message ITMG_MAIN_EVNET_TYPE_PTT_DOWNLOAD_COMPLETE will be returned, which will be identified in the OnEvent function.\nThe passed parameters include result, file_path, and file_id.
Parameter
Type
Description
result
int32
0: recording is completed
filepath
FString
Path of stored recording file
fileid
FString
URL path of file, which will be retained on the server for 90 days

Error codes

Error Code Value
Cause
Suggested Solution
12289
An error occurred while accessing the file during download.
Check whether the file path is valid.
12290
Signature verification failed.
Check whether the authentication key is correct and whether the voice message and speech-to-text feature is initialized.
12291
Network storage system exception.
The server failed to get the audio file. Check whether the API parameter fileid is correct, whether the network is normal, and whether the file exists in COS.
12292
Server file system error.
Check whether the device can access the internet and whether the file exists on the server.
12293
The HTTP network failed during the process of getting the download parameters.
Check whether the device can access the internet.
12294
The packet returned during the process of getting the download parameters is empty.
Check whether the device can access the internet.
12295
Failed to decode the packet returned during the process of getting the download parameters.
Check whether the device can access the internet.
12297
No appinfo is set.
Check whether the authentication key is correct and whether the voice message and speech-to-text feature is initialized.

Sample code

void TMGTestScene::OnEvent(ITMG_MAIN_EVENT_TYPE eventType,const char* data){
switch (eventType) {
case ITMG_MAIN_EVENT_TYPE_ENTER_ROOM:
{
// Process
break;
}

Playing back audio

This API is used to play back audio.

API prototype

ITMGPTT virtual int PlayRecordedFile(const char* filePath)
ITMGPTT virtual int PlayRecordedFile(const char* filePath, nt voiceType)
Parameter
Type
Description
filePath
const char*
Local audio file path
voicetype
int
Voice changer type. For more information, see Voice Changing Effects.

Error codes

Error Code Value
Cause
Suggested Solution
20485
Playback is not started.
Ensure the existence of the file and the validity of the file path.

Sample code

ITMGContextGetInstance()->GetPTT()->PlayRecordedFile(filePath);

Callback for audio playback

After the audio is played back, the event message ITMG_MAIN_EVNET_TYPE_PTT_PLAY_COMPLETE will be returned, which will be identified in the OnEvent function.\nThe passed parameter includes result and file_path.
Parameter
Type
Description
code
int
0: playback is completed
filepath
FString
Path of stored recording file

Error codes

Error Code Value
Cause
Suggested Solution
20481
Initialization error.
Check whether the device is being used, whether the permissions are normal, and whether the initialization is normal.
20482
During playback, the client tried to interrupt and play back the next one but failed (which should succeed normally).
Check whether the code logic is correct.
20483
Parameter is empty.
Check whether the API parameters in the code are correct.
20484
Internal error.
An error occurred while initializing the player. This error code is generally caused by failure in decoding, and the error should be located with the aid of logs.

Sample code

void TMGTestScene::OnEvent(ITMG_MAIN_EVENT_TYPE eventType,const char* data){
switch (eventType) {
...
else if (eventType == ITMG_MAIN_EVNET_TYPE_PTT_PLAY_COMPLETE) {
int32 result = JsonObject->GetIntegerField(TEXT("result"));
FString filepath = JsonObject->GetStringField(TEXT("file_path"));
onPttPlayFileCompleted(result, filepath);
}
}
}

Stopping audio playback

This API is used to stop audio playback. There will be a callback for playback completion when the playback stops.

API prototype

ITMGPTT virtual int StopPlayFile()

Sample code

ITMGContextGetInstance()->GetPTT()->StopPlayFile();

Getting audio file size

This API is used to get the size of an audio file.

API prototype

ITMGPTT virtual int GetFileSize(const char* filePath)
Parameter
Type
Description
filePath
const char*
Path of audio file, which is a local path

Sample code

ITMGContextGetInstance()->GetPTT()->GetFileSize(filePath);

Getting audio file duration

This API is used to get the duration of an audio file in milliseconds.

API prototype

ITMGPTT virtual int GetVoiceFileDuration(const char* filePath)
Parameter
Type
Description
filePath
const char*
Path of audio file, which is a local path

Sample code

ITMGContextGetInstance()->GetPTT()->GetVoiceFileDuration(filePath);

Fast Recording-to-Text Conversion

API
Description
SpeechToText
Converts speech to text

Converting audio file to text

This API is used to convert a specified audio file to text.

API prototype

ITMGPTT virtual void SpeechToText(const char* fileID)
Parameter
Type
Description
fileID
const char*
Audio file URL

Sample code

ITMGContextGetInstance()->GetPTT()->SpeechToText(fileID);

Translating audio file into text in specified language

This API can specify a language for recognition or translate the information recognized in speech into a specified language and return the translation.
Note:
Translation incurs additional fees. For more information, see Purchase Guide.

API prototype

ITMGPTT virtual int SpeechToText(const char* fileID,const char* speechLanguage)
ITMGPTT virtual int SpeechToText(const char* fileID,const char* speechLanguage,const char* translateLanguage)
Parameter
Type
Description
fileID
const char*
The URL of the audio file, which will be retained on the server for 90 days.
speechLanguage
const char*
The language in which the audio file is to be converted to text. For parameters, see Language Parameter Reference List.
translatelanguage
const char*
The language in which the audio file is to be translated to text. For parameters, see Language Parameter Reference List.

Sample code

ITMGContextGetInstance()->GetPTT()->SpeechToText(filePath,"cmn-Hans-CN","cmn-Hans-CN");

Callback for recognition

After the specified audio file is converted to text, the event message ITMG_MAIN_EVNET_TYPE_PTT_SPEECH2TEXT_COMPLETE will be returned, which will be identified in the OnEvent function.\nThe passed parameters include result, file_path and text (recognized text).
Parameter
Type
Description
result
int32
0: recording is completed
fileid
FString
URL of recording file, which will be retained on the server for 90 days
text
FString
Converted text

Error codes

Error Code Value
Cause
Suggested Solution
32769
An internal error occurred.
Analyze logs, get the actual error code returned from the backend to the client, and ask backend personnel for assistance.
32770
Network failed.
Check whether the device can access the internet.
32772
Failed to decode the returned packet.
Analyze logs, get the actual error code returned from the backend to the client, and ask backend personnel for assistance.
32774
No appinfo is set.
Check whether the authentication key is correct and whether the voice messaging and speech-to-text feature is initialized.
32776
authbuffer check failed.
Check whether authbuffer is correct.
32784
Incorrect speech-to-text conversion parameter.
Check whether the API parameter fileid in the code is empty.
32785
Speech-to-text translation returned an error.
Error with the backend of voice messaging and speech-to-text feature. Analyze logs, get the actual error code returned from the backend to the client, and ask backend personnel for assistance.
32787
Speech-to-text conversion succeeded, but the text translation service was not activated.
Activate the text translation service in the console.
32788
Speech-to-text conversion succeeded, but the language parameter of the text translation service was invalid.
Check the parameter passed in.

Sample code

void TMGTestScene::OnEvent(ITMG_MAIN_EVENT_TYPE eventType,const char* data){
switch (eventType) {
case ITMG_MAIN_EVENT_TYPE_ENTER_ROOM:
{
// Process
break;
}
...
case ITMG_MAIN_EVNET_TYPE_PTT_SPEECH2TEXT_COMPLETE:
{
// Process
break;
}
}
}

Voice Message Volume Level APIs

API
Description
GetMicLevel
Gets real-time mic volume level
SetMicVolume
Sets recording volume level
GetMicVolume
Gets recording volume level
GetSpeakerLevel
Gets real-time speaker volume
SetSpeakerVolume
Sets playback volume level
GetSpeakerVolume
Gets playback volume level

Getting the real-time mic volume of voice message

This API is used to get the real-time mic volume. An int-type value will be returned. Value range: 0-200.

API prototype

ITMGPTT virtual int GetMicLevel()

Sample code

ITMGContext.GetInstance(this).GetPTT().GetMicLevel();

Setting the recording volume of voice message

This API is used to set the recording volume of voice message. Value range: 0-200.

API prototype

ITMGPTT virtual int SetMicVolume(int vol)

Sample code

ITMGContextGetInstance()->GetPTT()->SetMicVolume(100);

Getting the recording volume of voice message

This API is used to get the recording volume of voice message. An int-type value will be returned. Value range: 0-200.

API prototype

ITMGPTT virtual int GetMicVolume()

Sample code

ITMGContextGetInstance()->GetPTT()->GetMicVolume();

Getting the real-time speaker volume of voice message

This API is used to get the real-time speaker volume. An int-type value will be returned. Value range: 0-200.

API prototype

ITMGPTT virtual int GetSpeakerLevel()

Sample code

ITMGContextGetInstance()->GetPTT()->GetSpeakerLevel();

Setting the playback volume of voice message

This API is used to set the playback volume of voice message. Value range: 0-200.

API prototype

ITMGPTT virtual int SetSpeakerVolume(int vol)

Sample code

ITMGContextGetInstance()->GetPTT()->SetSpeakerVolume(100);

Getting the playback volume of voice message

This API is used to get the playback volume of voice message. An int-type value will be returned. Value range: 0-200.

API prototype

ITMGPTT virtual int GetSpeakerVolume()

Sample code

ITMGContextGetInstance()->GetPTT()->GetSpeakerVolume();

Advanced APIs

Getting version number

This API is used to get the SDK version number for SDK usage analysis.

API prototype

ITMGContext virtual const char* GetSDKVersion()

Sample code

ITMGContextGetInstance()->GetSDKVersion();

Setting log printing level

This API is used to set the level of logs to be printed, and needs to be called before the initialization. It is recommended to keep the default level.

API prototype

ITMGContext int SetLogLevel(ITMG_LOG_LEVEL levelWrite, ITMG_LOG_LEVEL levelPrint)

Parameter description

Parameter
Type
Description
levelWrite
ITMG_LOG_LEVEL
Sets the level of logs to be written. TMG_LOG_LEVEL_NONE indicates not to write. Default value: TMG_LOG_LEVEL_INFO
levelPrint
ITMG_LOG_LEVEL
Sets the level of logs to be printed. TMG_LOG_LEVEL_NONE indicates not to print. Default value: TMG_LOG_LEVEL_ERROR
ITMG_LOG_LEVEL description:
ITMG_LOG_LEVEL
Description
TMG_LOG_LEVEL_NONE
Does not print logs
TMG_LOG_LEVEL_ERROR
Prints error logs (default)
TMG_LOG_LEVEL_INFO
Prints info logs
TMG_LOG_LEVEL_DEBUG
Prints debug logs
TMG_LOG_LEVEL_VERBOSE
Prints verbose logs

Sample code

ITMGContextGetInstance()->SetLogLevel(TMG_LOG_LEVEL_INFO,TMG_LOG_LEVEL_INFO);

Setting the log printing path

This API is used to set the log printing path. The default path is as follows. It needs to be called before Init.
OS
Path
Windows
%appdata%\\Tencent\\GME\\ProcessName
iOS
Application/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/Documents
Android
/sdcard/Android/data/xxx.xxx.xxx/files
Mac
/Users/username/Library/Containers/xxx.xxx.xxx/Data/Documents

API prototype

ITMGContext virtual int SetLogPath(const char* logDir)
Parameter
Type
Description
logDir
const char*
Path

Sample code

cosnt char* logDir = ""// Set a path by yourself
ITMGContext* context = ITMGContextGetInstance();
context->SetLogPath(logDir);

Callback Messages

Message
Description
Parameter
Sample
ITMG_MAIN_EVENT_TYPE_ENTER_ROOM
A member entered the audio room
result; error_info
{"error_info":"","result":0}
ITMG_MAIN_EVENT_TYPE_EXIT_ROOM
A member exited the audio room
result; error_info
{"error_info":"","result":0}
ITMG_MAIN_EVENT_TYPE_ROOM_DISCONNECT
The room was disconnected for network or other reasons
result; error_info
{"error_info":"waiting timeout, please check your network","result":0}
ITMG_MAIN_EVNET_TYPE_USER_UPDATE
Room members were updated
user_list; event_id
{"event_id":1,"user_list":["0"]}
ITMG_MAIN_EVENT_TYPE_RECONNECT_START
The reconnection to the room started
result; error_info
{"error_info":"","result":0}
ITMG_MAIN_EVENT_TYPE_RECONNECT_SUCCESS
The reconnection to the room succeeded
result; error_info
{"error_info":"","result":0}
ITMG_MAIN_EVENT_TYPE_SWITCH_ROOM
The room was quickly switched
result; error_info
{"error_info":"","result":0}
ITMG_MAIN_EVENT_TYPE_CHANGE_ROOM_TYPE
The room status was changed
result; error_info; sub_event_type; new_room_type
{"error_info":"","new_room_type":0,"result":0}
ITMG_MAIN_EVENT_TYPE_ROOM_SHARING_START
Cross-room mic connect started
result;
{"result":0}
ITMG_MAIN_EVENT_TYPE_ROOM_SHARING_STOP
Cross-room mic connect stopped
result;
{"result":0}
ITMG_MAIN_EVENT_TYPE_SPEAKER_DEFAULT_DEVICE_CHANGED
The default speaker device was changed
result; error_info
{"deviceID":"{0.0.0.00000000}.{a4f1e8be-49fa-43e2-b8cf-dd00542b47ae}","deviceName":"Speaker (Realtek High Definition Audio)","error_info":"","isNewDevice":true,"isUsedDevice":false,"result":0}
ITMG_MAIN_EVENT_TYPE_SPEAKER_NEW_DEVICE
A new speaker device was added
result; error_info
{"deviceID":"{0.0.0.00000000}.{a4f1e8be-49fa-43e2-b8cf-dd00542b47ae}","deviceName":"Speaker (Realtek High Definition Audio)","error_info":"","isNewDevice":true,"isUsedDevice":false,"result":0}
ITMG_MAIN_EVENT_TYPE_SPEAKER_LOST_DEVICE
A speaker device was lost
result; error_info
{"deviceID":"{0.0.0.00000000}.{a4f1e8be-49fa-43e2-b8cf-dd00542b47ae}","deviceName":"Speaker (Realtek High Definition Audio)","error_info":"","isNewDevice":false,"isUsedDevice":false,"result":0}
ITMG_MAIN_EVENT_TYPE_MIC_NEW_DEVICE
A new mic device was added
result; error_info
{"deviceID":"{0.0.1.00000000}.{5fdf1a5b-f42d-4ab2-890a-7e454093f229}","deviceName":"Mic (Realtek High Definition Audio)","error_info":"","isNewDevice":true,"isUsedDevice":true,"result":0}
ITMG_MAIN_EVENT_TYPE_MIC_LOST_DEVICE
A mic device was lost
result; error_info
{"deviceID":"{0.0.1.00000000}.{5fdf1a5b-f42d-4ab2-890a-7e454093f229}","deviceName":"Mic (Realtek High Definition Audio)","error_info":"","isNewDevice":false,"isUsedDevice":true,"result":0}
ITMG_MAIN_EVENT_TYPE_MIC_DEFAULT_DEVICE_CHANGED
The default mic device was changed
result; error_info
{"deviceID":"{0.0.1.00000000}.{5fdf1a5b-f42d-4ab2-890a-7e454093f229}","deviceName":"Mic (Realtek High Definition Audio)","error_info":"","isNewDevice":false,"isUsedDevice":true,"result":0}
ITMG_MAIN_EVENT_TYPE_CHANGE_ROOM_QUALITY
The room quality changed
weight; loss; delay
{"weight":5,"loss":0.1,"delay":1}
ITMG_MAIN_EVNET_TYPE_PTT_RECORD_COMPLETE
Voice message recording was completed
result; file_path
{"file_path":"","result":0}
ITMG_MAIN_EVNET_TYPE_PTT_UPLOAD_COMPLETE
Voice message upload was completed
result; file_path;file_id
{"file_id":"","file_path":"","result":0}
ITMG_MAIN_EVNET_TYPE_PTT_DOWNLOAD_COMPLETE
Voice message download was completed
result; file_path;file_id
{"file_id":"","file_path":"","result":0}
ITMG_MAIN_EVNET_TYPE_PTT_PLAY_COMPLETE
Voice message playback was completed
result; file_path
{"file_path":"","result":0}
ITMG_MAIN_EVNET_TYPE_PTT_SPEECH2TEXT_COMPLETE
Fast speech-to-text conversion was completed
result; text;file_id
{"file_id":"","text":"","result":0}
ITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRECOGNITION_COMPLETE
Streaming speech-to-text conversion was completed
result; file_path; text;file_id
{"file_id":"","file_path":","text":"","result":0}
ITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRECOGNITION_IS_RUNNING
Streaming speech-to-text conversion is in progress
result; file_path; text;file_id
{"file_id":"","file_path":","text":"","result":0}
ITMG_MAIN_EVNET_TYPE_PTT_TEXT2SPEECH_COMPLETE
Text-to-speech conversion was completed
result; text;file_id
{"file_id":"","text":"","result":0}
ITMG_MAIN_EVNET_TYPE_PTT_TRANSLATE_TEXT_COMPLETE
Text translation was completed
result; text;file_id
{"file_id":"","text":"","result":0}

","recentReleaseTime":"2024-01-18 15:11:45","slate":"[{\"id\":\"Z0M4uOAWauh8NyaNma7Rg\",\"children\":[{\"text\":\"This document describes how to integrate with and debug GME client APIs for the voice messaging and speech-to-text services for Windows.\"}],\"type\":\"p\"},{\"id\":\"5ydE0_TvZ1wVSW29V_QYD\",\"children\":[{\"text\":\"Key Considerations for Using GME\"}],\"nodeId\":\"key-considerations-for-using-gme\",\"type\":\"h2\"},{\"id\":\"G5KrBK288VjmcOEVpBf-L\",\"children\":[{\"text\":\"GME provides the real-time voice and voice messaging and speech-to-text services, which all depend on core APIs such as \"},{\"code\":1,\"text\":\"Init\"},{\"text\":\" and \"},{\"code\":1,\"text\":\"Poll\"},{\"text\":\".\"}],\"type\":\"p\"},{\"id\":\"-JlwZF-DV0NZ4aMIm_e5z\",\"children\":[{\"text\":\"Notes\"}],\"nodeId\":\"notes\",\"type\":\"h4\"},{\"id\":\"uIJpkFyvuWXSFIi8HIcuL\",\"children\":[{\"text\":\"You have created a GME application and obtained the SDK AppID and key. For more information, see \"},{\"id\":\"3__lAaJzv0MVcQY7C2btz\",\"children\":[{\"text\":\"Activating Services\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://intl.cloud.tencent.com/document/product/607/10782\",\"props\":{\"type\":\"link\",\"url\":\"https://intl.cloud.tencent.com/document/product/607/10782\"},\"type\":\"ref\"},{\"text\":\".\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"7a3y62q2xfDc1TW84Mqbb\",\"children\":[{\"text\":\"You have activated \"},{\"b\":1,\"text\":\"GME real-time voice and voice messaging and speech-to-text services\"},{\"text\":\". For more information, see \"},{\"id\":\"C9OwTDLcD_O2wgYJ8zKyK\",\"children\":[{\"text\":\"Activating Services\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://intl.cloud.tencent.com/document/product/607/10782\",\"props\":{\"type\":\"link\",\"url\":\"https://intl.cloud.tencent.com/document/product/607/10782\"},\"type\":\"ref\"},{\"text\":\".\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"aJg63nEUj5OlHk75Tvku6\",\"children\":[{\"text\":\"Configure your project before using GME; otherwise, the SDK will not take effect.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"vYSZT4E3RyWILNa3BsHgp\",\"children\":[{\"text\":\"After a GME API is called successfully, \"},{\"code\":1,\"text\":\"QAVError.OK\"},{\"text\":\" will be returned with the value being 0.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"YC74uh2T63GpnRoTOoGpO\",\"children\":[{\"text\":\"GME APIs should be called in the same thread.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"l8dKo_wZ77_7fnte9i5bZ\",\"children\":[{\"text\":\"The \"},{\"code\":1,\"text\":\"Poll\"},{\"text\":\" API should be called periodically for GME to trigger event callbacks.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"8VsTUhWT8vTd1xoRvrI53\",\"children\":[{\"text\":\"For detailed error code, see \"},{\"type\":\"ref\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/33223\"},\"children\":[{\"text\":\"Error Codes\"}],\"id\":\"Bxdi7LNSnj_K7DzCDn795\"},{\"text\":\".\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"uPOl7np1joR4PPN2KuvzD\",\"children\":[{\"id\":\"qtXhaCoev97bOiFdDoMKa\",\"children\":[{\"b\":1,\"color\":\"#04C8DC\",\"text\":\"Note: \"}],\"type\":\"p\"},{\"id\":\"IP76bMB02OfLtbVnkhShv\",\"children\":[{\"text\":\"There is a default call rate limit for speech-to-text APIs. For more information on how calls are billed within the limit, see \"},{\"id\":\"vJnzv_2dU_5SGsiD_nvCd\",\"children\":[{\"text\":\"Purchase Guide\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://intl.cloud.tencent.com/document/product/607/50009\",\"props\":{\"type\":\"link\",\"url\":\"https://intl.cloud.tencent.com/document/product/607/50009\"},\"type\":\"ref\"},{\"text\":\". If you want to increase the limit or learn more about how excessive calls are billed, \"},{\"id\":\"UC4iLC68Mhs3LgUK8CIHz\",\"children\":[{\"text\":\"submit a ticket\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://console.tencentcloud.com/workorder/category?level1_id=438&level2_id=445&source=0&data_title=%E6%B8%B8%E6%88%8F%E5%A4%9A%E5%AA%92%E4%BD%93%E5%BC%95%E6%93%8EGME&step=1\",\"props\":{\"type\":\"link\",\"url\":\"https://console.tencentcloud.com/workorder/category?level1_id=438&level2_id=445&source=0&data_title=%E6%B8%B8%E6%88%8F%E5%A4%9A%E5%AA%92%E4%BD%93%E5%BC%95%E6%93%8EGME&step=1\"},\"type\":\"ref\"},{\"text\":\".\"}],\"type\":\"p\"},{\"id\":\"fYBC0AduaBdMCiGjukSJS\",\"children\":[{\"text\":\"Non-streaming speech-to-text API \"},{\"b\":1,\"i\":1,\"text\":\"SpeechToText()\"},{\"text\":\": There can be up to 10 concurrent requests per account.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"2-CDwGQWS1QfyiaIyqBLZ\",\"children\":[{\"text\":\"Streaming speech-to-text API \"},{\"b\":1,\"i\":1,\"text\":\"StartRecordingWithStreamingRecognition()\"},{\"text\":\": There can be up to 50 concurrent requests per account.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"--AdrcVhoZKja1WriV_oi\",\"children\":[{\"text\":\"Real-time streaming speech-to-text API \"},{\"b\":1,\"i\":1,\"text\":\"StartRealTimeASR()\"},{\"text\":\": There can be up to 50 concurrent requests per account.\"}],\"start\":false,\"type\":\"uli\"}],\"hintType\":\"alert\",\"type\":\"hint\"},{\"id\":\"QA4nSyTpfzzSpAPy7erj9\",\"children\":[{\"text\":\"Integrating the SDK\"}],\"nodeId\":\"integrating-the-sdk\",\"type\":\"h2\"},{\"id\":\"501cV-NBXD3x2NHSCXw4N\",\"children\":[{\"text\":\"Directions\"}],\"nodeId\":\"directions\",\"type\":\"h3\"},{\"id\":\"fyR3WsTD4ys5FcHSrrGDx\",\"children\":[{\"text\":\"Key processes involved in SDK integration are as follows:\"}],\"type\":\"p\"},{\"type\":\"p\",\"children\":[{\"text\":\"\"},{\"id\":\"P84B2VO-B18_xiioEOomX\",\"alt\":\"\",\"children\":[{\"text\":\"\"}],\"inline\":true,\"type\":\"image\",\"url\":\"https://cloudcache.intl.tencent-cloud.com/cms/backend-cms/1e903f53b34711ee9fd6525400bb593a.jpeg\",\"naturalSize\":[1560,1030],\"size\":[798,526]},{\"text\":\"\"}],\"id\":\"UNgpB5jzGONvEk47VwbJs\"},{\"type\":\"oli\",\"children\":[{\"text\":\"\"},{\"type\":\"ref\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/51125?!editLang=en&!preview#Init\"},\"children\":[{\"text\":\"Initializing GME, API: Init\"}],\"id\":\"q_a5Yml9VNFTRBL-_wiUs\"},{\"text\":\"\"}],\"id\":\"IHKz5BPhu5UB86g8oxRNN\"},{\"type\":\"oli\",\"children\":[{\"text\":\"\"},{\"type\":\"ref\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/51125?!editLang=en&!preview#Poll\"},\"children\":[{\"text\":\"Calling Poll periodically to trigger event callbacks, API: Poll\"}],\"id\":\"yB4NFRz7zFteE82TIndOn\"},{\"text\":\"\"}],\"id\":\"b76VkQO0rf9XkcinrpN8x\"},{\"type\":\"oli\",\"children\":[{\"text\":\"\"},{\"type\":\"ref\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/51125?!editLang=en&!preview#ApplyPtt\"},\"children\":[{\"text\":\"Initializing authentication, API: ApplyPTTAuthbuffer\"}],\"id\":\"gIB7chueCCpnE96DrB1Av\"},{\"text\":\"\"}],\"id\":\"fWgOHmJpCkw3qAA8Ih5_A\"},{\"type\":\"oli\",\"children\":[{\"text\":\"\"},{\"type\":\"ref\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/51125?!editLang=en&!preview#StartRWSR\"},\"children\":[{\"text\":\"Starting streaming speech recognition, API: StartRecordingWithStreamingRecognition\"}],\"id\":\"wdBMYeqB4yC0LrZC-yjoI\"},{\"text\":\"\"}],\"id\":\"i935f9l3HAvq9Y-bllMfb\"},{\"type\":\"oli\",\"children\":[{\"text\":\"\"},{\"type\":\"ref\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/51125?!editLang=en&!preview#Stop\"},\"children\":[{\"text\":\"Stop recording, API: StopRecording\"}],\"id\":\"3csegeoTZyP4gICuUH2sG\"},{\"text\":\"\"}],\"id\":\"Ves4bJqoZjn9e8gCox0yP\"},{\"type\":\"oli\",\"children\":[{\"text\":\"\"},{\"type\":\"ref\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/51125?!editLang=en&!preview#UnInit\"},\"children\":[{\"text\":\"Uninitializing GME, API: UnInit\"}],\"id\":\"jYXcmSSzyfHUL50pgwZpL\"},{\"text\":\"\"}],\"id\":\"9EHWvPXf_9AXnbnrdTVSz\"},{\"id\":\"irpHXejufyiOU--wnVQ_n\",\"children\":[{\"text\":\"C++ classes\"}],\"nodeId\":\"c.2B.2B-classes\",\"type\":\"h3\"},{\"id\":\"K6fNfAG4LJ91imGOnigNu\",\"children\":[{\"id\":\"UTaMOL5y2Sr5Lk2qz3J_a\",\"children\":[{\"id\":\"o3l-k-ymPOwuM2Li3OKGH\",\"children\":[{\"id\":\"EXK-bspB9ttdxfiH90fhZ\",\"children\":[{\"text\":\"Class\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Z9H-EvLkseVnTk4K5vFAZ\",\"children\":[{\"id\":\"G6JmG0n9mOtLhH9Xjkc1-\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"0-rVI4q_LrnIdzsThMJjK\",\"children\":[{\"id\":\"Y3HFK2lFlw8vpaBfrRpUQ\",\"children\":[{\"id\":\"p70w7_fbKKukkEjxdkwFg\",\"children\":[{\"id\":\"f3R2FZYH7iBNs6ms1F5mE\",\"children\":[{\"text\":\"ITMGContext\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"xdgSraMKQ5d1zKZp0RTrr\",\"children\":[{\"id\":\"QJMjRIeVQMqZVRnoJ1K5V\",\"children\":[{\"id\":\"d6ISmDxiH4Bs_wakYsNMo\",\"children\":[{\"text\":\"Key APIs\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"-booBX0WHHMAlzNIXBSnS\",\"children\":[{\"id\":\"ktgeIJdEe3tGSLh2sK8Tc\",\"children\":[{\"id\":\"LLLltt0X0BE_M8gM_mVOX\",\"children\":[{\"id\":\"95V3n8wAiyhcpi_udXvFP\",\"children\":[{\"text\":\"ITMGPTT\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"SU-SCv5AAdfO0zQU2GKDI\",\"children\":[{\"id\":\"8MSaSdxQ66G9p5mVwXufM\",\"children\":[{\"id\":\"hN8xFUCbIpRnw9fvsxVjC\",\"children\":[{\"text\":\"Voice messaging and speech-to-text APIs\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[28,72],\"widthMode\":\"percentage\"},{\"id\":\"u4s51AZtCA5OwwoO-LznV\",\"children\":[{\"text\":\"Key APIs\"}],\"nodeId\":\"key-apis\",\"type\":\"h2\"},{\"id\":\"eIYOgp0Qc4yNt-TUh1StS\",\"children\":[{\"id\":\"bWW7HZkjm-5ZaxElAxNTV\",\"children\":[{\"id\":\"zgU45EU5cTOqEF01soEA8\",\"children\":[{\"id\":\"6olaKUPK2ru45I0mFG3zW\",\"children\":[{\"text\":\"API\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"DbihVFXSIFrlJs6fVDeRU\",\"children\":[{\"id\":\"veCLVtq0ebTyVnz2wa57q\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"nBT0R96j3JaTUmiX2acmO\",\"children\":[{\"id\":\"BXqWUmZcH3gdrkzfGmfst\",\"children\":[{\"id\":\"m1PBeqg9-V2pAl7ohTQ_0\",\"children\":[{\"id\":\"OWbO-EE38oL2zSjOwIYT1\",\"children\":[{\"text\":\"Init\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"1xJsOlnWxUQnEy47_YW9K\",\"children\":[{\"id\":\"HeRGkM90bmGsbd8_0hjEW\",\"children\":[{\"id\":\"0FZmceH0YTCHwB5tNexHN\",\"children\":[{\"text\":\"Initializes GME\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"7--OTzgt76A4xjR34Qd4P\",\"children\":[{\"id\":\"WgkCOXwqnLp9zqmpPbgWm\",\"children\":[{\"id\":\"vL3TaO9IgO3LL0HeXU_8y\",\"children\":[{\"id\":\"5AMFqYqTGvHMajPxIKBwY\",\"children\":[{\"text\":\"Poll\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"30u5UO_1fYxl1DNretuUE\",\"children\":[{\"id\":\"XjoP4S0UWRgbcvsMvnBge\",\"children\":[{\"id\":\"DQ3dpuvBmbFvsY09oUApd\",\"children\":[{\"text\":\"Triggers event callback\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"SaK1S4vb8tac3q70kFb3T\",\"children\":[{\"id\":\"BoI7ZEKeHxP3GEXgYN5sT\",\"children\":[{\"id\":\"_YUvfTqROWKyVC0NcIoEO\",\"children\":[{\"id\":\"vDf-EyXJmk5ra85z1sxBp\",\"children\":[{\"text\":\"Pause\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"g1SZZtKltfIqefVFr7R9y\",\"children\":[{\"id\":\"Wpg8lrgND5NF8dj0M0ZG4\",\"children\":[{\"id\":\"9ZMeB30S6FchiZckjl-mc\",\"children\":[{\"text\":\"Pauses the system\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"heDUOTz8NnUEMjC8NVlA6\",\"children\":[{\"id\":\"MoHbfoydoSMG0vgoO8Alv\",\"children\":[{\"id\":\"VUfiJuzsVS8KxcNT96oOp\",\"children\":[{\"id\":\"h6ziBTphpfCkNEZ4_GhR_\",\"children\":[{\"text\":\"Resume\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"XFmP-sltPykR2Z3mJ2kA4\",\"children\":[{\"id\":\"QUdXj1lYpWPc5sEZ9c8Qm\",\"children\":[{\"id\":\"8sPoF0hfHeDlDLupMixxU\",\"children\":[{\"text\":\"Resumes the system\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"i2Bh4Ag-DonAo9kWO8kjW\",\"children\":[{\"id\":\"d-_jKxFsu9Y4-M52e5BKz\",\"children\":[{\"id\":\"4MKaLStyvhPr7MMXtwsXQ\",\"children\":[{\"id\":\"tAyKaihiY4xQbghqliEUR\",\"children\":[{\"text\":\"Uninit\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"I2oDmPutG0V3pS9tLy4OH\",\"children\":[{\"id\":\"6KWUl67MuNVgYN3ot-12w\",\"children\":[{\"id\":\"Yv-3sU9VXYfq5lC68Kf4r\",\"children\":[{\"text\":\"Uninitializes GME\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[28,72],\"widthMode\":\"percentage\"},{\"id\":\"Tbhn_2WQGsx_1PE4W1QID\",\"children\":[{\"text\":\"Importing the header file\"}],\"nodeId\":\"importing-the-header-file\",\"type\":\"h3\"},{\"id\":\"erj1Zegn3oh9WSzqALG2e\",\"children\":[{\"id\":\"fOCvNiXKVNcYrGsGAhGAm\",\"children\":[{\"text\":\"#include \\\"auth_buffer.h\\\"\"}],\"type\":\"code-line\"},{\"id\":\"Pj0ba-9ThOiKLokQe5lR2\",\"children\":[{\"text\":\"#include \\\"tmg_sdk.h\\\"\"}],\"type\":\"code-line\"},{\"id\":\"6hbiZP0zZD6-JjcNa7Y56\",\"children\":[{\"text\":\"#include \\\"AdvanceHeaders/tmg_sdk_adv.h\\\"\"}],\"type\":\"code-line\"},{\"id\":\"yuUXdEbdU9ehHPi7QB8Kd\",\"children\":[{\"text\":\"#include \"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"t0QmOrQBcdMm8gzu3gDH-\",\"children\":[{\"text\":\"Callback\"}],\"nodeId\":\"callback\",\"type\":\"h3\"},{\"id\":\"GdQu_ttwTIFplihpvO41k\",\"children\":[{\"text\":\"Setting callback sample\"}],\"nodeId\":\"setting-callback-sample\",\"type\":\"h4\"},{\"id\":\"aQmGcyIXYu0RHkAyqdbSC\",\"children\":[{\"id\":\"A50AnMAf3c_jjZm8Lpy7u\",\"children\":[{\"text\":\"// When initializing the SDK\"}],\"type\":\"code-line\"},{\"id\":\"OWXM4NZKIzbBK93JKH1eW\",\"children\":[{\"text\":\"m_pTmgContext = ITMGContextGetInstance();\"}],\"type\":\"code-line\"},{\"id\":\"8OIQ7G-iJbeTOW9evDxYx\",\"children\":[{\"text\":\"m_pTmgContext->SetTMGDelegate(this);\"}],\"type\":\"code-line\"},{\"id\":\"CM8jAgbZ51EeXtR2Xj83O\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"},{\"id\":\"onH-U0zqsZyNBITsDFsGQ\",\"children\":[{\"text\":\"// In the destructor\"}],\"type\":\"code-line\"},{\"id\":\"r152GJ6fLksKW6GeENcpf\",\"children\":[{\"text\":\"CTMGSDK_For_AudioDlg::~CTMGSDK_For_AudioDlg()\"}],\"type\":\"code-line\"},{\"id\":\"aiYvvwCmibCJw0RpoKyQ4\",\"children\":[{\"text\":\"{\"}],\"type\":\"code-line\"},{\"id\":\"77YDDxHNVQNGb9G2f5kNR\",\"children\":[{\"text\":\" ITMGContextGetInstance()->SetTMGDelegate(NULL);\"}],\"type\":\"code-line\"},{\"id\":\"YbKTxv7UFhRAkdtZuQZej\",\"children\":[{\"text\":\"}\"}],\"type\":\"code-line\"},{\"id\":\"Akcru7vjSY8bDB8BATe5y\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"tj_V4_nr5l7zSPTkWfybg\",\"children\":[{\"text\":\"Message delivery\"}],\"nodeId\":\"message-delivery\",\"type\":\"h4\"},{\"id\":\"uxl_1bwtbDL33UBrrai32\",\"children\":[{\"text\":\"The API class uses the \"},{\"code\":1,\"text\":\"Delegate\"},{\"text\":\" method to send callback notifications to the application. \"},{\"code\":1,\"text\":\"ITMG_MAIN_EVENT_TYPE\"},{\"text\":\" indicates the message type. The data on Windows is in json string format. For the key-value pairs, please see the relevant documentation.\"}],\"type\":\"p\"},{\"id\":\"QDuBD18Hi5udB07DyR3fJ\",\"children\":[{\"id\":\"fmAaqYjkt9xd_JS6OZu_Q\",\"children\":[{\"text\":\"// Declaration in the header file\"}],\"type\":\"code-line\"},{\"id\":\"riNCT7x8LXoUFnqGNzvup\",\"children\":[{\"text\":\"virtual void OnEvent(ITMG_MAIN_EVENT_TYPE eventType,const char* data);\"}],\"type\":\"code-line\"},{\"id\":\"sE3XLHWFK_o6MhMUTc97C\",\"children\":[{\"text\":\"// Sample code\"}],\"type\":\"code-line\"},{\"id\":\"I7OwPyNziPN3V2cO0uNhu\",\"children\":[{\"text\":\"void CTMGSDK_For_AudioDlg::OnEvent(ITMG_MAIN_EVENT_TYPE eventType, const char* data)\"}],\"type\":\"code-line\"},{\"id\":\"hq-VUB6QpXaM19TZkWR9H\",\"children\":[{\"text\":\"{\"}],\"type\":\"code-line\"},{\"id\":\"fNBiJZGWW7X172JTzHSAe\",\"children\":[{\"text\":\" switch(eventType)\"}],\"type\":\"code-line\"},{\"id\":\"wHjfD5LWPR4Orx1p6-Z51\",\"children\":[{\"text\":\" {\"}],\"type\":\"code-line\"},{\"id\":\"-VM8JjXWAN3zEM3jUmAzO\",\"children\":[{\"text\":\" case ITMG_MAIN_EVENT_TYPE_XXXX_XXXX:\"}],\"type\":\"code-line\"},{\"id\":\"xjQp73Nn8ZRptfos6646l\",\"children\":[{\"text\":\" {\"}],\"type\":\"code-line\"},{\"id\":\"r7oXvnkb6efcwf-bFowEt\",\"children\":[{\"text\":\" // Process the callback\"}],\"type\":\"code-line\"},{\"id\":\"HBaPmguBHc1QXx6h9Q2xf\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"G3J6Xwx3I_9vQLEG2GkoO\",\"children\":[{\"text\":\" break;\"}],\"type\":\"code-line\"},{\"id\":\"n5NJOrwljllBg6mA5OOlV\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"TRuVd21Sh6o3I35VSU7eG\",\"children\":[{\"text\":\"}\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"FGk5tmNTmHM0conCAbPvq\",\"children\":[{\"text\":\"Getting singleton\"}],\"nodeId\":\"getting-singleton\",\"type\":\"h3\"},{\"id\":\"zq61PIlJSBCjLzi3wm0-x\",\"children\":[{\"text\":\"The GME SDK is provided in the form of a singleton, all calls begin with \"},{\"code\":1,\"text\":\"ITMGContext\"},{\"text\":\", and callbacks are passed to the application through \"},{\"code\":1,\"text\":\"ITMGDelegate\"},{\"text\":\", which should be configured first.\"}],\"type\":\"p\"},{\"id\":\"Y5z17ESwM7v3V_ZMlcWCt\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code\",\"type\":\"h4\"},{\"id\":\"6yHlbvINYg-rozKao7Bq5\",\"children\":[{\"id\":\"T3Crm2BXJRyssCmr2I4TS\",\"children\":[{\"text\":\"ITMGContext* m_pTmgContext;\"}],\"type\":\"code-line\"},{\"id\":\"r9GKS7Spg2fBQJIq-hPWP\",\"children\":[{\"text\":\"m_pTmgContext->Init(AppID, OpenID);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"XxuyMW8WL6CRRV7yQB6XW\",\"children\":[{\"text\":\"Initializing the SDK\"}],\"nodeId\":\"initializing-the-sdk\",\"type\":\"h3\"},{\"id\":\"iv1Slyk2FiGg049f0thTH\",\"children\":[{\"b\":1,\"text\":\"You need to initialize the SDK through the \"},{\"b\":1,\"code\":1,\"text\":\"Init\"},{\"b\":1,\"text\":\" API\"},{\"text\":\" before you can use the real-time voice, voice message, and speech-to-text services. The \"},{\"code\":1,\"text\":\"Init\"},{\"text\":\" API must be called in the same thread as other APIs. We recommend you call all APIs in the main thread.\"}],\"nodeId\":\"Init\",\"type\":\"p\"},{\"id\":\"DHcUlboqtSV8GmKRdo60E\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype\",\"type\":\"h4\"},{\"id\":\"CCuwnolXaIGpNDFpcOZFZ\",\"children\":[{\"id\":\"Cpc-SV4NcCoV4_JPg5vUz\",\"children\":[{\"text\":\"ITMGContext virtual int Init(const char* sdkAppId, const char* openId)\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"GNImBdBRjGnk-RtPrxjnq\",\"children\":[{\"id\":\"icEipOaCpapQJvn-JICEF\",\"children\":[{\"id\":\"k9GdzJ6-ucpMmBSnOv5UW\",\"children\":[{\"id\":\"gs7Q84EQsM_SoV0AZOjhr\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"bggQVj8_FkwqXxllkZBYq\",\"children\":[{\"id\":\"0kt_uwdUGPXnlr9Hrr7fE\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"1aMxbWeOjqRv8Va_6aWWp\",\"children\":[{\"id\":\"yY6FOOzza5ROa_EG7Ss-v\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"8bqse7qOSBKROXIZ_baTY\",\"children\":[{\"id\":\"HTkw83gFoYenm_GADRD8X\",\"children\":[{\"id\":\"fg-Lmqrnj9d2bEBdTq2fP\",\"children\":[{\"id\":\"ST12__iELApsNS7iGtkB6\",\"children\":[{\"text\":\"sdkAppId\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"3MRl20mdP6HC2nkNxJTn1\",\"children\":[{\"id\":\"W9xWR61TRQczmByC8BpK1\",\"children\":[{\"id\":\"UwAVSMfbHLuWWPBRqOp-g\",\"children\":[{\"text\":\"const char*\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"1wfFClCQW0ODq9hm2x1az\",\"children\":[{\"id\":\"_PTr5GzK5Pf2H-ksMl2Vu\",\"children\":[{\"id\":\"uANXn2WlAsshaQmtGKdfG\",\"children\":[{\"code\":1,\"text\":\"AppID\"},{\"text\":\" provided in the \"},{\"id\":\"i01OEL1QT_e0m6lzOVJ_A\",\"children\":[{\"text\":\"GME console\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://console.tencentcloud.com/gamegme\",\"props\":{\"type\":\"link\",\"url\":\"https://console.tencentcloud.com/gamegme\"},\"type\":\"ref\"},{\"text\":\", which can be obtained as instructed in \"},{\"id\":\"zt2SLIz3mGPr5BC-Yp5zJ\",\"children\":[{\"text\":\"Activating Services\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://intl.cloud.tencent.com/document/product/607/10782#.E9.87.8D.E7.82.B9.E5.8F.82.E6.95.B0\",\"props\":{\"type\":\"link\",\"url\":\"https://intl.cloud.tencent.com/document/product/607/10782#.E9.87.8D.E7.82.B9.E5.8F.82.E6.95.B0\"},\"type\":\"ref\"},{\"text\":\".\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"RKSMb22eNPzHX3i7DIZQU\",\"children\":[{\"id\":\"vEsw2bDEuhk98Ou3Eokko\",\"children\":[{\"id\":\"kKqKGRN_TnS8B00tuRtcg\",\"children\":[{\"id\":\"hoMIg5qdCADHc2WWUcZtQ\",\"children\":[{\"text\":\"openID\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ynFGhKroMYSnT2x5OUOak\",\"children\":[{\"id\":\"3fVQTQKFlWU3SpaA9ejk8\",\"children\":[{\"id\":\"UATlFuLeBuPTnBM9Y57J1\",\"children\":[{\"text\":\"const char*\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"WX272HwF70FT5oDV_7iZa\",\"children\":[{\"id\":\"8wObEpERHZkLXcU02Hl7a\",\"children\":[{\"id\":\"3upR85mu1l7Wgj9ZYPxB0\",\"children\":[{\"code\":1,\"text\":\"openID\"},{\"text\":\" can only be in \"},{\"code\":1,\"text\":\"Int64\"},{\"text\":\" type, which is passed in after being converted to a \"},{\"code\":1,\"text\":\"const char*\"},{\"text\":\". You can customize its rules, and it must be unique in the application. To pass in \"},{\"code\":1,\"text\":\"openID\"},{\"text\":\" as a string, \"},{\"id\":\"qWd_Ay9cuho7buVvHdDQ4\",\"children\":[{\"text\":\"submit a ticket\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://console.tencentcloud.com/workorder/category?level1_id=438&level2_id=445&source=0&data_title=%E6%B8%B8%E6%88%8F%E5%A4%9A%E5%AA%92%E4%BD%93%E5%BC%95%E6%93%8EGME&step=1\",\"props\":{\"type\":\"link\",\"url\":\"https://console.tencentcloud.com/workorder/category?level1_id=438&level2_id=445&source=0&data_title=%E6%B8%B8%E6%88%8F%E5%A4%9A%E5%AA%92%E4%BD%93%E5%BC%95%E6%93%8EGME&step=1\"},\"type\":\"ref\"},{\"text\":\" for application.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[12,13,75],\"widthMode\":\"percentage\"},{\"id\":\"T7mLJLMSG0ZSDaRbXyym7\",\"children\":[{\"text\":\"Returned values\"}],\"nodeId\":\"returned-values\",\"type\":\"h4\"},{\"id\":\"_wFXVAetNI86qcTyiadgB\",\"children\":[{\"id\":\"AIYTwa8WJZiGgOnjsySks\",\"children\":[{\"id\":\"YKDBPmvZ5xiRFlG-i1CAb\",\"children\":[{\"id\":\"iVscJ4jPEqkrnDxP9PVyY\",\"children\":[{\"text\":\"Returned Value\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"aD8ekWNKF8nbtYcyfAJL_\",\"children\":[{\"id\":\"c0v_FYj6JVM5AHJhZi1Br\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"GA1U7xPdnW0zHYCKQHxLg\",\"children\":[{\"id\":\"ZzvzmCfbkqq8C8FUC3eew\",\"children\":[{\"id\":\"MZTaKsyxhZM6PaebpkIPe\",\"children\":[{\"id\":\"0rtBFXrZSuPji52wuCk5q\",\"children\":[{\"text\":\"AV_OK = 0\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"izxMamXwThVamP-DWkJER\",\"children\":[{\"id\":\"13RrmBSSLBaHlhl3gbffK\",\"children\":[{\"id\":\"CIqTfG4i93xVSo2sjzoYR\",\"children\":[{\"text\":\"Initialized SDK successfully.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"8STFQLD8gonDVxWqsF0nL\",\"children\":[{\"id\":\"McnF9GaCacomu-DvwBTOs\",\"children\":[{\"id\":\"CKuZcOhEtFo4LrrSSvdLz\",\"children\":[{\"id\":\"11pthjCMCSIjytTeD4S5H\",\"children\":[{\"text\":\"AV_ERR_SDK_NOT_FULL_UPDATE=7015\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"sVSrRLNzY2sdlHbv7WLF-\",\"children\":[{\"id\":\"6C0wek4VXtqb49cZZM8vb\",\"children\":[{\"id\":\"7bt14R1IE0Ra0o9Qb47pY\",\"children\":[{\"text\":\"Checks whether the SDK file is complete. It is recommended to delete it and then import the SDK again.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[34,66],\"widthMode\":\"percentage\"},{\"id\":\"sCz0KmfSdRv4cCJyqyucD\",\"children\":[{\"id\":\"KAv7znYmrFkfG_tTjJneM\",\"children\":[{\"b\":1,\"color\":\"#04C8DC\",\"text\":\"Notes on 7015 error code\"}],\"type\":\"p\"},{\"id\":\"P163XAuto0ojDbXCIU4f-\",\"children\":[{\"text\":\"The 7015 error code is judged by md5. If this error is reported during integration, please check the integrity and version of the SDK file as prompted.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"ANO27CmM95R3bCW6KVmRw\",\"children\":[{\"text\":\"The returned value \"},{\"code\":1,\"text\":\"AV_ERR_SDK_NOT_FULL_UPDATE\"},{\"text\":\" is \"},{\"b\":1,\"text\":\"only a reminder\"},{\"text\":\" but will not cause an initialization failure.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"dRfAoZTvKNAHpcRjSj7sN\",\"children\":[{\"text\":\"Due to the third-party reinforcement, Unity packaging mechanism and other factors, the md5 of the library file will be affected, resulting in misjudgment. \"},{\"b\":1,\"text\":\"Please ignore this error in the logic for official release\"},{\"text\":\", and try to avoid displaying it in the UI.\"}],\"start\":false,\"type\":\"uli\"}],\"hintType\":\"alert\",\"type\":\"hint\"},{\"id\":\"N0kynABto6tEVabNiK85I\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code2\",\"type\":\"h4\"},{\"id\":\"3TfQJhcKNfUgbogIN_Trq\",\"children\":[{\"id\":\"tU_Q2DxWx_AdWAJF2KHwI\",\"children\":[{\"text\":\"#define SDKAPPID3RD \\\"14000xxxxxx\\\"\"}],\"type\":\"code-line\"},{\"id\":\"VCiQtImVPbxGe_HQW8mxr\",\"children\":[{\"text\":\"cosnt char* openId=\\\"10001\\\";\"}],\"type\":\"code-line\"},{\"id\":\"9MwhGFB2kWdXKIiAU4G6C\",\"children\":[{\"text\":\"ITMGContext* context = ITMGContextGetInstance();\"}],\"type\":\"code-line\"},{\"id\":\"cD95-jDHELinyDtbzWgKe\",\"children\":[{\"text\":\"context->Init(SDKAPPID3RD, openId);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"InfEPFrmNhgRFo_ynGDYp\",\"children\":[{\"text\":\"Triggering event callback\"}],\"nodeId\":\"triggering-event-callback\",\"type\":\"h3\"},{\"id\":\"ghCUfFc0B4RPI9GFMx9IW\",\"children\":[{\"text\":\"Event callbacks can be triggered by periodically calling the \"},{\"code\":1,\"text\":\"Poll\"},{\"text\":\" API in \"},{\"code\":1,\"text\":\"update\"},{\"text\":\". \"},{\"code\":1,\"text\":\"Poll\"},{\"text\":\" is the message pump of GME, and the \"},{\"code\":1,\"text\":\"Poll\"},{\"text\":\" API should be called periodically for GME to trigger event callbacks; otherwise, the entire SDK service will run exceptionally.\\nYou can refer to the \"},{\"code\":1,\"text\":\"EnginePollHelper.cpp\"},{\"text\":\" file in the demo.\"}],\"nodeId\":\"Poll\",\"type\":\"p\"},{\"id\":\"XhIc_G7sQU2c4O-QdglOk\",\"children\":[{\"id\":\"Wnj5XMVffkzfAvfvfI8cl\",\"children\":[{\"b\":1,\"color\":\"#04C8DC\",\"text\":\"Note: \"}],\"type\":\"p\"},{\"id\":\"pi6q9MfbpAYp2pBpHXels\",\"children\":[{\"text\":\"The \"},{\"code\":1,\"text\":\"Poll\"},{\"text\":\" API must be called periodically and in the main thread to avoid abnormal API callbacks.\"}],\"type\":\"p\"}],\"hintType\":\"alert\",\"type\":\"hint\"},{\"id\":\"Vvr_wOOApH9HWwQMTC7IC\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype2\",\"type\":\"h4\"},{\"id\":\"G6QieaQ1tPP1AAVWrOY1t\",\"children\":[{\"id\":\"9gRMp4nUxKO1MGEhKcXp9\",\"children\":[{\"text\":\"class ITMGContext {\"}],\"type\":\"code-line\"},{\"id\":\"92pukz57TPkxIDskiR1t_\",\"children\":[{\"text\":\"protected:\"}],\"type\":\"code-line\"},{\"id\":\"akxaS1TWUXcvXPgokLMRS\",\"children\":[{\"text\":\" virtual ~ITMGContext() {}\"}],\"type\":\"code-line\"},{\"id\":\"7EZc_jTn6nOlqCnd_yAh3\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"},{\"id\":\"chGiikptTaT3bVHj805VD\",\"children\":[{\"text\":\"public: \"}],\"type\":\"code-line\"},{\"id\":\"Wz3Xxpx9SR3a-JQOi2ZtY\",\"children\":[{\"text\":\" virtual void Poll()= 0;\"}],\"type\":\"code-line\"},{\"id\":\"Wc9SIOzZ3dLIVw06s4mly\",\"children\":[{\"text\":\"}\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"SB77yo3_S2QxxeG9SVys6\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code3\",\"type\":\"h4\"},{\"id\":\"wcW0BB94dM8oYS5oaqaIS\",\"children\":[{\"id\":\"AKYcB-hfVXFYySPRCWvRV\",\"children\":[{\"text\":\"void TMGTestScene::update(float delta)\"}],\"type\":\"code-line\"},{\"id\":\"vk7Hjw1aM_2B8PTwu91MQ\",\"children\":[{\"text\":\"{\"}],\"type\":\"code-line\"},{\"id\":\"nU77GyS9UCRx5u1NlfE3w\",\"children\":[{\"text\":\" ITMGContextGetInstance()->Poll();\"}],\"type\":\"code-line\"},{\"id\":\"a7GefG69kNF707sj3k2tG\",\"children\":[{\"text\":\"}\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"5MS3ZpxqekBrTB8EkM2JT\",\"children\":[{\"text\":\"Pausing the system\"}],\"nodeId\":\"pausing-the-system\",\"type\":\"h3\"},{\"id\":\"Y2aLJKuZKbMEgXFSRFzeo\",\"children\":[{\"text\":\"When a \"},{\"code\":1,\"text\":\"Pause\"},{\"text\":\" event occurs in the system, the engine should also be notified for pause. If you do not need the background to play back the audio in the room, please call \"},{\"code\":1,\"text\":\"Pause\"},{\"text\":\" API to pause the GME service.\"}],\"type\":\"p\"},{\"id\":\"DVNrtaF-kPRmbraXH3sX5\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype3\",\"type\":\"h4\"},{\"id\":\"RAbUoT5NprA3BgBMumeKU\",\"children\":[{\"id\":\"7HZJj8aPRrc-_WE5r39nf\",\"children\":[{\"text\":\"ITMGContext int Pause()\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"t30KcIwbWDLAOr6wrnP_L\",\"children\":[{\"text\":\"Resuming the system\"}],\"nodeId\":\"resuming-the-system\",\"type\":\"h3\"},{\"id\":\"VA-Pwg1UgbY27rVOgk4vD\",\"children\":[{\"text\":\"When a \"},{\"code\":1,\"text\":\"Resume\"},{\"text\":\" event occurs in the system, the engine should also be notified for resumption. The \"},{\"code\":1,\"text\":\"Resume\"},{\"text\":\" API only supports resuming voice chat.\"}],\"type\":\"p\"},{\"id\":\"QwBIk7NPGPqJeAiZmG18M\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype4\",\"type\":\"h4\"},{\"id\":\"lmYCtAWEJfi5DKkyDTmz3\",\"children\":[{\"id\":\"QPieGRFUJf6ULf9j6ETgo\",\"children\":[{\"text\":\"ITMGContext int Resume()\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"rBSojSIrJ6CfWsfKpZ2Hg\",\"children\":[{\"text\":\"\"}],\"type\":\"p\"},{\"id\":\"dJb9i3Oy8ghhAgV6lXhRz\",\"children\":[{\"text\":\"Uninitializing SDK\"}],\"nodeId\":\"uninitializing-sdk\",\"type\":\"h3\"},{\"id\":\"B4IsO1Mvaz9WtvGJMpOic\",\"children\":[{\"text\":\"This API is used to uninitialize the SDK to make it uninitialized. \"},{\"b\":1,\"text\":\"If the game business account is bound to \"},{\"b\":1,\"code\":1,\"text\":\"openid\"},{\"b\":1,\"text\":\", switching game account requires uninitializing GME and then using the new \"},{\"b\":1,\"code\":1,\"text\":\"openid\"},{\"b\":1,\"text\":\" to initialize again.\"}],\"nodeId\":\"UnInit\",\"type\":\"p\"},{\"id\":\"JT5GWq5EuDn9BsjOPjY6N\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype5\",\"type\":\"h4\"},{\"id\":\"32zn7NPM_6jFwBDr3e1Aw\",\"children\":[{\"id\":\"gY2FAv1NRAJuC-Q4cL5Vx\",\"children\":[{\"text\":\"ITMGContext int Uninit()\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"wDVVb4EBdGHNcTjVAbO6y\",\"children\":[{\"text\":\"Voice Messaging and Speech-to-Text Services\"}],\"nodeId\":\"voice-messaging-and-speech-to-text-services\",\"type\":\"h2\"},{\"id\":\"mKyRamiXyc343hxWEJA4P\",\"children\":[{\"id\":\"UN1uj9Qnk0W_oyXCxETgU\",\"children\":[{\"b\":1,\"color\":\"inherit\",\"text\":\"Note: \"}],\"type\":\"p\"},{\"id\":\"5TNlq0Q4Gqa4cXYt_A7vZ\",\"children\":[{\"text\":\"The speech-to-text service consists of fast recording-to-text conversion and streaming speech-to-text conversion.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"EX4ZDcgfasPcWmlHxQMG4\",\"children\":[{\"text\":\"You do not need to enter a voice chat room when using the voice message service.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"i4XaAH07ppF6p1d2as0_t\",\"children\":[{\"text\":\"The maximum recording duration of a voice message is 58 seconds by default, and the minimum recording duration cannot be less than 1 second. If you want to customize the recording duration, for example, to modify the maximum recording duration to 10 seconds, call the \"},{\"code\":1,\"text\":\"SetMaxMessageLength\"},{\"text\":\" API to set it after initialization.\"}],\"start\":false,\"type\":\"uli\"}],\"hintType\":\"info\",\"type\":\"hint\"},{\"type\":\"p\",\"children\":[{\"text\":\"\"},{\"id\":\"8WskBl6Qr2vIKDoM-desU\",\"alt\":\"\",\"children\":[{\"text\":\"\"}],\"inline\":true,\"type\":\"image\",\"url\":\"https://cloudcache.intl.tencent-cloud.com/cms/backend-cms/1e974765b34711eeae9a525400c26da5.jpeg\",\"naturalSize\":[923,675],\"size\":[800,585]},{\"text\":\"\"}],\"id\":\"oIUaG_oKluo6DZWRidk6x\"},{\"id\":\"S-7IVVKePLRZ14b3cLLIy\",\"children\":[{\"text\":\"Flowchart for using the speech-to-text service\"}],\"nodeId\":\"flowchart-for-using-the-speech-to-text-service\",\"type\":\"h3\"},{\"type\":\"p\",\"children\":[{\"text\":\"\"},{\"id\":\"dbDQZHVIYjS7C6pJvVVjC\",\"alt\":\"\",\"children\":[{\"text\":\"\"}],\"inline\":true,\"type\":\"image\",\"url\":\"https://cloudcache.intl.tencent-cloud.com/cms/backend-cms/1e90a8aeb34711eeb2a1525400170219.jpeg\",\"naturalSize\":[1138,1043],\"size\":[799,732]},{\"text\":\"\"}],\"id\":\"Ei4392DeiWghJbVvYX3XE\"},{\"id\":\"h4HMmFZL3JFN5EY4zlCFI\",\"children\":[{\"id\":\"DnkguTkx9LK-mFMOAnO6O\",\"children\":[{\"id\":\"R7QmeyJvmBdy5i4xlb8a2\",\"children\":[{\"id\":\"ebJu1Po1TJiDQTgrGljpE\",\"children\":[{\"text\":\"API\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"oK6j2-fDQxNP7y1AUDU-w\",\"children\":[{\"id\":\"1TvIMsCu6UR08Y5I-AKKd\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"V4AGIBmubG4GntW3Hv5T4\",\"children\":[{\"id\":\"oshX4FyHei-9CRRnrOESh\",\"children\":[{\"id\":\"XoMDWlguF_SNz-1FQKU6V\",\"children\":[{\"id\":\"k93MriDV180EH_4HYcb17\",\"children\":[{\"text\":\"GenAuthBuffer\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"KwWwcAkXkNai5CPTJWJL8\",\"children\":[{\"id\":\"GcevvSQaQ40R7fbEkyEyB\",\"children\":[{\"id\":\"L0j78XIVg4NcSXezCt4ny\",\"children\":[{\"text\":\"Generates the local authentication key\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"T_Q5HQNaDjTmFibC50x4B\",\"children\":[{\"id\":\"E9iCCQijDRvYUWqg9pmUn\",\"children\":[{\"id\":\"EfzDEONGmUciku6vvfEbP\",\"children\":[{\"id\":\"93r877aibxBuAo82FSx69\",\"children\":[{\"text\":\"ApplyPTTAuthbuffer\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"zG76SOwrFLw2HolVrLfg2\",\"children\":[{\"id\":\"FYOde1gZ62Mh9_i2d9DWb\",\"children\":[{\"id\":\"aQIKukCRNtiEgsy2lc35w\",\"children\":[{\"text\":\"Initializes authentication\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"v9y1-543cH6y5Z8hTIO8r\",\"children\":[{\"id\":\"q056z1BVoNaD7NWI0eCvp\",\"children\":[{\"id\":\"1DjR8Yd8E1hlD82AKb7rA\",\"children\":[{\"id\":\"-M6owJAOQYslpkRI9VPzl\",\"children\":[{\"text\":\"SetMaxMessageLength\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"LXS3nY9VHeY6dkgmXsz8a\",\"children\":[{\"id\":\"6S9N0X9agort8n9QdT0LG\",\"children\":[{\"id\":\"bR9aE-dQvqoX7-FB7sDOe\",\"children\":[{\"text\":\"Specifies the maximum length of voice message\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[35,65],\"widthMode\":\"percentage\"},{\"id\":\"48Bb4Ew3BCrTXGKFgG7uu\",\"children\":[{\"text\":\"Generating the local authentication key\"}],\"nodeId\":\"generating-the-local-authentication-key\",\"type\":\"h3\"},{\"id\":\"e34PyojknYoib5KZriwWq\",\"children\":[{\"text\":\"Generate \"},{\"code\":1,\"text\":\"AuthBuffer\"},{\"text\":\" for encryption and authentication of relevant features. For release in the production environment, please use the backend deployment key as detailed in \"},{\"id\":\"0nMsHTYafgiq3nQKpGA5o\",\"children\":[{\"text\":\"Authentication Key\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://intl.cloud.tencent.com/document/product/607/12218\",\"props\":{\"type\":\"link\",\"url\":\"https://intl.cloud.tencent.com/document/product/607/12218\"},\"type\":\"ref\"},{\"text\":\". \"}],\"type\":\"p\"},{\"id\":\"AltBf-u2OWA3UlvHAx84V\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype6\",\"type\":\"h4\"},{\"id\":\"-JBPNxgHC9ecktf3JM_vC\",\"children\":[{\"id\":\"sPk1kiXRDX9FxrZA7RXrV\",\"children\":[{\"text\":\"int QAVSDK_AuthBuffer_GenAuthBuffer(unsigned int dwSdkAppID, const char* strRoomID, const char* strOpenID,\"}],\"type\":\"code-line\"},{\"id\":\"W0cdFVAv1fmKmi7pbaOC5\",\"children\":[{\"text\":\" const char* strKey, unsigned char* strAuthBuffer, unsigned int bufferLength);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"HwC6Stuj9XfF_SBiEtOzl\",\"children\":[{\"id\":\"burZH8KyDBI9aJH0R_AOo\",\"children\":[{\"id\":\"xsus8S9yxyd9bixyoLDLQ\",\"children\":[{\"id\":\"GlL8lL8Yjte92wZmyPHg5\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"s5CfwVeB1yqbXWwIW_oyc\",\"children\":[{\"id\":\"zipzIXsLz6JmkfT-36uGs\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"LYBtmuBCM23OToWBBEIzv\",\"children\":[{\"id\":\"U8Kmjk070GQPdz6blAmdV\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"0Ujt__iN2m8rnGcBdwHXe\",\"children\":[{\"id\":\"6WAvA2q1J4XePAGr6e9-7\",\"children\":[{\"id\":\"4V3N9eV4LTf0psc5tHKlb\",\"children\":[{\"id\":\"pNLEsUO0iD6QKwkDUnyeS\",\"children\":[{\"text\":\"dwSdkAppID\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"e2UqqHx-78PCQUMyVMBAB\",\"children\":[{\"id\":\"4Cc2_6yV8xOyDUcDTq5An\",\"children\":[{\"id\":\"CyqNsX5Gc-rLD8RjBHPXA\",\"children\":[{\"text\":\"int\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"HoF7ulU1Q_ssidjt_8cma\",\"children\":[{\"id\":\"eAjIi9Z6DlqVtU35wDvTt\",\"children\":[{\"id\":\"AHFD74eunv7yIMbf59mmF\",\"children\":[{\"code\":1,\"text\":\"AppId\"},{\"text\":\" from the Tencent Cloud console.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"nqWMOtZpphFFrRMae3I_b\",\"children\":[{\"id\":\"2wwzql6HEDqL0CSprOgOF\",\"children\":[{\"id\":\"Mtka8jnTGfWoBvx66B8ci\",\"children\":[{\"id\":\"jTjwHROLA9OMZskcTd4FD\",\"children\":[{\"text\":\"strRoomID\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"DxpWE5iknS5QoSP--WyCw\",\"children\":[{\"id\":\"nDLPg7a4HWICvrts9ZvVn\",\"children\":[{\"id\":\"if9bXmimre9pj_tw-Yx04\",\"children\":[{\"text\":\"const char*\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"YTxeYkeB2xUtjl1um6LSZ\",\"children\":[{\"id\":\"M5NjSyVdu5KtQmkSeQnyq\",\"children\":[{\"id\":\"TvE0llskD5IyFUrsXFSWm\",\"children\":[{\"text\":\"Enter \"},{\"code\":1,\"text\":\"null\"},{\"text\":\" or an empty string\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"t5DZRgTwpgnkXj_AzrWHl\",\"children\":[{\"id\":\"MWr95GkhcC_fgjQJYvzdF\",\"children\":[{\"id\":\"je9dyDgZ_Uz3G49ltu-7Z\",\"children\":[{\"id\":\"be1R41-AupwpnZjHtl-YF\",\"children\":[{\"text\":\"strOpenID\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"YFvGKGCOKkMDGhDERAEgi\",\"children\":[{\"id\":\"blnTeWY_Vt_C6T9bHHhgz\",\"children\":[{\"id\":\"ecG-lgbZnVp7Nk2s5_dX1\",\"children\":[{\"text\":\"const char*\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Mw8Psn6UPR2d4DDFCdGFQ\",\"children\":[{\"id\":\"cZefV_2NV3Sw6nmAiqx22\",\"children\":[{\"id\":\"tXGOFAnnpv6a_C6PFppAg\",\"children\":[{\"text\":\"User ID, which is the same as \"},{\"code\":1,\"text\":\"openID\"},{\"text\":\" during initialization.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"OhSEVQwMH2wvNK0nfVaG2\",\"children\":[{\"id\":\"M3Jy34zzVuuNmpAkuFONZ\",\"children\":[{\"id\":\"bh7571J9XJ9zEOzmScAYe\",\"children\":[{\"id\":\"b4Vmx4x3u6i-vAjuLHlsq\",\"children\":[{\"text\":\"strKey\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Jry1OdllokPHXi97wV-E3\",\"children\":[{\"id\":\"xawD68kvs-Ae_Xu-ECTIH\",\"children\":[{\"id\":\"XyqR23ha-H-Up2b2mXnl7\",\"children\":[{\"text\":\"const char*\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"K7cKTPAzEzIQkKpWmuCVr\",\"children\":[{\"id\":\"8dzko-mSA33qOO9ci9F_d\",\"children\":[{\"id\":\"aOlFmOWML3SseZR_7RAea\",\"children\":[{\"text\":\"Permission key from the Tencent Cloud \"},{\"id\":\"SlkjKaXTgOjLdimL1yl0L\",\"children\":[{\"text\":\"console\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://console.tencentcloud.com/gamegme\",\"props\":{\"type\":\"link\",\"url\":\"https://console.tencentcloud.com/gamegme\"},\"type\":\"ref\"},{\"text\":\".\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"uLebRmd1sUWhOLGjoTEp_\",\"children\":[{\"id\":\"3KaR-gF1Aja_Q7LHy2AqD\",\"children\":[{\"id\":\"smyLwP3EvBLrSA3q5yQaC\",\"children\":[{\"id\":\"xZlH6b23iXqDagPm-PUFN\",\"children\":[{\"text\":\"strAuthBuffer\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"pdVSmCTSwi91sHQ5UKPCp\",\"children\":[{\"id\":\"F3KzgxUt7ZobFU4ZE_gfQ\",\"children\":[{\"id\":\"AzdYsDPxbFoaM1ok-QSm0\",\"children\":[{\"text\":\"const char*\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Di5pIhy4D2KVC9t8uGVkg\",\"children\":[{\"id\":\"fzwH4mJJFIq-IgIJkoUqT\",\"children\":[{\"id\":\"sNimaXUDHE3mH-_5tTwpL\",\"children\":[{\"text\":\"Returned \"},{\"code\":1,\"text\":\"authbuff\"},{\"text\":\".\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"2MQpuTqQUX2D-twqYrY-Y\",\"children\":[{\"id\":\"KCVUHetsipV0MK_lACIxx\",\"children\":[{\"id\":\"RUeQF9gywm9vo2Bc6o0iV\",\"children\":[{\"id\":\"-wFYft6w-Q8NLyQ3Q2VK5\",\"children\":[{\"text\":\"bufferLength\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"cJmJUSI6L-D6K06B-p8lB\",\"children\":[{\"id\":\"DHkKFP0Ob9n5MdL_10Kdd\",\"children\":[{\"id\":\"HwsZK2meXc6h9twHPKCSj\",\"children\":[{\"text\":\"int\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ut0_UnnGceGewdparFB_b\",\"children\":[{\"id\":\"B1VJuyoIBuXiPRIhDYT_1\",\"children\":[{\"id\":\"25KP_nt00kAavqah2uyoQ\",\"children\":[{\"text\":\"Length of the \"},{\"code\":1,\"text\":\"authbuff\"},{\"text\":\" passed in. 500 is recommended.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[18,16,66],\"widthMode\":\"percentage\"},{\"id\":\"_9DdMd3HmmHsPPpaTdrLw\",\"children\":[{\"text\":\"Application authentication\"}],\"nodeId\":\"application-authentication\",\"type\":\"h3\"},{\"id\":\"rc5hjl9427Nh0C_MfVlWn\",\"children\":[{\"text\":\"After the authentication information is generated, the authentication is assigned to the SDK. \"}],\"type\":\"p\"},{\"id\":\"_kxd-l_vIS-cfRU5cMptU\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype7\",\"type\":\"h4\"},{\"id\":\"NFz9JxRO6TSUT0iIeL85A\",\"children\":[{\"id\":\"LCQ-cowCOeZyKAPMY3KoB\",\"children\":[{\"text\":\"ITMGPTT virtual int ApplyPTTAuthbuffer(const char* authBuffer, int authBufferLen)\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"yiY2JQTv2xCm5V80Vq6lE\",\"children\":[{\"id\":\"pWyl9borNhfgufbuFLR4t\",\"children\":[{\"id\":\"Uhlg4l2w9g9MW2VkQuros\",\"children\":[{\"id\":\"lprb3Fxslu9nJFg7SApb9\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"yWDroyICm6H5vvx_AtrHD\",\"children\":[{\"id\":\"dv36PM2B0hYUpBkDY8Kek\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"laOhueVBKvX2w_iIPMADj\",\"children\":[{\"id\":\"FEFswHQSQ043GwqB15GCp\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"URvlmioJ18yv2zFL4E99P\",\"children\":[{\"id\":\"Uc62XDl_nq6Bw41x4TqV6\",\"children\":[{\"id\":\"JVRKa_q66_dMHJ4HT1Cp5\",\"children\":[{\"id\":\"N-27e7hGi7Or0Aw3rHtMX\",\"children\":[{\"text\":\"authBuffer\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"oi54cu4vWjg7RFdjwF3KP\",\"children\":[{\"id\":\"GcrW1-Cj8Xl-Q7z3MDZcN\",\"children\":[{\"id\":\"w6eVzYsbRD12SK4xAyFRC\",\"children\":[{\"text\":\"const char*\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"WuvWoPTUHL0arPbWXvN7Z\",\"children\":[{\"id\":\"gcUHffp_OCxPAZmb9MepU\",\"children\":[{\"id\":\"J-bIOG1Hxbc4B7FOg1hax\",\"children\":[{\"text\":\"Authentication\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"LFIigYS_UyP3RtRRRYYSg\",\"children\":[{\"id\":\"gJXOYFaBJmVn-OorXDk3s\",\"children\":[{\"id\":\"eLl0Ov0S3mDHHJel32ubM\",\"children\":[{\"id\":\"C5-8VgxVJEZs7VKqG0_Ly\",\"children\":[{\"text\":\"authBufferLen\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Fo-0WuV7I5tJS5l-KZ5ec\",\"children\":[{\"id\":\"FBhf5P2tqr9xQwmwXgZRd\",\"children\":[{\"id\":\"0dWCignj7X5U09Qb07Gnd\",\"children\":[{\"text\":\"int\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"T3t7zf3dK8t-1RxQ1S7zq\",\"children\":[{\"id\":\"ZlqlKz-QjJma7IrEAR7cC\",\"children\":[{\"id\":\"9r5x8itCVGIY6xFIjZ940\",\"children\":[{\"text\":\"Authentication length\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[31,26,43],\"widthMode\":\"percentage\"},{\"id\":\"fN79wJe6eb6d2POjGHjXf\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code4\",\"type\":\"h4\"},{\"id\":\"ZPPWdvXiKV4DxQ3fEtoUY\",\"children\":[{\"id\":\"MoPA09B9GR8ceStTlgqHM\",\"children\":[{\"text\":\"ITMGContextGetInstance()->GetPTT()->ApplyPTTAuthbuffer(authBuffer,authBufferLen);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"pnzngE_sqG8sOt5rucWhQ\",\"children\":[{\"text\":\"Specifying the maximum duration of voice message\"}],\"nodeId\":\"specifying-the-maximum-duration-of-voice-message\",\"type\":\"h3\"},{\"id\":\"uKHgT62S-PyxS6O4AqsJR\",\"children\":[{\"text\":\"This API is used to specify the maximum duration of a voice message, which can be up to 58 seconds.\"}],\"type\":\"p\"},{\"id\":\"WcyTAS3iah84W3mp8hPrQ\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype8\",\"type\":\"h4\"},{\"id\":\"wKavVjZngPiklihBawdeG\",\"children\":[{\"id\":\"XAJjDDn6OoE1RtZIX8_Vv\",\"children\":[{\"text\":\"ITMGPTT virtual int SetMaxMessageLength(int msTime)\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"oLs84NNvwtJGGT3LtzWXy\",\"children\":[{\"id\":\"1yPLZRKQu5LsZ1AY2w6NW\",\"children\":[{\"id\":\"1-ipQUQEfwjR9FenmRuBX\",\"children\":[{\"id\":\"oHlBtu92z3CfPEqz0yBL1\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"V5CiWYvinvlz5WPe9vHmB\",\"children\":[{\"id\":\"VEmCecoRmRaUEDYjZlhXt\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"AXzyJGdZwdCJrJDfsTKlN\",\"children\":[{\"id\":\"ndqdQhp3POXeXlPF3Jakt\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"7cKpYasPKd0QfAAfptnN0\",\"children\":[{\"id\":\"pk2YQCbrrf7KETYQht0cr\",\"children\":[{\"id\":\"guyxkyzCg4PQrrJFBLJnY\",\"children\":[{\"id\":\"UZ2OoGELZgNJVUELI7cXn\",\"children\":[{\"text\":\"msTime\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ljzKUNlwwCKGomChpdvkJ\",\"children\":[{\"id\":\"NyP2LG0eGzKTR5j7gtk1W\",\"children\":[{\"id\":\"1KBtSdec276-oJTPS7R5m\",\"children\":[{\"text\":\"int\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"PJaXm_GN-yB43g7VI4poI\",\"children\":[{\"id\":\"-V5Tb6AV3-1bGpJvl18ig\",\"children\":[{\"id\":\"kLfl8I4Fb4idhdYoYC8c2\",\"children\":[{\"text\":\"Audio duration in ms. Value range: 1000 < msTime <= 58000\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[17,11,72],\"widthMode\":\"percentage\"},{\"id\":\"txyvu2OtPB5hM4Pi28iv6\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code5\",\"type\":\"h4\"},{\"id\":\"fsdMa-nggz7aD5OHbZJ7C\",\"children\":[{\"id\":\"OBD2FlO3HzwpexNwNNN4D\",\"children\":[{\"text\":\"int msTime = 10000;\"}],\"type\":\"code-line\"},{\"id\":\"98_nqtypYTIlxt3hcZBkY\",\"children\":[{\"text\":\"ITMGContextGetInstance()->GetPTT()->SetMaxMessageLength(msTime);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"45pla9gzLX0EpTZF_A5Ql\",\"children\":[{\"text\":\"Streaming Speech Recognition\"}],\"nodeId\":\"streaming-speech-recognition\",\"type\":\"h2\"},{\"id\":\"fXOpuLxzZD3cspPhnIxxa\",\"children\":[{\"text\":\"Voice message and speech-to-text APIs\"}],\"nodeId\":\"voice-message-and-speech-to-text-apis\",\"type\":\"h3\"},{\"id\":\"TZPskTUBVYXCyxdQkr9Di\",\"children\":[{\"id\":\"J_VbxohjKLUSnTUb5zwJ5\",\"children\":[{\"id\":\"aT14zfz-ovUbrTbV91exa\",\"children\":[{\"id\":\"KaE2S32Fz7H2tAsor4Ygk\",\"children\":[{\"text\":\"API\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"7rCyVnhEQhL9gERL8kEqZ\",\"children\":[{\"id\":\"fOIkI77DQ3hi4BHkTtMPh\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"UQiJ1lJToGp2hvle1eCFo\",\"children\":[{\"id\":\"TiSTyCeGZDNfCZeHRrFrf\",\"children\":[{\"id\":\"AtRqJg9mcew1p7FgyZN8x\",\"children\":[{\"id\":\"NKuNyxhDygYVT63H-rTXy\",\"children\":[{\"text\":\"StartRecordingWithStreamingRecognition\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Q5zK8hmNv4aON1ksc2U5a\",\"children\":[{\"id\":\"fbwWTQcbzlElgqLLaOdpb\",\"children\":[{\"id\":\"bahmfKbekglVs23sWZMAZ\",\"children\":[{\"text\":\"Starts streaming recording\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"aOBH--SnrA7V7dtrbqD_W\",\"children\":[{\"id\":\"n79y7ZVFv0XxDCU7gzE4J\",\"children\":[{\"id\":\"o1IS9JGh2JxzqnuMH9dK_\",\"children\":[{\"id\":\"fg7s5Gjj0ocuKR_4KwuUQ\",\"children\":[{\"text\":\"StopRecording\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"hzciU7MwYJF1yJTjJLIhi\",\"children\":[{\"id\":\"5UtEyAm1HKfTkqR_azf6Y\",\"children\":[{\"id\":\"GDSB7OVDDLUcL7u9paOjD\",\"children\":[{\"text\":\"Stops recording\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[59,41],\"widthMode\":\"percentage\"},{\"id\":\"IpykWFhvkMcDgp_ZrQh7s\",\"children\":[{\"text\":\"\"}],\"type\":\"p\"},{\"id\":\"fX0FtTNL2TWTK4gYSWNFL\",\"children\":[{\"text\":\"Starting streaming speech recognition\"}],\"nodeId\":\"starting-streaming-speech-recognition\",\"type\":\"h3\"},{\"id\":\"eFHt4_kHMezsaHqG6_N_A\",\"children\":[{\"text\":\"This API is used to start streaming speech recognition. Text obtained from speech-to-text conversion will be returned in real time in its callback. It can specify a language for recognition or translate the information recognized in speech into a specified language and return the translation. \"},{\"b\":1,\"text\":\"To stop recording, call \"},{\"type\":\"ref\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/51125?!editLang=en&!preview#Stop\"},\"children\":[{\"text\":\"Stop recording\"}],\"id\":\"wBa5icyqHDf0dH8lHD0I6\"},{\"text\":\".\"}],\"type\":\"p\"},{\"id\":\"XZ-8XT-NoJYbEoDPiGU7f\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype9\",\"type\":\"h4\"},{\"id\":\"ml4od8uCzdzR8dQTO_MKt\",\"children\":[{\"id\":\"fDekC-I3mhs_TdT-1vW4y\",\"children\":[{\"text\":\"ITMGPTT virtual int StartRecordingWithStreamingRecognition(const char* filePath) \"}],\"type\":\"code-line\"},{\"id\":\"92IfOkg8FxITIdjTLlrUv\",\"children\":[{\"text\":\"ITMGPTT virtual int StartRecordingWithStreamingRecognition(const char* filePath,const char* translateLanguage,const char* translateLanguage) \"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"hTlm4gtBVTvYYSIG3cfWI\",\"children\":[{\"id\":\"E-O-hvNk392G2A6YaXhl6\",\"children\":[{\"id\":\"WzXwhG8NXf-39WuAR_CGk\",\"children\":[{\"id\":\"T62V1AQc5TBynpaAtxTsn\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"IGdpSXVTv-KPdFC4VL0Dr\",\"children\":[{\"id\":\"GzwAugLv4_trDS8B14-TD\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"xLqlq7SHmFlQvL-AGq0uD\",\"children\":[{\"id\":\"zqsY7iTMZ9WhxfoHqxjS2\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"eACPCMzMAAQW54K7Oml6D\",\"children\":[{\"id\":\"nLvflsa5KOCg5LjuGnBqn\",\"children\":[{\"id\":\"SfZFZpgE2hWY-MkjnyZPs\",\"children\":[{\"id\":\"rbG2Sad6RfACxmGUwzfnH\",\"children\":[{\"text\":\"filePath\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"BPFrXzvF91YjAqRgTDxZ8\",\"children\":[{\"id\":\"618Kir_2uOdhTd9-9kznr\",\"children\":[{\"id\":\"WBgrYFif9LP4-t9HLaeak\",\"children\":[{\"text\":\"const char*\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"VYbu21sODDy2G5OfAu4fn\",\"children\":[{\"id\":\"1DlWWas53dIk78DsIwV2B\",\"children\":[{\"id\":\"aP-7UUoV6YT2mf4xOLGWn\",\"children\":[{\"text\":\"Path of stored audio file\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"3bYQbMx6PKnB9waOBoXS4\",\"children\":[{\"id\":\"RT8wZI24WkTgePoTr01Ar\",\"children\":[{\"id\":\"0Bzi0GaorJjHPCHgOCXIp\",\"children\":[{\"id\":\"kDkQDZ_BzhrN1Qdmk3O6F\",\"children\":[{\"text\":\"speechLanguage\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"hK-wpSztzHKj9wRtd80Hv\",\"children\":[{\"id\":\"_CB5gwVERrzPlV-LExFXE\",\"children\":[{\"id\":\"Pu28dDRgPLQ-7IfGXlXPQ\",\"children\":[{\"text\":\"const char*\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"P7ahJKUBRxpSP8KJB99EG\",\"children\":[{\"id\":\"a7cdvxYnNVdyhGBbECXDU\",\"children\":[{\"id\":\"YbnEAB9nJeEfIJnRs9aCK\",\"children\":[{\"text\":\"The language in which the audio file is to be converted to text. For parameters, see \"},{\"id\":\"ILEuw24zkJh3hkQGMET4h\",\"children\":[{\"text\":\"Language Parameter Reference List\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://intl.cloud.tencent.com/document/product/607/30260\",\"props\":{\"type\":\"link\",\"url\":\"https://intl.cloud.tencent.com/document/product/607/30260\"},\"type\":\"ref\"},{\"text\":\".\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"Vk97b-0PoSbGj7PgelcYV\",\"children\":[{\"id\":\"DLuUWwTliZ_lWqLfR9L3v\",\"children\":[{\"id\":\"Q93noafe7NAknzNXJH7Ne\",\"children\":[{\"id\":\"cAgO8X_i8PDnyBglm8bgB\",\"children\":[{\"text\":\"translateLanguage\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"8K7cj1Rf8nikh1XiDpiOK\",\"children\":[{\"id\":\"jyeuPfKeznNLepLCJtP1_\",\"children\":[{\"id\":\"Sz_F7BkbfLMk2HBSGOLvI\",\"children\":[{\"text\":\"const char*\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"U9ZoUYMmFbGjt_BaGoWww\",\"children\":[{\"id\":\"2TKlpTZKZg21PDfVYX9CK\",\"children\":[{\"id\":\"oMsBDEJOqZODaI-hTBcTi\",\"children\":[{\"text\":\"The language in which the audio file is to be translated to text. For parameters, see \"},{\"id\":\"XC7K6zEoHywK6kwazxhaJ\",\"children\":[{\"text\":\"Language Parameter Reference List\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://intl.cloud.tencent.com/document/product/607/30260\",\"props\":{\"type\":\"link\",\"url\":\"https://intl.cloud.tencent.com/document/product/607/30260\"},\"type\":\"ref\"},{\"text\":\".\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[16,14,70],\"widthMode\":\"percentage\"},{\"id\":\"OeKuuhWEVvdv2vrVREwLS\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code6\",\"type\":\"h4\"},{\"id\":\"GQnvL8zmtEkzVxFTdPqN9\",\"children\":[{\"id\":\"QRWaaSO4REx9z0mcGYTPc\",\"children\":[{\"text\":\"ITMGContextGetInstance()->GetPTT()->StartRecordingWithStreamingRecognition(filePath,\\\"cmn-Hans-CN\\\",\\\"cmn-Hans-CN\\\");\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"gNAZScFGvKIad_pPG2GnQ\",\"children\":[{\"id\":\"XA0brhjhMYDm_40xdiCow\",\"children\":[{\"b\":1,\"color\":\"#04C8DC\",\"text\":\"Note: \",\"type\":\"text\"}],\"type\":\"p\"},{\"id\":\"kx_93y-iv7VtqQ3VhHFnR\",\"children\":[{\"text\":\"Translation incurs additional fees. For more information, see \"},{\"id\":\"48fWVJHe9JYcVC8plDv2S\",\"children\":[{\"text\":\"Purchase Guide\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://intl.cloud.tencent.com/document/product/607/50009\",\"props\":{\"type\":\"link\",\"url\":\"https://intl.cloud.tencent.com/document/product/607/50009\"},\"type\":\"ref\"},{\"text\":\".\"}],\"type\":\"p\"}],\"hintType\":\"alert\",\"type\":\"hint\"},{\"id\":\"h55bv8qqAwBj6_VzDMizG\",\"children\":[{\"text\":\"Callback for streaming speech recognition\"}],\"nodeId\":\"callback-for-streaming-speech-recognition\",\"type\":\"h3\"},{\"id\":\"IrFqoVzZCf6mFhBXlw_7Y\",\"children\":[{\"text\":\"After streaming speech recognition is started, you need to listen on callback messages in the \"},{\"code\":1,\"text\":\"OnEvent\"},{\"text\":\" notification, which is as detailed below:\"}],\"type\":\"p\"},{\"id\":\"zICG3QeGda7VXFTeOthcV\",\"children\":[{\"code\":1,\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRECOGNITION_COMPLETE\"},{\"text\":\" returns text after the recording is stopped and the recognition is completed, which is equivalent to returning the recognized text after a paragraph of speech.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"JUHNN2wPU_BgfG-sN4gja\",\"children\":[{\"code\":1,\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRECOGNITION_IS_RUNNING\"},{\"text\":\" returns the recognized text in real-time during the recording, which is equivalent to returning the recognized text while speaking.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"n_IUhUFtF6PRwhrHsV9lS\",\"children\":[{\"text\":\"The event message will be identified in the \"},{\"code\":1,\"text\":\"OnEvent\"},{\"text\":\" notification based on the actual needs. The passed parameters include the following four messages.\"}],\"type\":\"p\"},{\"id\":\"R3OLQb-mTyazxvx2CCZDN\",\"children\":[{\"id\":\"e5VL55GYigMM7-amxMkuL\",\"children\":[{\"id\":\"vESCI4iuOuduuZI80ypdW\",\"children\":[{\"id\":\"uZzb8HomGnth-L_Uj0_fp\",\"children\":[{\"text\":\"Message Name\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"qxhBMWZzmu2_p-B-ax1Ka\",\"children\":[{\"id\":\"JLCXd1cZKTK-uZODQji5a\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"sMAH6I-xY4XZFJ_km7QTy\",\"children\":[{\"id\":\"EE64f4PjeWbSHY3vVn-BU\",\"children\":[{\"id\":\"TIw2lPGtxQbkPO-yctmc2\",\"children\":[{\"id\":\"HtMocbjJ89Gs2xivWKI-g\",\"children\":[{\"text\":\"result\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"j2wakXkTPmW8gGQNOmw0m\",\"children\":[{\"id\":\"WSqJ7zPG7XuoAqT0VgnjQ\",\"children\":[{\"id\":\"DfjG11O1AZGzkk6Oieck7\",\"children\":[{\"text\":\"Return code indicating whether streaming speech recognition is successful\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"awDi4hdQPX48e_0hfH-HU\",\"children\":[{\"id\":\"fHIyFEUw7qMhfQAwo07DQ\",\"children\":[{\"id\":\"z3tiq2-9Qv7_OEJPlDp0c\",\"children\":[{\"id\":\"gCfQjPtr34pzJjMKw_keR\",\"children\":[{\"text\":\"text\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ricrQKhkd3fHOnETfvCfb\",\"children\":[{\"id\":\"FS3ok74l8v89RVXXvQXDq\",\"children\":[{\"id\":\"y9V_Naw2-MhJlilVe7Xu2\",\"children\":[{\"text\":\"Text converted from speech\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"9K4QHI7_EzTuidk1l8Mkp\",\"children\":[{\"id\":\"wjAmskWZs8LTCCFoAv-kT\",\"children\":[{\"id\":\"nizUdJr9ijU2n-_tku7EC\",\"children\":[{\"id\":\"aEJ-WpICS4OxxZ_GhA291\",\"children\":[{\"text\":\"file_path\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ALfFN0JPCi_3efUcodXH4\",\"children\":[{\"id\":\"AIAjKF1y8Tcn9v1EkAMTq\",\"children\":[{\"id\":\"bei8lXPdxH4t_ZXP_S3Os\",\"children\":[{\"text\":\"Local path of stored recording file\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"Px7ZpkBzrgxQb52B6jTYR\",\"children\":[{\"id\":\"yZGTD02YoF1a_o8sPYnc8\",\"children\":[{\"id\":\"LiW6zk3N8HRaW0MuM7gA_\",\"children\":[{\"id\":\"ApPxPInQx8VFfwMsvVxbu\",\"children\":[{\"text\":\"file_id\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"VjJKTfH_hhaAYZRcZni7Q\",\"children\":[{\"id\":\"rfR_aWhFNJf3KcV0OhX-q\",\"children\":[{\"id\":\"tKcBYEchv8o8MfswPCca7\",\"children\":[{\"text\":\"Backend URL address of recording file, which will be retained for 90 days\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[20,80],\"widthMode\":\"percentage\"},{\"id\":\"BCZzBGBDVAyRD6HFF5x7W\",\"children\":[{\"id\":\"aO8hKtrfAEZ2pEiB__Orf\",\"children\":[{\"b\":1,\"color\":\"#04C8DC\",\"text\":\"Note: \"}],\"type\":\"p\"},{\"id\":\"-3Qmt74B0YuqEoRgaRFg3\",\"children\":[{\"text\":\"The file_id is empty when the 'ITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRecognition_IS_RUNNING' message is listened.\"}],\"type\":\"p\"}],\"hintType\":\"alert\",\"type\":\"hint\"},{\"id\":\"4e_D29Timg1ySM6LmjP3l\",\"children\":[{\"text\":\"Error codes\"}],\"nodeId\":\"error-codes\",\"type\":\"h4\"},{\"id\":\"NKjS_9HzBX8Nm9kMoD-w3\",\"children\":[{\"id\":\"rD8-x7vLJnpOD2y2Y18sr\",\"children\":[{\"id\":\"tGYDpXVTccJRlh82l_VH3\",\"children\":[{\"id\":\"3Gu4Epw6U-TVDe2y-HqXM\",\"children\":[{\"text\":\"Error Code\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Ji66i9eFGCgAFNbO4Gnuf\",\"children\":[{\"id\":\"lrKii1I6CikdrQHICm8kH\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"qfBjqpo_RsiTeZeDdOiqy\",\"children\":[{\"id\":\"_JOSAfGMHFnjqb9c6CspW\",\"children\":[{\"text\":\"Suggested Solution\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"CrW6ccPp02Cuh__m_AMjY\",\"children\":[{\"id\":\"h2WzgQP-NX157ey9xcJ0s\",\"children\":[{\"id\":\"idP1kT452v1XU-C8ytTBq\",\"children\":[{\"id\":\"IT5mB-RB_s2VXt0WipuK_\",\"children\":[{\"text\":\"32775\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"WFmgHXn3NtXsyCwQ9IP7x\",\"children\":[{\"id\":\"ZqM3F7LUpZiYsu_Rt1U9e\",\"children\":[{\"id\":\"q77qUDsXtK6emxHvqL81J\",\"children\":[{\"text\":\"Streaming speech-to-text conversion failed, but recording succeeded.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"0_TrUyM1do--SmIFCKAkV\",\"children\":[{\"id\":\"C1kQrFHg8vfp8oLN7j8Jp\",\"children\":[{\"id\":\"CuqVZ-GwTyzdGUDgLbVJF\",\"children\":[{\"text\":\"Call the \"},{\"code\":1,\"text\":\"UploadRecordedFile\"},{\"text\":\" API to upload the recording file and then call the \"},{\"code\":1,\"text\":\"SpeechToText\"},{\"text\":\" API to perform speech-to-text conversion.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"j1vK8h0GkAS57-DaF6xdL\",\"children\":[{\"id\":\"5pDuO5ftnm3gOl3O2VgzX\",\"children\":[{\"id\":\"1AdvNZljxx_zYyFRFjPJC\",\"children\":[{\"id\":\"vp_0DLQfEfmf5-nVyBx1d\",\"children\":[{\"text\":\"32777\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"phd0kZyzSnIlQ-qkNTdoc\",\"children\":[{\"id\":\"_inSJ7CmfqOd8CyQ2mjMp\",\"children\":[{\"id\":\"oEKwt1oTrEhmNLiwRciuZ\",\"children\":[{\"text\":\"Streaming speech-to-text conversion failed, but recording and upload succeeded.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"WyqSgJ42ePSA3EYPzzD1n\",\"children\":[{\"id\":\"ZMsojByHWu17CHKniI4YE\",\"children\":[{\"id\":\"8T4j883GpU4GAZT16OR1k\",\"children\":[{\"text\":\"The message returned contains a backend URL after successful upload. Call the \"},{\"code\":1,\"text\":\"SpeechToText\"},{\"text\":\" API to perform speech-to-text conversion.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"RHx9hrMWl27tSYWWl8xTV\",\"children\":[{\"id\":\"UqlOrF2IMka5BKH3UjyJe\",\"children\":[{\"id\":\"8IxoH2jya-AaybToSynV6\",\"children\":[{\"id\":\"2ECGbc-2lxCdtJNIydl3A\",\"children\":[{\"text\":\"32786\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"rlMOQQ4JJG2p-o9ANfhRH\",\"children\":[{\"id\":\"3KfHVFWiULkQkm7PNZENA\",\"children\":[{\"id\":\"YOeVFTAF89orYWWWI-mH8\",\"children\":[{\"text\":\"Streaming speech-to-text conversion failed.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"3wAi4trQ8dqki34eT6Vcc\",\"children\":[{\"id\":\"6kJklPEroRChnI4cO9DRL\",\"children\":[{\"id\":\"7-x_KqTfzXZN_MyxtZDT2\",\"children\":[{\"text\":\"During streaming recording, wait for the execution result of the streaming recording API to return.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"Bud8Axz5qEavbm3i4UBUl\",\"children\":[{\"id\":\"pIoh_GWucISaU3uLFBO7i\",\"children\":[{\"id\":\"H1uTrI_dGUVg7RkJnPyzR\",\"children\":[{\"id\":\"z50lVYVWlxSVwZVdxt8jH\",\"children\":[{\"text\":\"32787\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"swv1F7IXUm0h3Ew5bfBAI\",\"children\":[{\"id\":\"HrAZqXre3qfQxCj4X-yy6\",\"children\":[{\"id\":\"ngSpNYY-hOinBGgp4J5ai\",\"children\":[{\"text\":\"Speech-to-text conversion succeeded, but the text translation service was not activated.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"9VnCjaX3dhvZSkT-dMkeT\",\"children\":[{\"id\":\"ezFb78--FS1zQLDKsPydE\",\"children\":[{\"id\":\"R6fcprl35SdhVEIYsQu_5\",\"children\":[{\"text\":\"Activate the text translation service in the console.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"ZkYH_ABEkOaY7owgvCPLQ\",\"children\":[{\"id\":\"lmQ2v9NOGYkAPJYofHkfP\",\"children\":[{\"id\":\"iBmC-u6XEewjovBGe4kI9\",\"children\":[{\"id\":\"ur7UCRr9k-ZpVdeg_dYkE\",\"children\":[{\"text\":\"32788\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"sNar8F9_ltjkAcxSD0FJu\",\"children\":[{\"id\":\"fUXdHwFcf17AKzVqKQXsk\",\"children\":[{\"id\":\"PhYXs-sptKy3HZRm2F3J0\",\"children\":[{\"text\":\"Speech-to-text conversion succeeded, but the language parameter of the text translation service was invalid.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"5RU88bX8H-YDNypgKTuWg\",\"children\":[{\"id\":\"xCQ4tTrQHYZVCldwwcaKK\",\"children\":[{\"id\":\"hggXa8BnOQFcp5JJTFkpt\",\"children\":[{\"text\":\"Check the parameter passed in.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[11,40,49],\"widthMode\":\"percentage\"},{\"id\":\"tkPKy2Fha7Zrt6axUPF3-\",\"children\":[{\"text\":\"If the error code 4098 is reported, see \"},{\"id\":\"scNTxGefVfZIatfLhsLGj\",\"children\":[{\"text\":\"FAQs\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://intl.cloud.tencent.com/document/product/607/39716\",\"props\":{\"type\":\"link\",\"url\":\"https://intl.cloud.tencent.com/document/product/607/39716\"},\"type\":\"ref\"},{\"text\":\" for solutions.\"}],\"type\":\"p\"},{\"id\":\"z5KMQACEjC2hWw8mFUTew\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code7\",\"type\":\"h4\"},{\"id\":\"cXqR1HYlI95lewyo1pz0H\",\"children\":[{\"id\":\"ffcPXDc8M64BeoOMCRTEo\",\"children\":[{\"text\":\"void TMGTestScene::OnEvent(ITMG_MAIN_EVENT_TYPE eventType,const char* data){\"}],\"type\":\"code-line\"},{\"id\":\"zh28iRcpryEcwJ4yzGyOS\",\"children\":[{\"text\":\" switch (eventType) {\"}],\"type\":\"code-line\"},{\"id\":\"cf3ZtFoxHTq_9Vc5O2_b1\",\"children\":[{\"text\":\" case ITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRECOGNITION_COMPLETE:\"}],\"type\":\"code-line\"},{\"id\":\"lDHwtJ3BeqYcQCxz-NN2I\",\"children\":[{\"text\":\" {\"}],\"type\":\"code-line\"},{\"id\":\"1BlEvEhF9SY8pOeF0LfCx\",\"children\":[{\"text\":\" HandleSTREAM2TEXTComplete(data,true);\"}],\"type\":\"code-line\"},{\"id\":\"ik1Dlzm7TTeQuWRW8Z7Ql\",\"children\":[{\"text\":\" break;\"}],\"type\":\"code-line\"},{\"id\":\"6BUYpHGDSOk0mtBVu8RFM\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"aEO093udAkEE0UkZBXIGp\",\"children\":[{\"text\":\" ...\"}],\"type\":\"code-line\"},{\"id\":\"d_j0QLMyCcowRzlyVYQnL\",\"children\":[{\"text\":\" case ITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRECOGNITION_IS_RUNNING:\"}],\"type\":\"code-line\"},{\"id\":\"q4651Br81Cj7uw47QwmUJ\",\"children\":[{\"text\":\" {\"}],\"type\":\"code-line\"},{\"id\":\"-_ir-cXvpPlHjluRrxefe\",\"children\":[{\"text\":\" HandleSTREAM2TEXTComplete(data, false);\"}],\"type\":\"code-line\"},{\"id\":\"4B_6rTtFVyDr56yvGjMJH\",\"children\":[{\"text\":\" break;\"}],\"type\":\"code-line\"},{\"id\":\"bGmBOzF6vD4HsKOA-Ah3O\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"Azd4at7KfKiwDrsVw7y79\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"b8OaLd2EZv4o4EAth2lIA\",\"children\":[{\"text\":\"}\"}],\"type\":\"code-line\"},{\"id\":\"0ZB8Ylhf06MjELHLBrLKY\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"},{\"id\":\"jRrc-sM3LKJJzrWu0jeKF\",\"children\":[{\"text\":\"void CTMGSDK_For_AudioDlg::HandleSTREAM2TEXTComplete(const char* data, bool isComplete)\"}],\"type\":\"code-line\"},{\"id\":\"poK0jpUTzuLiEbXZH3a7x\",\"children\":[{\"text\":\"{\"}],\"type\":\"code-line\"},{\"id\":\"US6QUz7C2-2i4LuAYF-GJ\",\"children\":[{\"text\":\" std::string strText = \\\"STREAM2TEXT: ret=\\\";\"}],\"type\":\"code-line\"},{\"id\":\"VJdIQ7uISz1iyvH9Zlxkn\",\"children\":[{\"text\":\" strText += data;\"}],\"type\":\"code-line\"},{\"id\":\"CdMBppzIBY-lglz9inL77\",\"children\":[{\"text\":\" m_EditMonitor.SetWindowText(MByteToWChar(strText).c_str());\"}],\"type\":\"code-line\"},{\"id\":\"L9iCDqJbNjgmmbMH-lVZG\",\"children\":[{\"text\":\" Json::Reader reader;\"}],\"type\":\"code-line\"},{\"id\":\"1rPCzKVh3t9x6yt9YUJ7V\",\"children\":[{\"text\":\" Json::Value root;\"}],\"type\":\"code-line\"},{\"id\":\"4r7kXNvKQ9ZV221wPMli9\",\"children\":[{\"text\":\" bool parseRet = reader.parse(data, root);\"}],\"type\":\"code-line\"},{\"id\":\"cjlzcnqClDjzkbdRvpUYD\",\"children\":[{\"text\":\" if (!parseRet) {\"}],\"type\":\"code-line\"},{\"id\":\"RXJA_nSo1_6xGMtahCmVU\",\"children\":[{\"text\":\" ::SetWindowText(m_EditInfo.GetSafeHwnd(),MByteToWChar(std::string(\\\"parse result Json error\\\")).c_str());\"}],\"type\":\"code-line\"},{\"id\":\"OKdSsjCs3RFSPE3Zq8lrG\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"1HixFV--6M5wHWqAweYDT\",\"children\":[{\"text\":\" else\"}],\"type\":\"code-line\"},{\"id\":\"DGS3Ho-4sSV3EfX7HrCJw\",\"children\":[{\"text\":\" {\"}],\"type\":\"code-line\"},{\"id\":\"U6uaIyqf4KhEecHeBBCoo\",\"children\":[{\"text\":\" if (isComplete) {\"}],\"type\":\"code-line\"},{\"id\":\"BpZTUdhdcuLFlne8uS9fp\",\"children\":[{\"text\":\" ::SetWindowText(m_EditUpload.GetSafeHwnd(), MByteToWChar(root[\\\"file_id\\\"].asString()).c_str());\"}],\"type\":\"code-line\"},{\"id\":\"8AI2Hs1QM5U9z2TTwBQNS\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"sXzFjPleSnnTBNnAxG_w5\",\"children\":[{\"text\":\" else {\"}],\"type\":\"code-line\"},{\"id\":\"awm97IaDQ-NvQumToQKhT\",\"children\":[{\"text\":\" std::string isruning = \\\"STREAMINGRECOGNITION_IS_RUNNING\\\";\"}],\"type\":\"code-line\"},{\"id\":\"a2xjyJbCpFzW8_AmEQhq9\",\"children\":[{\"text\":\" ::SetWindowText(m_EditUpload.GetSafeHwnd(), MByteToWChar(isruning).c_str());\"}],\"type\":\"code-line\"},{\"id\":\"kGrhNqFF5J5rV5xOCRLaH\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"0Uk_jLbOO9-d0SK3V81JZ\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"uO2aHROOeLDsiBGOmsYhe\",\"children\":[{\"text\":\"}\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"FEF-NutHCtGxfYVtDZ15t\",\"children\":[{\"text\":\"Voice Message Recording\"}],\"nodeId\":\"voice-message-recording\",\"type\":\"h2\"},{\"id\":\"SGv_owkhqMfV1KZOWrd5v\",\"children\":[{\"b\":1,\"text\":\"The recording process is as follows: start recording > stop recording > return recording callback > start the next recording.\"}],\"type\":\"p\"},{\"id\":\"NqeYXyZ8RItDxJfjuCY2T\",\"children\":[{\"text\":\"Voice message and speech-to-text APIs\"}],\"nodeId\":\"voice-message-and-speech-to-text-apis2\",\"type\":\"h3\"},{\"id\":\"w9u42Ri-jlM5c9rBhqoe4\",\"children\":[{\"id\":\"mokRrbMBAg5VnxBp2Ya8k\",\"children\":[{\"id\":\"eKgQMvpUDbGXPfzhEVXe1\",\"children\":[{\"id\":\"Jx3kDFp2DxS-kcY2JmQm3\",\"children\":[{\"text\":\"API\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"hx_-CW2o26Nw7QXrOo7EB\",\"children\":[{\"id\":\"DgWxBECJUD2GxquwPvEET\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"h8dBL25VF2RGK17bq2JIf\",\"children\":[{\"id\":\"LkRpvzhtNYIWKKplzfSuK\",\"children\":[{\"id\":\"1id8amQemCdbTz4K4WFTu\",\"children\":[{\"id\":\"8R3eIrUWUkWVueg7IFnTG\",\"children\":[{\"text\":\"StartRecording\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"-pn166pC8OqL3rdmRuoeM\",\"children\":[{\"id\":\"0XXM5ZJMmlBlt42sV64Ej\",\"children\":[{\"id\":\"fHPqdIveEz4ExNKbkSnst\",\"children\":[{\"text\":\"Starts recording\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"4LBuP4_kl0djgNDOPppU3\",\"children\":[{\"id\":\"XZUSc8Ti1WTfyKwkR5t9k\",\"children\":[{\"id\":\"Utt_sJOPJ-XDBaxFFc7jw\",\"children\":[{\"id\":\"6JdifBttuoPj5xEV6HNIv\",\"children\":[{\"text\":\"PauseRecording\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Rx_FakaDOV0M_qzpkCf-d\",\"children\":[{\"id\":\"SIIRPfArIuPL-MrbtKm6X\",\"children\":[{\"id\":\"7TlYb5WA1ZHy4Bxoo_k2V\",\"children\":[{\"text\":\"Pauses recording\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"E6T1WHGKXQlw6syk3q1GZ\",\"children\":[{\"id\":\"mDFgPUrxi-AbErybkM5oG\",\"children\":[{\"id\":\"AOtOVDcQ_v4Mzd2YlNuX6\",\"children\":[{\"id\":\"XxF7I1el_R1i6omvBv4VN\",\"children\":[{\"text\":\"ResumeRecording\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"NktK06Rj_OM1Fvpua4K3C\",\"children\":[{\"id\":\"-cf4CWPjpC5wRdZ5sDTOB\",\"children\":[{\"id\":\"YXO6FP9D9kivXz75CkDod\",\"children\":[{\"text\":\"Resumes recording\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"pqVIMCT704kbVkO9OmvBe\",\"children\":[{\"id\":\"nf9XYnQpd2Q7ddBPVrmxT\",\"children\":[{\"id\":\"BKwjy8CUMYdC_iVXmQO6K\",\"children\":[{\"id\":\"3BfHmXvEM5Wb-h5fYkrpj\",\"children\":[{\"text\":\"StopRecording\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"4ci5IvgpaM-MOO3PeM7Ce\",\"children\":[{\"id\":\"nOs0Jad45aTomKGas4FEG\",\"children\":[{\"id\":\"E-NwXFTWCZH9phvTqKbV2\",\"children\":[{\"text\":\"Stops recording\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"XBtoJ2DnyG2bLJHq8UIQg\",\"children\":[{\"id\":\"gT_AMfk9S9qe-1wsXSMsx\",\"children\":[{\"id\":\"NKit7lt5SQxnwkpCvX7iL\",\"children\":[{\"id\":\"O9x7-kRLn8MEnFlaNjiOx\",\"children\":[{\"text\":\"CancelRecording\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"cRZxT6LCH4VEVunjL8iA_\",\"children\":[{\"id\":\"rJoO9yMhz2TuMkqHeCeI5\",\"children\":[{\"id\":\"MoZuoy_5orC6zpizMw6Zo\",\"children\":[{\"text\":\"Cancels recording\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[49,51],\"widthMode\":\"percentage\"},{\"id\":\"lz5_Zi76xf_SIa4PYbC0e\",\"children\":[{\"text\":\"Starting recording\"}],\"nodeId\":\"starting-recording\",\"type\":\"h3\"},{\"id\":\"nG9IrXT663rrBL9q7ypU6\",\"children\":[{\"text\":\"This API is used to start recording.\"}],\"type\":\"p\"},{\"id\":\"1NfZhmKocmEkCqof3Dec3\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype10\",\"type\":\"h4\"},{\"id\":\"qk46vmKPFdrR6dWKPbcS9\",\"children\":[{\"id\":\"1ZjoPKEGZqi2LI58VZSgV\",\"children\":[{\"text\":\"ITMGPTT virtual int StartRecording(const char* fileDir)\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"DICflWjQyZHXqcJVJR5GZ\",\"children\":[{\"id\":\"_7yrwG0Q9_KVvQMf4Myo-\",\"children\":[{\"id\":\"VugGf5JSgLDzkE42V1f_6\",\"children\":[{\"id\":\"CZR0M-OePKzMxF_RBWaji\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Sze83nRC3z4bY7dXFrFFy\",\"children\":[{\"id\":\"y-IzIWE5CTq9MaR2N3GRN\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"8TSd70aKVXhhgUKtgxqJQ\",\"children\":[{\"id\":\"wIjUA46UrBvP3x-_xc9CK\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"JveJ4mSbYjgWe8ZXdiG7O\",\"children\":[{\"id\":\"uo-gkXsx6P5M-qqtwy_Z1\",\"children\":[{\"id\":\"pFB_MKFOmdC3pUs27sD6O\",\"children\":[{\"id\":\"984wcC5A_z3eL4LJZ2AUE\",\"children\":[{\"text\":\"fileDir\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"tiuMp24bTbJKgoFakE2vG\",\"children\":[{\"id\":\"8dZteM0EceN4R5OHqpTOj\",\"children\":[{\"id\":\"NV5KsGT43m-wO0a1pGxx8\",\"children\":[{\"text\":\"const char*\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"cqunQBXfpeh6-_j_WvXjN\",\"children\":[{\"id\":\"WNmZQhwkV1dlls91Fjwd2\",\"children\":[{\"id\":\"4nobX39EZJLlaPSajLNaX\",\"children\":[{\"text\":\"Path of stored audio file\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[25,27,48],\"widthMode\":\"percentage\"},{\"id\":\"ewUmnIm0jjpyrL18qzp5y\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code8\",\"type\":\"h4\"},{\"id\":\"B47rfoWOoYBNqljoFRKr5\",\"children\":[{\"id\":\"phLAj69ed4YOGodM-tiFR\",\"children\":[{\"text\":\"char buffer[256]={0};\"}],\"type\":\"code-line\"},{\"id\":\"UPJjsHRJXEAKKJamrpfGw\",\"children\":[{\"text\":\"snprintf(buffer, sizeof(buffer), \\\"%sunreal_ptt_local.file\\\", getFilePath().c_str());\"}],\"type\":\"code-line\"},{\"id\":\"3e-3U4NH2t7AmJVrgP55c\",\"children\":[{\"text\":\"ITMGContextGetInstance()->GetPTT()->StartRecording(buffer);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"Xu5rSk8Q1bMQ5zez8QIK-\",\"children\":[{\"text\":\"Stopping recording\"}],\"nodeId\":\"stopping-recording\",\"type\":\"h3\"},{\"id\":\"9v6rKn-U3_nZVkuuUbekf\",\"children\":[{\"text\":\"This API is used to stop recording. It is async, and a callback for recording completion will be returned after recording stops. A recording file will be available only after recording succeeds.\"}],\"nodeId\":\"Stop\",\"type\":\"p\"},{\"id\":\"5xJRVvj89sixF7hWEFXyG\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype11\",\"type\":\"h4\"},{\"id\":\"jgks5vrUi8OcwpA2YdKVt\",\"children\":[{\"id\":\"XnWb7C09FVZFYH_lYeMIV\",\"children\":[{\"text\":\"ITMGPTT virtual int StopRecording()\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"gGmUms6knAfYclafqMX11\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code9\",\"type\":\"h4\"},{\"id\":\"7hS5pd4EJJHW_Cfs7RttQ\",\"children\":[{\"id\":\"MN7bZd0rXAglxRZjKmuid\",\"children\":[{\"text\":\"ITMGContextGetInstance()->GetPTT()->StopRecording();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"LuHuj9ieKi7W5Ofwo6ABH\",\"children\":[{\"text\":\"Callback for recording start\"}],\"nodeId\":\"callback-for-recording-start\",\"type\":\"h3\"},{\"id\":\"VCLy6ZvayvdQk6RXTarxW\",\"children\":[{\"text\":\"The recording start result will be returned through the callback.\"}],\"type\":\"p\"},{\"id\":\"cxBP2F4tCSuvee5HlTyk0\",\"children\":[{\"b\":1,\"text\":\"To stop recording, call \"},{\"b\":1,\"code\":1,\"text\":\"StopRecording\"},{\"text\":\". The callback for recording start will be returned after the recording is stopped.\"}],\"type\":\"p\"},{\"id\":\"dyaUFkSf9n0ys5Y1L0Rdv\",\"children\":[{\"id\":\"wwws20pydmE_maUCr4yJ8\",\"children\":[{\"id\":\"Ut7lHdT13PgaRWEjB9HTC\",\"children\":[{\"id\":\"EHRAM5CKNASPQdGFZfhls\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"NaJVot4lC9m5wnhWi1EBC\",\"children\":[{\"id\":\"gwUPJ1Q8cN8tmYSU34Dja\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"D5EiVUiWNgUxl41dEG7Gb\",\"children\":[{\"id\":\"m3kffyGMSlSWbpnuFrSGa\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"WCmul8b0wFbYBa-Izrfvj\",\"children\":[{\"id\":\"Kxh66-pUorZn2FnJXI2dr\",\"children\":[{\"id\":\"fZiZYKvgCllLYJ3kAwX4m\",\"children\":[{\"id\":\"mPZThOTuzdlgxv-8Bt7rQ\",\"children\":[{\"text\":\"result\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"yvIYgwOmENTbrVAJ3ns4F\",\"children\":[{\"id\":\"BNYqkfy1I9HFshlNczQyd\",\"children\":[{\"id\":\"taEt_8B3dVGf9QpEAK2Y3\",\"children\":[{\"text\":\"int32\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"P3w3o98TD42K9E511qRYA\",\"children\":[{\"id\":\"Vcdp4d9vUXBOjdY-6LKcx\",\"children\":[{\"id\":\"JqrRPGXsMDsVM8w9ffeAa\",\"children\":[{\"text\":\"0: recording is completed\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"MLn7v_n_ClOpq2HUJ_ezc\",\"children\":[{\"id\":\"BIEBohCB9AJ3enCl5OK6t\",\"children\":[{\"id\":\"yLeGRngmUiTNEgirbUC7H\",\"children\":[{\"id\":\"ecNbLDwwhO4UacgFANoqz\",\"children\":[{\"text\":\"filepath\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"N4s2BxHfVkJWruzw5CH2u\",\"children\":[{\"id\":\"mLx6r9JmE_1v53aRlNzFt\",\"children\":[{\"id\":\"xsRaJb_kDId5mZWkiNie9\",\"children\":[{\"text\":\"FString\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"FARjgBi9_LOMpLRslJ9ld\",\"children\":[{\"id\":\"P_dIr1PB3sGERQvxAdckA\",\"children\":[{\"id\":\"QbmQyY8HxtbfIhUtSNlMR\",\"children\":[{\"text\":\"Path of stored recording file, which must be accessible and cannot be the \"},{\"code\":1,\"text\":\"fileid\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[13,10,77],\"widthMode\":\"percentage\"},{\"id\":\"gYXC3kuQq2uAR2t2AKy_Z\",\"children\":[{\"text\":\"Error codes\"}],\"nodeId\":\"error-codes2\",\"type\":\"h4\"},{\"id\":\"szr5aORMcmFQR0pPOcSDq\",\"children\":[{\"id\":\"tbVTHyUrq_vTIDdRD-I8N\",\"children\":[{\"id\":\"p3CbVv6Ee_o1LSu_NQPMD\",\"children\":[{\"id\":\"eEPDmj0fpo7Om55TELqRm\",\"children\":[{\"text\":\"Error Code Value\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"A-D3b3mhcym6krdv8y4wV\",\"children\":[{\"id\":\"18OxpV9vZITslF7XkavKS\",\"children\":[{\"text\":\"Cause\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"YwXD82R1oo_78QxxALsve\",\"children\":[{\"id\":\"vXNh-94QQKAUGM1ZmgetV\",\"children\":[{\"text\":\"Suggested Solution\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"ShpIATgZuq7-T-JmyEgI5\",\"children\":[{\"id\":\"dCm1ZOnEN83ef2TF18fmL\",\"children\":[{\"id\":\"5gaBZIKHQG8OtgdatNkSS\",\"children\":[{\"id\":\"1WtXWhrngQhl9ApNrGYuo\",\"children\":[{\"text\":\"4097\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"qyFpiIZ6kgZTTIgUYEsiS\",\"children\":[{\"id\":\"GoAhZLttPEwrloELnHuiC\",\"children\":[{\"id\":\"pMDmDd8n8fx0LW4JSFWxB\",\"children\":[{\"text\":\"Parameter is empty.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"YL-KdfOPzfUyK_T61wYJ6\",\"children\":[{\"id\":\"jTmtpT-tHTEWeQDrZg-Hf\",\"children\":[{\"id\":\"jM7mrxY7nKFkCtIVcdJOB\",\"children\":[{\"text\":\"Check whether the API parameters in the code are correct.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"f63NXb4yHGFFSI4kwbnj4\",\"children\":[{\"id\":\"-5Law46qpbBjodb-3vJKI\",\"children\":[{\"id\":\"L_g_9k22xyORXCy7t0Tiv\",\"children\":[{\"id\":\"c95qgHeo4PhMPztyE5F55\",\"children\":[{\"text\":\"4098\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"YY264Yyqxni6yTwMLGbkk\",\"children\":[{\"id\":\"kmfggzqfPnzV4F9eZxIZC\",\"children\":[{\"id\":\"AiPRTy2RWjDfAGYkq1EHt\",\"children\":[{\"text\":\"Initialization error.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"XsV0ADpr0yXPjHRwoUDoT\",\"children\":[{\"id\":\"5jQ6K48nADjapb8RAuy9B\",\"children\":[{\"id\":\"LO1ozEFM9my4SCBtKqw1v\",\"children\":[{\"text\":\"Check whether the device is being used, whether the permissions are normal, and whether the initialization is normal.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"txQr-Srfz5lJdsWsKPJ0E\",\"children\":[{\"id\":\"W9LL2bsFpqieCTe_yrU5q\",\"children\":[{\"id\":\"JxTqWcMTwuwJIR6fh3bjQ\",\"children\":[{\"id\":\"8le2h52pnMq0ceOKG64MF\",\"children\":[{\"text\":\"4099\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"TeVMn80U4OMRo2ieXUWmu\",\"children\":[{\"id\":\"VXrDyjpV_n-Hfqtmx26cF\",\"children\":[{\"id\":\"VThnBvLIyQyR27uSt57NM\",\"children\":[{\"text\":\"Recording is in progress.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"xxl9O41kHlyy74G9eZvvy\",\"children\":[{\"id\":\"hTc1PB6ysLIfuPZUW_Nrx\",\"children\":[{\"id\":\"KRmbKOf2lQCjnj1Km88uY\",\"children\":[{\"text\":\"Ensure that the SDK recording feature is used at the right time.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"wEV88zyMep9ldwQco-Wcf\",\"children\":[{\"id\":\"9McrkJIC5w1EHmb_GqE6I\",\"children\":[{\"id\":\"El65Fbaq7X0ZfKSzMkHuu\",\"children\":[{\"id\":\"VhVAQzdV60HicYKg4dETA\",\"children\":[{\"text\":\"4100\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"fzxJV---bI4ojUhu64bPD\",\"children\":[{\"id\":\"F6OACWQaB6Mhbc7RcaXaF\",\"children\":[{\"id\":\"GSxudSGXZDeDx8wsR-Mqb\",\"children\":[{\"text\":\"Audio data is not captured.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"9EIK6DuD3VKYpJ7WqoxCa\",\"children\":[{\"id\":\"LZ5jAYMkCUVPc2jTGKUOr\",\"children\":[{\"id\":\"KjGdRUB3uXLPAsxcZTxGf\",\"children\":[{\"text\":\"Check whether the mic is working properly.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"SF_U0SO0feoGz4BT1B6kX\",\"children\":[{\"id\":\"H_2GSR31D5UseOqFWHd3N\",\"children\":[{\"id\":\"koOFcpsAbY_VY2Phh8cUi\",\"children\":[{\"id\":\"OaIsxN8aGOMvbW3I6uGDR\",\"children\":[{\"text\":\"4101\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"11melVthuT4bVmbJucmHO\",\"children\":[{\"id\":\"ZUKtUQnqkne0djjNEMSEO\",\"children\":[{\"id\":\"ql6AfV9p3XHY5cf8CaqeN\",\"children\":[{\"text\":\"An error occurred while accessing the file during recording.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"i6sc8nRnyAJeHePKDWC2m\",\"children\":[{\"id\":\"m0VgWMo7uIq_QyRFWCsRt\",\"children\":[{\"id\":\"lRjphX3EJOQZ6rI_vlGV8\",\"children\":[{\"text\":\"Ensure the existence of the file and the validity of the file path.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"3FkiYWGB508jU5DkxtOLD\",\"children\":[{\"id\":\"_cFL2Jrx72Gc-OJN1cNqr\",\"children\":[{\"id\":\"C9y_0G6vPjCKX4l5GZ5oL\",\"children\":[{\"id\":\"6jmpKbsdZoWs6e3dlPlfI\",\"children\":[{\"text\":\"4102\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Z_9wJ4gwdKWbwBCPC5VCZ\",\"children\":[{\"id\":\"WdRUaITOv1-R4iKxaw_Is\",\"children\":[{\"id\":\"j_jKjHwV7QH-6nVNrLCtX\",\"children\":[{\"text\":\"The mic is not authorized.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"_roKgGqTbDW_3KxJa__9j\",\"children\":[{\"id\":\"_NYLENaNA8DyaKd869X30\",\"children\":[{\"id\":\"zYKXVAovIQAibY2rRhrcr\",\"children\":[{\"text\":\"Mic permission is required for using the SDK. To add the permission, please see the SDK project configuration document for the corresponding engine or platform.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"EISM5OuTt5Dfppf4B_OP6\",\"children\":[{\"id\":\"VI6kfh2025MHG68C4-vUP\",\"children\":[{\"id\":\"fI8Seg-ZMMQR_AhV-HGf1\",\"children\":[{\"id\":\"opmjNGBLPH972kwADs5W7\",\"children\":[{\"text\":\"4103\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"JgtfKKSDiJnObic7cJ6W4\",\"children\":[{\"id\":\"TOYu0kXpCb7LqGXfKIGIf\",\"children\":[{\"id\":\"3aYrzJ3O2fYnEL5BEP1q7\",\"children\":[{\"text\":\"The recording duration is too short.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"G1wE-PSi4RNISwQGdL8Uh\",\"children\":[{\"id\":\"TQCrzgU1lvZgMR2ymDOO_\",\"children\":[{\"id\":\"IeSwu81J0kvXL4l-onbS5\",\"children\":[{\"text\":\"The recording duration should be in ms and longer than 1,000 ms.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"WCkzJtYJXqw3JuMw0wsb0\",\"children\":[{\"id\":\"PZYksOhwilOldwch5sQID\",\"children\":[{\"id\":\"I5baRLWWdL5_G-YC-nkwq\",\"children\":[{\"id\":\"Wc0NlhNNyimRjF2WNjAEw\",\"children\":[{\"text\":\"4104\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"rhoOLkU8BkGnOzbl7aqHx\",\"children\":[{\"id\":\"sumbh3qCEbAqH-6f6OLZy\",\"children\":[{\"id\":\"2Qy6-1rUv1k02AS3ry1Ur\",\"children\":[{\"text\":\"No recording operation is started.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"532Qfp9bATFp5pXT3doUr\",\"children\":[{\"id\":\"fhkDzwjn7iBLN91OD6oO3\",\"children\":[{\"id\":\"XykNj87jUNtm4TmiZDW_e\",\"children\":[{\"text\":\"Check whether the recording starting API has been called.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[15,28,57],\"widthMode\":\"percentage\"},{\"id\":\"uExZ85ECqEuPKtVJ5aQsH\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code10\",\"type\":\"h4\"},{\"id\":\"W_kKbTAPRbiCOHn6SU0y9\",\"children\":[{\"id\":\"czYW-kWO7wcuFRL1kNK9f\",\"children\":[{\"text\":\"void TMGTestScene::OnEvent(ITMG_MAIN_EVENT_TYPE eventType,const char* data){\"}],\"type\":\"code-line\"},{\"id\":\"glq72G68eOJQQfwOtUOOB\",\"children\":[{\"text\":\" switch (eventType) {\"}],\"type\":\"code-line\"},{\"id\":\"y-8te4P9k2njb8RbQQue_\",\"children\":[{\"text\":\" case ITMG_MAIN_EVENT_TYPE_ENTER_ROOM:\"}],\"type\":\"code-line\"},{\"id\":\"-tjzAde6mItUjbktAbTpk\",\"children\":[{\"text\":\" {\"}],\"type\":\"code-line\"},{\"id\":\"Ib5AQZjz5Pm8R4IzAeuep\",\"children\":[{\"text\":\" // Process\"}],\"type\":\"code-line\"},{\"id\":\"ufN-5FigxCMSBuivnrE1b\",\"children\":[{\"text\":\" break;\"}],\"type\":\"code-line\"},{\"id\":\"f--PGpLAy6KhXsJkDNdqg\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"6ZncuAwT9Q6tNy8FrpUF4\",\"children\":[{\"text\":\" ...\"}],\"type\":\"code-line\"},{\"id\":\"2O18l42XDK9DJOFSs1sr9\",\"children\":[{\"text\":\" case ITMG_MAIN_EVNET_TYPE_PTT_RECORD_COMPLETE:\"}],\"type\":\"code-line\"},{\"id\":\"Fz39jMiEo1-xP36j1zyzS\",\"children\":[{\"text\":\" {\"}],\"type\":\"code-line\"},{\"id\":\"a1GY1Se_3IaB8szpSzGWu\",\"children\":[{\"text\":\" // Process\"}],\"type\":\"code-line\"},{\"id\":\"7cZENBWgdkruC9nkWcxRu\",\"children\":[{\"text\":\" break;\"}],\"type\":\"code-line\"},{\"id\":\"pgd0MApVBKazJ7s5WaDkx\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"VN2Zr-gUji4eoWNLbMTS-\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"4iPvZVlzjuUnCPgZxZpKe\",\"children\":[{\"text\":\"}\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"72H2JIv6HHQve3WgO9eC9\",\"children\":[{\"text\":\"Pausing recording\"}],\"nodeId\":\"pausing-recording\",\"type\":\"h3\"},{\"id\":\"oIXyo3kMcDLUrhxdjHSPv\",\"children\":[{\"text\":\"This API is used to pause recording. If you want to resume recording, please call the \"},{\"code\":1,\"text\":\"ResumeRecording\"},{\"text\":\" API.\"}],\"type\":\"p\"},{\"id\":\"LIySXhkXK4JtuKQiqHU5P\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype12\",\"type\":\"h4\"},{\"id\":\"0Bk36y2ugx582QVkcMMAT\",\"children\":[{\"id\":\"QEDYBha90ThoTcWOsQ1Ai\",\"children\":[{\"text\":\"ITMGPTT virtual int PauseRecording()\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"jfZaEEw31lfhjLpH8Kj8s\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code11\",\"type\":\"h4\"},{\"id\":\"g0H7BKPMf_nbMXcLyyHpF\",\"children\":[{\"id\":\"bPsukPqw8NcmaHftv8iQR\",\"children\":[{\"text\":\"ITMGContextGetInstance()->GetPTT()->PauseRecording();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"0qeXqOk-gfzXg1zgVESYq\",\"children\":[{\"text\":\"Resuming recording\"}],\"nodeId\":\"resuming-recording\",\"type\":\"h3\"},{\"id\":\"DNeVHWFdiOZqyi7s__SlX\",\"children\":[{\"text\":\"This API is used to resume recording.\"}],\"type\":\"p\"},{\"id\":\"fImS02-xozYvd5JyTgtue\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype13\",\"type\":\"h4\"},{\"id\":\"9BtX4sbeCVRg1veK67Aej\",\"children\":[{\"id\":\"SFAFwk44qIrLPO2fubZhw\",\"children\":[{\"text\":\"ITMGPTT virtual int ResumeRecording()\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"wLAuMx0ky6oF_FQDDsKAR\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code12\",\"type\":\"h4\"},{\"id\":\"0oTQXp8tB6Qh9xpFwlsKe\",\"children\":[{\"id\":\"w_7JQwNEPVK_mVxn-Zago\",\"children\":[{\"text\":\"ITMGContextGetInstance()->GetPTT()->ResumeRecording();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"WJ0eumRbz09r8VQTjTKvb\",\"children\":[{\"text\":\"Canceling recording\"}],\"nodeId\":\"canceling-recording\",\"type\":\"h3\"},{\"id\":\"taH8uq3ShpGVG_dgeMvjL\",\"children\":[{\"text\":\"This API is used to cancel recording. \"},{\"b\":1,\"text\":\"There is no callback after cancellation\"},{\"text\":\".\"}],\"type\":\"p\"},{\"id\":\"z_GPoWF6wA6w8zErXPvcr\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype14\",\"type\":\"h4\"},{\"id\":\"S6W5NxNXUC5SP6LSdX7g0\",\"children\":[{\"id\":\"Evr23LvuJo7ZUCslY15Gz\",\"children\":[{\"text\":\"ITMGPTT virtual int CancelRecording()\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"3Efw8jSkXf8ySH0W3lV4V\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code13\",\"type\":\"h4\"},{\"id\":\"Uf2sgyeRf7cwxjfg2ZjN8\",\"children\":[{\"id\":\"huCY9D5eoFtULO7uETjh3\",\"children\":[{\"text\":\"ITMGContextGetInstance()->GetPTT()->CancelRecording();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"4gjHR8BWmtBy3xrafcfn5\",\"children\":[{\"text\":\"Voice Message Upload, Download, and Playback\"}],\"nodeId\":\"voice-message-upload.2C-download.2C-and-playback\",\"type\":\"h2\"},{\"id\":\"yzS04KOuSmecwog4rfW7-\",\"children\":[{\"id\":\"d_Hf0t-8-fGTq8OVoFZQq\",\"children\":[{\"id\":\"EaRY7D7X4NfEnvQg9sIz_\",\"children\":[{\"id\":\"0hAAnxARA9-6uoz__Ep4s\",\"children\":[{\"text\":\"API\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ISki4upMNREftsm62_Lhv\",\"children\":[{\"id\":\"ok9E9ifsHPT6DPYzvvdO8\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"vFn450Htj7KRkZK1Pdw_l\",\"children\":[{\"id\":\"quEKkyIhEQAruG1fhtnlN\",\"children\":[{\"id\":\"F7in5Q-sLRhrhrvDaosdX\",\"children\":[{\"id\":\"z_fWaWpwgELVGlrYXuGpa\",\"children\":[{\"text\":\"UploadRecordedFile\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"sR6mqunD4KZ-MQyyUoeuX\",\"children\":[{\"id\":\"YoeEzxDif-q37d7Eph-hV\",\"children\":[{\"id\":\"rXveHlUshYqRmrm6rWbe-\",\"children\":[{\"text\":\"Uploads the audio file\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"jBLMdvjuEiVTW-MO6APOb\",\"children\":[{\"id\":\"oJ551t2rESi7cEM06VD_H\",\"children\":[{\"id\":\"LFVxhW3SAJBlIDYYPD2Gt\",\"children\":[{\"id\":\"doQyanS_nDlcOx9GvT3vf\",\"children\":[{\"text\":\"DownloadRecordedFile\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"i85l8fSH7p8hWDoT2vuaz\",\"children\":[{\"id\":\"y5crDaS1QXsLhY6XXJlMX\",\"children\":[{\"id\":\"aGFQ5HL8bD0NpVf_qf26p\",\"children\":[{\"text\":\"Downloads the audio file\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"FUqg-4x9kiObAZ1nDQP_E\",\"children\":[{\"id\":\"kL6tfDJmoNeYCM2ZuzHI1\",\"children\":[{\"id\":\"M1fuAtUna5MbRgbJJ5YCZ\",\"children\":[{\"id\":\"fpV5pvMUh0UGMLox8fb8q\",\"children\":[{\"text\":\"PlayRecordedFile\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"JB-0GLE9KC6usHA0vxf-P\",\"children\":[{\"id\":\"ICGHhj9P9ng_TZDNNBQkL\",\"children\":[{\"id\":\"CMrtvqUZ5ihPj3IAT1g_v\",\"children\":[{\"text\":\"Plays back the audio file\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"6mwVv5SIOsR5romPXG0QI\",\"children\":[{\"id\":\"r-FLcOH49jNHILpPAlVHN\",\"children\":[{\"id\":\"tFMk9v6qxtl_cwiJsNcUd\",\"children\":[{\"id\":\"a4KLIbU_ugsZZ0_ujUs_d\",\"children\":[{\"text\":\"StopPlayFile\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"9T4czS69EASBhqzf6v5ZD\",\"children\":[{\"id\":\"_TctK-Sa--ODdSONW3-h3\",\"children\":[{\"id\":\"y68j5m673pxgOv3_UOsff\",\"children\":[{\"text\":\"Stops playing back the audio file\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"u5POJXQ6ZmmdyMq6d2BUe\",\"children\":[{\"id\":\"REh0fN7bTfSgcwfabxNKE\",\"children\":[{\"id\":\"d__c4x1KhuIVCJ8YBgcln\",\"children\":[{\"id\":\"CxFWnVzS8cFW4uL3STEM_\",\"children\":[{\"text\":\"GetFileSize\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"8EjzDuZXifYg3encjXGfM\",\"children\":[{\"id\":\"fl0vs_9zeMrEhZZRucOKZ\",\"children\":[{\"id\":\"jxxwrsMPgvqZzycsh3Lp4\",\"children\":[{\"text\":\"Gets audio file size\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"ckAYNQLNo0vyOOWAdI1-z\",\"children\":[{\"id\":\"863uX1gOFNKcYNYKQMDHd\",\"children\":[{\"id\":\"EVv5aOM7XGKhFyXwTeN-d\",\"children\":[{\"id\":\"SOataxHyc8jfw6NR4IGJ3\",\"children\":[{\"text\":\"GetVoiceFileDuration\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"6Q1-pgLuaG2fuQtdrROkl\",\"children\":[{\"id\":\"4HeqQudhK0QjQ6plRBLgT\",\"children\":[{\"id\":\"zxxjcqW_R5ZJBmjRadVKj\",\"children\":[{\"text\":\"Gets the audio file duration\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[43,57],\"widthMode\":\"percentage\"},{\"id\":\"JBXftrQ5O57Qxz8mCl4LY\",\"children\":[{\"text\":\"Uploading an audio file\"}],\"nodeId\":\"uploading-an-audio-file\",\"type\":\"h3\"},{\"id\":\"S6kB34zFFKTKAAZ82Knri\",\"children\":[{\"text\":\"This API is used to upload an audio file.\"}],\"type\":\"p\"},{\"id\":\"ICOk8ngO6HSz2trSxbaFo\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype15\",\"type\":\"h4\"},{\"id\":\"20p3YNENQhnhrwaH6zcPd\",\"children\":[{\"id\":\"rkHDEmDiusrJx7yF7-TkC\",\"children\":[{\"text\":\"ITMGPTT virtual int UploadRecordedFile(const char* filePath)\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"VXsU7VSHSXUg6kGhqIIBt\",\"children\":[{\"id\":\"tvCKnvCsWSL4lWncu-3CT\",\"children\":[{\"id\":\"UaFhTDBV2sNFIKZ-4Sm2Z\",\"children\":[{\"id\":\"11Tpp5K_mWketxbTwZnpQ\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"uw1u48YPEkWgCArCOt_K_\",\"children\":[{\"id\":\"yWbQR5rzseaTI-5NNDMTH\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"cJRfthlxGI4LlmxPFDS9Y\",\"children\":[{\"id\":\"a0L7RIp9OmkZV7mTgz0d-\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"SfyUNp8l4ajxzxPszPaLt\",\"children\":[{\"id\":\"wybTfCijqZdH5YKJuJVlP\",\"children\":[{\"id\":\"IKugMjGwy60ikrybGxHtw\",\"children\":[{\"id\":\"nMFV7IGLbpY4-8ErX0dFp\",\"children\":[{\"text\":\"filePath\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"SQjzBrfJvyn9_rrukbzEf\",\"children\":[{\"id\":\"5S_ew_KUf01Uemvpds4IB\",\"children\":[{\"id\":\"NolPk9v4-cCGt2xS2WFQG\",\"children\":[{\"text\":\"const char*\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"CZdkUv5qcRmqSUlXt9B0v\",\"children\":[{\"id\":\"G6kd-efFL1J8wFU5Yew2N\",\"children\":[{\"id\":\"BHDTBHXJtZUuxlHj5-Tdp\",\"children\":[{\"text\":\"Path of uploaded audio file, which is a local path\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[18,19,63],\"widthMode\":\"percentage\"},{\"id\":\"wb1THHf2HpJVuGiRH4bDy\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code14\",\"type\":\"h4\"},{\"id\":\"lxnqdncgjh9XzM-3o-pc7\",\"children\":[{\"id\":\"JmeEzRk1VGxVM5EI5bq9c\",\"children\":[{\"text\":\"ITMGContextGetInstance()->GetPTT()->UploadRecordedFile(filePath);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"-6stCKvxTZ_rP7WuP-MyU\",\"children\":[{\"text\":\"Callback for audio file upload completion\"}],\"nodeId\":\"callback-for-audio-file-upload-completion\",\"type\":\"h3\"},{\"id\":\"lcXaLthDBl-TDkJDIqetY\",\"children\":[{\"text\":\"After the audio file is uploaded, the event message \"},{\"code\":1,\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_UPLOAD_COMPLETE\"},{\"text\":\" will be returned, which will be identified in the \"},{\"code\":1,\"text\":\"OnEvent\"},{\"text\":\" function.\\nThe passed parameters include \"},{\"code\":1,\"text\":\"result\"},{\"text\":\", \"},{\"code\":1,\"text\":\"file_path\"},{\"text\":\", and \"},{\"code\":1,\"text\":\"file_id\"},{\"text\":\".\"}],\"type\":\"p\"},{\"id\":\"FePEWPS5iRhKVm0ephgNC\",\"children\":[{\"id\":\"nF5ITKXKmgmWmXpe7f0aE\",\"children\":[{\"id\":\"NMJl6572NABEKJAX-YVJb\",\"children\":[{\"id\":\"KfZXYbORKvwHU0fbFo_U4\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"gerj1zJ3w4Iizy4JApk5g\",\"children\":[{\"id\":\"V3x6__vqQ5Q5fdoLu-V05\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"tNlVc4jRgCapPltdF-o66\",\"children\":[{\"id\":\"48loLiXjBK9x5W3PG8_eL\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"PEfZzxKFX-7LMoCmSDjFE\",\"children\":[{\"id\":\"Bpocpt0ZhSSGgTDXHvr6g\",\"children\":[{\"id\":\"2R0wJNf_ugZO5hPkSsV3m\",\"children\":[{\"id\":\"FKWhC6veh5KnjjkgE_zLq\",\"children\":[{\"text\":\"result\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"govw4b6ECCu1EFKq5dK0d\",\"children\":[{\"id\":\"VJ7mdCEJ1h50yP4QqN4gk\",\"children\":[{\"id\":\"HbuuFeJPZ42bDkBySedsC\",\"children\":[{\"text\":\"int32\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"0o1QjHFQxLMAJKWKw2oQ_\",\"children\":[{\"id\":\"A5IGP_OtDCgn2JKRq4q82\",\"children\":[{\"id\":\"sVtn2AiHkxyo9NPvEFFr-\",\"children\":[{\"text\":\"0: recording is completed\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"IeMiI_BFK4uNYeONWlexI\",\"children\":[{\"id\":\"cNLvSfOQ0kRIfhYnQcvZk\",\"children\":[{\"id\":\"zVITFniRFHqaeZRK5RsUU\",\"children\":[{\"id\":\"s4cz21MqLtPUOCR3Z8tGR\",\"children\":[{\"text\":\"filepath\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"EMmTWNva7XsbJGdvnQVGk\",\"children\":[{\"id\":\"FQIe_V13R8CauHrzw5nrH\",\"children\":[{\"id\":\"Cw_nRHuNcGRXzV6XdVVkc\",\"children\":[{\"text\":\"FString\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"qoH49KZylo-EEqs42C3Sz\",\"children\":[{\"id\":\"G9P8207LNYtRtNn70659q\",\"children\":[{\"id\":\"oA-ytQIiNaqtTmGR_UdQq\",\"children\":[{\"text\":\"Path of stored recording file\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"YU_9Ogi2wRxO9IXuZMh4T\",\"children\":[{\"id\":\"rNsklEITRwqI-HDaR-sIi\",\"children\":[{\"id\":\"q_vqlKKDLrFvi2bXKZQN1\",\"children\":[{\"id\":\"nCkEeh-0y8L1yN9-T7nDf\",\"children\":[{\"text\":\"fileid\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"XIMQonYPqsdc4MEPQbrwu\",\"children\":[{\"id\":\"kg_fPQUQr7EyP8Yvdjy0-\",\"children\":[{\"id\":\"zg-Ztd4nibEeem2WeVM2s\",\"children\":[{\"text\":\"FString\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Z1TGfUCgFLuuao4aew0Ws\",\"children\":[{\"id\":\"00W8LxuGSXWxIaY1as3lV\",\"children\":[{\"id\":\"SuWbuTLLkPMB1_Q_JkxwS\",\"children\":[{\"text\":\"File URL path\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[25,20,55],\"widthMode\":\"percentage\"},{\"id\":\"cmZiWdLjxizIpxfBb712b\",\"children\":[{\"text\":\"Error codes\"}],\"nodeId\":\"error-codes3\",\"type\":\"h4\"},{\"id\":\"HzlShRbxT414nQCL_t7UM\",\"children\":[{\"id\":\"cy5Go__DU8RI9RwtIaegj\",\"children\":[{\"id\":\"WPaklmjSqmpobueeEMXBz\",\"children\":[{\"id\":\"x6njBS3gsYINp7sjtMfhx\",\"children\":[{\"text\":\"Error Code Value\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"_9OKpIoNSRVIrydZeSqii\",\"children\":[{\"id\":\"PoxogpVv53WLi_KyERuIX\",\"children\":[{\"text\":\"Cause\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"3aLd4R5N0r2EzQBRfap9C\",\"children\":[{\"id\":\"A1iBJPjaYkmxmMAA7gfqk\",\"children\":[{\"text\":\"Suggested Solution\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"pTFZbPy-2LEz3H8PkWXVC\",\"children\":[{\"id\":\"ZTRJmzEK-69pKADgQxURQ\",\"children\":[{\"id\":\"gvVTj0qC2F8yDZTuZTlQg\",\"children\":[{\"id\":\"z5A-N3NhsazaRGIxjtdSU\",\"children\":[{\"text\":\"8193\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"YPh3V0yhkyi7_RG1qooGO\",\"children\":[{\"id\":\"hBvNgfXXaqoTNi6mFV5Oq\",\"children\":[{\"id\":\"pr0Me75jX5mi1frZbI-7N\",\"children\":[{\"text\":\"An error occurred while accessing the file during upload.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"4dO8QZ3rkilkdb03dDrbc\",\"children\":[{\"id\":\"26lf5R8iPcsExQQRYGE-d\",\"children\":[{\"id\":\"rl4kMXGqBvVvAcd5yDn35\",\"children\":[{\"text\":\"Ensure the existence of the file and the validity of the file path.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"FBwhMSzgRCcDR_grJLjkx\",\"children\":[{\"id\":\"b08azfh3BiHRv_7x9iZHF\",\"children\":[{\"id\":\"MtVy6H0Y2JCQ3enwPeddA\",\"children\":[{\"id\":\"XzB8Cva_c8CoDXKSb13my\",\"children\":[{\"text\":\"8194\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"QTfI88fEFUF1UwPxYpIfM\",\"children\":[{\"id\":\"V107VGTChvEBar3wi5Ely\",\"children\":[{\"id\":\"hIevpbtpptbeC_LOI6NLp\",\"children\":[{\"text\":\"Signature verification failed.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"MSR6QL9dYyCm1pea5nEBD\",\"children\":[{\"id\":\"eWp3uybKoKQtlNIwafNIr\",\"children\":[{\"id\":\"iClw3O1ZACI_3tXbTJaGW\",\"children\":[{\"text\":\"Check whether the authentication key is correct and whether the voice message and speech-to-text feature is initialized.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"qEQN2W9XJMyOnBc2zcGBN\",\"children\":[{\"id\":\"6EJ5Fb6zkZmtH2xRRJtU3\",\"children\":[{\"id\":\"50OqMyWzihQPx-O61JL4z\",\"children\":[{\"id\":\"i2c0OEnORsbKYR5E4hnkL\",\"children\":[{\"text\":\"8195\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"WbcYrkjY75kDrATTGYUIg\",\"children\":[{\"id\":\"CfiOZEaHibSaLEZpG_6Ol\",\"children\":[{\"id\":\"uMj4V3gcCA2S6P8vr3I5P\",\"children\":[{\"text\":\"A network error occurred.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"GaQt5ox1u7jI--ftE0n0t\",\"children\":[{\"id\":\"LdAAOjKyBwWOgvybgzcUr\",\"children\":[{\"id\":\"Fe_gKup_lrTleBXJUGw84\",\"children\":[{\"text\":\"Check whether the device can access the internet.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"Yb1QD0kaoH3l4jrh2k0x-\",\"children\":[{\"id\":\"wp7ygG44gAq8mBSKktVGt\",\"children\":[{\"id\":\"q0KFqtBxr2cAdB2-Ya4qB\",\"children\":[{\"id\":\"DX6kjAamN_IxgsN09Gmgs\",\"children\":[{\"text\":\"8196\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"FQCUckdbQeygq5VspV2bU\",\"children\":[{\"id\":\"GDCqhWuzU0A0PDKP5qXaa\",\"children\":[{\"id\":\"qIlU6hUbQrVYOE91j2U2P\",\"children\":[{\"text\":\"The network failed while getting the upload parameters.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"R2HzbNxZqV0RyY0pd2nD9\",\"children\":[{\"id\":\"OvlSTs5XvFV-TNJYLdOUg\",\"children\":[{\"id\":\"u3DKReCQnlvGfwAvCkryM\",\"children\":[{\"text\":\"Check whether the authentication is correct and whether the device can access the internet.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"MT1p-bd2cJPUzYsX3cbv9\",\"children\":[{\"id\":\"FYSQAjBbdoEwsm_TYNUpj\",\"children\":[{\"id\":\"PspXgPUYK0JCG0hon2Oja\",\"children\":[{\"id\":\"UXU1IldBfCicSC01nTP_3\",\"children\":[{\"text\":\"8197\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"HOBJvOdZU3s2MGRIkrQVU\",\"children\":[{\"id\":\"DaL1mgNqRr0PyUlDBHQ4Z\",\"children\":[{\"id\":\"0Qo2HPYxVGF0YGTAkg2cB\",\"children\":[{\"text\":\"The packet returned during the process of getting the upload parameters is empty.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Nu79bE6J4CgscPVS2gw02\",\"children\":[{\"id\":\"xUPq2c8Kj_JozSQvZoNx0\",\"children\":[{\"id\":\"3P-GdgCHyPixjixYdu6TJ\",\"children\":[{\"text\":\"Check whether the authentication is correct and whether the device network can normally access the internet.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"s6w9LceKtvN-p2O1-MrFF\",\"children\":[{\"id\":\"igoWjprMyYwqJ64xOJluA\",\"children\":[{\"id\":\"kNDLjkFlDAy7UOfWrHCfu\",\"children\":[{\"id\":\"DkF95T3QRLLDiWUV0DDo5\",\"children\":[{\"text\":\"8198\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"8Bbehbq6xKCfpvWBZ4i5X\",\"children\":[{\"id\":\"XsI1X7xJQ4PEqqFC61Ea0\",\"children\":[{\"id\":\"j7mC6AumKv-pHLkY7Xw99\",\"children\":[{\"text\":\"Failed to decode the packet returned during the process of getting the upload parameters.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"mAV2C0RylZpoMIH0-5lYM\",\"children\":[{\"id\":\"EPl5iNz0sFLGJGyB3bvWW\",\"children\":[{\"id\":\"3igmJ2NfvWaJgegagseDD\",\"children\":[{\"text\":\"Check whether the authentication is correct and whether the device can access the internet.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"lxFyZ9Zc1HaHuqCqgq6tY\",\"children\":[{\"id\":\"JRp1liHsOE714x3IZidUN\",\"children\":[{\"id\":\"rVYpkTjBbayC67Q0aIZCC\",\"children\":[{\"id\":\"gxvgIIJMtrr8xzfslVXz4\",\"children\":[{\"text\":\"8200\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"xzOszFLqviD3aP3nig-wC\",\"children\":[{\"id\":\"ezhCdli388-YrBmcYPQCT\",\"children\":[{\"id\":\"qonke_fAvdAym3oT9vO5o\",\"children\":[{\"text\":\"No \"},{\"code\":1,\"text\":\"appinfo\"},{\"text\":\" is set.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"6xHIwL35kmzF4iwozkAc2\",\"children\":[{\"id\":\"twId0V-FQDer_X66gtrcz\",\"children\":[{\"id\":\"y8fmq8OyB_mxenKWO7mFG\",\"children\":[{\"text\":\"Check whether the \"},{\"code\":1,\"text\":\"apply\"},{\"text\":\" API is called or whether the input parameters are empty.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[17,34,49],\"widthMode\":\"percentage\"},{\"id\":\"z0BK8SZbh4R22FbgxxHfj\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code15\",\"type\":\"h4\"},{\"id\":\"xWbwui0ptGeI40QuEpiBV\",\"children\":[{\"id\":\"Q5PKot5mQBECRAIwTebe8\",\"children\":[{\"text\":\"void TMGTestScene::OnEvent(ITMG_MAIN_EVENT_TYPE eventType,const char* data){\"}],\"type\":\"code-line\"},{\"id\":\"o4AVT_d6sGjoUDz726YFs\",\"children\":[{\"text\":\" switch (eventType) {\"}],\"type\":\"code-line\"},{\"id\":\"mV3rG3MwII2qdvPLWEDEi\",\"children\":[{\"text\":\" case ITMG_MAIN_EVENT_TYPE_ENTER_ROOM:\"}],\"type\":\"code-line\"},{\"id\":\"lQwWNWHVQTui36rU5zQqj\",\"children\":[{\"text\":\" {\"}],\"type\":\"code-line\"},{\"id\":\"pZ93htZhuvEb06ICQVome\",\"children\":[{\"text\":\" // Process\"}],\"type\":\"code-line\"},{\"id\":\"7cQZTaIdzbyxRIrcbBT1M\",\"children\":[{\"text\":\" break;\"}],\"type\":\"code-line\"},{\"id\":\"hmwZRPPfNay-2yJwcYpqT\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"s6CI47FH8aXx_X1p6_OxL\",\"children\":[{\"text\":\" ...\"}],\"type\":\"code-line\"},{\"id\":\"RYKOmno6mcLsNPJM4KMI9\",\"children\":[{\"text\":\" case ITMG_MAIN_EVNET_TYPE_PTT_UPLOAD_COMPLETE:\"}],\"type\":\"code-line\"},{\"id\":\"3EmBGWFG9R6MoEw_2A7DB\",\"children\":[{\"text\":\" {\"}],\"type\":\"code-line\"},{\"id\":\"1usVB8FC5mAGZYVw-k3aQ\",\"children\":[{\"text\":\" // Process\"}],\"type\":\"code-line\"},{\"id\":\"-v9A0dzIb5kNZpyxBxdwM\",\"children\":[{\"text\":\" break;\"}],\"type\":\"code-line\"},{\"id\":\"A1AsMUlDKJ2eEJyTuNTeA\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"A2kbzEsBwCrb6uWhb5N2y\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"0tnnqL8jroFky9vPuQtoM\",\"children\":[{\"text\":\"}\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"r3gxMEoNEKFmsgyFk05LW\",\"children\":[{\"text\":\"Downloading the audio file\"}],\"nodeId\":\"downloading-the-audio-file\",\"type\":\"h3\"},{\"id\":\"G1XtGwMTQJafb4SIA_RPi\",\"children\":[{\"text\":\"This API is used to download an audio file.\"}],\"type\":\"p\"},{\"id\":\"89iZP-jv5clr8LCM73EVv\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype16\",\"type\":\"h4\"},{\"id\":\"0sLrQU2TZp2gDZoTT9HMd\",\"children\":[{\"id\":\"FX-VNxHZ1mtDnWSFw_96Q\",\"children\":[{\"text\":\"ITMGPTT virtual int DownloadRecordedFile(const char* fileId, const char* filePath) \"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"GmGpl5JP7T0NZG_P96P1P\",\"children\":[{\"id\":\"1dn-KjZOvCFqMpRNKALzS\",\"children\":[{\"id\":\"Zp5j9UWyiDvqBs6VYW9YM\",\"children\":[{\"id\":\"pUE6NqGxyq2aWkvrvr-B0\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"A-PKnePQQo5FVmN-JcWlG\",\"children\":[{\"id\":\"S6HpyqBCcy7XoV_vmFs49\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"p9aUrwLZXWUu_b1j-MqY_\",\"children\":[{\"id\":\"pGV5m-aBdhUi0S8uJ6n4r\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"w13Ns59ewirDgg9HLqxph\",\"children\":[{\"id\":\"zE8y__292QvyOZ7XkL38h\",\"children\":[{\"id\":\"qzTQYXswCwpDli3B9uefy\",\"children\":[{\"id\":\"a1TdlgB-Bsg4V9gpwzvv9\",\"children\":[{\"text\":\"fileId\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ZgsMcAydcheGfgklhuw7e\",\"children\":[{\"id\":\"pACzIAlHKd-lHTAFwKCg1\",\"children\":[{\"id\":\"1u31xIxBBhScOLwPJcdWq\",\"children\":[{\"text\":\"const char*\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"HM_lFgR3_4W3aFu0NmVR7\",\"children\":[{\"id\":\"qJR_23miywBit2ut6vTkY\",\"children\":[{\"id\":\"hSURWLk276Yfagj4iY633\",\"children\":[{\"text\":\"URL path of file\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"pl7t6K5TSYSCqPrXs4-h8\",\"children\":[{\"id\":\"kn_lZS9Zkub85sixVoHcm\",\"children\":[{\"id\":\"hXk4C5a2QagalHOEZuIQT\",\"children\":[{\"id\":\"Iv3tQ4fxOWHVGjuVKmdxD\",\"children\":[{\"text\":\"filePath\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Dj18fdJ00C6DJhcG2-0uA\",\"children\":[{\"id\":\"pmNtbV9lNW8kutplpUnv5\",\"children\":[{\"id\":\"_gZO7Es_v_78xkubraUcH\",\"children\":[{\"text\":\"const char*\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"X3acaI1CygW48QpMXizr4\",\"children\":[{\"id\":\"YnuJZ5tUtSzhy5ZZZY0TV\",\"children\":[{\"id\":\"vsBHL40lrZPtK0hlQydDm\",\"children\":[{\"text\":\"Local path of saved file\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[25,27,48],\"widthMode\":\"percentage\"},{\"id\":\"PtqRk7u6bYHEOrERxI3O9\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code16\",\"type\":\"h4\"},{\"id\":\"shSM4tNrtaXW-0z29RnyU\",\"children\":[{\"id\":\"JSu52rcgVZFybVtiBNNI4\",\"children\":[{\"text\":\"ITMGContextGetInstance()->GetPTT()->DownloadRecordedFile(fileID,filePath);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"zIzecF4HTrc3CW20UzYqb\",\"children\":[{\"text\":\"Callback for audio file download completion\"}],\"nodeId\":\"callback-for-audio-file-download-completion\",\"type\":\"h3\"},{\"id\":\"ZOuVWTPsW5ZEtl-aITcxL\",\"children\":[{\"text\":\"After the audio file is downloaded, the event message \"},{\"code\":1,\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_DOWNLOAD_COMPLETE\"},{\"text\":\" will be returned, which will be identified in the \"},{\"code\":1,\"text\":\"OnEvent\"},{\"text\":\" function.\\nThe passed parameters include \"},{\"code\":1,\"text\":\"result\"},{\"text\":\", \"},{\"code\":1,\"text\":\"file_path\"},{\"text\":\", and \"},{\"code\":1,\"text\":\"file_id\"},{\"text\":\".\"}],\"type\":\"p\"},{\"id\":\"xOvMyUnMuZYtUWD0y_XWR\",\"children\":[{\"id\":\"1Tx3k8lB8-RA0DCaHtbnw\",\"children\":[{\"id\":\"Z0JTKDtFi4Tc20TOQnIYi\",\"children\":[{\"id\":\"V4uFNz8YMtHSdbPTQDX56\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"r96O0R0VJDVYdxHIl5L8D\",\"children\":[{\"id\":\"xJdAt16p9kkK55skCkxaR\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"8l8wJ2OgAU4Dy4hMjGXY5\",\"children\":[{\"id\":\"eHMgO1Yowl9UgIvDEn1Hq\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"K1K4ALPozVQEGXEvwGnRQ\",\"children\":[{\"id\":\"L1maaej2DwUQIbYRZYwjo\",\"children\":[{\"id\":\"oROihwFDFPeWLDoSNZ80D\",\"children\":[{\"id\":\"SQkwDNTaywRQSQf4ZCj-J\",\"children\":[{\"text\":\"result\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"aPrdm_BfRaX9rsbX9Is4R\",\"children\":[{\"id\":\"qc2m_CjA7BSeZHzrNz3br\",\"children\":[{\"id\":\"NnUDITbyOL6I78yUBuJG5\",\"children\":[{\"text\":\"int32\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"f7bvofLrHIrDnSQYJQCov\",\"children\":[{\"id\":\"uh1DeIdzUUDQgTopyJcSK\",\"children\":[{\"id\":\"X1okvI3zST9OuAzZGigzm\",\"children\":[{\"text\":\"0: recording is completed\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"uXyUB2mXq3NpdoR57BRfy\",\"children\":[{\"id\":\"bc6v0Xuz005pYCYPENonR\",\"children\":[{\"id\":\"3YpQ8Re2VQSct-yDn4bPg\",\"children\":[{\"id\":\"ThmlpxxAPVZEhtLjLbF4s\",\"children\":[{\"text\":\"filepath\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"2ztlD7IP39Z8NaCAt9rLi\",\"children\":[{\"id\":\"byfE2epxSKfk-PF8YSpHR\",\"children\":[{\"id\":\"BU80rvS1Ew-2Us0TGZNmr\",\"children\":[{\"text\":\"FString\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"zeu92wJ5z3lHSQFJrasvA\",\"children\":[{\"id\":\"EfjrDQWIrqntA49UQL12E\",\"children\":[{\"id\":\"J5UrtzW7Mg152-QIkmUtE\",\"children\":[{\"text\":\"Path of stored recording file\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"kGVjXnb7UWD0wa41k46WB\",\"children\":[{\"id\":\"DqMjOTVa4sUAxsBTZAh4l\",\"children\":[{\"id\":\"pa2aTSC6Of89KUwdpZDvm\",\"children\":[{\"id\":\"2GkbRmkX636FrsCmyihg8\",\"children\":[{\"text\":\"fileid\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"thqAPcmKvyVu1-vMBHyno\",\"children\":[{\"id\":\"cAk-hpxkwISu9W0jE8Mni\",\"children\":[{\"id\":\"IJmkOiICwImVzQO9slABm\",\"children\":[{\"text\":\"FString\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Emcs9n1fdu-aufqpsWgtq\",\"children\":[{\"id\":\"JpLT0RUluQmNN2opY3wVk\",\"children\":[{\"id\":\"31kcYF9Qm-fqez0Mj9Rrf\",\"children\":[{\"text\":\"URL path of file, which will be retained on the server for 90 days\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[16,12,72],\"widthMode\":\"percentage\"},{\"id\":\"5wkdZG4itcOl3YxIAi7MQ\",\"children\":[{\"text\":\"Error codes\"}],\"nodeId\":\"error-codes4\",\"type\":\"h4\"},{\"id\":\"mSMNSHh1bC6OaPHY1CpLw\",\"children\":[{\"id\":\"LcFN0RKD1hyuCpreEhyDC\",\"children\":[{\"id\":\"3z1zFxtDlKHtw7bV727-g\",\"children\":[{\"id\":\"StQm3aETPKx8HR5m5EUmK\",\"children\":[{\"text\":\"Error Code Value\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"MBF-_YhWvZZVcJcONLHDY\",\"children\":[{\"id\":\"Ec6Mbi1HQZ8iXHlaFdRWS\",\"children\":[{\"text\":\"Cause\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"g7L1RQyW6nReRKNeA55Wy\",\"children\":[{\"id\":\"M8XkoW_MGYLjbW9W2cpad\",\"children\":[{\"text\":\"Suggested Solution\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"m-_5wG-Ia1vhZixiE5ijh\",\"children\":[{\"id\":\"ELrre1umVNbwWFtKI2rc2\",\"children\":[{\"id\":\"2jkay4vtaEIHtVCSeHFVz\",\"children\":[{\"id\":\"H9p5PLSnLkaQiQUwJmo-v\",\"children\":[{\"text\":\"12289\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"FIJJUOYNMdT-B9Y0-ADPm\",\"children\":[{\"id\":\"NoW22iLOdK4e-PL3XXyC3\",\"children\":[{\"id\":\"sKH_58x9Q7aKUXN34zsrP\",\"children\":[{\"text\":\"An error occurred while accessing the file during download.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"rewT-71g-F2bXO1Y42OWk\",\"children\":[{\"id\":\"0GF_cRppY1VpQq40EFJAG\",\"children\":[{\"id\":\"jyz8RTbH0fM_mZoehyHGe\",\"children\":[{\"text\":\"Check whether the file path is valid.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"fww9nkdN7EyUJFoz1i-dI\",\"children\":[{\"id\":\"XOsKUcW_tDh860e5kpoGX\",\"children\":[{\"id\":\"2vrjMmamZohydcku9JVMr\",\"children\":[{\"id\":\"ByAPAEaYeHItDBz68qd93\",\"children\":[{\"text\":\"12290\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"t2Ew3wMFcuZy2e-TvvlrT\",\"children\":[{\"id\":\"IoBGkkBHTMVBU-dIVjIzk\",\"children\":[{\"id\":\"w58bJkoSS9Fq2txr4Rlhk\",\"children\":[{\"text\":\"Signature verification failed.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"vsz6usTtB5JRq9xcuQKu9\",\"children\":[{\"id\":\"RecEP8uVmaGWGIoKkQMed\",\"children\":[{\"id\":\"fchO3ERMnSCZfK05aME4j\",\"children\":[{\"text\":\"Check whether the authentication key is correct and whether the voice message and speech-to-text feature is initialized.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"i0WiH3rOOF3jVDxFDe0u-\",\"children\":[{\"id\":\"D5fz822ABa_h3DGTKgMdX\",\"children\":[{\"id\":\"v7sicg3PLu4Ybi0rnrQPr\",\"children\":[{\"id\":\"8rkn5hEVPHNapeqDS8_tF\",\"children\":[{\"text\":\"12291\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"5elzhcwv7HJRcyyPJPlYi\",\"children\":[{\"id\":\"TPIUwnGjb5HHBqEnVHy0q\",\"children\":[{\"id\":\"Br22smeNleuuYhhHAfPF1\",\"children\":[{\"text\":\"Network storage system exception.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ST9vvwXFPlNCI-QSg18nX\",\"children\":[{\"id\":\"53fowa8ZWLY7lZsBnqHYD\",\"children\":[{\"id\":\"3PCU9PZjr0rbEWD1LCY4D\",\"children\":[{\"text\":\"The server failed to get the audio file. Check whether the API parameter \"},{\"code\":1,\"text\":\"fileid\"},{\"text\":\" is correct, whether the network is normal, and whether the file exists in COS.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"B-XRxmoBEZS_hh9o_KQ7x\",\"children\":[{\"id\":\"KGyGVMKVSvaD-lbcmOE4h\",\"children\":[{\"id\":\"9eOOXzAZAwTslE7O4AtJb\",\"children\":[{\"id\":\"b833Jt4rh9TM2ph6Wx_OQ\",\"children\":[{\"text\":\"12292\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"JmBE6NIGGsr4EsI58_O0U\",\"children\":[{\"id\":\"etBp_XWXz0lqYnded6W0g\",\"children\":[{\"id\":\"Cqu6rP5SEwnoZELCAy69h\",\"children\":[{\"text\":\"Server file system error.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"NPv7yYyyFF_EOhVwehvUg\",\"children\":[{\"id\":\"e-r_c1sB-q5YZ5csdcs-t\",\"children\":[{\"id\":\"xDt2Cv-0Q67PiEf1X_nAZ\",\"children\":[{\"text\":\"Check whether the device can access the internet and whether the file exists on the server.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"1eFcVSc3u41P2AyH2OJT7\",\"children\":[{\"id\":\"zRy4stGx4MylDFhc3mqgQ\",\"children\":[{\"id\":\"0i635SsL_JEzeD0_2m-Qy\",\"children\":[{\"id\":\"FblsDLbOJe2NgnaqkA9gF\",\"children\":[{\"text\":\"12293\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"muxkrjEsTM6XtpjMAXH1F\",\"children\":[{\"id\":\"auy8SRmUerOXy0hsb8RRo\",\"children\":[{\"id\":\"5rCNPdWEU2vbcfJUU2emH\",\"children\":[{\"text\":\"The HTTP network failed during the process of getting the download parameters.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"x5U2xAe8wKmEViGEhe5ZM\",\"children\":[{\"id\":\"0woUACFb4_PuAPyQSc4-8\",\"children\":[{\"id\":\"Yc2bE6ID3XtKmCn0aiqpH\",\"children\":[{\"text\":\"Check whether the device can access the internet.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"4xo-sudJDZWxxSFajVG8I\",\"children\":[{\"id\":\"-IjmJiZiaKtZYxpmBm64C\",\"children\":[{\"id\":\"XSdnlHSNsR3Bzl8HEZ0V7\",\"children\":[{\"id\":\"H7G5qsNBNVrsbe5Av0xvs\",\"children\":[{\"text\":\"12294\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"2Ju18x0pYP9wvo6eHzTHV\",\"children\":[{\"id\":\"PFJX16tLgBrDVyMp-pLaU\",\"children\":[{\"id\":\"KKkIgyhqLYUSpQ8MdA_VD\",\"children\":[{\"text\":\"The packet returned during the process of getting the download parameters is empty.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ECzZEOAAAUnplpFH_su-I\",\"children\":[{\"id\":\"Z_2_WnPxpKnvHL2bnB-H8\",\"children\":[{\"id\":\"8UuukUjvO29HV5OCYrStY\",\"children\":[{\"text\":\"Check whether the device can access the internet.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"bhQPvuHOhuBofqKQF6Tlu\",\"children\":[{\"id\":\"e_BEo-2aeEnVnWs7eSLxI\",\"children\":[{\"id\":\"YWY_6w-3n6qmNmhxXob4F\",\"children\":[{\"id\":\"2Pvg-RNGWVbV15TyCCc7e\",\"children\":[{\"text\":\"12295\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"wT7IVLDzVczkp68kzZvrg\",\"children\":[{\"id\":\"BCwpL_bnz2t6W777lcWmZ\",\"children\":[{\"id\":\"vBE9yGwYRB8wIaIH8DqC0\",\"children\":[{\"text\":\"Failed to decode the packet returned during the process of getting the download parameters.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"fuDIg_qFIEwPoX_UHq2OS\",\"children\":[{\"id\":\"9PXD8o3LZmSVYqsZXhDyK\",\"children\":[{\"id\":\"_s1PevsKgERQoLDy70xig\",\"children\":[{\"text\":\"Check whether the device can access the internet.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"0hw3o95SX_hQMoLUUiw8z\",\"children\":[{\"id\":\"-hprxTtM2vHXQLGJxF4q7\",\"children\":[{\"id\":\"fAaBhq_IgR3oO52KZpMWU\",\"children\":[{\"id\":\"szPqE25bGnzVcpS7qGNx-\",\"children\":[{\"text\":\"12297\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"yLJg5BAPPgA1ZbWlbNLEa\",\"children\":[{\"id\":\"Hb2zAd_gvQIPBh3HyQuvp\",\"children\":[{\"id\":\"vQ-dIOsSg6f12aS7Xw7rP\",\"children\":[{\"text\":\"No \"},{\"code\":1,\"text\":\"appinfo\"},{\"text\":\" is set.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"8XtfSvJOfleqGybvRG9N7\",\"children\":[{\"id\":\"BMNoAUeKJbJEf_EzmTK6L\",\"children\":[{\"id\":\"Hp3XVLX1RT_I9vhuhmvyv\",\"children\":[{\"text\":\"Check whether the authentication key is correct and whether the voice message and speech-to-text feature is initialized.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[17,35,48],\"widthMode\":\"percentage\"},{\"id\":\"InP65N4qNN_1OpevfFsrC\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code17\",\"type\":\"h4\"},{\"id\":\"U8q3dweNfhb_pibRfkiH1\",\"children\":[{\"id\":\"cZLJIEXJGRb15BYC-KT57\",\"children\":[{\"text\":\"void TMGTestScene::OnEvent(ITMG_MAIN_EVENT_TYPE eventType,const char* data){\"}],\"type\":\"code-line\"},{\"id\":\"QqZRK8H4SF_QT5ziwSoD2\",\"children\":[{\"text\":\" switch (eventType) {\"}],\"type\":\"code-line\"},{\"id\":\"Taj0kBwYQtwj8OJz956Oe\",\"children\":[{\"text\":\" case ITMG_MAIN_EVENT_TYPE_ENTER_ROOM:\"}],\"type\":\"code-line\"},{\"id\":\"9C_2qnbpjf0XvBeMt-hDT\",\"children\":[{\"text\":\" {\"}],\"type\":\"code-line\"},{\"id\":\"t-WJ_kpIjGWtBWXM381Eb\",\"children\":[{\"text\":\" // Process\"}],\"type\":\"code-line\"},{\"id\":\"V4TOEk5IWsMpGSh8mrQSA\",\"children\":[{\"text\":\" break;\"}],\"type\":\"code-line\"},{\"id\":\"KyH6RVolz0-n7ATqfd6Cq\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"gglt0K_s_FvLuWn9qTSXC\",\"children\":[{\"text\":\"Playing back audio\"}],\"nodeId\":\"playing-back-audio\",\"type\":\"h3\"},{\"id\":\"eVQ3WqTn_fctDCwO29Vvr\",\"children\":[{\"text\":\"This API is used to play back audio.\"}],\"type\":\"p\"},{\"id\":\"2Z5mVjDcMMyk6rc2v7xoX\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype17\",\"type\":\"h4\"},{\"id\":\"IJ0fAxWPmY9vIyonap0YI\",\"children\":[{\"id\":\"t6OEStK849-Ftaxqss0jB\",\"children\":[{\"text\":\"ITMGPTT virtual int PlayRecordedFile(const char* filePath)\"}],\"type\":\"code-line\"},{\"id\":\"jx4Vu10vDvE2n6n-iuru1\",\"children\":[{\"text\":\"ITMGPTT virtual int PlayRecordedFile(const char* filePath, nt voiceType)\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"oidLJMzZEDIuH9E_f6N99\",\"children\":[{\"id\":\"DCWlKedUfn3OLQSFIO86F\",\"children\":[{\"id\":\"gTqNAc9mehOBL0YuMLDJg\",\"children\":[{\"id\":\"R3w1OL5ft0xGh62R_YK6Y\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"C-1x-7S0N6HR5ycpSPDnr\",\"children\":[{\"id\":\"r8HiGT6VcQwNQcwzEZWdv\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"CAxI_oX9KjtMKwqJxs3P1\",\"children\":[{\"id\":\"DS1wVV5TvCNlbHPdpOZqs\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"s4yLsIyR8Wdj-hjNIhpfQ\",\"children\":[{\"id\":\"nQSos9OUioT6vg266X8Lz\",\"children\":[{\"id\":\"vrImZNbSXJuDfZAvhrrrc\",\"children\":[{\"id\":\"0blm_9XT_bTXgk6jbtSoq\",\"children\":[{\"text\":\"filePath\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"-4GIOdS7TyIRQ_M-lRH2M\",\"children\":[{\"id\":\"o9Y1Lmpo7BsP149UGbk6V\",\"children\":[{\"id\":\"KC35zRLXAecrZtY78YgpW\",\"children\":[{\"text\":\"const char*\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"u5sqPNL5DSHDWuaQA-5si\",\"children\":[{\"id\":\"p6Pr8bOtXQ1EpcZBDXUZT\",\"children\":[{\"id\":\"F_djIi6-Hcmp113ZzJoO3\",\"children\":[{\"text\":\"Local audio file path\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"d2RNtXyBpn6Q01Akd0vsG\",\"children\":[{\"id\":\"ShM_Z511S0pO28N_wwFzA\",\"children\":[{\"id\":\"A8ZD_r9V4ui-8kEbhkvB0\",\"children\":[{\"id\":\"M1C9Vf1U6STVaiO2BIXvw\",\"children\":[{\"text\":\"voicetype\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"s-vPFkYJBcd0TPYhkqaMO\",\"children\":[{\"id\":\"s0hLdEs08shqrZa3cpsWA\",\"children\":[{\"id\":\"jlInzqA7r13EQlitTGpum\",\"children\":[{\"text\":\"int\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"CaYQSbrlqVHI-_2Dr87WY\",\"children\":[{\"id\":\"AaHPDbcEYo75O7Qz28G2b\",\"children\":[{\"id\":\"VfiRE8ARLqNJd2dUa85_E\",\"children\":[{\"text\":\"Voice changer type. For more information, see \"},{\"id\":\"P3UvugxrtJO-5RsGpbOeF\",\"children\":[{\"text\":\"Voice Changing Effects\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://intl.cloud.tencent.com/document/product/607/44995\",\"props\":{\"type\":\"link\",\"url\":\"https://intl.cloud.tencent.com/document/product/607/44995\"},\"type\":\"ref\"},{\"text\":\".\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[14,15,71],\"widthMode\":\"percentage\"},{\"id\":\"jZ_LNx2wLwwIevA7R4h8E\",\"children\":[{\"text\":\"Error codes\"}],\"nodeId\":\"error-codes5\",\"type\":\"h4\"},{\"id\":\"2KhfZNujW7Kikn342HtNP\",\"children\":[{\"id\":\"md5I9ayQBab4wZ50dKIsO\",\"children\":[{\"id\":\"ZmsnHTdJd0Ms0iP0JE3iv\",\"children\":[{\"id\":\"mBgftH1w4_pp75Rw6hK8F\",\"children\":[{\"text\":\"Error Code Value\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"wdd11RvUk-OLBmZnKCxu8\",\"children\":[{\"id\":\"5sXhhx22p3N-8mUZZzpy3\",\"children\":[{\"text\":\"Cause\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"w9k_M3mVH1ZI4RrxbtCL_\",\"children\":[{\"id\":\"0zAfuttUcOrSL0hJl7hEG\",\"children\":[{\"text\":\"Suggested Solution\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"efHz3L3pgwn8IS718c2nT\",\"children\":[{\"id\":\"OEIpviND4SB45uTSRZMQ1\",\"children\":[{\"id\":\"wOU2Ki8svBG3oCKZ5W3e6\",\"children\":[{\"id\":\"meSIcp07--Fo49cVrEYvj\",\"children\":[{\"text\":\"20485\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"kgrMuYIC7EniuLKMAGZkK\",\"children\":[{\"id\":\"62ZbU4qAKj0DvoVt_MBbd\",\"children\":[{\"id\":\"gtNN2DcOXqAZP-vgMfr5K\",\"children\":[{\"text\":\"Playback is not started.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"qyVw6S5LRWxA0onYhi263\",\"children\":[{\"id\":\"UIp9WT7bkhcjItCl8CIkL\",\"children\":[{\"id\":\"dS7qxIBIzGUSdMeu6xE0V\",\"children\":[{\"text\":\"Ensure the existence of the file and the validity of the file path.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[19,24,57],\"widthMode\":\"percentage\"},{\"id\":\"BFj1KVHjjtaJhUKbvAgaq\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code18\",\"type\":\"h4\"},{\"id\":\"heIq1LqQ6592ozrx_XLKp\",\"children\":[{\"id\":\"WX4PEwgLX2b2g7s40Fuh3\",\"children\":[{\"text\":\"ITMGContextGetInstance()->GetPTT()->PlayRecordedFile(filePath);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"bPMkPoVLKiSGzWUmvg-n5\",\"children\":[{\"text\":\"Callback for audio playback\"}],\"nodeId\":\"callback-for-audio-playback\",\"type\":\"h3\"},{\"id\":\"fBHV_uleNScYcBAzIjYbo\",\"children\":[{\"text\":\"After the audio is played back, the event message \"},{\"code\":1,\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_PLAY_COMPLETE\"},{\"text\":\" will be returned, which will be identified in the \"},{\"code\":1,\"text\":\"OnEvent\"},{\"text\":\" function.\\nThe passed parameter includes \"},{\"code\":1,\"text\":\"result\"},{\"text\":\" and \"},{\"code\":1,\"text\":\"file_path\"},{\"text\":\".\"}],\"type\":\"p\"},{\"id\":\"-WH_x5C9GfPWVKmX4y4ef\",\"children\":[{\"id\":\"siTGmkrtCR_rkLIOR3UAx\",\"children\":[{\"id\":\"DVFBa0q_bTr70PMLFK0KF\",\"children\":[{\"id\":\"IwDl5sYA7sCxC91pA9eoS\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"BWBlyN4R7Nm9niEeFiBX9\",\"children\":[{\"id\":\"u_k694ZfISa8xoBaQPNet\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"XI6gvmchHwiewX-NHmJ9e\",\"children\":[{\"id\":\"r_boj9QSusJDLjhhKHx-8\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"k3yn0TrVOU4uJczR5FRke\",\"children\":[{\"id\":\"v2vb_puHdkqhpTjIsZmR8\",\"children\":[{\"id\":\"Sb1wR7e49Tp0N4dipMC9t\",\"children\":[{\"id\":\"KyWruqpd3yoVYqo55M6cg\",\"children\":[{\"text\":\"code\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Qy_2rhjXuD3LuiPGaXG4C\",\"children\":[{\"id\":\"0Nmzdrwxi31VU5WBMW3CU\",\"children\":[{\"id\":\"_KdyOzttFBDCByyWt5q28\",\"children\":[{\"text\":\"int\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"QrN9EluPM_N9FqPifWfJQ\",\"children\":[{\"id\":\"pHYXcEig3EK2K0MAgzL60\",\"children\":[{\"id\":\"u0u11msEUsSHjy7UXZ-XP\",\"children\":[{\"text\":\"0: playback is completed\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"QpewbQf5PtQDJihc-YqHk\",\"children\":[{\"id\":\"IaTpPPjPAKEDfwK9djj5J\",\"children\":[{\"id\":\"jSApimomJ0OzewrgaMNUA\",\"children\":[{\"id\":\"QIqk1FiI3_kf8db65TQDT\",\"children\":[{\"text\":\"filepath\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"IHelHUm7VhI6Qj0pYbaFF\",\"children\":[{\"id\":\"LU-EZKCZHPPa9NX0cVSZ9\",\"children\":[{\"id\":\"Jn_zMs1FgWL6lSvyIIoJY\",\"children\":[{\"text\":\"FString\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"eXYJNzh3J9CCd6Sn-8F3_\",\"children\":[{\"id\":\"2lwyL9Ogzuzlv8aQgtPwq\",\"children\":[{\"id\":\"Nnbf0JWkSkKfXoF-cCcfH\",\"children\":[{\"text\":\"Path of stored recording file\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[25,20,55],\"widthMode\":\"percentage\"},{\"id\":\"Ew7xFJXNTRhENBvhMnyQp\",\"children\":[{\"text\":\"Error codes\"}],\"nodeId\":\"error-codes6\",\"type\":\"h4\"},{\"id\":\"R6NQiAsP9cvhBK8OXNdNl\",\"children\":[{\"id\":\"QEI24oWA6aKWfRUWOwkMD\",\"children\":[{\"id\":\"9JM8jnZEON-AVoS1cPj62\",\"children\":[{\"id\":\"sRJLySa8Tl_3SN8ytZxTk\",\"children\":[{\"text\":\"Error Code Value\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"SPFyfSwrJ44_Xj38K96dQ\",\"children\":[{\"id\":\"a6Y7LEVLogaieX02W5TNV\",\"children\":[{\"text\":\"Cause\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"AsFIFWJi4ygPnz4nhHp6t\",\"children\":[{\"id\":\"8ZNQxRUQ70anRwgNAD5iV\",\"children\":[{\"text\":\"Suggested Solution\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"joCi66TZprVjs0wWUqLCb\",\"children\":[{\"id\":\"FPaKsrCsyvOYQMJF2WtOZ\",\"children\":[{\"id\":\"SCfFENzQ29i8f6HhDvqeX\",\"children\":[{\"id\":\"Wvk9lnwOIiqh5Obhjhgu9\",\"children\":[{\"text\":\"20481\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Y158u7sxED-cKaU4TPPW8\",\"children\":[{\"id\":\"mmDsVPW87Vyd1pGi0hJwH\",\"children\":[{\"id\":\"zmH4307gqiKy5Loofv_qi\",\"children\":[{\"text\":\"Initialization error.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"a6SipWs-UDPd0FsfzA6Mg\",\"children\":[{\"id\":\"3NyJZmxq_3XLhuHvi4ggo\",\"children\":[{\"id\":\"Dh_Zg0Ikm4smWz0V-p7P-\",\"children\":[{\"text\":\"Check whether the device is being used, whether the permissions are normal, and whether the initialization is normal.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"rGx5q96oEo5dhlTzHQ-Fr\",\"children\":[{\"id\":\"CRgD485-cD-QU-fzbQdtu\",\"children\":[{\"id\":\"GeDvKpBbj_j6ng8Ykui8I\",\"children\":[{\"id\":\"ccWtCcqMEEvlN70fMCwpR\",\"children\":[{\"text\":\"20482\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"T5peNAt3QyFEyo1maXvXC\",\"children\":[{\"id\":\"qUARQXFpCx-fblq1KdUJ_\",\"children\":[{\"id\":\"kir2WrBTxxP7w5CDlXNqq\",\"children\":[{\"text\":\"During playback, the client tried to interrupt and play back the next one but failed (which should succeed normally).\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"mYzxZ0IrIGbr2mMb1sxwG\",\"children\":[{\"id\":\"wF1FOdW7bp-NmefHbE3C8\",\"children\":[{\"id\":\"I_4q_t7lUmm0ACAhnWQJz\",\"children\":[{\"text\":\"Check whether the code logic is correct.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"uhpw_2f0yV1GBj34Y_e_g\",\"children\":[{\"id\":\"u4QOjhpaR4oPgZqNwTIn0\",\"children\":[{\"id\":\"6SHbfvHgiwL8vcX4M29fa\",\"children\":[{\"id\":\"x2dtnROjz0fXBv0Bwy5vS\",\"children\":[{\"text\":\"20483\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"JXuK6Rzls_L7YBmksWLHi\",\"children\":[{\"id\":\"Spi3Rkx5IQ6oGY3dS8oqa\",\"children\":[{\"id\":\"FWikYoUdiy7h2mpe5pFlq\",\"children\":[{\"text\":\"Parameter is empty.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"noRTXAWs-R88TL7vesGam\",\"children\":[{\"id\":\"WSSgRBPMUhDgwOX8tP7bX\",\"children\":[{\"id\":\"gPIFOrawzpfjQZoh73M-t\",\"children\":[{\"text\":\"Check whether the API parameters in the code are correct.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"xUiD3IRmecoQFqEtO7aLp\",\"children\":[{\"id\":\"XU-r9ETda5qGxYyd_9GOL\",\"children\":[{\"id\":\"fUFXbU9MUeX4s7EDD3pTY\",\"children\":[{\"id\":\"LxG558sTOiLURDS83VWi1\",\"children\":[{\"text\":\"20484\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"gpRQwQ8hpDhrYDDsQKPA0\",\"children\":[{\"id\":\"yXWgfmNwa4B3yUnKG9oKx\",\"children\":[{\"id\":\"0ceWRz6GxbkXl9kBGP868\",\"children\":[{\"text\":\"Internal error.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"34xkwh9BWrwzZc5b-_6s0\",\"children\":[{\"id\":\"5O6Khw9zSJ-H80PXkVpXk\",\"children\":[{\"id\":\"2y3t5VeIuEBnEXbTwq4l3\",\"children\":[{\"text\":\"An error occurred while initializing the player. This error code is generally caused by failure in decoding, and the error should be located with the aid of logs.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[19,24,57],\"widthMode\":\"percentage\"},{\"id\":\"qNVVuoTm3ii9fG_Wd0Zmb\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code19\",\"type\":\"h4\"},{\"id\":\"DIoTdC3087an8ZTs--w1P\",\"children\":[{\"id\":\"AoEiaYkUM6zQjPkRVG8iB\",\"children\":[{\"text\":\"void TMGTestScene::OnEvent(ITMG_MAIN_EVENT_TYPE eventType,const char* data){\"}],\"type\":\"code-line\"},{\"id\":\"BX2g9NqlYPIvjJ_6vkVX8\",\"children\":[{\"text\":\" switch (eventType) {\"}],\"type\":\"code-line\"},{\"id\":\"zNlLwgmO2_OElYJ1vuZEp\",\"children\":[{\"text\":\" ...\"}],\"type\":\"code-line\"},{\"id\":\"Wp35sxVXuiVm8lLOlCA8F\",\"children\":[{\"text\":\" else if (eventType == ITMG_MAIN_EVNET_TYPE_PTT_PLAY_COMPLETE) {\"}],\"type\":\"code-line\"},{\"id\":\"GK294RYx6kBrXmQg3i4Lq\",\"children\":[{\"text\":\" int32 result = JsonObject->GetIntegerField(TEXT(\\\"result\\\"));\"}],\"type\":\"code-line\"},{\"id\":\"aUMe7pgXmMNNEuNAKxJ0y\",\"children\":[{\"text\":\" FString filepath = JsonObject->GetStringField(TEXT(\\\"file_path\\\"));\"}],\"type\":\"code-line\"},{\"id\":\"SLYfR3pRG8LsF0h_axnes\",\"children\":[{\"text\":\" onPttPlayFileCompleted(result, filepath);\"}],\"type\":\"code-line\"},{\"id\":\"N-HQqnB7aUj32e1MlgPOq\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"OofAGKMwB4YA07rG-qGVV\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"gY1HypulzGIxdbsWRKRz-\",\"children\":[{\"text\":\"}\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"j9G2TiEHtMJBJEVnO6cEU\",\"children\":[{\"text\":\"Stopping audio playback\"}],\"nodeId\":\"stopping-audio-playback\",\"type\":\"h3\"},{\"id\":\"MqhcmahGNUnE19nMv-5Dn\",\"children\":[{\"text\":\"This API is used to stop audio playback. There will be a callback for playback completion when the playback stops.\"}],\"type\":\"p\"},{\"id\":\"eVGGr8kwvbRMoHpLILzwH\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype18\",\"type\":\"h4\"},{\"id\":\"O3SajqMnEq5T97zDXvrTC\",\"children\":[{\"id\":\"GeewIgXKa3ji0NUyaxdsX\",\"children\":[{\"text\":\"ITMGPTT virtual int StopPlayFile()\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"EEu8znEjFmGTNGAchgsly\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code20\",\"type\":\"h4\"},{\"id\":\"PugRLXmpqlYiczx5Krrbi\",\"children\":[{\"id\":\"toyFFmRNsTYJp4RTqIc-a\",\"children\":[{\"text\":\"ITMGContextGetInstance()->GetPTT()->StopPlayFile();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"xMmAXNV3nS8dGCeliEZFu\",\"children\":[{\"text\":\"Getting audio file size\"}],\"nodeId\":\"getting-audio-file-size\",\"type\":\"h3\"},{\"id\":\"5vOs-ExT0HdMau0PrSpt6\",\"children\":[{\"text\":\"This API is used to get the size of an audio file.\"}],\"type\":\"p\"},{\"id\":\"RcGJsSnaihXCWW-8mPlg9\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype19\",\"type\":\"h4\"},{\"id\":\"59rpplfMKPwq92WqFZKTt\",\"children\":[{\"id\":\"qAMqRAr2Ko1RuievepFkO\",\"children\":[{\"text\":\"ITMGPTT virtual int GetFileSize(const char* filePath)\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"XUxHMybdCoiXDUDKdJFuw\",\"children\":[{\"id\":\"Y65Z0QyJbVkDkspjT8BRN\",\"children\":[{\"id\":\"lN50OkFzxCgTkJnTv--bU\",\"children\":[{\"id\":\"0Z7hCJO-TK7jXjbLU6zEB\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"W66vswtrm-HukN_cwFtXq\",\"children\":[{\"id\":\"r_2w7LxYCBp-r5SODdHIe\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"J2QyEhOB9tm2qlhqPY0vY\",\"children\":[{\"id\":\"F69U0EI2OSLoyJn1fi5lo\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"CoggTFyuVVuDk6FfA_dCw\",\"children\":[{\"id\":\"cSpkmbl6HS4OBBGwaR31Y\",\"children\":[{\"id\":\"W0RadJfGO6K8o01o_XHu6\",\"children\":[{\"id\":\"ANoBlmfL0S2Fo2xXnRN55\",\"children\":[{\"text\":\"filePath\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"hl8sr6Fs9N21pUcqXcLHm\",\"children\":[{\"id\":\"vtRdahEJhNldQEAwqX8W0\",\"children\":[{\"id\":\"JYHR1ELKaCn2VDP0Rpbhv\",\"children\":[{\"text\":\"const char*\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"1OZROo1Om1BF9kgDZDmTz\",\"children\":[{\"id\":\"8SzD7v6LMmh8k44EoAnl_\",\"children\":[{\"id\":\"qcwe0GRPDTeO8l1PY57Zg\",\"children\":[{\"text\":\"Path of audio file, which is a local path\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[20,21,59],\"widthMode\":\"percentage\"},{\"id\":\"liDfU8JRapeAj6loZFbgc\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code21\",\"type\":\"h4\"},{\"id\":\"kVFan3Z_nrEx1C2iW6i_g\",\"children\":[{\"id\":\"wN_hY0prweP-RA74-Z4Tp\",\"children\":[{\"text\":\"ITMGContextGetInstance()->GetPTT()->GetFileSize(filePath);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"qNOI12L1vWh2D2lDvWOM1\",\"children\":[{\"text\":\"Getting audio file duration\"}],\"nodeId\":\"getting-audio-file-duration\",\"type\":\"h3\"},{\"id\":\"8h9-cqi2GVhRloh4icYWl\",\"children\":[{\"text\":\"This API is used to get the duration of an audio file in milliseconds.\"}],\"type\":\"p\"},{\"id\":\"BuZr8kvY2A_Lht0pO-1Rj\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype20\",\"type\":\"h4\"},{\"id\":\"sAqzuW48E8HTYCgJoN9ou\",\"children\":[{\"id\":\"zhStogTecaOwyqlvnQP0f\",\"children\":[{\"text\":\"ITMGPTT virtual int GetVoiceFileDuration(const char* filePath)\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"0keNYbA6iheKAJXD8z_Ev\",\"children\":[{\"id\":\"H11gNpFAaNVggLPB8cnuF\",\"children\":[{\"id\":\"AbjfYapJjotDZAZh-mpbg\",\"children\":[{\"id\":\"nhsF5qLLWGs3aqmMmd9oM\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"XYnigUFMYSXRvHuiN-u_3\",\"children\":[{\"id\":\"QLHxfKZmpXU14g5hAeAPt\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Lc_tDLxcquGgcykVwL0TS\",\"children\":[{\"id\":\"nm7zVWKvzlpvWU2vOPtCP\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"ksI3plkP8Jv2qTnkRUHmz\",\"children\":[{\"id\":\"rQXYeDOGE98ByUdRiEvoY\",\"children\":[{\"id\":\"MCqb2cgA56kHAX9hkxaWR\",\"children\":[{\"id\":\"6vVlN7FAFKBhkqc_6yqiI\",\"children\":[{\"text\":\"filePath\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"hxpup1XZV5z8M5Jv6Zymj\",\"children\":[{\"id\":\"VhCJ9cORP5vEUyVm3CRqQ\",\"children\":[{\"id\":\"25Z84wgr5g0kjAIycRuho\",\"children\":[{\"text\":\"const char*\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"0jFh-xH91rZo9LZ_j4NuS\",\"children\":[{\"id\":\"AFmkNSPB9oHShnucegdh4\",\"children\":[{\"id\":\"IBmyaFuhc-xHfUXK8HyyJ\",\"children\":[{\"text\":\"Path of audio file, which is a local path\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[20,21,59],\"widthMode\":\"percentage\"},{\"id\":\"4VOcv56mNHma8U0XUiA1b\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code22\",\"type\":\"h4\"},{\"id\":\"Sx4xuh-rMOovSrA01JwMt\",\"children\":[{\"id\":\"oCGHClYP7iFf6qrY4B4Ur\",\"children\":[{\"text\":\"ITMGContextGetInstance()->GetPTT()->GetVoiceFileDuration(filePath);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"i4YXXm3qgjobHL6XW3BMv\",\"children\":[{\"text\":\"Fast Recording-to-Text Conversion\"}],\"nodeId\":\"fast-recording-to-text-conversion\",\"type\":\"h2\"},{\"id\":\"J31oMsrdpgcxDvpQZp2Fr\",\"children\":[{\"id\":\"STt9xp7rjlCeZQ7zDHWkI\",\"children\":[{\"id\":\"1Sqvdd1xUnJmSJpmFy3Cl\",\"children\":[{\"id\":\"aUWlYxyyBz77XZwj24mD7\",\"children\":[{\"text\":\"API\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"yiMEOa3T-6H6qERE7kXPk\",\"children\":[{\"id\":\"Cabq1YUOOuU-Vdgemh3yW\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"r30XXqoT-ZHQUF_Yh55tE\",\"children\":[{\"id\":\"pL0Aa5AGo7AP01bBKPv20\",\"children\":[{\"id\":\"t_8wbDE7olHghPE1KeykE\",\"children\":[{\"id\":\"KlGs-z5AHP5k8RK1nPPe-\",\"children\":[{\"text\":\"SpeechToText\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"uyIsz_lZ-SzVPom6ZzED1\",\"children\":[{\"id\":\"M8s_qULkGxqwJDCiTvUYK\",\"children\":[{\"id\":\"i1XTChALv2TkVCpSmcZfe\",\"children\":[{\"text\":\"Converts speech to text\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[40,60],\"widthMode\":\"percentage\"},{\"id\":\"hFQg1td_f9QZJdCrtwKuq\",\"children\":[{\"text\":\"Converting audio file to text\"}],\"nodeId\":\"converting-audio-file-to-text\",\"type\":\"h3\"},{\"id\":\"EwwubPEdw8XM40KAGvw4j\",\"children\":[{\"text\":\"This API is used to convert a specified audio file to text.\"}],\"type\":\"p\"},{\"id\":\"TKhxwREk3yitq5wPRzkKL\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype21\",\"type\":\"h4\"},{\"id\":\"c5qHiYtLHqIQLa2M02p_e\",\"children\":[{\"id\":\"acfAnf5PgSxfPqDTYnBxc\",\"children\":[{\"text\":\"ITMGPTT virtual void SpeechToText(const char* fileID)\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"MCYaegcL_KkU3sCyToPXI\",\"children\":[{\"id\":\"NWHLUYt0ms3yr_i2Nwc9-\",\"children\":[{\"id\":\"xF5Vnb6u3Bep6Mw1oIki7\",\"children\":[{\"id\":\"NnoP9uT98p9kfgFRpPF6a\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"SsQHYjRWNIabukaAP8v2H\",\"children\":[{\"id\":\"T9K53nCRLwUYavpXyP83a\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"q0RX_KW-VIRlqcRjFAoBh\",\"children\":[{\"id\":\"EE5FRpSw-nc1Tfl1rfed1\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"aHe8S0RX6_uZdZHP_rwVg\",\"children\":[{\"id\":\"uiLGHoOeFqDU8C6aEvZON\",\"children\":[{\"id\":\"bjWOyX_4zCXfWf0HCq5QZ\",\"children\":[{\"id\":\"hXB-voKeTn-yXD_tcE-1r\",\"children\":[{\"text\":\"fileID\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"R8dJR5E3diiPsxS5Xtv2g\",\"children\":[{\"id\":\"bRfl_-QOT7xsQzqZd1JzJ\",\"children\":[{\"id\":\"lLJ2auSOBXKuC6f6hevLY\",\"children\":[{\"text\":\"const char*\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"9AfjMy8qLH1-kG4FgJ6-u\",\"children\":[{\"id\":\"emTs0W04gRfMCZPS89Zrw\",\"children\":[{\"id\":\"ioJlawUfUyyUajqTWTMcy\",\"children\":[{\"text\":\"Audio file URL\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[30,31,39],\"widthMode\":\"percentage\"},{\"id\":\"qwbaVq2-x5a8apaLz5M1F\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code23\",\"type\":\"h4\"},{\"id\":\"lNCGaXqEj7dQu57xzQ4v5\",\"children\":[{\"id\":\"aetK270jVMp8x75nSNT6u\",\"children\":[{\"text\":\"ITMGContextGetInstance()->GetPTT()->SpeechToText(fileID);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"zuvZxNfN-EDRx3DjwQLl6\",\"children\":[{\"text\":\"Translating audio file into text in specified language\"}],\"nodeId\":\"translating-audio-file-into-text-in-specified-language\",\"type\":\"h3\"},{\"id\":\"sKRhtEQ8dP_eNPsiataGS\",\"children\":[{\"text\":\"This API can specify a language for recognition or translate the information recognized in speech into a specified language and return the translation.\"}],\"type\":\"p\"},{\"id\":\"-0B3WuWH7CmeDrJNRn1rW\",\"children\":[{\"id\":\"i5FcZQAJU-lh7iXmeDjUs\",\"children\":[{\"b\":1,\"color\":\"#04C8DC\",\"text\":\"Note: \",\"type\":\"text\"}],\"type\":\"p\"},{\"id\":\"NiwmKVtPGK0HzDstpL82_\",\"children\":[{\"text\":\"Translation incurs additional fees. For more information, see \"},{\"id\":\"uY65NP-15FRXt5tOgAJ0Y\",\"children\":[{\"text\":\"Purchase Guide\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://intl.cloud.tencent.com/document/product/607/50009\",\"props\":{\"type\":\"link\",\"url\":\"https://intl.cloud.tencent.com/document/product/607/50009\"},\"type\":\"ref\"},{\"text\":\".\"}],\"type\":\"p\"}],\"hintType\":\"alert\",\"type\":\"hint\"},{\"id\":\"JNNvLg82J4iwlt8vnrE-1\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype22\",\"type\":\"h4\"},{\"id\":\"0iMbgqVe24bQGhk0E0o86\",\"children\":[{\"id\":\"6Bt0JRzpcBMiCYlyvkqw3\",\"children\":[{\"text\":\"ITMGPTT virtual int SpeechToText(const char* fileID,const char* speechLanguage)\"}],\"type\":\"code-line\"},{\"id\":\"1W2SDmru71A7ZGrYEJ-oj\",\"children\":[{\"text\":\"ITMGPTT virtual int SpeechToText(const char* fileID,const char* speechLanguage,const char* translateLanguage)\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"U3nV1yuUmgMXhsBmT6crk\",\"children\":[{\"id\":\"DWO6wxWnnkceS1vbSifrR\",\"children\":[{\"id\":\"szQzF5_vYAm_8kThjsAAX\",\"children\":[{\"id\":\"xRmKoHR2leMx8XJyeXEiL\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"96Lm5yiagzxVnSPY0IOcz\",\"children\":[{\"id\":\"sHQaA3H0X_eFgczQHPWi9\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"-L0dYwjM5l2OPjJX4nDs8\",\"children\":[{\"id\":\"56XB1r8jP0Db_MyKvJpVV\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"hb9PcKKrLXQ7IRpLYem-r\",\"children\":[{\"id\":\"4Uhc1b5KPxddI6oHgCxhX\",\"children\":[{\"id\":\"lqkaNTTQQiJ0d3tB8tgm2\",\"children\":[{\"id\":\"55IW5J9sF0ZJihyEenrIa\",\"children\":[{\"text\":\"fileID\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"UgSYzjfKOVr_6h9g3kxIa\",\"children\":[{\"id\":\"NW6hPaTusWYWMKNbAnd12\",\"children\":[{\"id\":\"lz3uu8SL4_8kBQVmGwyYc\",\"children\":[{\"text\":\"const char*\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"xh2MMK-qqgov2oNf8KcMg\",\"children\":[{\"id\":\"T1gxN_CKIus4p-m7bbTB6\",\"children\":[{\"id\":\"-XAbok5mW6RibQ9cQskBf\",\"children\":[{\"text\":\"The URL of the audio file, which will be retained on the server for 90 days.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"xYNWy6TWkgeF8J7PPg85x\",\"children\":[{\"id\":\"4bRj30ugH-q_6UArcnkCi\",\"children\":[{\"id\":\"b43_CfjO0fQCcd6G-mhY1\",\"children\":[{\"id\":\"QZimS1PPJPudBM7NMwHde\",\"children\":[{\"text\":\"speechLanguage\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"TSM4I_Cyq6ukgubCnO31b\",\"children\":[{\"id\":\"ZRJAWfOyphc9nKWTdftDq\",\"children\":[{\"id\":\"_leeuEcu5p1XcguZilf48\",\"children\":[{\"text\":\"const char*\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"u1q6xXRdUpnCM6C-d9uIL\",\"children\":[{\"id\":\"zDK6OIyMW_C9gtq0n_g6e\",\"children\":[{\"id\":\"TrXrM6r7qd_HlvnlOag8N\",\"children\":[{\"text\":\"The language in which the audio file is to be converted to text. For parameters, see \"},{\"id\":\"lQ9Ha2JFBShusgTVhZOHN\",\"children\":[{\"text\":\"Language Parameter Reference List\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://intl.cloud.tencent.com/document/product/607/30260\",\"props\":{\"type\":\"link\",\"url\":\"https://intl.cloud.tencent.com/document/product/607/30260\"},\"type\":\"ref\"},{\"text\":\".\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"LMZbXuPjNfAbX8XTux_Fn\",\"children\":[{\"id\":\"Qhv3u9e61ucL9ZyZ7kiRL\",\"children\":[{\"id\":\"EB_LNBOk4l67rOLEJVEti\",\"children\":[{\"id\":\"rQKGKjtIFj4wq55z6ypnb\",\"children\":[{\"text\":\"translatelanguage\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"7aHckJSdS0pVRGLuGfGXA\",\"children\":[{\"id\":\"jrzzJpzcHALH_f8oOM6_O\",\"children\":[{\"id\":\"vGyvIkG0KVJ-JUZTz1N1N\",\"children\":[{\"text\":\"const char*\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"mk0jXu26iRCKxPw4aWyWM\",\"children\":[{\"id\":\"YDImhLaxNR6rWE2iu2AJD\",\"children\":[{\"id\":\"0jNGrxc6pnFGXBYpa8Mjp\",\"children\":[{\"text\":\"The language in which the audio file is to be translated to text. For parameters, see \"},{\"id\":\"NW7lRDllyP5rP9mzmCoHo\",\"children\":[{\"text\":\"Language Parameter Reference List\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://intl.cloud.tencent.com/document/product/607/30260\",\"props\":{\"type\":\"link\",\"url\":\"https://intl.cloud.tencent.com/document/product/607/30260\"},\"type\":\"ref\"},{\"text\":\".\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[17,13,70],\"widthMode\":\"percentage\"},{\"id\":\"C1uuwjrOC1In0f_rUjGsJ\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code24\",\"type\":\"h4\"},{\"id\":\"trsP6S41Va99tzrk_LeLs\",\"children\":[{\"id\":\"B7zD20j_N9flCcnLbcOc0\",\"children\":[{\"text\":\"ITMGContextGetInstance()->GetPTT()->SpeechToText(filePath,\\\"cmn-Hans-CN\\\",\\\"cmn-Hans-CN\\\");\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"Kt7QrFZFPKedLCyyOikHV\",\"children\":[{\"text\":\"Callback for recognition\"}],\"nodeId\":\"callback-for-recognition\",\"type\":\"h3\"},{\"id\":\"PtH9cGyMCz9s-WcbuNCn6\",\"children\":[{\"text\":\"After the specified audio file is converted to text, the event message ITMG_MAIN_EVNET_TYPE_PTT_SPEECH2TEXT_COMPLETE will be returned, which will be identified in the \"},{\"code\":1,\"text\":\"OnEvent\"},{\"text\":\" function.\\nThe passed parameters include \"},{\"code\":1,\"text\":\"result\"},{\"text\":\", \"},{\"code\":1,\"text\":\"file_path\"},{\"text\":\" and \"},{\"code\":1,\"text\":\"text\"},{\"text\":\" (recognized text).\"}],\"type\":\"p\"},{\"id\":\"sy9aAVbEzs_PG8JtRFOAN\",\"children\":[{\"id\":\"aCBkKUh2oawTpyUAeIH4W\",\"children\":[{\"id\":\"o4egQj95nleA5PoCxlgC4\",\"children\":[{\"id\":\"3Yvzlh9jlCuG1IdtAdyNM\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"-_BC0MlA8NxqqkRNqXXWR\",\"children\":[{\"id\":\"nOavAQQnReNrW6UbxTnya\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"k6OAGMitgxmaMXs35YKI3\",\"children\":[{\"id\":\"D6G8c05K4Mdbv10PzUW3a\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"xY0TNO8t_CF_E60c05vqn\",\"children\":[{\"id\":\"IpdLTuKRRGLkfTjjGK6Do\",\"children\":[{\"id\":\"9SSmglGXPdGPkvBDqQ5sf\",\"children\":[{\"id\":\"9CwlcJSxt3cBf0CEeinW-\",\"children\":[{\"text\":\"result\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"NAhpfU7A8dLP5UJWxmLX5\",\"children\":[{\"id\":\"YKUSFnb0Djn63fKURHPuz\",\"children\":[{\"id\":\"jd2jhQgJeUSsYUKDOcUwl\",\"children\":[{\"text\":\"int32\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"WqhjWKL1-Bsla6qjGE6lh\",\"children\":[{\"id\":\"s5PbQUyNS3FImqRUH9W38\",\"children\":[{\"id\":\"NX-KhbGcUzrONlsZMJ_9w\",\"children\":[{\"text\":\"0: recording is completed\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"KyIGq-2pc5RYdwcAleGpg\",\"children\":[{\"id\":\"dFHC5rBPDWJsBPEsTv5Rh\",\"children\":[{\"id\":\"QaovacvwZlLUSmVi3oIXK\",\"children\":[{\"id\":\"1fkdtUums5y-q_nMrkZBf\",\"children\":[{\"text\":\"fileid\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"02j8wgEG13olf7IKxF0nr\",\"children\":[{\"id\":\"7FdOjvNCE1I5KjeCHfekj\",\"children\":[{\"id\":\"jNzwKe_1mMHyF3Af6O7mG\",\"children\":[{\"text\":\"FString\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"UcymXQHwywuM3GkxesmyZ\",\"children\":[{\"id\":\"1Cjsn9v3PKquusiAxYLKR\",\"children\":[{\"id\":\"5XuqCXiER2y83_67MUxUm\",\"children\":[{\"text\":\"URL of recording file, which will be retained on the server for 90 days\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"cF-orkhtDAHKlVopO_zOJ\",\"children\":[{\"id\":\"rUUeQwZJMmRTVbzGwDyy_\",\"children\":[{\"id\":\"wsRV7tlQCnMCw_Nj9soUh\",\"children\":[{\"id\":\"BvW3YOQqRE-lvDShl_Q4h\",\"children\":[{\"text\":\"text\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"B16JpIIaSemapFuJOh0Wp\",\"children\":[{\"id\":\"iszYoK2KMBx-PQlW-962-\",\"children\":[{\"id\":\"DJSYpxrLEMNaJbeXmr5tI\",\"children\":[{\"text\":\"FString\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"0r5LKpaza3MrpsUbw9Hl7\",\"children\":[{\"id\":\"-SCAS_tbsgT5HBSNnYvTX\",\"children\":[{\"id\":\"aD8IbACeHDpVo6NAkB0Yb\",\"children\":[{\"text\":\"Converted text\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[15,12,73],\"widthMode\":\"percentage\"},{\"id\":\"4YaOWOqkvvVQPdYCrPnpK\",\"children\":[{\"text\":\"Error codes\"}],\"nodeId\":\"error-codes7\",\"type\":\"h4\"},{\"id\":\"z8tJnrJsnO0ZoPMme88yu\",\"children\":[{\"id\":\"Xw6sBPFvYnU6_hTgMIHIA\",\"children\":[{\"id\":\"IB8i0TmOgZCJYCjv6UVsj\",\"children\":[{\"id\":\"RpmThmXCSBis5nDfcRkzy\",\"children\":[{\"text\":\"Error Code Value\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"otBaebdnkCZxE03L4M9Bm\",\"children\":[{\"id\":\"3CjG0nAbWe_ps1FGw2dAQ\",\"children\":[{\"text\":\"Cause\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"TD8aiIRakCSK6k-VH6Cbx\",\"children\":[{\"id\":\"7j5cGVrV9LQUyxJnzblJG\",\"children\":[{\"text\":\"Suggested Solution\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"b0wQjMWigCJyVhwEv74w_\",\"children\":[{\"id\":\"xwsYV4Ro9Js8cIoCzJhy0\",\"children\":[{\"id\":\"AIYXIvmyk7e2-D3NrxI3n\",\"children\":[{\"id\":\"NJC0_OCdrpR9VhLp9J7AX\",\"children\":[{\"text\":\"32769\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Eb4LIvZrZS4eqKh9M_klH\",\"children\":[{\"id\":\"P1Wa65fquDLTz7CL2f65X\",\"children\":[{\"id\":\"BUqw8PxCOUNq4vE1qTFAv\",\"children\":[{\"text\":\"An internal error occurred.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ZBhmVUehdKJDCXNYJ3Do7\",\"children\":[{\"id\":\"kyGVCrAx_k0Fr465Qhqcz\",\"children\":[{\"id\":\"8hLU3i9Xg4vfotnfMUJez\",\"children\":[{\"text\":\"Analyze logs, get the actual error code returned from the backend to the client, and ask backend personnel for assistance.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"X_J8PYMi-jnPnn3WbSmuf\",\"children\":[{\"id\":\"LUKIf0wtG_HYVNQ9bEoKn\",\"children\":[{\"id\":\"B-ynlnEs_Od2Wyb2H4QIe\",\"children\":[{\"id\":\"fkuVSsMiRmiF9qhQjTUwd\",\"children\":[{\"text\":\"32770\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"O2QB5pgy6eBoArk81W5gf\",\"children\":[{\"id\":\"lslOZ2CYVZWNAnVINVrUJ\",\"children\":[{\"id\":\"v7ActCrtBqcMMQXoL1FGK\",\"children\":[{\"text\":\"Network failed.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"7ceQNeZN0a46xDmjzR3UQ\",\"children\":[{\"id\":\"MG_yPc5ByHbE92rggqUpi\",\"children\":[{\"id\":\"Pl3HQX4AokplEnxCke98o\",\"children\":[{\"text\":\"Check whether the device can access the internet.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"gslAkA3NJz2GJb_U2Y1eA\",\"children\":[{\"id\":\"5ARCtD6zW3lxcYyHkJ57t\",\"children\":[{\"id\":\"KRyHEhasZi-KAKO5csDPz\",\"children\":[{\"id\":\"cakimjNsQt8G4b-g42Uo4\",\"children\":[{\"text\":\"32772\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"aYpb12aY5nDjZYcjWc-Fg\",\"children\":[{\"id\":\"LqTvbP1BBHMsuddb7XpYW\",\"children\":[{\"id\":\"dQGh0QetNVCC2PN7KLMIZ\",\"children\":[{\"text\":\"Failed to decode the returned packet.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"x87LTwAE1Qxk06euIvH9h\",\"children\":[{\"id\":\"ISpu6TN47Qsn_h7CgoWfU\",\"children\":[{\"id\":\"npYNsd4KaCAy5SfFy9nQ9\",\"children\":[{\"text\":\"Analyze logs, get the actual error code returned from the backend to the client, and ask backend personnel for assistance.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"WZ1xjQozQWFHroP6ugtzb\",\"children\":[{\"id\":\"pVn6xI-amxH3LF3dz2YE1\",\"children\":[{\"id\":\"_puPlI3MMEVs3KDL_jKnI\",\"children\":[{\"id\":\"r5WSHv1S3xGoZWF7ZHSsX\",\"children\":[{\"text\":\"32774\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"F_KKQHpiCgU1P3YCOqO9g\",\"children\":[{\"id\":\"3WO3WcdD0HBqivVFcbdlQ\",\"children\":[{\"id\":\"sgRxHRD2XCFNzYIS0uYln\",\"children\":[{\"text\":\"No \"},{\"code\":1,\"text\":\"appinfo\"},{\"text\":\" is set.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"zZxFcaKAKDH5Te18pFXTz\",\"children\":[{\"id\":\"JYe2_p9LkzsKr-fIg7CRs\",\"children\":[{\"id\":\"OnyE6cJnYgHKVmNQX_BMi\",\"children\":[{\"text\":\"Check whether the authentication key is correct and whether the voice messaging and speech-to-text feature is initialized.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"qTOkbjR_mtWh0zy0j0CLH\",\"children\":[{\"id\":\"hR9pRTVR1LuonPGaTx6-G\",\"children\":[{\"id\":\"aTAPXx4Mvt1WtHtC_3gdJ\",\"children\":[{\"id\":\"jyycgCEpJWzC05LmJMVkk\",\"children\":[{\"text\":\"32776\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"lBDF8IPvyfv1sikjw3j9n\",\"children\":[{\"id\":\"6fb54r6gW7M7HsXApio6d\",\"children\":[{\"id\":\"LF5xIrHTb8RLbQKLWptE3\",\"children\":[{\"code\":1,\"text\":\"authbuffer\"},{\"text\":\" check failed.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"-xVPmM5ETR23Zfl4n8FEi\",\"children\":[{\"id\":\"6kHnZOKqHCwXGeQmy2vsn\",\"children\":[{\"id\":\"FNuLM_sVsejtmBdkBvrS6\",\"children\":[{\"text\":\"Check whether \"},{\"code\":1,\"text\":\"authbuffer\"},{\"text\":\" is correct.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"mc-kNOWCCFebvlBkjLlmA\",\"children\":[{\"id\":\"zps6X4-tDza9I5z3Rpy49\",\"children\":[{\"id\":\"yTeAOrtDsFAva8vd-rJVK\",\"children\":[{\"id\":\"gh2T71bnPDu7ELT4hRaJU\",\"children\":[{\"text\":\"32784\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"kXQYlqic4E3PmFsg1GZAF\",\"children\":[{\"id\":\"vRHufyH66XFsOTU4B0PVR\",\"children\":[{\"id\":\"3_8kU4y5gt6Ar8YfP7w7O\",\"children\":[{\"text\":\"Incorrect speech-to-text conversion parameter.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"8ztPZ9rk3HaEvXsCr6VFf\",\"children\":[{\"id\":\"XQG2IpRiiKSZNqc1z_psw\",\"children\":[{\"id\":\"C-yZczRevP6ItO_e4Ths1\",\"children\":[{\"text\":\"Check whether the API parameter \"},{\"code\":1,\"text\":\"fileid\"},{\"text\":\" in the code is empty.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"5WPF1BXbWi9ZgnFNUvsF-\",\"children\":[{\"id\":\"6t0J9NcVfdx7jQLptI7b8\",\"children\":[{\"id\":\"kPFt3xvS9O-UQ8AkAHsVE\",\"children\":[{\"id\":\"j2hfpT350-CJGk-_1OpiJ\",\"children\":[{\"text\":\"32785\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"88IC8P1LZ02wfTYV9BbiE\",\"children\":[{\"id\":\"KBLp1XDvYynMBNwsyqPDX\",\"children\":[{\"id\":\"r4TDKpt0ji--uRnHrCUBr\",\"children\":[{\"text\":\"Speech-to-text translation returned an error.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"sUwPbAwYik03bjMChr1KX\",\"children\":[{\"id\":\"WvX50TssmTMfSb7jc8DC5\",\"children\":[{\"id\":\"x2T2ZfkOWzxTu4aTkhzpR\",\"children\":[{\"text\":\"Error with the backend of voice messaging and speech-to-text feature. Analyze logs, get the actual error code returned from the backend to the client, and ask backend personnel for assistance.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"WzLcecorf4u8BMaaRqxwv\",\"children\":[{\"id\":\"hWzj6thgVk0lD5LluDBkF\",\"children\":[{\"id\":\"BdhbZqwQxHEYys_On0Tw4\",\"children\":[{\"id\":\"6vjAxhzxAaeudmkI8hTkn\",\"children\":[{\"text\":\"32787\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"V0SzQcJ4I1wrkPAV6o_8t\",\"children\":[{\"id\":\"133cfr-IyWbfAaIBM46G8\",\"children\":[{\"id\":\"dD8ZBKp6cCFwRHBWXtN4A\",\"children\":[{\"text\":\"Speech-to-text conversion succeeded, but the text translation service was not activated.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"0F1x-wRNpjS-uqyQK1Iug\",\"children\":[{\"id\":\"CBblHRA_CD2PQ8PVSeaYK\",\"children\":[{\"id\":\"kOaLgl84ep6Qf1CigRb-N\",\"children\":[{\"text\":\"Activate the text translation service in the console.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"LmSDbifVNcVuSXL21lpZ-\",\"children\":[{\"id\":\"9M4HY6kSo9KGKsRFZ5RnK\",\"children\":[{\"id\":\"maJDK-TBhT2ZLi-sWqesV\",\"children\":[{\"id\":\"e59bS56JQeIAOdRz9emcC\",\"children\":[{\"text\":\"32788\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"8MMMn8f_fMqQFn5m_H80l\",\"children\":[{\"id\":\"e9MgVmJJ6OOBOGfxhWYJX\",\"children\":[{\"id\":\"NNWIayShiadFHsgEuvTfm\",\"children\":[{\"text\":\"Speech-to-text conversion succeeded, but the language parameter of the text translation service was invalid.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"lhYEFNx3KnsHVVfE5aXU4\",\"children\":[{\"id\":\"6pz9ujF8UzPhjqIMpQRYI\",\"children\":[{\"id\":\"EYKzWRCiiAmW6BvtHaFRa\",\"children\":[{\"text\":\"Check the parameter passed in.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[16,30,54],\"widthMode\":\"percentage\"},{\"id\":\"WqPPiN5k3_ZvAfSiSg-Tg\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code25\",\"type\":\"h4\"},{\"id\":\"7OhMaEgMApqjSdWl4ruQd\",\"children\":[{\"id\":\"xg6Rrme3YFMZnKyymm9SC\",\"children\":[{\"text\":\"void TMGTestScene::OnEvent(ITMG_MAIN_EVENT_TYPE eventType,const char* data){\"}],\"type\":\"code-line\"},{\"id\":\"LVI7pR7QQ5BspEqIgLPF6\",\"children\":[{\"text\":\" switch (eventType) {\"}],\"type\":\"code-line\"},{\"id\":\"B-WkXo6hR2Tw2TWhtB56y\",\"children\":[{\"text\":\" case ITMG_MAIN_EVENT_TYPE_ENTER_ROOM:\"}],\"type\":\"code-line\"},{\"id\":\"1etqmiIUWdAXnTnBStYGy\",\"children\":[{\"text\":\" {\"}],\"type\":\"code-line\"},{\"id\":\"4RYZt3zjr9mgK3oO4T3e_\",\"children\":[{\"text\":\" // Process\"}],\"type\":\"code-line\"},{\"id\":\"8c1AlLufgm7kj_MPpWyYz\",\"children\":[{\"text\":\" break;\"}],\"type\":\"code-line\"},{\"id\":\"mJTo5mUxMLDfshhZ4DJqF\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"_swj5YlzZNN4Q2bBuQglY\",\"children\":[{\"text\":\" ...\"}],\"type\":\"code-line\"},{\"id\":\"1WqSWF8uYpAL-gqVaBtWu\",\"children\":[{\"text\":\" case ITMG_MAIN_EVNET_TYPE_PTT_SPEECH2TEXT_COMPLETE:\"}],\"type\":\"code-line\"},{\"id\":\"jQSSNVVZmTYoTqKwFitKf\",\"children\":[{\"text\":\" {\"}],\"type\":\"code-line\"},{\"id\":\"2uI-j_iaU9MbRh8kCv48-\",\"children\":[{\"text\":\" // Process\"}],\"type\":\"code-line\"},{\"id\":\"SwXzUgL6K-shcCfP5-H3V\",\"children\":[{\"text\":\" break;\"}],\"type\":\"code-line\"},{\"id\":\"64lvWHhXFz4D9ReZpZ7ax\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"EaS14h6YCUdXCUOCM7Ehi\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"hYHCm_wA8MFCM_kWQztHG\",\"children\":[{\"text\":\"}\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"FNai4mSW7Ky1xT4UPmpxr\",\"children\":[{\"text\":\"Voice Message Volume Level APIs\"}],\"nodeId\":\"voice-message-volume-level-apis\",\"type\":\"h2\"},{\"id\":\"3JveLu7mKTR1WWy5NlZxM\",\"children\":[{\"id\":\"guO5qCnREn_POIggur0RE\",\"children\":[{\"id\":\"Dm6TiCi6bFs_jESs2f24B\",\"children\":[{\"id\":\"ufeic5vtkcBqK0pVPYibg\",\"children\":[{\"text\":\"API\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"15q8e5nojvA3e0w9L0b6X\",\"children\":[{\"id\":\"GnY6gKqI7VFoDL8uG72V0\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"Lrb2VlR3ctygqtRR6h3lQ\",\"children\":[{\"id\":\"141Z-5VOUcHeShsuF8zVH\",\"children\":[{\"id\":\"C8qYz2nB3vhBoM0RwwhqK\",\"children\":[{\"id\":\"2MPJrrYTEF_S9BaK122hH\",\"children\":[{\"text\":\"GetMicLevel\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"p6uDK7pflE_NKYUrKn7pZ\",\"children\":[{\"id\":\"RpKziRgyKJewqc2hWaPCf\",\"children\":[{\"id\":\"_7bHewe6L691J51OwUHJ7\",\"children\":[{\"text\":\"Gets real-time mic volume level\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"5nVSJupMpsNEIirROnHaA\",\"children\":[{\"id\":\"mas-hlveiX0Xv_dEw3ROK\",\"children\":[{\"id\":\"o5GjQvtm4xVD4rJNsOfp5\",\"children\":[{\"id\":\"0M7-xiI-L8S_Jv5esNTA6\",\"children\":[{\"text\":\"SetMicVolume\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"OmM9g-fULk8IxViilO0cT\",\"children\":[{\"id\":\"EndrlUtccPHi8QHok38GY\",\"children\":[{\"id\":\"awWWCJau_ArZPqg0h-0h_\",\"children\":[{\"text\":\"Sets recording volume level\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"tHUukuZE8DjfdXflCNTMe\",\"children\":[{\"id\":\"pv3DtR3gpru7iGDv3WAO0\",\"children\":[{\"id\":\"HNC8H9PKLP2nnBUZxSObI\",\"children\":[{\"id\":\"oFPxjxlCFQc5zb-PaBT-X\",\"children\":[{\"text\":\"GetMicVolume\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"hny6bXmro3R-gIwRUSHem\",\"children\":[{\"id\":\"CUaYHYFdg7arfyWWYaqiO\",\"children\":[{\"id\":\"uRJgSFrjk-9H2ZjfJ-zp-\",\"children\":[{\"text\":\"Gets recording volume level\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"bt-RMJwdMqBQFWsspI_x9\",\"children\":[{\"id\":\"QFsp9rP-w0dVk1ydEtTyd\",\"children\":[{\"id\":\"0MGBSsqk4UYrCFnhJ1bzN\",\"children\":[{\"id\":\"6kI6_0HgW3lV6QLyK4DQS\",\"children\":[{\"text\":\"GetSpeakerLevel\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"GmihAmpXsmOHpAJ_nb_rW\",\"children\":[{\"id\":\"TFzhuC24aCdCRY1Q4wTgX\",\"children\":[{\"id\":\"ieGswUtu45Bo8_FyD9ijj\",\"children\":[{\"text\":\"Gets real-time speaker volume\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"5pTnwxYOPVNG-jdBD9kmX\",\"children\":[{\"id\":\"_-GGeqpzBZ4xovrC2y1n1\",\"children\":[{\"id\":\"P6ORtvxUy2Ptru41t84k3\",\"children\":[{\"id\":\"gPeBX3PtRKzVzUGTg9imm\",\"children\":[{\"text\":\"SetSpeakerVolume\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"RdFCQjAJSVM-iPvUIIk9i\",\"children\":[{\"id\":\"amIAaAsKSATHMXp4FSokZ\",\"children\":[{\"id\":\"YgO7H01aKHWSlOiEY6K5q\",\"children\":[{\"text\":\"Sets playback volume level\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"WZJUcgB7jXBV4lLq0ewqP\",\"children\":[{\"id\":\"QSka1bUqUnX8YHkTaPE24\",\"children\":[{\"id\":\"vYHx-AQ-iUVKg02tmnWur\",\"children\":[{\"id\":\"C7yeIyPa8-B-SdGNF0sJ1\",\"children\":[{\"text\":\"GetSpeakerVolume\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"5rWMFsvMu2qHGgYct9IFc\",\"children\":[{\"id\":\"UMvZuqnK8VLWt9nTdzkul\",\"children\":[{\"id\":\"AXsUUoCc-wQB9Hpw2HUqV\",\"children\":[{\"text\":\"Gets playback volume level\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[40,60],\"widthMode\":\"percentage\"},{\"id\":\"M8aeMnui1T5hyRmC0JUfK\",\"children\":[{\"text\":\"Getting the real-time mic volume of voice message\"}],\"nodeId\":\"getting-the-real-time-mic-volume-of-voice-message\",\"type\":\"h3\"},{\"id\":\"PYrhhgdpz2aoLdE-p2ih9\",\"children\":[{\"text\":\"This API is used to get the real-time mic volume. An int-type value will be returned. Value range: 0-200.\"}],\"type\":\"p\"},{\"id\":\"ENbsA1Sykx0RNWn0-ahpb\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype23\",\"type\":\"h4\"},{\"id\":\"00EqbPAU2ysftnxGLATIh\",\"children\":[{\"id\":\"pJM7FiYFwwC48hLE7vIPF\",\"children\":[{\"text\":\"ITMGPTT virtual int GetMicLevel()\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"weWiLKs1M91k_sBgautXN\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code26\",\"type\":\"h4\"},{\"id\":\"6MXeNih69cCYsuW2WqCxM\",\"children\":[{\"id\":\"sxG2ZWS78WiNOhYO9ZxHR\",\"children\":[{\"text\":\"ITMGContext.GetInstance(this).GetPTT().GetMicLevel();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"Gp5gDBHnAMljhZivTlMBA\",\"children\":[{\"text\":\"Setting the recording volume of voice message\"}],\"nodeId\":\"setting-the-recording-volume-of-voice-message\",\"type\":\"h3\"},{\"id\":\"5enNcXFTBSNowPOFA0GRk\",\"children\":[{\"text\":\"This API is used to set the recording volume of voice message. Value range: 0-200.\"}],\"type\":\"p\"},{\"id\":\"ncb9cwd8d44-LuvhSXUcC\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype24\",\"type\":\"h4\"},{\"id\":\"mI_Z7d1jsDhPibK7_5EXH\",\"children\":[{\"id\":\"44pJEefUF9FJmlsRmcusA\",\"children\":[{\"text\":\"ITMGPTT virtual int SetMicVolume(int vol)\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"pORiY7GQB86SFCQdwykz2\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code27\",\"type\":\"h4\"},{\"id\":\"y4kmXTXBErjxTp1VmerEr\",\"children\":[{\"id\":\"gzXnswz9kdGgtxywK1xa2\",\"children\":[{\"text\":\"ITMGContextGetInstance()->GetPTT()->SetMicVolume(100);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"XANqWaZXW9jR-86VJXPyZ\",\"children\":[{\"text\":\"Getting the recording volume of voice message\"}],\"nodeId\":\"getting-the-recording-volume-of-voice-message\",\"type\":\"h3\"},{\"id\":\"gxByPQiEXS-JZs_91RzS-\",\"children\":[{\"text\":\"This API is used to get the recording volume of voice message. An int-type value will be returned. Value range: 0-200.\"}],\"type\":\"p\"},{\"id\":\"AOmP1K-BciiQgjao9tfuF\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype25\",\"type\":\"h4\"},{\"id\":\"qdKUPYa61R-ZrPsDUxmUr\",\"children\":[{\"id\":\"OV6Pil_9cy4SOtkzXNyDv\",\"children\":[{\"text\":\"ITMGPTT virtual int GetMicVolume()\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"fpifUu5KkocqASnBja0wg\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code28\",\"type\":\"h4\"},{\"id\":\"8w_J5qp33P97SaRA_JNkV\",\"children\":[{\"id\":\"fxLDKbELHGA2vtsc-6i0c\",\"children\":[{\"text\":\"ITMGContextGetInstance()->GetPTT()->GetMicVolume();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"2-KMQgY3WfFy8s1GwL0U0\",\"children\":[{\"text\":\"Getting the real-time speaker volume of voice message\"}],\"nodeId\":\"getting-the-real-time-speaker-volume-of-voice-message\",\"type\":\"h3\"},{\"id\":\"WRRVpB1yNfJM8nRtub5Jk\",\"children\":[{\"text\":\"This API is used to get the real-time speaker volume. An int-type value will be returned. Value range: 0-200.\"}],\"type\":\"p\"},{\"id\":\"PrHopOc37NtYzu4lAl65d\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype26\",\"type\":\"h4\"},{\"id\":\"am7Mrd_lMlqtHSVxl3wSP\",\"children\":[{\"id\":\"5czpFNvL3gKBVluzirvhu\",\"children\":[{\"text\":\"ITMGPTT virtual int GetSpeakerLevel()\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"4vddI6oV_3w1nMzUCKr65\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code29\",\"type\":\"h4\"},{\"id\":\"eYDjkBd5rH-uVidM1zxci\",\"children\":[{\"id\":\"E98P8JGDUFc3w21is7or4\",\"children\":[{\"text\":\"ITMGContextGetInstance()->GetPTT()->GetSpeakerLevel();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"8FTqboDs3ZoveCLWca_mo\",\"children\":[{\"text\":\"Setting the playback volume of voice message\"}],\"nodeId\":\"setting-the-playback-volume-of-voice-message\",\"type\":\"h3\"},{\"id\":\"g42gcW7BogW9dkn29UR43\",\"children\":[{\"text\":\"This API is used to set the playback volume of voice message. Value range: 0-200.\"}],\"type\":\"p\"},{\"id\":\"EkUBfws7VPW_Sh53jvA0a\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype27\",\"type\":\"h4\"},{\"id\":\"rRY4Fg7UNcY9EKygCpEZZ\",\"children\":[{\"id\":\"utV4dA4PjkyvwYC5fbrBG\",\"children\":[{\"text\":\"ITMGPTT virtual int SetSpeakerVolume(int vol)\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"v9ix050HhidQSgSkAORfV\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code30\",\"type\":\"h4\"},{\"id\":\"iZYaVRoEQWW_U56EBTluY\",\"children\":[{\"id\":\"x9BV65R-ImQYSF4ar2iaB\",\"children\":[{\"text\":\"ITMGContextGetInstance()->GetPTT()->SetSpeakerVolume(100);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"0DhevAcc8Mnuq20fanHZL\",\"children\":[{\"text\":\"Getting the playback volume of voice message\"}],\"nodeId\":\"getting-the-playback-volume-of-voice-message\",\"type\":\"h3\"},{\"id\":\"gfG0janBmAPRh96YUADVj\",\"children\":[{\"text\":\"This API is used to get the playback volume of voice message. An int-type value will be returned. Value range: 0-200.\"}],\"type\":\"p\"},{\"id\":\"C7AIwFdjEoczzh-d6_meV\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype28\",\"type\":\"h4\"},{\"id\":\"Q2q30Y_Gbj2CIN3d1-IAd\",\"children\":[{\"id\":\"FLSb1sJzh0_02x72oPj0E\",\"children\":[{\"text\":\"ITMGPTT virtual int GetSpeakerVolume()\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"d-bN6M3WfYWaHl_w5PqTW\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code31\",\"type\":\"h4\"},{\"id\":\"eZOErpxVnsfET5I2JKeDZ\",\"children\":[{\"id\":\"T3SylxNXmne2KAGVML0JR\",\"children\":[{\"text\":\"ITMGContextGetInstance()->GetPTT()->GetSpeakerVolume();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"rkCVsli0WXqQeyd1utZUa\",\"children\":[{\"text\":\"Advanced APIs\"}],\"nodeId\":\"advanced-apis\",\"type\":\"h2\"},{\"id\":\"lOg_1WhmR7cGwPFECxPdk\",\"children\":[{\"text\":\"Getting version number\"}],\"nodeId\":\"getting-version-number\",\"type\":\"h3\"},{\"id\":\"YLJLhg5rKlJjhIapUdEng\",\"children\":[{\"text\":\"This API is used to get the SDK version number for SDK usage analysis.\"}],\"type\":\"p\"},{\"id\":\"6Gevz2IxUnDZ8Xi3W2acL\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype29\",\"type\":\"h4\"},{\"id\":\"HKRuxX50U9OvdbX2hMzet\",\"children\":[{\"id\":\"8SFFqxZcsOwaaxhXPLaEg\",\"children\":[{\"text\":\"ITMGContext virtual const char* GetSDKVersion()\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"Kced_iG3YqG6hh9Dns03h\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code32\",\"type\":\"h4\"},{\"id\":\"2gwCmRJ7Vu1DG29r3OYUV\",\"children\":[{\"id\":\"J1nA9W6iquHL7cKtdBZ9h\",\"children\":[{\"text\":\"ITMGContextGetInstance()->GetSDKVersion();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"UheqjU0YkUAbq8bpuKCSe\",\"children\":[{\"text\":\"Setting log printing level\"}],\"nodeId\":\"setting-log-printing-level\",\"type\":\"h3\"},{\"id\":\"ie__6AILqTNaJafEalsUy\",\"children\":[{\"text\":\"This API is used to set the level of logs to be printed, and needs to be called before the initialization. It is recommended to keep the default level.\"}],\"type\":\"p\"},{\"id\":\"bLeC_yCBBNgQbL7P7cP0f\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype30\",\"type\":\"h4\"},{\"id\":\"riW9rl6OlieYo0k_Y2cv3\",\"children\":[{\"id\":\"JhVs1j3DOqalx5g4sfTDH\",\"children\":[{\"text\":\"ITMGContext int SetLogLevel(ITMG_LOG_LEVEL levelWrite, ITMG_LOG_LEVEL levelPrint)\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"i4eVZngfu4Z7P7cxd3hyP\",\"children\":[{\"text\":\"Parameter description\"}],\"nodeId\":\"parameter-description\",\"type\":\"h4\"},{\"id\":\"U0TtX8fqv2h7c5ITNtsP-\",\"children\":[{\"id\":\"itmCl99khCMz77U0gdk29\",\"children\":[{\"id\":\"m--R5FAN9cpt-Fle7bNut\",\"children\":[{\"id\":\"TsRrROPCthAIVc-ko2Yhs\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"-PdIy-gNsvWrMWEJyox74\",\"children\":[{\"id\":\"ZAMd1OhRC_rOTkfP52vyP\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Sn09B38oh5sdK0eMo4iwp\",\"children\":[{\"id\":\"zr5JQKLVpT5yycGGnyj7K\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"JicKl6hyjdz1Ja8bSSSEZ\",\"children\":[{\"id\":\"7r62EQLJ1rrvk7xa60zUc\",\"children\":[{\"id\":\"4DRmc2JyPa2kDXGu3Kjas\",\"children\":[{\"id\":\"x_36yPWAcPNNs_yeOBRrS\",\"children\":[{\"text\":\"levelWrite\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ElrvF6vdvVbuNGJDJ6khI\",\"children\":[{\"id\":\"pKqrGOew-jRVZWNGT6OY8\",\"children\":[{\"id\":\"rud-M3iLTyrSHgogrdQFM\",\"children\":[{\"text\":\"ITMG_LOG_LEVEL\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"YGLjl2tvwmkc37jLJBjcr\",\"children\":[{\"id\":\"PYJoi0gI9h5PAijVqB9Gf\",\"children\":[{\"id\":\"P_zo7GgAURr51p7LeLlX_\",\"children\":[{\"text\":\"Sets the level of logs to be written. \"},{\"code\":1,\"text\":\"TMG_LOG_LEVEL_NONE\"},{\"text\":\" indicates not to write. Default value: TMG_LOG_LEVEL_INFO\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"MdoV35Ax7y4K9Fk8awHS-\",\"children\":[{\"id\":\"A6yHT0UIzZjOlVbbQ0r0e\",\"children\":[{\"id\":\"ZOSbtFrySYA4Sp6dmQfYO\",\"children\":[{\"id\":\"kBM1toeXDn8cX7XtuPhR6\",\"children\":[{\"text\":\"levelPrint\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"pBWeLO23JFYY_nL-Wihs9\",\"children\":[{\"id\":\"d-eI_GW2PCFw_JOAMrE_1\",\"children\":[{\"id\":\"Gup8VpFgf_h0g-83Gcje5\",\"children\":[{\"text\":\"ITMG_LOG_LEVEL\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"7tLTheczrJVqTob8Upxay\",\"children\":[{\"id\":\"Qarp_TqhluaBY5B_xhTNW\",\"children\":[{\"id\":\"rsB5qWOrlnRmzfsSMibgz\",\"children\":[{\"text\":\"Sets the level of logs to be printed. \"},{\"code\":1,\"text\":\"TMG_LOG_LEVEL_NONE\"},{\"text\":\" indicates not to print. Default value: TMG_LOG_LEVEL_ERROR\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[12,20,68],\"widthMode\":\"percentage\"},{\"id\":\"bEzwjZI23Naqa4QjVWYi1\",\"children\":[{\"code\":1,\"text\":\"ITMG_LOG_LEVEL\"},{\"text\":\" description:\"}],\"type\":\"p\"},{\"id\":\"6jJ8mds8POyWEXQbNaGxj\",\"children\":[{\"id\":\"Iw-_ttt4QAHkIezIJ6BQ6\",\"children\":[{\"id\":\"PIshKcf7rQi7XvJTfam7E\",\"children\":[{\"id\":\"5xasHePfHbkUcJBBBxq13\",\"children\":[{\"text\":\"ITMG_LOG_LEVEL\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"8CtImTq_nz47B0b31XII5\",\"children\":[{\"id\":\"_UtTNGjjZcawzcwh2m9Wd\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"nkS6_l8nEJOQoWiyyko22\",\"children\":[{\"id\":\"B5VPkrz27gOTf7wq-GNu4\",\"children\":[{\"id\":\"-2vrkrgsw-VQ2ASZSWMBw\",\"children\":[{\"id\":\"tKH9bTUVkWrOAm72fPr1e\",\"children\":[{\"text\":\"TMG_LOG_LEVEL_NONE\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"fSmuHcG-DfZBoK75S40wu\",\"children\":[{\"id\":\"wybeyNOD0Cqo4RPKguXoU\",\"children\":[{\"id\":\"nMXi4n9k2oOkcES8wGNMF\",\"children\":[{\"text\":\"Does not print logs\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"xOxrr30Uw3DN8DBrXMeby\",\"children\":[{\"id\":\"U4iZHeLv-StN9TUxaj4-g\",\"children\":[{\"id\":\"fsNk86AFL-hKacPYWrbES\",\"children\":[{\"id\":\"2Vh0EMhckfbFED1CPWSQZ\",\"children\":[{\"text\":\"TMG_LOG_LEVEL_ERROR\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"HbovpQcj0dLvXuISccCQ5\",\"children\":[{\"id\":\"ZGZM15CZ9d3IVJH6xUxSZ\",\"children\":[{\"id\":\"YVui6bHUu8etfGN2lKb3e\",\"children\":[{\"text\":\"Prints error logs (default)\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"U_sefrw4LDEdNT_trr5v_\",\"children\":[{\"id\":\"r7FHbjB88zxy0UJ2jKBJU\",\"children\":[{\"id\":\"SMuThp0ryz8QxzSltH6XV\",\"children\":[{\"id\":\"S80B12aQ1cPShhXtSQbWE\",\"children\":[{\"text\":\"TMG_LOG_LEVEL_INFO\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"c9QzsT2JcRl_cw-tkh3G1\",\"children\":[{\"id\":\"X5R4OkZ6z8WM5NQpDGFef\",\"children\":[{\"id\":\"NcjeUhLalrLAG0dkGSjHu\",\"children\":[{\"text\":\"Prints info logs\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"rFPbPNO5yCzxSkBXv0sef\",\"children\":[{\"id\":\"msXtOLbY3JvZ2seus7s68\",\"children\":[{\"id\":\"XL8tZy0BCassfpj9eeddb\",\"children\":[{\"id\":\"h5LgTW0YO40S9JXe-1_q1\",\"children\":[{\"text\":\"TMG_LOG_LEVEL_DEBUG\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"gDsCIQkG2YE56MLZXO2wv\",\"children\":[{\"id\":\"iLfDwUpuqKdrl-R1wT4Ny\",\"children\":[{\"id\":\"eTNGeJpsMhjXAsixJL4bJ\",\"children\":[{\"text\":\"Prints debug logs\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"5IoUoDq3LicwlEKzFG27j\",\"children\":[{\"id\":\"RWqSzd0iCADR-u0-2vN7I\",\"children\":[{\"id\":\"wITXUf8_231zEPiBxuDDC\",\"children\":[{\"id\":\"cr8IC8qJmajQcJTLXtmQH\",\"children\":[{\"text\":\"TMG_LOG_LEVEL_VERBOSE\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"vDwJ9X2CkAeAu2R_qQa3t\",\"children\":[{\"id\":\"cQ72ZAeHIMoLwLfEXwGMd\",\"children\":[{\"id\":\"c3sNccoXddXuo_qIobNTQ\",\"children\":[{\"text\":\"Prints verbose logs\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[44,56],\"widthMode\":\"percentage\"},{\"id\":\"DH_Jb9kP_wNzNQRfB8GDO\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code33\",\"type\":\"h4\"},{\"id\":\"7CgaCN12GNyoWTgmJPTfL\",\"children\":[{\"id\":\"yvMzmgcZJjjP2zSRtunAI\",\"children\":[{\"text\":\"ITMGContextGetInstance()->SetLogLevel(TMG_LOG_LEVEL_INFO,TMG_LOG_LEVEL_INFO);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"F4tuaygXignXuZzBMf1Sy\",\"children\":[{\"text\":\"Setting the log printing path\"}],\"nodeId\":\"setting-the-log-printing-path\",\"type\":\"h3\"},{\"id\":\"aWAv6KVsns6iRuencuZMo\",\"children\":[{\"text\":\"This API is used to set the log printing path. The default path is as follows. It needs to be called before Init.\"}],\"type\":\"p\"},{\"id\":\"KI7xrdUmLVejpumCo6WL_\",\"children\":[{\"id\":\"-QpAPP50Zbjca2qH9PMv2\",\"children\":[{\"id\":\"H7qUpyWCVa0r5nWcjZKH9\",\"children\":[{\"id\":\"ojAUCywh1WhjIunY7giP1\",\"children\":[{\"text\":\"OS\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"-ckdOnsvEcj_jE9nQMXDW\",\"children\":[{\"id\":\"xJ4emeWYR0j2PKRpllJOm\",\"children\":[{\"text\":\"Path\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"L1xdItt_cC0eihMDBEVOJ\",\"children\":[{\"id\":\"zO0H2cBmcqle6BXPbRtjn\",\"children\":[{\"id\":\"A0iZZLxgt2DRJDQ1EF1iS\",\"children\":[{\"id\":\"ZQeBYIDQnbXcqtSxLLAaH\",\"children\":[{\"text\":\"Windows\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"eL79Mx4wBAMxOT_ZCCUEM\",\"children\":[{\"id\":\"hru498Mll1MJ6wZiPv84j\",\"children\":[{\"id\":\"GudWqxpyVeUW8HKzBkERK\",\"children\":[{\"text\":\"%appdata%\\\\Tencent\\\\GME\\\\ProcessName\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"j4FvWiI2WT4-qhnvg3IAo\",\"children\":[{\"id\":\"ZsM-HkTUnnldxLTRAWeje\",\"children\":[{\"id\":\"dihoat0j9O--CPrhrtIla\",\"children\":[{\"id\":\"zcNJP7TXoP-fW3yIpbUIX\",\"children\":[{\"text\":\"iOS\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"uSB8MnZ3kRtOKdQXRD-HV\",\"children\":[{\"id\":\"PIDHr-46mL1GDNAbgdkZD\",\"children\":[{\"id\":\"SDT_6t5OaOWu3lyd5KCmu\",\"children\":[{\"text\":\"Application/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/Documents\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"z4p8iC2_QA-9xYaI2nHBz\",\"children\":[{\"id\":\"w_fWY02svJs8DJImrGRUq\",\"children\":[{\"id\":\"I6aB1DvfbUcdur9P1_7Pw\",\"children\":[{\"id\":\"06PwPoVgRPrMFClcfpBwJ\",\"children\":[{\"text\":\"Android\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"0bKwMEhEdrhmKsgYczT0Q\",\"children\":[{\"id\":\"OqzfqOxhVkEAkKhLQYBqo\",\"children\":[{\"id\":\"NgzV4fPtnRyLcMPhBgyMj\",\"children\":[{\"text\":\"/sdcard/Android/data/xxx.xxx.xxx/files\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"6-4m4Yn-_U8ELg6e3R2Fb\",\"children\":[{\"id\":\"AjeVu3dxQPcK2da95QE3B\",\"children\":[{\"id\":\"cUiHvCsXQ37J48y0aUYcH\",\"children\":[{\"id\":\"YYBNzIp8-3pOPhkyyxFxv\",\"children\":[{\"text\":\"Mac\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"PpKTJkXN2cY87Wi--2Z9m\",\"children\":[{\"id\":\"BVA6PMt1Trp0ojz9zwLtY\",\"children\":[{\"id\":\"KDa8ahVlDlwst4dJJGll0\",\"children\":[{\"text\":\"/Users/username/Library/Containers/xxx.xxx.xxx/Data/Documents\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[16,84],\"widthMode\":\"percentage\"},{\"id\":\"njqey1eGLSXIbD2Gdd6s5\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype31\",\"type\":\"h4\"},{\"id\":\"omot-PZnPNqRS6iAeyGwG\",\"children\":[{\"id\":\"HTKd_u9-nBly1t2ftNf9J\",\"children\":[{\"text\":\"ITMGContext virtual int SetLogPath(const char* logDir) \"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"xSaw3Q7sdchl0MPFvvdWt\",\"children\":[{\"id\":\"O2xnlAkBY27E-YM3Sm3zH\",\"children\":[{\"id\":\"mXYqeLZRRyvdtcGXGZJAt\",\"children\":[{\"id\":\"LoQQMqDahjp5fOigjpPWC\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"1ylE9oiIA1mU3CYwPhQ61\",\"children\":[{\"id\":\"2DuYRVB381IuHOccDQCiY\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"AqXBCzB3nwfHpLnCkhYJ6\",\"children\":[{\"id\":\"LpvoIVxC_tNn4gTwZV0xm\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"gvWujoNb8ISZ-dFmbxfti\",\"children\":[{\"id\":\"zRkTx4Xpvit9MY-P9KK5x\",\"children\":[{\"id\":\"kFyOchWzoVskMqGFqCqPH\",\"children\":[{\"id\":\"LmJlvWjcfggA1ee-GCo3L\",\"children\":[{\"text\":\"logDir\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ZI_lXJvS8cVrUto6XNFGf\",\"children\":[{\"id\":\"xaviHmyzZSEPPHYcJk5C6\",\"children\":[{\"id\":\"S3fJxNyz64X4BA9ZfxPZd\",\"children\":[{\"text\":\"const char*\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"b5Y9WeZW08RJHnB28Trrc\",\"children\":[{\"id\":\"vMNkXK71b71dCKJZqmfGy\",\"children\":[{\"id\":\"LSQUKfKz_qurnh-T09sYW\",\"children\":[{\"text\":\"Path\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[32,33,35],\"widthMode\":\"percentage\"},{\"id\":\"FPjGl4Wb32dnuYA2Iwu2Z\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code34\",\"type\":\"h4\"},{\"id\":\"d6oRxFCGuSzHIrNysoWUu\",\"children\":[{\"id\":\"W1awPzFexCarUr7lJwzhz\",\"children\":[{\"text\":\"cosnt char* logDir = \\\"\\\"// Set a path by yourself\"}],\"type\":\"code-line\"},{\"id\":\"alqwXCNskm_2i_0aQMxtV\",\"children\":[{\"text\":\"ITMGContext* context = ITMGContextGetInstance();\"}],\"type\":\"code-line\"},{\"id\":\"kWrgntIXCx3nZxCeWPLFn\",\"children\":[{\"text\":\"context->SetLogPath(logDir);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"YqN2MKEe_QIk7VwjIwYOn\",\"children\":[{\"text\":\"Callback Messages\"}],\"nodeId\":\"callback-messages\",\"type\":\"h2\"},{\"type\":\"table\",\"rowHeader\":true,\"children\":[{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"Message\"}],\"id\":\"uhnih2tco4jfjWSPgvdZN\"}],\"id\":\"HDpxQ_VlUpvu-f9nomQxJ\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"Description\"}],\"id\":\"7ViY4iB9ksN5Gn3lS-bW_\"}],\"id\":\"Y-uA0Fv5sStYtpme1Sy0S\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"Parameter\"}],\"id\":\"jQ4ELzACQq7c8B-og_-BQ\"}],\"id\":\"PoMerREHmyNvEPdDRxIbv\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"Sample\"}],\"id\":\"diEZLHy9cvAWKI0ogWN0g\"}],\"id\":\"oo-1iSt-BTW93nXv0aTYM\"}],\"id\":\"Vo0uBzVok0sCSs_gqOc8k\"},{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_ENTER_ROOM\"}],\"id\":\"oT8GzoQzqBKstXXoueLgV\"}],\"id\":\"017YLbYqvgvVrjtQW3UEm\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"A member entered the audio room\"}],\"id\":\"cdNV2d1TwqJ06HlHvynR3\"}],\"id\":\"ApDcIDZz6Htd4e4fyAu-9\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"result; error_info\"}],\"id\":\"lYGcwyVP7IH80Xxac6c63\"}],\"id\":\"Ztr-VTjFDDugdFKwmjzrz\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"{\\\"error_info\\\":\\\"\\\",\\\"result\\\":0}\"}],\"id\":\"cPanYftHOhLVdbFkJIJfk\"}],\"id\":\"-Ev_XfaoAbo8-YT730wzM\"}],\"id\":\"hDCcTVASh8RUGlrDt36FO\"},{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_EXIT_ROOM\"}],\"id\":\"pfPoNWae-swk_MIXOefoU\"}],\"id\":\"A7NGRaIiW9-R7pEcW8PUY\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"A member exited the audio room\"}],\"id\":\"mu7-SeSPGTp446FBFM1CF\"}],\"id\":\"fA2WtlGXQR2ws0HeVqSgt\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"result; error_info\"}],\"id\":\"tVOjuKQxAVyhgf9v-WHyE\"}],\"id\":\"k2JwuF3qGBhb0fHuigF6_\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"{\\\"error_info\\\":\\\"\\\",\\\"result\\\":0}\"}],\"id\":\"vwYuQ6zYTLfZjL9p2h_Rb\"}],\"id\":\"6FmkXQDlKC9rc8GSI5aAn\"}],\"id\":\"waHs0_G4ATW7I5ACIAkB_\"},{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_ROOM_DISCONNECT\"}],\"id\":\"VYyOc6Ltz-1sJY7fz_AuQ\"}],\"id\":\"_wu7ytUChpIBaiHdiremV\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"The room was disconnected for network or other reasons\"}],\"id\":\"eUcP2cucsY1iE8p7p2eAl\"}],\"id\":\"1jaCwFZP_RS5-6hlTDd7U\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"result; error_info\"}],\"id\":\"TOIRze3H-lokUDHQwpmxY\"}],\"id\":\"4HO98Y-QPh-gA1lFWFOrV\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"{\\\"error_info\\\":\\\"waiting timeout, please check your network\\\",\\\"result\\\":0}\"}],\"id\":\"VVUoE7BjoiB--3xbAJmev\"}],\"id\":\"zcuAQUwDSkLWnYziFnYK3\"}],\"id\":\"JUJkYVaXd0H6z669dO8h3\"},{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"ITMG_MAIN_EVNET_TYPE_USER_UPDATE\"}],\"id\":\"wSlah5XwVoOxjVgCqoNMK\"}],\"id\":\"p8_vTYOnJEjSuaj0zRv4U\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"Room members were updated\"}],\"id\":\"DuC90QauVbpL5aYfL0l7j\"}],\"id\":\"NsOmzzMFOB_LAce2SWAk4\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"user_list; event_id\"}],\"id\":\"RFuS5iD8elThqdrB5OhCS\"}],\"id\":\"iwnqWdFEbSr2CrG9snLlz\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"{\\\"event_id\\\":1,\\\"user_list\\\":[\\\"0\\\"]}\"}],\"id\":\"RIsk8rTZfrujl6bCYukDo\"}],\"id\":\"h9c9lR5RcQxkgB_nb14Hs\"}],\"id\":\"ewBljH3AZMVO6IIoJNsu8\"},{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_RECONNECT_START\"}],\"id\":\"eDnQ9Qb00ZHXjn2Trab89\"}],\"id\":\"kLeEAwWgTsGUI9NJC0-kw\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"The reconnection to the room started\"}],\"id\":\"vNaHsMjmJ5ElA_lOPGg0o\"}],\"id\":\"OhGWfGGNWqCLMJSrN15Sd\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"result; error_info\"}],\"id\":\"t39xrR4e70c__LCJbd0Gc\"}],\"id\":\"XOjpP2V5ODHtu7EqB0mqP\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"{\\\"error_info\\\":\\\"\\\",\\\"result\\\":0}\"}],\"id\":\"VWLjLJIrFLOorkiSZKgg7\"}],\"id\":\"Ct3dmnHG1vnkGegMEGdaG\"}],\"id\":\"ce9RiofpBUiBm-BOdUoAl\"},{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_RECONNECT_SUCCESS\"}],\"id\":\"5WybxPvXBTC0fIESds1kG\"}],\"id\":\"4_6be5jA4eQZXbK_QSLOX\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"The reconnection to the room succeeded\"}],\"id\":\"UGZw780ykOojVaqbbDQQh\"}],\"id\":\"nBJAB-VM7cH74k37WvEIB\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"result; error_info\"}],\"id\":\"Ga4dSlUA2tL3KGEaA92yP\"}],\"id\":\"cRWUUTI63uS7iu7FiQf3E\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"{\\\"error_info\\\":\\\"\\\",\\\"result\\\":0}\"}],\"id\":\"wKg3E1HratQ15sR4PNHeI\"}],\"id\":\"yEF_iXDiAW_4WrHPF9nwT\"}],\"id\":\"WmdD2hUVump2gFrLczC_1\"},{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_SWITCH_ROOM\"}],\"id\":\"ZKBd-8Fk5S3jKvwK1tFHZ\"}],\"id\":\"fcV8_lLjpUQJ5A3TrDFS9\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"The room was quickly switched\"}],\"id\":\"Hzg-ykxDJWoCu25n-2ZU2\"}],\"id\":\"V2Nnc2cXzQ4oo01Quj1F4\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"result; error_info\"}],\"id\":\"gNS10gq4hZJPvSkg5_woj\"}],\"id\":\"suFnSKiTarjAS9ZXom89T\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"{\\\"error_info\\\":\\\"\\\",\\\"result\\\":0}\"}],\"id\":\"q7-n-7dtTh7O6fA_dovjG\"}],\"id\":\"caR8TuKq_kuBMKeZ6CiSN\"}],\"id\":\"3Cfhnv9x1ISTD3UTF8z0a\"},{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_CHANGE_ROOM_TYPE\"}],\"id\":\"PuJKV67Gf35EF11EuZnCE\"}],\"id\":\"u5RW-ZtIcQH2hg7o8TbBz\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"The room status was changed\"}],\"id\":\"rbgRtI0frUwe-Hqw9XpqM\"}],\"id\":\"EVcm-Ln1XeTH0vSrhqa9N\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"result; error_info; sub_event_type; new_room_type\"}],\"id\":\"WkUddnYqEv5upCCpeydPr\"}],\"id\":\"R--a161MovqrTi9s2mOJY\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"{\\\"error_info\\\":\\\"\\\",\\\"new_room_type\\\":0,\\\"result\\\":0}\"}],\"id\":\"s4X_aUETyfzxfj72Hu00p\"}],\"id\":\"Gk6vvQSFXUDhSqorLtuuT\"}],\"id\":\"3q0LKkwX6vSly5rb4X20j\"},{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_ROOM_SHARING_START\"}],\"id\":\"KKB0Mfy0EeQncJAzO7lwp\"}],\"id\":\"GP-4QIeSVM8UKtIlSHxPI\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"Cross-room mic connect started\"}],\"id\":\"qsfhTTcnXl1whbea0h_mS\"}],\"id\":\"ow3Te6kh1UWRFHkG0FN3S\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"result;\"}],\"id\":\"6kQxITpAcobYn9H0GQZLe\"}],\"id\":\"XS3_IFkvCUYPo7dBzmsUe\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"{\\\"result\\\":0}\"}],\"id\":\"DQB2IpTpcNTb3jERN7Yjv\"}],\"id\":\"B9qW34jaDx_L1-2um1Gc6\"}],\"id\":\"gXF2ZkkiDcPnxoCToasqp\"},{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_ROOM_SHARING_STOP\"}],\"id\":\"NjxH7CUgzJuzQPh5AR2U8\"}],\"id\":\"8FcCwThdlKLwWlirkAkPI\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"Cross-room mic connect stopped\"}],\"id\":\"b1zGLhIUgt8MJptKSPtKL\"}],\"id\":\"GG11tsre23w8DwpX80duV\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"result;\"}],\"id\":\"vUhDwCTMroRCK7TL2Jhv8\"}],\"id\":\"tjaCpZtCS69kqbW0KokT5\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"{\\\"result\\\":0}\"}],\"id\":\"i4KbgY9J_YcOqhoqDz-WF\"}],\"id\":\"gmoI9c6_YgEujVVEjdOAW\"}],\"id\":\"Z3t4-Y-xC95MCfZ6gKw-f\"},{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_SPEAKER_DEFAULT_DEVICE_CHANGED\"}],\"id\":\"Ifbz9y6rp879ehwJFSd_k\"}],\"id\":\"Z5GHPajbfY7s7ww85kUST\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"The default speaker device was changed\"}],\"id\":\"7lztVrkTZkj8fCj6AzVfX\"}],\"id\":\"O4EgD6TYuwiGzdYy3Ie1E\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"result; error_info\"}],\"id\":\"zqx2N8Eqn6ta5OW3bwIel\"}],\"id\":\"HSYYG-Al28g7Ma_gEp9-C\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"{\\\"deviceID\\\":\\\"{0.0.0.00000000}.{a4f1e8be-49fa-43e2-b8cf-dd00542b47ae}\\\",\\\"deviceName\\\":\\\"Speaker (Realtek High Definition Audio)\\\",\\\"error_info\\\":\\\"\\\",\\\"isNewDevice\\\":true,\\\"isUsedDevice\\\":false,\\\"result\\\":0}\"}],\"id\":\"AATumCnt1_J8trmMLNpi3\"}],\"id\":\"MpXjbclzuSXXq5IIMfc0z\"}],\"id\":\"hPuLWV0bQbNG4z1pi_FZe\"},{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_SPEAKER_NEW_DEVICE\"}],\"id\":\"vYxvyMXe3aiwgDSn0IjKD\"}],\"id\":\"VPjEb70sAN9ZPyvnitbS5\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"A new speaker device was added\"}],\"id\":\"gSkbm-VDcN1mVFlGwgBIz\"}],\"id\":\"2WoslRJ9-n6gwWeBTFVC6\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"result; error_info\"}],\"id\":\"AgZ8X1W2SHYO0akOg1__M\"}],\"id\":\"XeuKsJUYHARyQuNlcXAa-\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"{\\\"deviceID\\\":\\\"{0.0.0.00000000}.{a4f1e8be-49fa-43e2-b8cf-dd00542b47ae}\\\",\\\"deviceName\\\":\\\"Speaker (Realtek High Definition Audio)\\\",\\\"error_info\\\":\\\"\\\",\\\"isNewDevice\\\":true,\\\"isUsedDevice\\\":false,\\\"result\\\":0}\"}],\"id\":\"kQBAJlhmrRr5QNz7TSD6h\"}],\"id\":\"UWCmPHYsdyJ6dKKLIzs_j\"}],\"id\":\"NSPoSxNiKZeaHtL6duEO6\"},{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_SPEAKER_LOST_DEVICE\"}],\"id\":\"mv8c4dVdiSlvZD0wkqTjA\"}],\"id\":\"IUZNzk_tJBKh8_YW1sOvt\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"A speaker device was lost\"}],\"id\":\"tgCyuTBPv8k1yavLclDcZ\"}],\"id\":\"j-73q6asxEaw0JYFItlLl\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"result; error_info\"}],\"id\":\"F1tpaW1Va9VQu63Cy3ulq\"}],\"id\":\"pMFLK8dEpHaTxCxvuksuQ\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"{\\\"deviceID\\\":\\\"{0.0.0.00000000}.{a4f1e8be-49fa-43e2-b8cf-dd00542b47ae}\\\",\\\"deviceName\\\":\\\"Speaker (Realtek High Definition Audio)\\\",\\\"error_info\\\":\\\"\\\",\\\"isNewDevice\\\":false,\\\"isUsedDevice\\\":false,\\\"result\\\":0}\"}],\"id\":\"ID-K-K8BfbiLNlKo2v6mi\"}],\"id\":\"hTyicolZOfcQUcbYUNfk-\"}],\"id\":\"Tu-EUTpquoxmH3NtzfwBQ\"},{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_MIC_NEW_DEVICE\"}],\"id\":\"GCLrBdyQNHZaznRDnzURh\"}],\"id\":\"cwTW-wjtrIZZIgeqA1z50\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"A new mic device was added\"}],\"id\":\"nw7SSA6nxqYJB8b8Cc6fZ\"}],\"id\":\"w6nM52GYlq8cDUZ-V2f8E\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"result; error_info\"}],\"id\":\"uO2E2f5Aj9R_L6MNEgscO\"}],\"id\":\"MxBhH9mRWpZBEUpErMUTg\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"{\\\"deviceID\\\":\\\"{0.0.1.00000000}.{5fdf1a5b-f42d-4ab2-890a-7e454093f229}\\\",\\\"deviceName\\\":\\\"Mic (Realtek High Definition Audio)\\\",\\\"error_info\\\":\\\"\\\",\\\"isNewDevice\\\":true,\\\"isUsedDevice\\\":true,\\\"result\\\":0}\"}],\"id\":\"xJS67b5QvQE79eA4WnXT3\"}],\"id\":\"Tch1AMSNB3J0S1MHJCGPO\"}],\"id\":\"UwKph35yo12hOaYwFuFEx\"},{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_MIC_LOST_DEVICE\"}],\"id\":\"dMsubYjlRcd12BnqgbQ9s\"}],\"id\":\"2THG3df1GpYayRhEmPXcK\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"A mic device was lost\"}],\"id\":\"8160sivAqvbSezhk5lPsw\"}],\"id\":\"ti9CoPmUPMJgfPj8AUk-z\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"result; error_info\"}],\"id\":\"_eER-WKMvf6KOGJ9WpSA_\"}],\"id\":\"bnibZpwIWInKwvHsj6VVg\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"{\\\"deviceID\\\":\\\"{0.0.1.00000000}.{5fdf1a5b-f42d-4ab2-890a-7e454093f229}\\\",\\\"deviceName\\\":\\\"Mic (Realtek High Definition Audio)\\\",\\\"error_info\\\":\\\"\\\",\\\"isNewDevice\\\":false,\\\"isUsedDevice\\\":true,\\\"result\\\":0}\"}],\"id\":\"hlzRVcC8lcuXZGyecEudI\"}],\"id\":\"nIcIX9S0qpY8MYBi1kkb_\"}],\"id\":\"C6wZ2qnEv1rMsv0Y56a18\"},{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_MIC_DEFAULT_DEVICE_CHANGED\"}],\"id\":\"J4yB7wSRkH7iodMomK038\"}],\"id\":\"XOZirvZSsx9SxabPumkQ9\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"The default mic device was changed\"}],\"id\":\"ViOWbyVj1lutVkEC3Hied\"}],\"id\":\"bJ8yVWLAjcLcav-Vh7WtU\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"result; error_info\"}],\"id\":\"4_F6VwgXyTKzT2pDH5NyN\"}],\"id\":\"Xd3LZk7YqmNxeYofwYji8\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"{\\\"deviceID\\\":\\\"{0.0.1.00000000}.{5fdf1a5b-f42d-4ab2-890a-7e454093f229}\\\",\\\"deviceName\\\":\\\"Mic (Realtek High Definition Audio)\\\",\\\"error_info\\\":\\\"\\\",\\\"isNewDevice\\\":false,\\\"isUsedDevice\\\":true,\\\"result\\\":0}\"}],\"id\":\"nVgzZyL8_sLVK7lqIbzke\"}],\"id\":\"0iz6BvZU4l3vM3jdbDGY-\"}],\"id\":\"KqUqk4SMM-W6Rr5rN9wQg\"},{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_CHANGE_ROOM_QUALITY\"}],\"id\":\"yl_7Nv4qWXmQiVJe32efV\"}],\"id\":\"23k9ti4PQRjSNJtgx1Xba\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"The room quality changed\"}],\"id\":\"ndAGeBCZn4b9OTBIyU_jl\"}],\"id\":\"RZR9AlPQU3ZWI6GhBc8y6\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"weight; loss; delay\"}],\"id\":\"YveYrrX6YB3A1WknDdq3q\"}],\"id\":\"yP7cHc6oXAdhzNllr9UR5\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"{\\\"weight\\\":5,\\\"loss\\\":0.1,\\\"delay\\\":1}\"}],\"id\":\"Fy2rlgewKYLO8t1eFekmv\"}],\"id\":\"vpvzzJpLfZRIyMOKW8HB2\"}],\"id\":\"1QNFV-8_9UsmcxRLJMBXW\"},{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_RECORD_COMPLETE\"}],\"id\":\"WQeFgwGXyxSivR4jWAe2x\"}],\"id\":\"OtIU1KBoZebCcCW3Bq49U\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"Voice message recording was completed\"}],\"id\":\"Jy-Dj-t2-BZDOo8GzpTly\"}],\"id\":\"LYT1S0ZMLVQAIlSFLR3WB\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"result; file_path\"}],\"id\":\"9GoNuioDEFgcC8AgRt05M\"}],\"id\":\"84H2RkqGrscVJW7767kWn\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"{\\\"file_path\\\":\\\"\\\",\\\"result\\\":0}\"}],\"id\":\"jf3Rs6v2QeoyXixA-Oi0o\"}],\"id\":\"YRd_iLR_N2MyMXIaaOkz2\"}],\"id\":\"_xyltH5MpkxCKIGcc6MU2\"},{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_UPLOAD_COMPLETE\"}],\"id\":\"yusSKx7TXFBmq2Gu5NckZ\"}],\"id\":\"sGeXXEvdEtJLi7bt6nFbd\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"Voice message upload was completed\"}],\"id\":\"9mftWJpPI6hFPuGJhfhFw\"}],\"id\":\"EUn6oT594vPAcFXf0ESsI\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"result; file_path;file_id\"}],\"id\":\"DjgBvdMnYEgCNhajBrvu_\"}],\"id\":\"CLKZ86ogW1LZRNnjxGzfI\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"{\\\"file_id\\\":\\\"\\\",\\\"file_path\\\":\\\"\\\",\\\"result\\\":0}\"}],\"id\":\"gXdZQJdbkmFCcUR5l4N4e\"}],\"id\":\"a2cX2F6fsUDFYvkcRz1_A\"}],\"id\":\"bpwUTqYtfEStsR4L3_6dz\"},{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_DOWNLOAD_COMPLETE\"}],\"id\":\"l_1oYUKpUOGFaNvjNQnjS\"}],\"id\":\"Dh5HbVcEKAUb7X8CsVRr7\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"Voice message download was completed\"}],\"id\":\"vc6laOOstTBaehsh-kHj1\"}],\"id\":\"dM2Qr3aJqaEH8F4fLO7Ls\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"result; file_path;file_id\"}],\"id\":\"fOyjQyqaGi7PCBbGvUT97\"}],\"id\":\"gaAWOj76XxWBGIfAnQsAd\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"{\\\"file_id\\\":\\\"\\\",\\\"file_path\\\":\\\"\\\",\\\"result\\\":0}\"}],\"id\":\"ZA_g2FRklaoEvdvkXiyBd\"}],\"id\":\"ehNZHIdxk51dWQu3ZcoSJ\"}],\"id\":\"tVTvwi8nVD74NiVYI3apx\"},{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_PLAY_COMPLETE\"}],\"id\":\"dsZxVankesUAL-43yvtyw\"}],\"id\":\"2PzKO-PIs3PKDGgpvnY1i\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"Voice message playback was completed\"}],\"id\":\"gG4YnxpvFE1dr9BC6ZtT4\"}],\"id\":\"NvcSBH77qfbX6kONnJXvt\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"result; file_path\"}],\"id\":\"UNK1rIr03X6lcyqoakV4k\"}],\"id\":\"Z5jNvbjABS5EZOE0bnlZD\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"{\\\"file_path\\\":\\\"\\\",\\\"result\\\":0}\"}],\"id\":\"-CfjiOFqOrnmlbrEDe2Ry\"}],\"id\":\"myHSkyrge-pYK2asFOE4q\"}],\"id\":\"2nBWO1ViZaRN6k5M-GbHR\"},{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_SPEECH2TEXT_COMPLETE\"}],\"id\":\"-vgxh7RpNqGL3EL2beEbp\"}],\"id\":\"wXbsN8n8UTfC1TUDA1V6I\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"Fast speech-to-text conversion was completed\"}],\"id\":\"lVqa-MGSIsnpM4DsLDJnz\"}],\"id\":\"iSXUa38nviqUeD1Jx0Sdz\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"result; text;file_id\"}],\"id\":\"qof1MvYfGBfgTCHomYI7r\"}],\"id\":\"MU8Gxw7I-GiSOacKBdNnG\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"{\\\"file_id\\\":\\\"\\\",\\\"text\\\":\\\"\\\",\\\"result\\\":0}\"}],\"id\":\"cM8cEzhElmqB-MzmV_VG7\"}],\"id\":\"FM5NOJTf0wZOS5KVAEZ0r\"}],\"id\":\"b9corPem7HIbPX2URrPRC\"},{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRECOGNITION_COMPLETE\"}],\"id\":\"8tNH1FMrCSUmKJZK7w2qw\"}],\"id\":\"AsptKg87_WPkrffzChsGE\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"Streaming speech-to-text conversion was completed\"}],\"id\":\"EgxYa-Wy94kUHvyHqPzsN\"}],\"id\":\"QOFX4Jtu5_7Ybd_4fH_Mw\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"result; file_path; text;file_id\"}],\"id\":\"EEhoYUthbYH7gBB42Y-xz\"}],\"id\":\"NSxsK-FapOFx5n9dSoQoG\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"{\\\"file_id\\\":\\\"\\\",\\\"file_path\\\":\\\",\\\"text\\\":\\\"\\\",\\\"result\\\":0}\"}],\"id\":\"0mEwL0iUwIq-vs9nqHnu_\"}],\"id\":\"JwyuRPs1d3TT7OlqK0nRR\"}],\"id\":\"isfyNHeeHbNrun-I6fRnv\"},{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRECOGNITION_IS_RUNNING\"}],\"id\":\"AHz9eDc1r7VUsQ_y4J0rh\"}],\"id\":\"96UGl_52pigWwvGm0or5m\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"Streaming speech-to-text conversion is in progress\"}],\"id\":\"6Ct64dYrJx3n5rJUtikYJ\"}],\"id\":\"EOleU9Qy9tTkHA5I6kzUp\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"result; file_path; text;file_id\"}],\"id\":\"O275zk0oE8aeEfAd-zKx_\"}],\"id\":\"zDvzPDbLAado29znmZE02\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"{\\\"file_id\\\":\\\"\\\",\\\"file_path\\\":\\\",\\\"text\\\":\\\"\\\",\\\"result\\\":0}\"}],\"id\":\"aNfQQ_UzXzbsiKdwY9Udi\"}],\"id\":\"kUh9hXo1HwZZ3jypUm_wJ\"}],\"id\":\"eqaezwTSDIfiFxxyUKbCl\"},{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_TEXT2SPEECH_COMPLETE\"}],\"id\":\"u-NPKSf2ta6ruCpijcs7t\"}],\"id\":\"Qs-PKrbMS9Q36fo7oLKzP\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"Text-to-speech conversion was completed\"}],\"id\":\"KnzvZJjdpCOO2pMILd06j\"}],\"id\":\"3fBdHKVRVxBNhya5Ed2rl\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"result; text;file_id\"}],\"id\":\"dL3wKzrU2yUto2WBNKqBG\"}],\"id\":\"v0XaoAyrXwvAsMRQTCXk6\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"{\\\"file_id\\\":\\\"\\\",\\\"text\\\":\\\"\\\",\\\"result\\\":0}\"}],\"id\":\"U9C_sml40cSAkyFaAyWPN\"}],\"id\":\"nuW8AOqLNT7gxpUCL2waw\"}],\"id\":\"ANg7Hr9D3xPCsSB7eBBSd\"},{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_TRANSLATE_TEXT_COMPLETE\"}],\"id\":\"1_rNDdibpMFWrKan2Bvt_\"}],\"id\":\"6TPerWSuIzMTVIgijBx-e\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"Text translation was completed\"}],\"id\":\"zkqstoLxIgweutZxEhizY\"}],\"id\":\"bf3lhbb5WyGnqD9UOe8GK\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"result; text;file_id\"}],\"id\":\"hRmwF4D-i1D--TmumWOYR\"}],\"id\":\"2o4WoqTrgoM7w6y2uy8P_\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"{\\\"file_id\\\":\\\"\\\",\\\"text\\\":\\\"\\\",\\\"result\\\":0}\"}],\"id\":\"y3rJ1TNWhEbFBXiMZjgc1\"}],\"id\":\"VfEH8WfS7KwoE5rPfkCrW\"}],\"id\":\"i2Jg296KPeg2ypBCE31-3\"}],\"id\":\"p01h35sYvQHwfN6--RNad\",\"widths\":[23,20,18,39],\"widthMode\":\"percentage\"},{\"type\":\"p\",\"children\":[{\"text\":\"\"}],\"id\":\"kbxfvILnTUkUbFDsYqePB\"}]"}},"51126":{"categoryId":607,"weight":90,"type":"page","extension":"","pid":15178,"id":51126,"lang":"en","title":"Voice Chat","pdfUrl":"","docType":"default","children":[],"firstReleaseTime":"2022-10-28 01:22:51","recentReleaseTime":"2022-10-28 01:22:51","content":{"title":"Voice Chat","body":"
This document describes how to access and debug GME client APIs for the voice chat feature for Cocos2d.

Key Considerations for Using GME

GME provides the real-time voice, voice message, and speech-to-text services, which all depend on core APIs such as Init and Poll.

Key notes

You have created a GME application and obtained the AppID and Key of the SDK as instructed in Activating Services.
You have activated the real-time voice, voice message, and speech-to-text services of GME as instructed in Activating Services.
Configure your project before using GME; otherwise, the SDK will not take effect.
After a GME API is called successfully, QAVError.OK will be returned with the value being 0.
GME APIs should be called in the same thread.
The Poll API should be called periodically for GME to trigger event callbacks.
For detailed error code, please see Error Codes.

Connecting to the SDK

Directions

Key processes involved in SDK connection are as follows:

\"\"



C++ classes

Class
Description
ITMGContext
Key APIs
ITMGRoom
Room APIs
ITMGRoomManager
Room management APIs
ITMGAudioCtrl
Audio APIs
ITMGAudioEffectCtrl
Sound effect and accompaniment APIs

Key APIs

API
Description
Init
Initializes GME
Poll
Triggers event callback
Pause
Pauses the system
Resume
Resumes the system
Uninit
Uninitializes GME

Preparations

You need to import the header file tmg_sdk.h first before you can access GME. The classes in the header file inherit ITMGDelegate for message delivery and callback.

Sample code

#include "tmg_sdk.h"

class TMGTestScene : public cocos2d::Scene,public ITMGDelegate
{
public:
...
private:
...

Setting a singleton

You need to get ITMGContext first before you can call the EnterRoom function. All calls begin with ITMGContext, which is returned to the application through the ITMGDelegate callback and must be set first.

Sample code

ITMGContext* context = ITMGContextGetInstance();
context->SetTMGDelegate(this);

Message delivery

The API class uses the Delegate method to send callback notifications to the application. ITMG_MAIN_EVENT_TYPE indicates the message type. The data on Windows is in json string format. For the key-value pairs, please see the relevant documentation.

Sample code

// Function implementation:
//TMGTestScene.h:
class TMGTestScene : public cocos2d::Scene,public ITMGDelegate
{
public:
void OnEvent(ITMG_MAIN_EVENT_TYPE eventType, const char* data);

//TMGTestScene.cpp:
void TMGTestScene::OnEvent(ITMG_MAIN_EVENT_TYPE eventType,const char* data){
// Identify and manipulate `eventType` here
}

Initializing the SDK

You need to initialize the SDK through the Init API before you can use the real-time voice, voice message, and speech-to-text services. The Init API must be called in the same thread as other APIs. We recommend you call all APIs in the main thread.

API prototype

ITMGContext virtual int Init(const char* sdkAppId, const char* openId)
Parameter
Type
Description
sdkAppId
const char*
AppID provided in the GME console, which can be obtained as instructed in Activating Services.
openID
const char*
openID can only be in Int64 type, which is passed in after being converted to a const char*. You can customize its rules, and it must be unique in the application. To pass in openID as a string, submit a ticket for application.

Returned values

Returned Value
Description
AV_OK = 0
Initialized SDK successfully.
AV_ERR_SDK_NOT_FULL_UPDATE=7015
Checks whether the SDK file is complete. It is recommended to delete it and then import the SDK again.
Notes on 7015 error code:
The 7015 error code is judged by md5. If this error is reported during integration, please check the integrity and version of the SDK file as prompted.
The returned value AV_ERR_SDK_NOT_FULL_UPDATE is only a reminder but will not cause an initialization failure.
Due to the third-party reinforcement, Unity packaging mechanism and other factors, the md5 of the library file will be affected, resulting in misjudgment. Please ignore this error in the logic for official release, and try to avoid displaying it in the UI.

Sample code

#define SDKAPPID3RD "14000xxxxx"
cosnt char* openId="10001";
ITMGContext* context = ITMGContextGetInstance();
context->Init(SDKAPPID3RD, openId);

Triggering event callback

Event callbacks can be triggered by periodically calling the Poll API in update. Poll is the message pump of GME, and the Poll API should be called periodically for GME to trigger event callbacks; otherwise, the entire SDK service will run exceptionally.\nYou can refer to the EnginePollHelper.cpp file in the demo.
Calling the `Poll` API periodically:
The Poll API must be called periodically and in the main thread to avoid abnormal API callbacks.

API prototype

class ITMGContext {
protected:
virtual ~ITMGContext() {}

public:
virtual void Poll()= 0;
}

Sample code

// Declaration in the header file
class TMGTestScene : public cocos2d::Scene,public ITMGDelegate
{
void update(float delta);
}

// Code implementation
void TMGTestScene::update(float delta)
{
ITMGContextGetInstance()->Poll();
}

Pausing the system

When a Pause event occurs in the system, the engine should also be notified for pause. If you do not need the background to play back the audio in the room, please call Pause API to pause the GME service.

API prototype

ITMGContext int Pause()

Resuming the system

When a Resume event occurs in the system, the engine should also be notified for resumption. The Resume API only supports resuming voice chat.

API prototype

ITMGContext int Resume()

Uninitializing SDK

This API is used to uninitialize the SDK to make it uninitialized. If the game business account is bound to openid, switching game account requires uninitializing GME and then using the new openid to initialize again.

API prototype

ITMGContext int Uninit()

Sample code

ITMGContext* context = ITMGContextGetInstance();
context->Uninit();

Voice Chat Room APIs

You should initialize and call the SDK to enter a room before voice chat can start.
If you have any questions when using the service, please see FAQs About Voice Chat.

\"\"


API
Description
GenAuthBuffer
Calculates the local authentication key
EnterRoom
Enters a room
ExitRoom
Exits the room
IsRoomEntered
Determines whether room entry is successful
SwitchRoom
Switches the room quickly

Local authentication key calculation

Generate AuthBuffer for encryption and authentication of relevant features. For release in the production environment, please use the backend deployment key as detailed in Authentication Key.

API prototype

int QAVSDK_AuthBuffer_GenAuthBuffer(unsigned int dwSdkAppID, const char* strRoomID, const char* strOpenID,
const char* strKey, unsigned char* strAuthBuffer, unsigned int bufferLength);
Parameter
Type
Description
dwSdkAppID
unsigned int
AppId from the Tencent Cloud console
strRoomID
const char*
Room ID, which can contain up to 127 characters.
strOpenID
const char*
User ID, which is the same as openID during initialization.
strKey
const char*
Permission key from the Tencent Cloud console
strAuthBuffer
const char*
Returned authbuff
bufferLength
int
The length of the returned authbuff. 500 is recommended.

Sample code

unsigned int bufferLen = 512;
unsigned char retAuthBuff[512] = {0};
QAVSDK_AuthBuffer_GenAuthBuffer(atoi(SDKAPPID3RD), roomId, "10001", AUTHKEY,retAuthBuff,bufferLen);

Entering a room

This API is used to enter a room with the generated authentication information. The mic and speaker are not enabled by default after room entry.
Note:
If the room entry callback result is 0, the room entry is successful. If 0 is returned from the EnterRoom API, it doesn't necessarily mean that the room entry is successful.
The audio type of the room is determined by the first user entering the room. After that, if a member in the room changes the room type, it will take effect for all members there. For example, if the first user entering the room uses the smooth sound quality, and the second user entering the room uses the HD sound quality, the room audio type of the second user will change to the smooth sound quality. Only after a member in the room calls the ChangeRoomType API will the audio type of the room be changed.
ITMGContext virtual int EnterRoom(const char* roomID, ITMG_ROOM_TYPE roomType, const char* authBuff, int buffLen)
Parameter
Type
Description
roomID
const char*
Room ID, which can contain up to 127 characters.
roomType
ITMG_ROOM_TYPE
Room type. We recommend you select ITMG_ROOM_TYPE_FLUENCY for games. For more information on room audio types, see Sound Quality.
authBuffer
const char*
Authentication key
buffLen
int
Authentication key length

Sample code

ITMGContext* context = ITMGContextGetInstance();
context->EnterRoom(roomID, ITMG_ROOM_TYPE_FLUENCY, (char*)retAuthBuff,bufferLen);

Callback for room entry

After the user enters the room, the message ITMG_MAIN_EVENT_TYPE_ENTER_ROOM will be sent and identified in the OnEvent function for callback and processing. A successful callback means that the room entry is successful, and the billing starts.

Sample code

void TMGTestScene::OnEvent(ITMG_MAIN_EVENT_TYPE eventType,const char* data){
switch (eventType) {
case ITMG_MAIN_EVENT_TYPE_ENTER_ROOM:
{
// Process
break;
}
}
}

Data details

Message
Data
Sample
ITMG_MAIN_EVENT_TYPE_ENTER_ROOM
result; error_info
{"error_info":"","result":0}
ITMG_MAIN_EVENT_TYPE_ROOM_DISCONNECT
result; error_info
{"error_info":"waiting timeout, please check your network","result":0}
If the network is disconnected, there will be a disconnected callback prompt ITMG_MAIN_EVENT_TYPE.ITMG_MAIN_EVENT_TYPE_ROOM_DISCONNECT. At this time, the SDK will automatically reconnect, and the callback is ITMG_MAIN_EVENT_TYPE_RECONNECT_START. When the reconnection is successful, there will be a callback ITMG_MAIN_EVENT_TYPE_RECONNECT_SUCCESS.

Error codes

Error Code Value
Cause and Suggested Solution
7006
Authentication failed:
The AppID does not exist or is incorrect.
An error occurred while authenticating the authbuff.
Authentication expired.
The OpenId does not meet the specification.
7007
Already in another room.
1001
The user was already in the process of entering a room but repeated this operation. It is recommended not to call the room entering API until the room entry callback is returned.
1003
The user was already in the room and called the room entering API again.
1101
Make sure that the SDK is initialized, OpenId complies with the rules, the APIs are called in the same thread, and the Poll API is called normally

Exiting a room

This API is used to exit the current room. It is an async API. The returned value AV_OK indicates a successful async delivery. If there is a scenario in the application where room entry is performed immediately after room exit, you don't need to wait for the RoomExitComplete callback notification from the ExitRoom API during API call; instead, you can directly call the EnterRoom API.

API prototype

ITMGContext virtual int ExitRoom()

Sample code

ITMGContext* context = ITMGContextGetInstance();
context->ExitRoom();

Callback for room exit

After the user exits a room, a callback will be returned with the message being ITMG_MAIN_EVENT_TYPE_EXIT_ROOM.

Sample code

void TMGTestScene::OnEvent(ITMG_MAIN_EVENT_TYPE eventType,const char* data){
switch (eventType) {
case ITMG_MAIN_EVENT_TYPE_EXIT_ROOM:
{
// Process
break;
}
}
}

Data details

Message
Data
Sample
ITMG_MAIN_EVENT_TYPE_EXIT_ROOM
result; error_info
{"error_info":"","result":0}

Determining whether a user has entered a room

This API is used to determine whether the user has entered a room. A value in bool type will be returned. Do not call this API during room entry.

API prototype

ITMGContext virtual bool IsRoomEntered()

Sample code

ITMGContext* context = ITMGContextGetInstance();
context->IsRoomEntered();


Switching room

User can call this API to quickly switch the voice chat room after entering the room. After the room is switched, the device is not reset, that is, if the microphone is already enabled in this room, the microphone will keep enabled after the room is switched.\nThe callback for quickly switching rooms is ITMG_MAIN_EVENT_TYPE.ITMG_MAIN_EVENT_TYPE_SWITCH_ROOM, and the fields are error_info and result.

API prototype

ITMGContext virtual int SwitchRoom(const char* targetRoomID, const char* authBuff, int buffLen);

Type descriptions

Parameter
Type
Description
targetRoomID
const char*
ID of the room to enter
authBuffer
const char*
Generates a new authentication key with the ID of the room to enter
buffLen
int
Authentication key length

Room Status Maintenance

APIs in this section are used to display speaking members and members entering or exiting the room and mute a member in the room at the business layer.

\"\"


API/Notification
Description
ITMG_MAIN_EVNET_TYPE_USER_UPDATE
The member status changed
AddAudioBlackList
Mutes a member in the room
RemoveAudioBlackList
Unmutes a user

Notification events of member room entry and speaking status

This API is used to obtain the user speaking in the room and display it in the UI, and to send a notification when someone entering or exiting the room.\nNotification for this event will be sent only when the status changes. To get member status in real time, cache the notification when it is received at a higher layer. The event message is ITMG_MAIN_EVNET_TYPE_USER_UPDATE, where the data contains event_id and user_list. The event message will be identified in the OnEvent function.\nNotifications for audio events are subject to a threshold, and a notification will be sent only when this threshold is exceeded. The notification "A member has stopped sending audio packets" will be sent if no audio packets are received in more than two seconds.
event_id
Description
Maintenance
ITMG_EVENT_ID_USER_ENTER
Return the openid of the member entering the room.
Member list
ITMG_EVENT_ID_USER_EXIT
Return the openid of the member exiting the room.
Member list
ITMG_EVENT_ID_USER_HAS_AUDIO
Return the openid of the member sending audio packets in the room. This event can be used to determine whether a user is speaking and display the voiceprint effect.
Chat member list
ITMG_EVENT_ID_USER_NO_AUDIO
Return the openid of the member stopping sending audio packets in the room.
Chat member list

Sample code

void TMGTestScene::OnEvent(ITMG_MAIN_EVENT_TYPE eventType,const char* data){
switch (eventType) {
case ITMG_MAIN_EVNET_TYPE_USER_UPDATE:
{
// Process
// Parse the parameter to get `eventID` and `user_list`
switch (eventID)
{
case ITMG_EVENT_ID_USER_ENTER:
// A member enters the room
break;
case ITMG_EVENT_ID_USER_EXIT:
// A member exits the room
break;
case ITMG_EVENT_ID_USER_HAS_AUDIO:
// A member sends audio packets
break;
case ITMG_EVENT_ID_USER_NO_AUDIO:
// A member stops sending audio packets
break;
default:
break;
}
break;
}
}
}

Muting a member in the room

This API is used to add an ID to the audio data blocklist. This operation blocks audio from someone and only applies to the local device without affecting other devices. The returned value 0 indicates that the call is successful. Assume that users A, B, and C are all speaking using their mic in a room:
If A blocks C, A can only hear B;
If B blocks neither A nor C, B can hear both of them;
If C blocks neither A nor B, C can hear both of them.
This API is suitable for scenarios where a user is muted in a room.

API prototype

ITMGContext ITMGAudioCtrl int AddAudioBlackList(const char* openId)
Parameter
Type
Description
openId
char*
openid of the user to be blocked

Sample code

ITMGContextGetInstance()->GetAudioCtrl()->AddAudioBlackList(openId);

Unmuting

This API is used to remove an ID from the audio data blacklist. A returned value of 0 indicates the call is successful.

API prototype

ITMGContext ITMGAudioCtrl int RemoveAudioBlackList(const char* openId)
Parameter
Type
Description
openId
char*
ID to be unblocked

Sample code

ITMGContextGetInstance()->GetAudioCtrl()->RemoveAudioBlackList(openId);

Voice Chat Capturing APIs

The voice chat APIs can only be called after SDK initialization and room entry.
When the user clicks the button of enabling/disabling the mic or speaker on the UI, we recommend you call the EnableMic or EnableSpeaker API.
To enable the user to press the mic button on the UI to speak and release it to stop speaking, we recommend you call EnableAudioCaptureDevice once during room entry and call EnableAudioSend to enable the user to speak while pressing the button.
API
Description
EnableMic
Enables/Disables the mic
GetMicState
Gets the mic status
EnableAudioCaptureDevice
Enables/Disables the capturing device
IsAudioCaptureDeviceEnabled
Gets the capturing device status
EnableAudioSend
Enables/Disables audio upstreaming
IsAudioSendEnabled
Gets the audio upstreaming status
GetMicLevel
Gets the real-time mic volume level
GetSendStreamLevel
Gets real-time audio upstreaming volume
SetMicVolume
Sets the mic volume level
GetMicVolume
Gets the mic volume level

Enabling or disabling mic

This API is used to enable/disable the mic. The mic and speaker are not enabled by default after room entry. EnableMic = EnableAudioCaptureDevice + EnableAudioSend

API prototype

ITMGAudioCtrl virtual int EnableMic(bool bEnabled)
Parameter
Type
Description
bEnabled
bool
To enable the mic, set this parameter to true, otherwise, set it to false.

Sample code

// Enable mic
ITMGContextGetInstance()->GetAudioCtrl()->EnableMic(true);

Getting the mic status

This API is used to get the mic status. The returned value 0 indicates that the mic is off, while 1 is on.

API prototype

ITMGAudioCtrl virtual int GetMicState()

Sample code

ITMGContextGetInstance()->GetAudioCtrl()->GetMicState();

Enabling or disabling capturing device

This API is used to enable/disable a capturing device. The device is not enabled by default after room entry.
This API can only be called after room entry. The device will be disabled automatically after room exit.
Operations such as permission application and volume type adjustment will generally be performed when a capturing device is enabled on a mobile device.

API prototype

ITMGAudioCtrl virtual int EnableAudioCaptureDevice(bool enable)
Parameter
Type
Description
enable
bool
To enable the capturing device, set this parameter to true, otherwise, set it to false.

Sample code

// Enable capturing device
ITMGContextGetInstance()->GetAudioCtrl()->EnableAudioCaptureDevice(true);

Getting the capturing device status

This API is used to get the status of a capturing device.

API prototype

ITMGContext virtual bool IsAudioCaptureDeviceEnabled()

Sample code

ITMGContextGetInstance()->GetAudioCtrl()->IsAudioCaptureDeviceEnabled();

Enabling or disabling audio upstreaming

This API is used to enable/disable audio upstreaming. If a capturing device is already enabled, it will send captured audio data; otherwise, it will remain mute. For more information on how to enable/disable the capturing device, please see the EnableAudioCaptureDevice API.

API prototype

ITMGContext virtual int EnableAudioSend(bool bEnable)
Parameter
Type
Description
bEnable
bool
To enable audio upstreaming, set this parameter to true; otherwise, set it to false.

Sample code

ITMGContextGetInstance()->GetAudioCtrl()->EnableAudioSend(true);

Getting audio upstreaming status

This API is used to get the status of audio upstreaming.

API prototype

ITMGContext virtual bool IsAudioSendEnabled()

Sample code

ITMGContextGetInstance()->GetAudioCtrl()->IsAudioSendEnabled();

Getting the real-time mic volume

This API is used to get the real-time mic volume. An int-type value in the range of 0-100 will be returned. It is recommended to call this API once every 20 ms.

API prototype

ITMGAudioCtrl virtual int GetMicLevel()

Sample code

ITMGContextGetInstance()->GetAudioCtrl()->GetMicLevel();

Getting the real-time audio upstreaming volume

This API is used to get the local real-time audio upstreaming volume. An int-type value in the range of 0-100 will be returned.

API prototype

ITMGAudioCtrl virtual int GetSendStreamLevel()

Sample code

ITMGContextGetInstance()->GetAudioCtrl()->GetSendStreamLevel();

Setting the mic software volume

This API is used to set the mic volume level. The corresponding parameter is volume, which is equivalent to attenuating or gaining the captured sound.

API prototype

ITMGAudioCtrl virtual int SetMicVolume(int vol)
Parameter
Type
Description
vol
int
Value range: 0–200. Default value: 100. 0 indicates that the audio is mute, while 100 indicates that the volume level remains unchanged.

Sample code

int micVol = (int)(value * 100);
ITMGContextGetInstance()->GetAudioCtrl()->SetMicVolume(vol);

Getting the mic software volume

This API is used to obtain the microphone volume. An "int" value is returned. Value 101 represents API SetMicVolume has not been called.

API prototype

ITMGAudioCtrl virtual int GetMicVolume()

Sample code

ITMGContextGetInstance()->GetAudioCtrl()->GetMicVolume();

Voice Chat Playback APIs

API
Description
EnableSpeaker
Enables/Disables the speaker
GetSpeakerState
Gets the speaker status
EnableAudioPlayDevice
Enables/Disables the playback device
IsAudioPlayDeviceEnabled
Gets playback device status
EnableAudioRecv
Enables/Disables audio downstreaming
IsAudioRecvEnabled
Gets the audio downstreaming status
GetSpeakerLevel
Gets the real-time speaker volume level
GetRecvStreamLevel
Gets the real-time downstreaming audio volume levels of other members in the room
SetSpeakerVolume
Sets the speaker volume level
GetSpeakerVolume
Gets the speaker volume level

Enabling or disabling speaker

This API is used to enable/disable the speaker. EnableSpeaker = EnableAudioPlayDevice + EnableAudioRecv

API prototype

ITMGAudioCtrl virtual int EnableSpeaker(bool enable)
Parameter
Type
Description
enable
bool
To disable the speaker, set this parameter to false; otherwise, set it to true.

Sample code

// Enable the speaker
ITMGContextGetInstance()->GetAudioCtrl()->EnableSpeaker(true);

Getting the speaker status

This API is used to get the speaker status. 0 indicates that the speaker is off, and 1 is on.

API prototype

ITMGAudioCtrl virtual int GetSpeakerState()

Sample code

ITMGContextGetInstance()->GetAudioCtrl()->GetSpeakerState();

Enabling or disabling playback device

This API is used to enable/disable a playback device.

API prototype

ITMGAudioCtrl virtual int EnableAudioPlayDevice(bool enable)
Parameter
Type
Description
enable
bool
To disable the playback device, set this parameter to false; otherwise, set it to true.

Sample code

ITMGContextGetInstance()->GetAudioCtrl()->EnableAudioPlayDevice(true);

Getting the playback device status

This API is used to get the status of a playback device.

API prototype

ITMGAudioCtrl virtual bool IsAudioPlayDeviceEnabled()

Sample code

ITMGContextGetInstance()->GetAudioCtrl()->IsAudioPlayDeviceEnabled();

Enabling or disabling audio downstreaming

This API is used to enable/disable audio downstreaming. If a playback device is already enabled, it will play back audio data from other members in the room; otherwise, it will remain mute. For more information on how to enable/disable the playback device, please see the EnableAudioPlayDevice API.

API prototype

ITMGAudioCtrl virtual int EnableAudioRecv(bool enable)
Parameter
Type
Description
enable
bool
To enable audio downstreaming, set this parameter to true; otherwise, set it to false.

Sample code

ITMGContextGetInstance()->GetAudioCtrl()->EnableAudioRecv(true);

Getting audio downstreaming status

This API is used to get the status of audio downstreaming.

API prototype

ITMGAudioCtrl virtual bool IsAudioRecvEnabled()

Sample code

ITMGContextGetInstance()->GetAudioCtrl()->IsAudioRecvEnabled();

Getting the real-time speaker volume

This API is used to get the real-time speaker volume. An int-type value will be returned to indicate the volume. It is recommended to call this API once every 20 ms.

API prototype

ITMGAudioCtrl virtual int GetSpeakerLevel()

Sample code

ITMGContextGetInstance()->GetAudioCtrl()->GetSpeakerLevel();

Getting the real-time downstreaming audio levels of other members in the room

This API is used to get the real-time audio downstreaming volume of other members in the room. An int-type value will be returned. Value range: 0-200.

API prototype

ITMGAudioCtrl virtual int GetRecvStreamLevel(const char* openId)
Parameter
Type
Description
openId
char*
openId of other members in the room

Sample code

iter->second.level = ITMGContextGetInstance()->GetAudioCtrl()->GetRecvStreamLevel(iter->second.openid.c_str());

Setting the speaker volume

This API is used to set the speaker volume.

API prototype

ITMGAudioCtrl virtual int SetSpeakerVolume(int vol)
Parameter
Type
Description
vol
int
Volume level. Value range: 0–200. Default value: 100. 0 indicates that the audio is mute, while 100 indicates that the volume level remains unchanged.

Sample code

int vol = 100;
ITMGContextGetInstance()->GetAudioCtrl()->SetSpeakerVolume(vol);

Getting the speaker volume

This API is used to get the speaker volume. An int-type value will be returned to indicate the volume. 101 indicates that the SetSpeakerVolume API has not been called.\n"Level" indicates the real-time volume, and "Volume" the speaker volume. The final volume = Level * Volume%. For example, if the "Level" is 100 and "Volume" is 60, the final volume is "60".

API prototype

ITMGAudioCtrl virtual int GetSpeakerVolume()

Sample code

ITMGContextGetInstance()->GetAudioCtrl()->GetSpeakerVolume();

Device Selection APIs

Device selection APIs can be used only on PC.
API
Description
GetMicListCount
Gets the number of mics
GetMicList
Lists mics
GetSpeakerListCount
Gets the number of speakers
GetSpeakerList
Lists speakers
SelectMic
Selects mics
SelectSpeaker
Selects speakers

Getting the number of mics

This API is used to get the number of mics.

Function prototype

ITMGAudioCtrl virtual int GetMicListCount()


Sample code

ITMGContextGetInstance()->GetAudioCtrl()->GetMicListCount();

Enumerating mics

This API is used together with the GetMicListCount API to enumerate mics.

Function prototype

ITMGAudioCtrl virtual int GetMicList(TMGAudioDeviceInfo* ppDeviceInfoList, int nCount)

class TMGAudioDeviceInfo
{
public:
const char* pDeviceID;
const char* pDeviceName;
};

Parameter
Type
Description
ppDeviceInfoList
TMGAudioDeviceInfo
Device list
nCount
int
Number of the mics
TMGAudioDeviceInfo Parameter
Type
Description
pDeviceID
const char*
Device ID
pDeviceName
const char*
Device name

Sample code

ITMGContextGetInstance()->GetAudioCtrl()->GetMicList(ppDeviceInfoList,nCount);

Selecting a mic

This API is used to select a mic. If this API is not called or DEVICEID_DEFAULT is passed in, the default mic will be selected.\nThe 0th device id returned in the GetMicList API is the default device of the call device. If there is a selected call device, it will be maintained by service. If it is unplugged, the call device will be changed back into the default device.

Function prototype

ITMGAudioCtrl virtual int SelectMic(const char* pMicID)

Parameter
Type
Description
pMicID
const char*
Mic ID, which is from the list returned by GetMicList.

Sample code

const char* pMicID ="{0.0.1.00000000}.{7b0b712d-3b46-4f7a-bb83-bf9be4047f0d}";
ITMGContextGetInstance()->GetAudioCtrl()->SelectMic(pMicID);

Getting the number of speakers

This API is used to get the number of speakers.

Function prototype

ITMGAudioCtrl virtual int GetSpeakerListCount()


Sample code

ITMGContextGetInstance()->GetAudioCtrl()->GetSpeakerListCount();


Enumerating speakers

This API is used together with the GetSpeakerListCount API to enumerate speakers.

Function prototype

ITMGAudioCtrl virtual int GetSpeakerList(TMGAudioDeviceInfo* ppDeviceInfoList, int nCount)
Parameter
Type
Description
ppDeviceInfoList
TMGAudioDeviceInfo
Device list
nCount
int
Number of the speakers
TMGAudioDeviceInfo Parameter
Type
Description
pDeviceID
const char*
Device ID
pDeviceName
const char*
Device name

Sample code

ITMGContextGetInstance()->GetAudioCtrl()->GetSpeakerList(ppDeviceInfoList,nCount);


Selecting a speaker

This API is used to select a playback device. If this API is not called or DEVICEID_DEFAULT is passed in, the default playback device will be selected.

Function prototype

ITMGAudioCtrl virtual int SelectSpeaker(const char* pSpeakerID)

Parameter
Type
Description
pSpeakerID
const char*
Speaker ID, which is from the list returned by GetSpeakerList.

Sample code

const char* pSpeakerID ="{0.0.1.00000000}.{7b0b712d-3b46-4f7a-bb83-bf9be4047f0d}";
ITMGContextGetInstance()->GetAudioCtrl()->SelectSpeaker(pSpeakerID);


Advanced APIs

Enabling in-ear monitoring

This API is used to enable in-ear monitoring. You need to call EnableLoopBack+EnableSpeaker before you can hear your own voice.

API prototype

ITMGAudioCtrl virtual int EnableLoopBack(bool enable)
Parameter
Type
Description
enable
bool
Specifies whether to enable

Sample code

ITMGContextGetInstance()->GetAudioCtrl()->EnableLoopBack(true);


Getting a user's room audio type

This API is used to get a user's room audio type. The returned value is the room audio type. Value 0 indicates that an error occurred while getting the user's room audio type. For room audio types, please see the EnterRoom API.

API prototype

class ITMGRoom {
public:
virtual ~ITMGRoom() {} ;
virtual int GetRoomType() = 0;

};


Sample code

ITMGContext* context = ITMGContextGetInstance();
ITMGContextGetInstance()->GetRoom()->GetRoomType();

Changing the room type

This API is used to modify a user's room audio type. For the result, please see the callback event. The event type is ITMG_MAIN_EVENT_TYPE_CHANGE_ROOM_TYPE. The audio type of the room is determined by the first user to enter the room. After that, if a member in the room changes the room type, it will take effect for all members there.

API prototype

IITMGContext TMGRoom public int ChangeRoomType((ITMG_ROOM_TYPE roomType)
Parameter
Type
Description
roomType
ITMG_ROOM_TYPE
Room type to be switched to the target type. For room audio types, please see the EnterRoom API.

Sample code

ITMGContext* context = ITMGContextGetInstance();
ITMGContextGetInstance()->GetRoom()->ChangeRoomType(ITMG_ROOM_TYPE_FLUENCY);

Data details

Message
Data
Sample
ITMG_MAIN_EVENT_TYPE_CHANGE_ROOM_TYPE
result; error_info; new_room_type
{"error_info":"","new_room_type":0,"result":0}

Callback for room type setting completion

After the room type is set, the event message ITMG_MAIN_EVENT_TYPE_CHANGE_ROOM_TYPE will be returned in the callback. The returned parameters include result, error_info, and new_room_type. The new_room_type represents the following information. The event message will be identified in the OnEvent function.
Event Subtype
Parameter
Description
ITMG_ROOM_CHANGE_EVENT_ENTERROOM
1
Indicates that the existing audio type is inconsistent with and changed to that of the entered room.
ITMG_ROOM_CHANGE_EVENT_START
2
Indicates that a user is already in the room and the audio type starts changing (e.g., calling the ChangeRoomType API to change the audio type).
ITMG_ROOM_CHANGE_EVENT_COMPLETE
3
Indicates that a user is already in the room and the audio type has been changed.
ITMG_ROOM_CHANGE_EVENT_REQUEST
4
Indicates that a room member calls the ChangeRoomType API to request a change of room audio type.

Sample code

void TMGTestScene::OnEvent(ITMG_MAIN_EVENT_TYPE eventType,const char* data){
if (ITMGContext.ITMG_MAIN_EVENT_TYPE.ITMG_MAIN_EVENT_TYPE_CHANGE_ROOM_TYPE == type)
{
// Process room type events
}
}

The monitoring event of room call quality

This is the quality monitoring event, which is triggered once every two seconds after room entry, and its message is ITMG_MAIN_EVENT_TYPE_CHANGE_ROOM_QUALITY. The returned parameters include weight, loss, and delay, which are as detailed below:
Parameter
Type
Description
weight
int
Value range: 1-50. 50 indicates excellent sound quality, 1 indicates very poor (barely usable) sound quality, and 0 represents an initial meaningless value. Generally, if the value is below 30, the business layer will remind users that the network is poor and recommend them to switch the network.
loss
double
Upstream packet loss rate
delay
int
Voice chat delay in ms

Getting the version number

This API is used to get the SDK version number for analysis.

API prototype

ITMGContext virtual const char* GetSDKVersion()

Sample code

ITMGContextGetInstance()->GetSDKVersion();

Setting the log printing level

This API is used to set the level of logs to be printed, and needs to be called before the initialization. It is recommended to keep the default level.

API prototype

ITMGContext int SetLogLevel(ITMG_LOG_LEVEL levelWrite, ITMG_LOG_LEVEL levelPrint)

Parameter description

Parameter
Type
Description
levelWrite
ITMG_LOG_LEVEL
Sets the level of logs to be written. TMG_LOG_LEVEL_NONE indicates not to write. Default value: TMG_LOG_LEVEL_INFO
levelPrint
ITMG_LOG_LEVEL
Sets the level of logs to be printed. TMG_LOG_LEVEL_NONE indicates not to print. Default value: TMG_LOG_LEVEL_ERROR
ITMG_LOG_LEVEL is as detailed below:
ITMG_LOG_LEVEL
Description
TMG_LOG_LEVEL_NONE
Does not print logs
TMG_LOG_LEVEL_ERROR
Prints error logs (default)
TMG_LOG_LEVEL_INFO
Prints info logs
TMG_LOG_LEVEL_DEBUG
Prints debug logs
TMG_LOG_LEVEL_VERBOSE
Prints verbose logs

Sample code

ITMGContextGetInstance()->SetLogLevel(TMG_LOG_LEVEL_INFO,TMG_LOG_LEVEL_INFO);

Setting the log printing path

This API is used to set the log printing path. The default path is as follows. It needs to be called before Init.
OS
Path
Windows
%appdata%\\Tencent\\GME\\ProcessName
iOS
Application/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/Documents
Android
/sdcard/Android/data/xxx.xxx.xxx/files
Mac
/Users/username/Library/Containers/xxx.xxx.xxx/Data/Documents

API prototype

ITMGContext virtual int SetLogPath(const char* logDir)

Parameter
Type
Description
logDir
const char*
Path

Sample code

cosnt char* logDir = ""// Set a path by yourself

ITMGContext* context = ITMGContextGetInstance();
context->SetLogPath(logDir);


Getting the diagnostic messages

This API is used to get information on the quality of real-time audio/video calls, which is mainly used to view real-time call quality and troubleshoot and can be ignored on the business side.

API prototype

ITMGRoom virtual const char* GetQualityTips()

Sample code

ITMGContextGetInstance()->GetRoom()->GetQualityTips();


Callback Messages

Message
Description
Parameter
Sample
ITMG_MAIN_EVENT_TYPE_ENTER_ROOM
A member entered the audio room
result; error_info
{"error_info":"","result":0}
ITMG_MAIN_EVENT_TYPE_EXIT_ROOM
A member exited the audio room
result; error_info
{"error_info":"","result":0}
ITMG_MAIN_EVENT_TYPE_ROOM_DISCONNECT
The room was disconnected for network or other reasons
result; error_info
{"error_info":"waiting timeout, please check your network","result":0}
ITMG_MAIN_EVNET_TYPE_USER_UPDATE
The room members were updated
user_list; event_id
{"event_id":1,"user_list":["0"]}
ITMG_MAIN_EVENT_TYPE_RECONNECT_START
Room reconnection started
result; error_info
{"error_info":"","result":0}
ITMG_MAIN_EVENT_TYPE_RECONNECT_SUCCESS
Room reconnection succeeded
result; error_info
{"error_info":"","result":0}
ITMG_MAIN_EVENT_TYPE_SWITCH_ROOM
The room was quickly switched
result; error_info
{"error_info":"","result":0}
ITMG_MAIN_EVENT_TYPE_CHANGE_ROOM_TYPE
The room status changed
result; error_info; sub_event_type; new_room_type
{"error_info":"","new_room_type":0,"result":0}
ITMG_MAIN_EVENT_TYPE_ROOM_SHARING_START
Cross-room mic connect started
result;
{"result":0}
ITMG_MAIN_EVENT_TYPE_ROOM_SHARING_STOP
Cross-room mic connect stopped
result;
{"result":0}
ITMG_MAIN_EVENT_TYPE_SPEAKER_DEFAULT_DEVICE_CHANGED
The default speaker was changed
result; error_info
{"deviceID":"{0.0.0.00000000}.{a4f1e8be-49fa-43e2-b8cf-dd00542b47ae}","deviceName":"speaker (Realtek High Definition Audio)","error_info":"","isNewDevice":true,"isUsedDevice":false,"result":0}
ITMG_MAIN_EVENT_TYPE_SPEAKER_NEW_DEVICE
A speaker was added
result; error_info
{"deviceID":"{0.0.0.00000000}.{a4f1e8be-49fa-43e2-b8cf-dd00542b47ae}","deviceName":"speaker (Realtek High Definition Audio)","error_info":"","isNewDevice":true,"isUsedDevice":false,"result":0}
ITMG_MAIN_EVENT_TYPE_SPEAKER_LOST_DEVICE
A speaker was lost
result; error_info
{"deviceID":"{0.0.0.00000000}.{a4f1e8be-49fa-43e2-b8cf-dd00542b47ae}","deviceName":"speaker (Realtek High Definition Audio)","error_info":"","isNewDevice":false,"isUsedDevice":false,"result":0}
ITMG_MAIN_EVENT_TYPE_MIC_NEW_DEVICE
A mic was added
result; error_info
{"deviceID":"{0.0.1.00000000}.{5fdf1a5b-f42d-4ab2-890a-7e454093f229}","deviceName":"mic (Realtek High Definition Audio)","error_info":"","isNewDevice":true,"isUsedDevice":true,"result":0}
ITMG_MAIN_EVENT_TYPE_MIC_LOST_DEVICE
A mic was lost
result; error_info
{"deviceID":"{0.0.1.00000000}.{5fdf1a5b-f42d-4ab2-890a-7e454093f229}","deviceName":"mic (Realtek High Definition Audio)","error_info":"","isNewDevice":false,"isUsedDevice":true,"result":0}
ITMG_MAIN_EVENT_TYPE_MIC_DEFAULT_DEVICE_CHANGED
The default mic was changed
result; error_info
{"deviceID":"{0.0.1.00000000}.{5fdf1a5b-f42d-4ab2-890a-7e454093f229}","deviceName":"mic (Realtek High Definition Audio)","error_info":"","isNewDevice":false,"isUsedDevice":true,"result":0}
ITMG_MAIN_EVENT_TYPE_CHANGE_ROOM_QUALITY
Room quality message
weight; loss; delay
{"weight":5,"loss":0.1,"delay":1}
ITMG_MAIN_EVNET_TYPE_PTT_RECORD_COMPLETE
Recording of a voice message was completed
result; file_path
{"file_path":"","result":0}
ITMG_MAIN_EVNET_TYPE_PTT_UPLOAD_COMPLETE
Upload of a voice message was completed
result; file_path;file_id
{"file_id":"","file_path":"","result":0}
ITMG_MAIN_EVNET_TYPE_PTT_DOWNLOAD_COMPLETE
Download of a voice message was completed
result; file_path;file_id
{"file_id":"","file_path":"","result":0}
ITMG_MAIN_EVNET_TYPE_PTT_PLAY_COMPLETE
Playback of a voice message was completed
result; file_path
{"file_path":"","result":0}
ITMG_MAIN_EVNET_TYPE_PTT_SPEECH2TEXT_COMPLETE
Fast recording-to-text conversion was completed
result; text;file_id
{"file_id":"","text":"","result":0}
ITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRECOGNITION_COMPLETE
Streaming speech-to-text conversion was completed
result; file_path; text;file_id
{"file_id":"","file_path":","text":"","result":0}
ITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRECOGNITION_IS_RUNNING
A voice message is being converted into text in a streaming manner
result; file_path; text;file_id
{"file_id":"","file_path":","text":"","result":0}
ITMG_MAIN_EVNET_TYPE_PTT_TEXT2SPEECH_COMPLETE
Text-to-speech conversion was completed
result; text;file_id
{"file_id":"","text":"","result":0}
ITMG_MAIN_EVNET_TYPE_PTT_TRANSLATE_TEXT_COMPLETE
Text translation was completed
result; text;file_id
{"file_id":"","text":"","result":0}

","recentReleaseTime":"2024-01-18 15:11:45","slate":"[{\"id\":\"Nbih2ro7pQLAzufQ-5xjI\",\"children\":[{\"text\":\"This document describes how to access and debug GME client APIs for the voice chat feature for Cocos2d.\"}],\"type\":\"p\"},{\"id\":\"FW7J61d1j_SwlbVNEkue0\",\"children\":[{\"text\":\"Key Considerations for Using GME\"}],\"nodeId\":\"key-considerations-for-using-gme\",\"type\":\"h2\"},{\"id\":\"Kf4wp7RRrZUEHyEsFPjSA\",\"children\":[{\"text\":\"GME provides the real-time voice, voice message, and speech-to-text services, which all depend on core APIs such as \"},{\"code\":1,\"text\":\"Init\"},{\"text\":\" and \"},{\"code\":1,\"text\":\"Poll\"},{\"text\":\".\"}],\"type\":\"p\"},{\"id\":\"dfTSLExnS3txYQTBcP8eW\",\"children\":[{\"text\":\"Key notes\"}],\"nodeId\":\"key-notes\",\"type\":\"h4\"},{\"id\":\"6Y_yWrJ7Ub23pGWKIMeXU\",\"children\":[{\"text\":\"You have created a GME application and obtained the \"},{\"code\":1,\"text\":\"AppID\"},{\"text\":\" and \"},{\"code\":1,\"text\":\"Key\"},{\"text\":\" of the SDK as instructed in \"},{\"id\":\"odVMbPb3mY1I12BgOaynu\",\"children\":[{\"text\":\"Activating Services\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://intl.cloud.tencent.com/document/product/607/10782\",\"props\":{\"type\":\"link\",\"url\":\"https://intl.cloud.tencent.com/document/product/607/10782\"},\"type\":\"ref\"},{\"text\":\".\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"GLyhcL9IXAlA0YEE9EUVD\",\"children\":[{\"text\":\"You have \"},{\"b\":1,\"text\":\"activated the real-time voice, voice message, and speech-to-text services of GME\"},{\"text\":\" as instructed in \"},{\"id\":\"Gc763bnscf9YzM72G2lMB\",\"children\":[{\"text\":\"Activating Services\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://intl.cloud.tencent.com/document/product/607/10782\",\"props\":{\"type\":\"link\",\"url\":\"https://intl.cloud.tencent.com/document/product/607/10782\"},\"type\":\"ref\"},{\"text\":\".\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"ghpzjwz-d1MjamGYTYH1i\",\"children\":[{\"text\":\"Configure your project before using GME; otherwise, the SDK will not take effect.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"8iYewpxVi6-ud8m6X9Rr9\",\"children\":[{\"text\":\"After a GME API is called successfully, \"},{\"code\":1,\"text\":\"QAVError.OK\"},{\"text\":\" will be returned with the value being 0.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"LP_olhdLaO6IbTnzBgCLf\",\"children\":[{\"text\":\"GME APIs should be called in the same thread.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"gH3l7yY4y0XXDpV6eYCJ3\",\"children\":[{\"text\":\"The \"},{\"code\":1,\"text\":\"Poll\"},{\"text\":\" API should be called periodically for GME to trigger event callbacks.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"hO6Y2l9y2S48VhwLKI5iC\",\"children\":[{\"text\":\"For detailed error code, please see \"},{\"type\":\"ref\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/33223\"},\"children\":[{\"text\":\"Error Codes\"}],\"id\":\"yjkmOCBOgzTlMKf529pHv\"},{\"text\":\".\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"PstnHuiJLN0MU7mFnAJOi\",\"children\":[{\"text\":\"Connecting to the SDK\"}],\"nodeId\":\"connecting-to-the-sdk\",\"type\":\"h2\"},{\"id\":\"GvAWV-y05Zz89ih6PhbJQ\",\"children\":[{\"text\":\"Directions\"}],\"nodeId\":\"directions\",\"type\":\"h3\"},{\"id\":\"SN13GctNu-OOmNhJ_yRhR\",\"children\":[{\"text\":\"Key processes involved in SDK connection are as follows:\"}],\"type\":\"p\"},{\"type\":\"p\",\"children\":[{\"text\":\"\"},{\"id\":\"FnUPfJmKrimopd7XOIucq\",\"alt\":\"\",\"children\":[{\"text\":\"\"}],\"inline\":true,\"type\":\"image\",\"url\":\"https://cloudcache.intl.tencent-cloud.com/cms/backend-cms/346ac7c2b34311ee9939525400461a83.jpeg\",\"naturalSize\":[1560,1030],\"size\":[800,528]},{\"text\":\"\"}],\"id\":\"ganxzkH1RsCAwHK4LFPbY\"},{\"type\":\"oli\",\"children\":[{\"text\":\"\"},{\"type\":\"ref\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/51126?!editLang=en&!preview=&lang=en&pg=#Init\"},\"children\":[{\"text\":\"Initializing GME, API: Init\"}],\"id\":\"n53nZ3l8ySsr91f-vgByK\"},{\"text\":\"\"}],\"id\":\"XpY74B3xr5GqZCwuTydjd\"},{\"type\":\"oli\",\"children\":[{\"text\":\"\"},{\"type\":\"ref\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/51126?!editLang=en&!preview=&lang=en&pg=#Poll\"},\"children\":[{\"text\":\"Calling Poll periodically to trigger event callbacks, API: Poll\"}],\"id\":\"UhUhhCkmEbIWTVt6fVx5e\"},{\"text\":\"\"}],\"id\":\"D8OAeg4Syx88NBY9NB3EY\"},{\"type\":\"oli\",\"children\":[{\"text\":\"\"},{\"type\":\"ref\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/51126?!editLang=en&!preview=&lang=en&pg=#EnterRoom\"},\"children\":[{\"text\":\"Entering a voice chat room, API: EnterRoom\"}],\"id\":\"jadnhpNie0R1sqhGg-EKe\"},{\"text\":\"\"}],\"id\":\"OObBfz4WIdIwf8YWKtcr8\"},{\"type\":\"oli\",\"children\":[{\"text\":\"\"},{\"type\":\"ref\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/51126?!editLang=en&!preview=&lang=en&pg=#EnableMic\"},\"children\":[{\"text\":\"Enabling the microphone, API: EnableMic\"}],\"id\":\"BfZPBgtspPGKgnAVnaBBh\"},{\"text\":\"\"}],\"id\":\"vRAE60aY9IR4hj3-BcAgZ\"},{\"type\":\"oli\",\"children\":[{\"text\":\"\"},{\"type\":\"ref\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/51126?!editLang=en&!preview=&lang=en&pg=#EnableSpeaker\"},\"children\":[{\"text\":\"Enabling the speaker, API: EnableSpeaker\"}],\"id\":\"prnbCemGO7_kfIZwgYKa-\"},{\"text\":\"\"}],\"id\":\"YQ-ed663humq_zw2AVCqD\"},{\"type\":\"oli\",\"children\":[{\"text\":\"\"},{\"type\":\"ref\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/51126?!editLang=en&!preview=&lang=en&pg=#ExitRoom\"},\"children\":[{\"text\":\"Exiting a voice room, API: ExitRoom\"}],\"id\":\"7U8Egs3v6nCSVi1OOYoRb\"},{\"text\":\"\"}],\"id\":\"eOiQcbQ7ZzAGC8St7P3hX\"},{\"type\":\"oli\",\"children\":[{\"text\":\"\"},{\"type\":\"ref\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/51126?!editLang=en&!preview=&lang=en&pg=#UnInit\"},\"children\":[{\"text\":\"Uninitializing GME, API: UnInit\"}],\"id\":\"eH2kQC7oVidWQLU4lDdNs\"},{\"text\":\"\"}],\"id\":\"grvpqVIjr30VRb9fZsEbk\"},{\"id\":\"T2IUFdj61zlo4kxcDPPOr\",\"children\":[{\"text\":\"C++ classes\"}],\"nodeId\":\"c.2B.2B-classes\",\"type\":\"h3\"},{\"id\":\"_LD-BgtlFjHKHnv3RZoUJ\",\"children\":[{\"id\":\"jpIV8ZPvgVIusMxfZXxTW\",\"children\":[{\"id\":\"Ul3bZL_UIuDcWoXtolRvz\",\"children\":[{\"id\":\"3_BkAYIB6tV806yyRAyNG\",\"children\":[{\"text\":\"Class\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"OarIWcFi2CADuREvnzksW\",\"children\":[{\"id\":\"KHsIBgliAO4hT--RWNsZG\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"cZKp5DAgDUcX_adPZztjC\",\"children\":[{\"id\":\"oUueMH4G3tAGym8ze4D0L\",\"children\":[{\"id\":\"1C-W2YbgVVwKpGLgBEsnN\",\"children\":[{\"id\":\"9pfKMvNhFCxkInnX3zqFT\",\"children\":[{\"text\":\"ITMGContext\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"23GpLLYSO04Qr999QbWKY\",\"children\":[{\"id\":\"7Lcgu0WynCWcmCqncu7wJ\",\"children\":[{\"id\":\"ODX6zBG4pFF09HRj7TJdC\",\"children\":[{\"text\":\"Key APIs\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"4wvuMz4E3k__m0YEUqcv8\",\"children\":[{\"id\":\"venvly9qM0dfk_mBV0l6A\",\"children\":[{\"id\":\"dsebwZSzdNihSZZUj5EfF\",\"children\":[{\"id\":\"B3Z2jkljJB7dlURty3v8v\",\"children\":[{\"text\":\"ITMGRoom\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Ymj6KvGeQAA0vzB4kHtYv\",\"children\":[{\"id\":\"WIBdHBtk5jfrlm_3PWE0j\",\"children\":[{\"id\":\"LOs-6Jv2xqwTvwBkTi0nj\",\"children\":[{\"text\":\"Room APIs\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"TzCmlh8GnDj7u2mboZF7c\",\"children\":[{\"id\":\"CixvfrKqHOlAtdcOvY2d3\",\"children\":[{\"id\":\"0AGZfCHJMccrVAmSS2W71\",\"children\":[{\"id\":\"COmQ12wCtu564ZPB39baM\",\"children\":[{\"text\":\"ITMGRoomManager\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"hDclvHK9WM3IJL0tRVYzd\",\"children\":[{\"id\":\"CN8iJkbFKJi4RIvD-RCH4\",\"children\":[{\"id\":\"rz65drLJJAcq42XeEeQ3i\",\"children\":[{\"text\":\"Room management APIs\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"tS32y3krN1B4oyPrnek1-\",\"children\":[{\"id\":\"_Xb61w6jA_ZpXxfqKo-Qa\",\"children\":[{\"id\":\"vbBKHwOpJ73inXA8gu9vI\",\"children\":[{\"id\":\"4Nw48tfHclxx5ca5ufEHd\",\"children\":[{\"text\":\"ITMGAudioCtrl\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"6dT8w-wbl_nALSOFCfLcz\",\"children\":[{\"id\":\"DsHIc3ZYbEpqwyHKZxeF9\",\"children\":[{\"id\":\"fv0m9nxalmaOXqmYGqlNo\",\"children\":[{\"text\":\"Audio APIs\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"Qy0mb9j2-TXOVsehoohsd\",\"children\":[{\"id\":\"f2M6ocsIqR3H0X-U8-o6l\",\"children\":[{\"id\":\"C3RoXoAF4cZFHpCynzTQA\",\"children\":[{\"id\":\"e5lw5OWFL1XCrzeN5JHMg\",\"children\":[{\"text\":\"ITMGAudioEffectCtrl\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"mheZjH_ipB32n7gfVu3vA\",\"children\":[{\"id\":\"za0Gy5ap3zpIMkxttuFj6\",\"children\":[{\"id\":\"6UYb8-xopFaCVBnd5TSLY\",\"children\":[{\"text\":\"Sound effect and accompaniment APIs\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[37,63],\"widthMode\":\"percentage\"},{\"id\":\"Qzd7fBuNUv0lkpAPCYIGn\",\"children\":[{\"text\":\"Key APIs\"}],\"nodeId\":\"key-apis\",\"type\":\"h2\"},{\"id\":\"FpLtzfgERKXFkVuZ72D-O\",\"children\":[{\"id\":\"gtXAMxAG5YvTpN70NXRt9\",\"children\":[{\"id\":\"ftkjrfO-jGt7HOqiSBxV3\",\"children\":[{\"id\":\"lZBIy0e4WWJ33Sfq1Aoaj\",\"children\":[{\"text\":\"API\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"18G8oyffKyqeVk3jzAqDI\",\"children\":[{\"id\":\"T08Ct2vnUqb0ZS3mO2Yvm\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"egVGLFWxXMsOh7_5o68R5\",\"children\":[{\"id\":\"xeYQSZcKIpruGqwcXRsBC\",\"children\":[{\"id\":\"uomxR5p9kFUF11kVRIaUL\",\"children\":[{\"id\":\"Hhd1b2Bcm5fLUFtQnYrIR\",\"children\":[{\"text\":\"Init\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"CSSShwCU6fcFHRaYzA36N\",\"children\":[{\"id\":\"b5obpxiXz3V3_CbBAAi8-\",\"children\":[{\"id\":\"N0k5c1qNH_4qAbwiaHL3w\",\"children\":[{\"text\":\"Initializes GME\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"XxR0f1NJlpwCdvVJ_2Cjl\",\"children\":[{\"id\":\"OsHUbD6DekSBbKFD-9Zzc\",\"children\":[{\"id\":\"Y4XC3BCvjIWW9M5SmZwkn\",\"children\":[{\"id\":\"ZNzoTAHltkZmtZTXb6NbF\",\"children\":[{\"text\":\"Poll\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"mVShDA8cECfpXrwmQaLY4\",\"children\":[{\"id\":\"chqtMgvbQfcsZvrJcpYDL\",\"children\":[{\"id\":\"gzNagRassXj-cJkxY-ntD\",\"children\":[{\"text\":\"Triggers event callback\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"8-7YORRy1ofMIkJfhJeAV\",\"children\":[{\"id\":\"wfa8C1cmDhKfuY3fp3aMK\",\"children\":[{\"id\":\"OMPHCCaKPNa8BwOM3-Cf1\",\"children\":[{\"id\":\"O-duZw5rrOh_JuhPfbdC-\",\"children\":[{\"text\":\"Pause\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"IKWr9o5ZkvBEo_K0BkxB8\",\"children\":[{\"id\":\"t85BZe0D4voSlfcZjDybP\",\"children\":[{\"id\":\"-wjGtCF1iR3qrSVf-O0Ys\",\"children\":[{\"text\":\"Pauses the system\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"xyDJuqtpo8WKf9HBkhMEW\",\"children\":[{\"id\":\"-QqmruvMSfic4NYwfT2GG\",\"children\":[{\"id\":\"5NsCnF_1mbelMWkT3dPhv\",\"children\":[{\"id\":\"FRmgXjaF4HnVxbftYUxaw\",\"children\":[{\"text\":\"Resume\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"3Lzv-Sb7NTOXIYDnQZtt3\",\"children\":[{\"id\":\"Q-LwHdwKt1_87WynFpaqR\",\"children\":[{\"id\":\"oyn4eKij8H75L5YZXMbxe\",\"children\":[{\"text\":\"Resumes the system\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"9p1WoHzeO1XD96g7-DDhE\",\"children\":[{\"id\":\"SzRs36ZcZobCPKcc6dG7i\",\"children\":[{\"id\":\"aYzaxEKouDC2aUgVK9byB\",\"children\":[{\"id\":\"0UrMDPHvyTov7njpP11g7\",\"children\":[{\"text\":\"Uninit\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"D08GPyVuq85NMVGNajncD\",\"children\":[{\"id\":\"aDrh02kK08XtyPJncGSFD\",\"children\":[{\"id\":\"9uoKGauvszx9ou3inPJH8\",\"children\":[{\"text\":\"Uninitializes GME\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[37,63],\"widthMode\":\"percentage\"},{\"id\":\"VNSLrcCVphfs-XsFAMyv4\",\"children\":[{\"text\":\"Preparations\"}],\"nodeId\":\"preparations\",\"type\":\"h3\"},{\"id\":\"dsWQa5L8QyJlpIDqDaclY\",\"children\":[{\"text\":\"You need to import the header file \"},{\"code\":1,\"text\":\"tmg_sdk.h\"},{\"text\":\" first before you can access GME. The classes in the header file inherit \"},{\"code\":1,\"text\":\"ITMGDelegate\"},{\"text\":\" for message delivery and callback.\"}],\"type\":\"p\"},{\"id\":\"BllzXZVQuME34kmK_eajr\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code\",\"type\":\"h4\"},{\"id\":\"kB-3qb5g7w5KMvK-sFncf\",\"children\":[{\"id\":\"R8n6Mxc5476skwRuy_2b5\",\"children\":[{\"text\":\"#include \\\"tmg_sdk.h\\\"\"}],\"type\":\"code-line\"},{\"id\":\"MNz_A6MUH3fK5ezTsFuat\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"},{\"id\":\"yGjBydo2rI9RPEgwPm1Vo\",\"children\":[{\"text\":\"class TMGTestScene : public cocos2d::Scene,public ITMGDelegate\"}],\"type\":\"code-line\"},{\"id\":\"SRi95pqZL9PYsOz1L7eOz\",\"children\":[{\"text\":\"{\"}],\"type\":\"code-line\"},{\"id\":\"XBBIoHbBnUaAjdT1fgoTU\",\"children\":[{\"text\":\"public:\"}],\"type\":\"code-line\"},{\"id\":\"2YsLeJU57adJooareku5j\",\"children\":[{\"text\":\"...\"}],\"type\":\"code-line\"},{\"id\":\"qYX1cBnBEhnXblUfMM4cM\",\"children\":[{\"text\":\"private:\"}],\"type\":\"code-line\"},{\"id\":\"76b7r4tIWeZWXK8c2Oh5J\",\"children\":[{\"text\":\"...\"}],\"type\":\"code-line\"},{\"id\":\"jh-umMfDZ_Ezm3_SshMhW\",\"children\":[{\"text\":\"}\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"I0zcTMWwfaEhA10MZXTj4\",\"children\":[{\"text\":\"Setting a singleton\"}],\"nodeId\":\"setting-a-singleton\",\"type\":\"h3\"},{\"id\":\"qVjq0XlzsT_HDeNCEm1Y0\",\"children\":[{\"text\":\"You need to get \"},{\"code\":1,\"text\":\"ITMGContext\"},{\"text\":\" first before you can call the \"},{\"code\":1,\"text\":\"EnterRoom\"},{\"text\":\" function. All calls begin with \"},{\"code\":1,\"text\":\"ITMGContext\"},{\"text\":\", which is returned to the application through the \"},{\"code\":1,\"text\":\"ITMGDelegate\"},{\"text\":\" callback and must be set first.\"}],\"type\":\"p\"},{\"id\":\"wjEnc0sOEDisSmUViC0AW\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code2\",\"type\":\"h4\"},{\"id\":\"X6b35COKUI9mT1fSA3oHU\",\"children\":[{\"id\":\"Iir3XLJjWo-dJUFWV5Evr\",\"children\":[{\"text\":\"ITMGContext* context = ITMGContextGetInstance();\"}],\"type\":\"code-line\"},{\"id\":\"i8sB3Hbunjb1AN2ZIIXc-\",\"children\":[{\"text\":\"context->SetTMGDelegate(this);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"Di9YHJHYkFSVCt66BiGHR\",\"children\":[{\"text\":\"Message delivery\"}],\"nodeId\":\"message-delivery\",\"type\":\"h3\"},{\"id\":\"jm8rtK2T2zNFJAzrS8Cik\",\"children\":[{\"text\":\"The API class uses the \"},{\"code\":1,\"text\":\"Delegate\"},{\"text\":\" method to send callback notifications to the application. \"},{\"code\":1,\"text\":\"ITMG_MAIN_EVENT_TYPE\"},{\"text\":\" indicates the message type. The data on Windows is in json string format. For the key-value pairs, please see the relevant documentation.\"}],\"type\":\"p\"},{\"id\":\"AS5doM47jKFL7WlS-nrSO\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code3\",\"type\":\"h4\"},{\"id\":\"lLVIBrd4Qg892USKs8ZcF\",\"children\":[{\"id\":\"A4490NqMJ2VUKlJOBNMLM\",\"children\":[{\"text\":\"// Function implementation:\"}],\"type\":\"code-line\"},{\"id\":\"B3GuPGws5i2kna7fVAO4_\",\"children\":[{\"text\":\"//TMGTestScene.h:\"}],\"type\":\"code-line\"},{\"id\":\"Dhhox5Zn3v0XdhLW0AXgN\",\"children\":[{\"text\":\"class TMGTestScene : public cocos2d::Scene,public ITMGDelegate\"}],\"type\":\"code-line\"},{\"id\":\"HSZM8eF7jKhYGQpEr1yBh\",\"children\":[{\"text\":\"{\"}],\"type\":\"code-line\"},{\"id\":\"h00DrhkZflDhQ9sD_EKVI\",\"children\":[{\"text\":\"public:\"}],\"type\":\"code-line\"},{\"id\":\"CW_C5913KjI1iOM77LMVm\",\"children\":[{\"text\":\" void OnEvent(ITMG_MAIN_EVENT_TYPE eventType, const char* data);\"}],\"type\":\"code-line\"},{\"id\":\"0UqasEBFUmI8y-L1aVynt\",\"children\":[{\"text\":\"}\"}],\"type\":\"code-line\"},{\"id\":\"F1E8s-PB9HYTrdAyanYb9\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"},{\"id\":\"hRy4jaUOneCYzwSKsKkQB\",\"children\":[{\"text\":\"//TMGTestScene.cpp:\"}],\"type\":\"code-line\"},{\"id\":\"IR6etdy-yBe_d-Gypjazr\",\"children\":[{\"text\":\"void TMGTestScene::OnEvent(ITMG_MAIN_EVENT_TYPE eventType,const char* data){\"}],\"type\":\"code-line\"},{\"id\":\"15OJVs4mTlu-o2jQ1siQy\",\"children\":[{\"text\":\" // Identify and manipulate `eventType` here\"}],\"type\":\"code-line\"},{\"id\":\"N_scFh4UpY62XWS6jFuhy\",\"children\":[{\"text\":\"}\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"fN3N9S0RR6tfR7s-xLWKK\",\"children\":[{\"text\":\"Initializing the SDK\"}],\"nodeId\":\"initializing-the-sdk\",\"type\":\"h3\"},{\"id\":\"Lw5UWRNC9fs9osH8dtMzF\",\"children\":[{\"b\":1,\"text\":\"You need to initialize the SDK through the \"},{\"b\":1,\"code\":1,\"text\":\"Init\"},{\"b\":1,\"text\":\" API\"},{\"text\":\" before you can use the real-time voice, voice message, and speech-to-text services. The \"},{\"code\":1,\"text\":\"Init\"},{\"text\":\" API must be called in the same thread as other APIs. We recommend you call all APIs in the main thread.\"}],\"nodeId\":\"Init\",\"type\":\"p\"},{\"id\":\"glFStgC0HQ9d12zLw-o5W\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype\",\"type\":\"h4\"},{\"id\":\"A7Uvh1Uz6-8QfqTClq_M-\",\"children\":[{\"id\":\"CGx-65EcfPxP-OBbcKDDL\",\"children\":[{\"text\":\"ITMGContext virtual int Init(const char* sdkAppId, const char* openId)\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"sGamOaOr5dhLPJ4AlCLKr\",\"children\":[{\"id\":\"650Tly4MgFcWw7JitHuRl\",\"children\":[{\"id\":\"djTZX0vUtrlOUJ3BeMm3n\",\"children\":[{\"id\":\"MVfgY9gZ1FjpVsvmfWyct\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"vERplqfj8OGwHAwnz11on\",\"children\":[{\"id\":\"zJ-UQ7vFeSkZ6wdcEkpcF\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"UHCgmtCZ0TQHDae7Lqqfv\",\"children\":[{\"id\":\"KgSbbjZ5lC1v2FlmjUEC2\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"dPzkgv1jT97wYxlapxcaw\",\"children\":[{\"id\":\"eYRerSSpG65hWza8SqDu4\",\"children\":[{\"id\":\"245rX8rPRoT4T5qHNW9u7\",\"children\":[{\"id\":\"dxjrRWg9LvOorSs634LX1\",\"children\":[{\"text\":\"sdkAppId\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"QA2hKahNTWvp8ctc-8_jF\",\"children\":[{\"id\":\"I0D7xCl_9rzQi7jGyD4a-\",\"children\":[{\"id\":\"ULCjhuI2RepYhMubTDWVa\",\"children\":[{\"text\":\"const char*\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"0pHXt3h1Mb1CAXidahGt0\",\"children\":[{\"id\":\"JEb1A-CpZaBmj5Tj9PgF-\",\"children\":[{\"id\":\"q9iRHRL7z1wjxe-_0t15G\",\"children\":[{\"code\":1,\"text\":\"AppID\"},{\"text\":\" provided in the \"},{\"id\":\"5b09GZ4zNZcPWfjU94IPn\",\"children\":[{\"text\":\"GME console\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://console.tencentcloud.com/gamegme\",\"props\":{\"type\":\"link\",\"url\":\"https://console.tencentcloud.com/gamegme\"},\"type\":\"ref\"},{\"text\":\", which can be obtained as instructed in \"},{\"id\":\"RRFLd_qkLt-CYlZ_thyCL\",\"children\":[{\"text\":\"Activating Services\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://intl.cloud.tencent.com/document/product/607/10782#.E9.87.8D.E7.82.B9.E5.8F.82.E6.95.B0\",\"props\":{\"type\":\"link\",\"url\":\"https://intl.cloud.tencent.com/document/product/607/10782#.E9.87.8D.E7.82.B9.E5.8F.82.E6.95.B0\"},\"type\":\"ref\"},{\"text\":\".\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"aavtq41AHcBKhAHVIUXLV\",\"children\":[{\"id\":\"Vl05HQtHH0ZIP0VVutikz\",\"children\":[{\"id\":\"b0_lsrzBNsMJkI8JwnsWC\",\"children\":[{\"id\":\"ajOn6EH1n0bJlXJwcNSOs\",\"children\":[{\"text\":\"openID\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"pXSJkgDKyVg0Jf3gV1KK5\",\"children\":[{\"id\":\"Kcr93tH4yHMo0JA8AVLlH\",\"children\":[{\"id\":\"Y_OHf6sZNaE1o6cPSZyAH\",\"children\":[{\"text\":\"const char*\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"tdvHgkP_tg8OeBjAeEzru\",\"children\":[{\"id\":\"jaPo6dgo5NL7Nu0K1Q7tz\",\"children\":[{\"id\":\"FefXC7C0u9WJSteaMpWSM\",\"children\":[{\"code\":1,\"text\":\"openID\"},{\"text\":\" can only be in \"},{\"code\":1,\"text\":\"Int64\"},{\"text\":\" type, which is passed in after being converted to a \"},{\"code\":1,\"text\":\"const char*\"},{\"text\":\". You can customize its rules, and it must be unique in the application. To pass in \"},{\"code\":1,\"text\":\"openID\"},{\"text\":\" as a string, \"},{\"id\":\"jZwy3HTWT2eQ45jLGk_nL\",\"children\":[{\"text\":\"submit a ticket\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://console.tencentcloud.com/workorder/category?level1_id=438&level2_id=445&source=0&data_title=%E6%B8%B8%E6%88%8F%E5%A4%9A%E5%AA%92%E4%BD%93%E5%BC%95%E6%93%8EGME&step=1\",\"props\":{\"type\":\"link\",\"url\":\"https://console.tencentcloud.com/workorder/category?level1_id=438&level2_id=445&source=0&data_title=%E6%B8%B8%E6%88%8F%E5%A4%9A%E5%AA%92%E4%BD%93%E5%BC%95%E6%93%8EGME&step=1\"},\"type\":\"ref\"},{\"text\":\" for application.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[11,12,77],\"widthMode\":\"percentage\"},{\"id\":\"g37DcGWlUz4af1BTpwpVr\",\"children\":[{\"text\":\"Returned values\"}],\"nodeId\":\"returned-values\",\"type\":\"h4\"},{\"id\":\"7-uSXAcyaj_bnUIqeIaDE\",\"children\":[{\"id\":\"cqIpEOmnXy0z_eSOIZaYO\",\"children\":[{\"id\":\"dXHFZhIihtejIDZUfHUn2\",\"children\":[{\"id\":\"SA7qP3rwjnV3JJ4DWz63T\",\"children\":[{\"text\":\"Returned Value\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"_VBmV0546WMwIy5E0qw_s\",\"children\":[{\"id\":\"swvTaXxlM3OxxoHfsmmI1\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"SGPj0MR5kKEkM9YOCt-n-\",\"children\":[{\"id\":\"0GOMf8wWOsEw0EayHBQFR\",\"children\":[{\"id\":\"ODI_eHGJqURPDqICKsqrQ\",\"children\":[{\"id\":\"6JGSkwPkAWz6-t5V6UGj2\",\"children\":[{\"text\":\"AV_OK = 0\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"nCsMCPfh4npjkJngHYlVx\",\"children\":[{\"id\":\"Hid90ZJcMTBNNkDWFuo9y\",\"children\":[{\"id\":\"ubKJDKi5pLeZSrcOQzq3T\",\"children\":[{\"text\":\"Initialized SDK successfully.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"4pyX4mHaPaQfhMFZUguwO\",\"children\":[{\"id\":\"HmcXyq89BdwwUxIXgO04d\",\"children\":[{\"id\":\"78xR8episBBZqSyHkPJTb\",\"children\":[{\"id\":\"ev20P79BNR9012tLLaIpb\",\"children\":[{\"text\":\"AV_ERR_SDK_NOT_FULL_UPDATE=7015\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"sJhe2_TT1s0it9uVXQvfF\",\"children\":[{\"id\":\"uJVw7yFCOqN5jvfdeZl4E\",\"children\":[{\"id\":\"TKTQ4RulLdBIhlF4buufL\",\"children\":[{\"text\":\"Checks whether the SDK file is complete. It is recommended to delete it and then import the SDK again.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[35,65],\"widthMode\":\"percentage\"},{\"id\":\"0gDDmckToePDYkbXFMlqa\",\"children\":[{\"id\":\"PKvsq2RkGO_Ym-KnhXjoW\",\"children\":[{\"b\":1,\"color\":\"#04C8DC\",\"text\":\"Notes on 7015 error code:\"}],\"type\":\"p\"},{\"id\":\"GNpHcvnwMtkiu_AIWe4M3\",\"children\":[{\"text\":\"The 7015 error code is judged by md5. If this error is reported during integration, please check the integrity and version of the SDK file as prompted.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"e8Sh3qMadbM0sx1p59G7u\",\"children\":[{\"text\":\"The returned value \"},{\"code\":1,\"text\":\"AV_ERR_SDK_NOT_FULL_UPDATE\"},{\"text\":\" is \"},{\"b\":1,\"text\":\"only a reminder\"},{\"text\":\" but will not cause an initialization failure.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"OvQICPHrIAGIk-Medxmne\",\"children\":[{\"text\":\"Due to the third-party reinforcement, Unity packaging mechanism and other factors, the md5 of the library file will be affected, resulting in misjudgment. \"},{\"b\":1,\"text\":\"Please ignore this error in the logic for official release\"},{\"text\":\", and try to avoid displaying it in the UI.\"}],\"start\":false,\"type\":\"uli\"}],\"hintType\":\"alert\",\"type\":\"hint\"},{\"id\":\"Kfl0XYJ7spW-hukuJw2L0\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code4\",\"type\":\"h4\"},{\"id\":\"8_-q35BYcDdPnmOCbHdeV\",\"children\":[{\"id\":\"EAKGzjAbPhpqWA2tXMHg9\",\"children\":[{\"text\":\"#define SDKAPPID3RD \\\"14000xxxxx\\\"\"}],\"type\":\"code-line\"},{\"id\":\"1u81MgZPO1m83_uKL0TDP\",\"children\":[{\"text\":\"cosnt char* openId=\\\"10001\\\";\"}],\"type\":\"code-line\"},{\"id\":\"Y0zmSWN_hK3spXN-VVhi2\",\"children\":[{\"text\":\"ITMGContext* context = ITMGContextGetInstance();\"}],\"type\":\"code-line\"},{\"id\":\"VHgLQBaGBYJembFa_pvvi\",\"children\":[{\"text\":\"context->Init(SDKAPPID3RD, openId);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"2kgvby_MIu-Z7mWbchiMI\",\"children\":[{\"text\":\"Triggering event callback\"}],\"nodeId\":\"triggering-event-callback\",\"type\":\"h3\"},{\"id\":\"ysYqmM0xffxddN6ygDWBc\",\"children\":[{\"text\":\"Event callbacks can be triggered by periodically calling the \"},{\"code\":1,\"text\":\"Poll\"},{\"text\":\" API in \"},{\"code\":1,\"text\":\"update\"},{\"text\":\". \"},{\"code\":1,\"text\":\"Poll\"},{\"text\":\" is the message pump of GME, and the \"},{\"code\":1,\"text\":\"Poll\"},{\"text\":\" API should be called periodically for GME to trigger event callbacks; otherwise, the entire SDK service will run exceptionally.\\nYou can refer to the \"},{\"code\":1,\"text\":\"EnginePollHelper.cpp\"},{\"text\":\" file in the demo.\"}],\"nodeId\":\"Poll\",\"type\":\"p\"},{\"id\":\"fUhzJ2eNSXAwO-NhXCUGY\",\"children\":[{\"id\":\"3b40gLMYE2VvupOJmUbwv\",\"children\":[{\"b\":1,\"color\":\"#FF7800\",\"text\":\"Calling the `Poll` API periodically:\"}],\"type\":\"p\"},{\"id\":\"eSru9YZYLnmM0xJuj76ua\",\"children\":[{\"text\":\"The \"},{\"code\":1,\"text\":\"Poll\"},{\"text\":\" API must be called periodically and in the main thread to avoid abnormal API callbacks.\"}],\"type\":\"p\"}],\"hintType\":\"warn\",\"type\":\"hint\"},{\"id\":\"vP3NZ1IrUoEql2e0wC-id\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype2\",\"type\":\"h4\"},{\"id\":\"j9qDLq2Nj2YIOwY-jzYrf\",\"children\":[{\"id\":\"8xifEtLyGcoV34I7dvYm8\",\"children\":[{\"text\":\"class ITMGContext {\"}],\"type\":\"code-line\"},{\"id\":\"VGyKb2cY1NBBzGbN4a9El\",\"children\":[{\"text\":\"protected:\"}],\"type\":\"code-line\"},{\"id\":\"Wkesdy66sg4pcYiABfGeP\",\"children\":[{\"text\":\" virtual ~ITMGContext() {}\"}],\"type\":\"code-line\"},{\"id\":\"PnVYSvQ34C0c5oF2_-Y8o\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"},{\"id\":\"R7l-yXfKN4FSDzhrQg8Bn\",\"children\":[{\"text\":\"public: \"}],\"type\":\"code-line\"},{\"id\":\"Gwe0KAxh3QadesjcA53AT\",\"children\":[{\"text\":\" virtual void Poll()= 0;\"}],\"type\":\"code-line\"},{\"id\":\"Pq1N7jJHevKzB0H5mSiTV\",\"children\":[{\"text\":\"}\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"BpszS5bdk8Hc0_9zv2SVI\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code5\",\"type\":\"h4\"},{\"id\":\"WX4E2u_MLN6-ryzQGg07A\",\"children\":[{\"id\":\"-SpRXd9fEfJmTMWAzAaIi\",\"children\":[{\"text\":\"// Declaration in the header file\"}],\"type\":\"code-line\"},{\"id\":\"5iTG7k4Da61xlVoNzp3cv\",\"children\":[{\"text\":\"class TMGTestScene : public cocos2d::Scene,public ITMGDelegate\"}],\"type\":\"code-line\"},{\"id\":\"xl6i28G3fh97BtRuuKuwi\",\"children\":[{\"text\":\"{\"}],\"type\":\"code-line\"},{\"id\":\"Ul1R63QGO1XxfS4mbT6VH\",\"children\":[{\"text\":\"void update(float delta); \"}],\"type\":\"code-line\"},{\"id\":\"M_KMY-XJoALvqdVxOf6Kr\",\"children\":[{\"text\":\"}\"}],\"type\":\"code-line\"},{\"id\":\"b0e2R-tgdYW7Y5pY4gbFF\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"},{\"id\":\"oJbEtJsqUWP84ligdHtRy\",\"children\":[{\"text\":\"// Code implementation\"}],\"type\":\"code-line\"},{\"id\":\"OjJ7t3cEWgPGH90p6N0pd\",\"children\":[{\"text\":\"void TMGTestScene::update(float delta)\"}],\"type\":\"code-line\"},{\"id\":\"fM6UtvnqfBcsZIQ4RuEUz\",\"children\":[{\"text\":\"{\"}],\"type\":\"code-line\"},{\"id\":\"CsYmZIPrhELRH2b3ubp41\",\"children\":[{\"text\":\" ITMGContextGetInstance()->Poll();\"}],\"type\":\"code-line\"},{\"id\":\"S7JHbfHqHhKU6TXHJjjdy\",\"children\":[{\"text\":\"}\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"MwG89JWp5koQ2wK-ejuqr\",\"children\":[{\"text\":\"Pausing the system\"}],\"nodeId\":\"pausing-the-system\",\"type\":\"h3\"},{\"id\":\"uFv-BJNzuhhgR0T3sydpc\",\"children\":[{\"text\":\"When a \"},{\"code\":1,\"text\":\"Pause\"},{\"text\":\" event occurs in the system, the engine should also be notified for pause. If you do not need the background to play back the audio in the room, please call \"},{\"code\":1,\"text\":\"Pause\"},{\"text\":\" API to pause the GME service.\"}],\"type\":\"p\"},{\"id\":\"3dBgP7tqdZ3iD09UgZ-4v\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype3\",\"type\":\"h4\"},{\"id\":\"bWqc6vUyBMrLp7BLiK6Xq\",\"children\":[{\"id\":\"Oeb8-4yNHq9l1wxwk85Gb\",\"children\":[{\"text\":\"ITMGContext int Pause()\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"iOvE7JI3LZD24O6MC42IA\",\"children\":[{\"text\":\"Resuming the system\"}],\"nodeId\":\"resuming-the-system\",\"type\":\"h3\"},{\"id\":\"SwmMpSU_PP8XAkHUAWi42\",\"children\":[{\"text\":\"When a \"},{\"code\":1,\"text\":\"Resume\"},{\"text\":\" event occurs in the system, the engine should also be notified for resumption. The \"},{\"code\":1,\"text\":\"Resume\"},{\"text\":\" API only supports resuming voice chat.\"}],\"type\":\"p\"},{\"id\":\"21k3PyslF_RYRD82ONAbu\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype4\",\"type\":\"h4\"},{\"id\":\"bj7HV0Eq4XrArppErCDQZ\",\"children\":[{\"id\":\"v3DiSeDbnEn7vBtLzfeQT\",\"children\":[{\"text\":\"ITMGContext int Resume()\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"iZnkiWZhdtpGym5ssM2av\",\"children\":[{\"text\":\"Uninitializing SDK\"}],\"nodeId\":\"uninitializing-sdk\",\"type\":\"h3\"},{\"id\":\"0DE1PSudXXZ8zBOC8EOcX\",\"children\":[{\"text\":\"This API is used to uninitialize the SDK to make it uninitialized. \"},{\"b\":1,\"text\":\"If the game business account is bound to \"},{\"b\":1,\"code\":1,\"text\":\"openid\"},{\"b\":1,\"text\":\", switching game account requires uninitializing GME and then using the new \"},{\"b\":1,\"code\":1,\"text\":\"openid\"},{\"b\":1,\"text\":\" to initialize again.\"}],\"nodeId\":\"UnInit\",\"type\":\"p\"},{\"id\":\"lyKJgp0y9J2nvPQ0mC9l-\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype5\",\"type\":\"h4\"},{\"id\":\"EULMSg-q-X-W3vNxV-3sb\",\"children\":[{\"id\":\"4wuXwySfJb60M4z48sKYu\",\"children\":[{\"text\":\"ITMGContext int Uninit()\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"s7hioVOpE4t86WZqXX8kc\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code6\",\"type\":\"h4\"},{\"id\":\"IPmLPf85KnXhlLj9V2Rvl\",\"children\":[{\"id\":\"9NVU7LknS7LSDt2893QTo\",\"children\":[{\"text\":\"ITMGContext* context = ITMGContextGetInstance();\"}],\"type\":\"code-line\"},{\"id\":\"kBUB4wsWg-_qbXXXWwUDx\",\"children\":[{\"text\":\"context->Uninit();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"9_IuVweDthGLmXCkYY1av\",\"children\":[{\"text\":\"Voice Chat Room APIs\"}],\"nodeId\":\"voice-chat-room-apis\",\"type\":\"h2\"},{\"id\":\"oWunze9q8axA5qcTetdck\",\"children\":[{\"text\":\"You should initialize and call the SDK to enter a room before voice chat can start.\"}],\"type\":\"p\"},{\"id\":\"D9CcSrVQqy8PFrznPlET4\",\"type\":\"p\",\"children\":[{\"text\":\"If you have any questions when using the service, please see \"},{\"id\":\"VVsxxfW6xvjrX4yDG7n-s\",\"children\":[{\"text\":\"FAQs About Voice Chat\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://intl.cloud.tencent.com/document/product/607/39524\",\"props\":{\"type\":\"link\",\"url\":\"https://intl.cloud.tencent.com/document/product/607/39524\"},\"type\":\"ref\"},{\"text\":\".\"}]},{\"type\":\"p\",\"children\":[{\"text\":\"\"},{\"id\":\"1mrrFL_AMieQ3LlOvJmnq\",\"alt\":\"\",\"children\":[{\"text\":\"\"}],\"inline\":true,\"type\":\"image\",\"url\":\"https://cloudcache.intl.tencent-cloud.com/cms/backend-cms/346c02beb34311eeb2a1525400170219.jpeg\",\"naturalSize\":[1556,1264],\"size\":[801,650]},{\"text\":\"\"}],\"id\":\"HkkFuZbp6BsQxQ7bcGmKf\"},{\"id\":\"UKDhPEPG6_OK_R8ClfQfx\",\"children\":[{\"id\":\"O5uLt7SipsuUdARSqO9V-\",\"children\":[{\"id\":\"rwr2P4MOLCNQCOUo1Slie\",\"children\":[{\"id\":\"2JE0OkO6k5UtdgYlF9zPk\",\"children\":[{\"text\":\"API\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"wXrwjTviguJ3wpqUmvCVx\",\"children\":[{\"id\":\"RoS0kl1-vGc3vulEQpv7c\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"cl-wFSynJcUdk35HmYtmm\",\"children\":[{\"id\":\"TTVCVGttNEj_YJtnu3D66\",\"children\":[{\"id\":\"9G4h5Up-GHi60He-S-lYf\",\"children\":[{\"id\":\"Kpou_LQpM_tI0C4phrkvT\",\"children\":[{\"text\":\"GenAuthBuffer\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"A5zpwa2qoz8bQGGPpbV3t\",\"children\":[{\"id\":\"wvJMzd_ihf5ORV6n9XFi7\",\"children\":[{\"id\":\"EPizK3TIgbyPDRRIu_97m\",\"children\":[{\"text\":\"Calculates the local authentication key\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"IcWsEnOy4Qa4r2RDUIaPH\",\"children\":[{\"id\":\"F8lHpW4myl3Wm11S4KgYp\",\"children\":[{\"id\":\"63TTK2P-GlVWb0QoO19y6\",\"children\":[{\"id\":\"rk_WqxmXHPVAxokjYAc39\",\"children\":[{\"text\":\"EnterRoom\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"9ychgvys-Hf0-iD894k3F\",\"children\":[{\"id\":\"Ob_KoVhf6wDMhwAEm1MSp\",\"children\":[{\"id\":\"CpJcYfihg9bG0c9MTO4pS\",\"children\":[{\"text\":\"Enters a room\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"3UfU5wg4VH4MMwPQB72J2\",\"children\":[{\"id\":\"GVMdOdRoWsSP0DSqmiSWZ\",\"children\":[{\"id\":\"KRyYVEXbrYgONue_43psz\",\"children\":[{\"id\":\"tNOZXXA_-lPQpGuO58tnW\",\"children\":[{\"text\":\"ExitRoom\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"pu7u95MkjNGuVBaOYSblc\",\"children\":[{\"id\":\"ksKy9V6tgqnGEGxbMZehc\",\"children\":[{\"id\":\"CdPI2Z6Xu_VmGUSBo8JHl\",\"children\":[{\"text\":\"Exits the room\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"utH16l7R8ngSIGhCHNVsR\",\"children\":[{\"id\":\"7XK-P7N2rySb4IQdKRnXZ\",\"children\":[{\"id\":\"8ABwmESGMCv6acZ8GdH2s\",\"children\":[{\"id\":\"fMlFlCyUbHHF4jkpUthN4\",\"children\":[{\"text\":\"IsRoomEntered\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"65jc_Q_o8PGlcNbSXOuNr\",\"children\":[{\"id\":\"KPVAT3XUOrlTHBqtACf4O\",\"children\":[{\"id\":\"4FgxykW1W2LnCC35vuDA3\",\"children\":[{\"text\":\"Determines whether room entry is successful\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"bQAcnQY5HvT7koscVgftK\",\"children\":[{\"id\":\"a7kONv6ruc1gDAPZ5X5Of\",\"children\":[{\"id\":\"qXocg0srC2Ru1-3AYILHr\",\"children\":[{\"id\":\"0Tnu-bT-6lvJeEZSc6wJZ\",\"children\":[{\"text\":\"SwitchRoom\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ilzyZP-Lh2J8RiStHHiEm\",\"children\":[{\"id\":\"kvhgiAgbkG2tkp2KNSY6_\",\"children\":[{\"id\":\"GBbUWrxpc1t6jtvpseGR1\",\"children\":[{\"text\":\"Switches the room quickly\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[29,71],\"widthMode\":\"percentage\"},{\"id\":\"n2miXsrXLQWgodmj1vW4T\",\"children\":[{\"text\":\"Local authentication key calculation\"}],\"nodeId\":\"local-authentication-key-calculation\",\"type\":\"h3\"},{\"id\":\"_d1HySIRUHCY6WE_fMOOU\",\"children\":[{\"text\":\"Generate \"},{\"code\":1,\"text\":\"AuthBuffer\"},{\"text\":\" for encryption and authentication of relevant features. For release in the production environment, please use the backend deployment key as detailed in \"},{\"id\":\"C__r7_ZByhBqKRBPL1ufN\",\"children\":[{\"text\":\"Authentication Key\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://intl.cloud.tencent.com/document/product/607/12218\",\"props\":{\"type\":\"link\",\"url\":\"https://intl.cloud.tencent.com/document/product/607/12218\"},\"type\":\"ref\"},{\"text\":\". \"}],\"type\":\"p\"},{\"id\":\"CRfpPVJCv1nI8hYGxFcdb\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype6\",\"type\":\"h4\"},{\"id\":\"XuUR3UohIa1tOfhaQh1Cr\",\"children\":[{\"id\":\"NGbsVJcPpCY_yhnGGt4gm\",\"children\":[{\"text\":\"int QAVSDK_AuthBuffer_GenAuthBuffer(unsigned int dwSdkAppID, const char* strRoomID, const char* strOpenID,\"}],\"type\":\"code-line\"},{\"id\":\"yugeuQJUk-2oFBWkeJzgY\",\"children\":[{\"text\":\" const char* strKey, unsigned char* strAuthBuffer, unsigned int bufferLength);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"JC0JQfrTKwBC0nDLMEnLT\",\"children\":[{\"id\":\"nJeJn2vFTUtohbSXu27z_\",\"children\":[{\"id\":\"nbN6ff_ZR5K7Uh3sfdaeI\",\"children\":[{\"id\":\"l28B-Qw980cmc2MitKjr_\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"HCYIFGIB9o2YeBWj1LoWU\",\"children\":[{\"id\":\"KNYEOPA1Y2V1bE1HxLS9H\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"FCH9HmrCwG5HWNJa54s5k\",\"children\":[{\"id\":\"ppEO8-ujb0O8ZUVZ0RhnF\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"nmNgSZkWX5ExzJF2rXtM8\",\"children\":[{\"id\":\"srQFG8vl8T45FjHMcna5T\",\"children\":[{\"id\":\"mvxBtKJrhPRyo-LQOtlSV\",\"children\":[{\"id\":\"kIT2cHVtTx2M859MoRJel\",\"children\":[{\"text\":\"dwSdkAppID\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"SUOAmeYBt9dXnz1RRRDpy\",\"children\":[{\"id\":\"b8yRV1g6lo6xdzyACNy98\",\"children\":[{\"id\":\"zTO4d4EDW3-wVV9bZLUcI\",\"children\":[{\"text\":\"unsigned int\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"EAu6EtJb_KLCHwotv3Uj-\",\"children\":[{\"id\":\"rHgkwT8o2vR1sh-tO9qD1\",\"children\":[{\"id\":\"cSl3dOu1cup63UnaObxTt\",\"children\":[{\"code\":1,\"text\":\"AppId\"},{\"text\":\" from the Tencent Cloud console\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"0gM-3_QVgAw5Dpp1MqXF3\",\"children\":[{\"id\":\"HN8UC1MUTfFz6_MkgYuI7\",\"children\":[{\"id\":\"zvIMn0MUgShLy51hSP__f\",\"children\":[{\"id\":\"IBkQDHbSdLX7DYEfpSjed\",\"children\":[{\"text\":\"strRoomID\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Vx6oxpJ96XkC4ArNEIJkj\",\"children\":[{\"id\":\"Ub80zGbcnUZmZ-JefEOq3\",\"children\":[{\"id\":\"-8IAf0E3PZ9Pmn1IIbu2d\",\"children\":[{\"text\":\"const char*\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"RosfQ-EdmaGCSWGceYyU5\",\"children\":[{\"id\":\"nMZF6n2ySqi-3mNF9ffMf\",\"children\":[{\"id\":\"alD_Ooq-vhxDUliPrivw0\",\"children\":[{\"text\":\"Room ID, which can contain up to 127 characters.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"5b_-Us9A27LndRbhZyDSn\",\"children\":[{\"id\":\"Pz-CTSDEOe5N085YIIK3_\",\"children\":[{\"id\":\"zC7AyR3zTwUWWmpUQK5O5\",\"children\":[{\"id\":\"3yGOM6w4b6-_q_TgYg645\",\"children\":[{\"text\":\"strOpenID\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"bQ9uW7LfeF6NlxycQGal1\",\"children\":[{\"id\":\"NSj7cutNXxYGO_31iRXaj\",\"children\":[{\"id\":\"KGao5poSw3G_lYqLwLm7Y\",\"children\":[{\"text\":\"const char*\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"zggbBudw8sArltxo4yOCl\",\"children\":[{\"id\":\"M-VRAfIlSL1QjLPdOdaHQ\",\"children\":[{\"id\":\"00U2qqe0_WfOxVmeRRI3o\",\"children\":[{\"text\":\"User ID, which is the same as \"},{\"code\":1,\"text\":\"openID\"},{\"text\":\" during initialization.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"Vj84c8WtLl13WXdiWgu-T\",\"children\":[{\"id\":\"_pD_VnZgpnnvFNFfnxVgR\",\"children\":[{\"id\":\"rn81sk08sMlN_8DEWV9zu\",\"children\":[{\"id\":\"Xaln4VXm1Cy8C-thPNOat\",\"children\":[{\"text\":\"strKey\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"b9PwGNHgiFDr3vTslaUbL\",\"children\":[{\"id\":\"e1yW4BMrs5Vs3O3rHU-B1\",\"children\":[{\"id\":\"VS0MdHNr_pZCuDMfphziR\",\"children\":[{\"text\":\"const char*\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"3HnEtPaCEnAxacUpmf4QH\",\"children\":[{\"id\":\"TFuiaAzMjqHTCZvn5s7vZ\",\"children\":[{\"id\":\"NX0V072_nLdXSOGvm9hbq\",\"children\":[{\"text\":\"Permission key from the \"},{\"id\":\"6abThPhkhs7f9rHCqBAdh\",\"children\":[{\"text\":\"Tencent Cloud console\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://console.tencentcloud.com/gamegme\",\"props\":{\"type\":\"link\",\"url\":\"https://console.tencentcloud.com/gamegme\"},\"type\":\"ref\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"zSRZ9cChEA110nUvGCxHW\",\"children\":[{\"id\":\"T955VARmnlkjlHzokZDeh\",\"children\":[{\"id\":\"qL4fsL-wIB5TrDNvFsIIY\",\"children\":[{\"id\":\"KeKv5wQGQdBGzghBEHtGN\",\"children\":[{\"text\":\"strAuthBuffer\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"VEBkvF30vZg9v_LEqTP1s\",\"children\":[{\"id\":\"UfacB09lTWQyoLdGxppPs\",\"children\":[{\"id\":\"oMVvl2wtM9B3bPrCJEUGl\",\"children\":[{\"text\":\"const char*\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"PtQ8CAfJdUXmp66JGDU9H\",\"children\":[{\"id\":\"YdtZGe2YIVtTS18C1aARA\",\"children\":[{\"id\":\"GMhgreHtOAf1xts50ET99\",\"children\":[{\"text\":\"Returned \"},{\"code\":1,\"text\":\"authbuff\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"VGyKuH3DuI7LMG9IwK2Zb\",\"children\":[{\"id\":\"ak6-843dNiwhmjeQ95rY4\",\"children\":[{\"id\":\"AdOGxuEocJRBiGDkk-yv_\",\"children\":[{\"id\":\"E7XYQgoKwxk_j_PY_ruq2\",\"children\":[{\"text\":\"bufferLength\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"mWQHqBaJ9dePQsc5uHHhP\",\"children\":[{\"id\":\"Y_mW7wzULBqHBAWtB05IC\",\"children\":[{\"id\":\"MxCRVDr7-LoihkSRVHz8F\",\"children\":[{\"text\":\"int\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"b5hvXhyWc7pQo23Rn-bfO\",\"children\":[{\"id\":\"eSZFQ3pS0g7fjJNk55QJ_\",\"children\":[{\"id\":\"uPgBc4QKZwilJtiOOft-8\",\"children\":[{\"text\":\"The length of the returned \"},{\"code\":1,\"text\":\"authbuff\"},{\"text\":\". \"},{\"code\":1,\"text\":\"500\"},{\"text\":\" is recommended.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[17,16,67],\"widthMode\":\"percentage\"},{\"id\":\"LNP5otxnwslQN8qa-wMSP\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code7\",\"type\":\"h4\"},{\"id\":\"VY1B4SweLCjI9W0olrwWk\",\"children\":[{\"id\":\"YwM2phJ_pERf5To4xV5T0\",\"children\":[{\"text\":\"unsigned int bufferLen = 512;\"}],\"type\":\"code-line\"},{\"id\":\"SG8UgzGwCw9WDi9cYCSyO\",\"children\":[{\"text\":\"unsigned char retAuthBuff[512] = {0};\"}],\"type\":\"code-line\"},{\"id\":\"VeW7S4Aau-fK48Kdw9MPs\",\"children\":[{\"text\":\"QAVSDK_AuthBuffer_GenAuthBuffer(atoi(SDKAPPID3RD), roomId, \\\"10001\\\", AUTHKEY,retAuthBuff,bufferLen);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"zM4ZgdBoY4h1eDghe9FPY\",\"children\":[{\"text\":\"Entering a room\"}],\"nodeId\":\"entering-a-room\",\"type\":\"h3\"},{\"id\":\"2sNwpWrEW5VCgVxYpOwRc\",\"children\":[{\"text\":\"This API is used to enter a room with the generated authentication information. The mic and speaker are not enabled by default after room entry.\"}],\"type\":\"p\"},{\"type\":\"hint\",\"hintType\":\"alert\",\"children\":[{\"type\":\"p\",\"children\":[{\"b\":1,\"text\":\"Note:\",\"color\":\"#04C8DC\"}],\"id\":\"fa521-1XyQ5aati3E0O4P\"},{\"id\":\"0qO64FS4R-u4pBdXLfdtK\",\"children\":[{\"text\":\"If the room entry callback result is \"},{\"code\":1,\"text\":\"0\"},{\"text\":\", the room entry is successful. If \"},{\"code\":1,\"text\":\"0\"},{\"text\":\" is returned from the \"},{\"code\":1,\"text\":\"EnterRoom\"},{\"text\":\" API, it doesn't necessarily mean that the room entry is successful.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"avehSxUCF1Kptf3ktksJ7\",\"children\":[{\"text\":\"The audio type of the room is determined by the first user entering the room. After that, if a member in the room changes the room type, it will take effect for all members there. For example, if the first user entering the room uses the smooth sound quality, and the second user entering the room uses the HD sound quality, the room audio type of the second user will change to the smooth sound quality. Only after a member in the room calls the \"},{\"code\":1,\"text\":\"ChangeRoomType\"},{\"text\":\" API will the audio type of the room be changed.\"}],\"start\":false,\"type\":\"uli\"}],\"id\":\"IEuqQw6L1kEvKwVvwwpQu\"},{\"id\":\"qZueplS-Uz2HE9GjdH8Mo\",\"children\":[{\"id\":\"wYlomvxZ-NqUjc_pc7_Wq\",\"children\":[{\"text\":\"ITMGContext virtual int EnterRoom(const char* roomID, ITMG_ROOM_TYPE roomType, const char* authBuff, int buffLen)\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"Cr50BB0hrQy7UNlxK23RB\",\"children\":[{\"id\":\"Wet25MlJhwnmb4US3Npg7\",\"children\":[{\"id\":\"-eKgJbksaxgTVOgxcfTHO\",\"children\":[{\"id\":\"VLMouc5wRXEwlSU7zt6LB\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"GOrHancbCEsOewfI7ENZc\",\"children\":[{\"id\":\"pJlK9casXt-cYOvAlEmmw\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"y0tGNxYAJUQgvyO1wVUEB\",\"children\":[{\"id\":\"38eUemYZVJfkZ61rfaMVn\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"zv-u1Z_wKBdMG9-xxtos3\",\"children\":[{\"id\":\"i3hcfVNaa0kY9Ug0nOn_V\",\"children\":[{\"id\":\"TWNJGKI7Oa60xTnoYGZLX\",\"children\":[{\"id\":\"fzoA1pYvw-K52KXtWe9QH\",\"children\":[{\"text\":\"roomID\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"_el47nYthQf8Fg3a4hRJi\",\"children\":[{\"id\":\"63E0JWsTKDfTnWgozRU4a\",\"children\":[{\"id\":\"3Ewx-RVNtRZ238Ux-k8y3\",\"children\":[{\"text\":\"const char*\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"nwHb9w4klAWPqEEixxoOu\",\"children\":[{\"id\":\"wk_UKmIkbiy9XmQULTe-N\",\"children\":[{\"id\":\"cg1zN54jDueaUCDFVidt6\",\"children\":[{\"text\":\"Room ID, which can contain up to 127 characters.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"XNZa11_7sHYLbNPs6c1gJ\",\"children\":[{\"id\":\"6n-GVhx3BMbqMNMF0ThRO\",\"children\":[{\"id\":\"OQKwiIiRtUwF-na7DDuVB\",\"children\":[{\"id\":\"BgewH937quRv8QGzWRSqz\",\"children\":[{\"text\":\"roomType\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"fO-DRZ3gP3vtbUIeyTSD_\",\"children\":[{\"id\":\"nkNGQAIwUCb5JyfSyJs55\",\"children\":[{\"id\":\"NKBdPck8TbkOsdoPdCyUi\",\"children\":[{\"text\":\"ITMG_ROOM_TYPE\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"TGZXSXa-1whIzINo41npb\",\"children\":[{\"id\":\"5mzNJi5ALFzIiVp0cqCDV\",\"children\":[{\"id\":\"3uX0uqE-z6Xd1qpTAlckp\",\"children\":[{\"text\":\"Room type. We recommend you select \"},{\"code\":1,\"text\":\"ITMG_ROOM_TYPE_FLUENCY\"},{\"text\":\" for games. For more information on room audio types, see \"},{\"id\":\"c-FSQxcbzaWwBQY6YH7YY\",\"children\":[{\"text\":\"Sound Quality\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://intl.cloud.tencent.com/document/product/607/18522\",\"props\":{\"type\":\"link\",\"url\":\"https://intl.cloud.tencent.com/document/product/607/18522\"},\"type\":\"ref\"},{\"text\":\".\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"KagDBeSHRyNBDFYjc7-md\",\"children\":[{\"id\":\"yhHnk6iqXvda5Hhk4cSnX\",\"children\":[{\"id\":\"DVjiKAQ4M7zK-XqAw916q\",\"children\":[{\"id\":\"OnVTNxKAq3XwcMP4aO_4H\",\"children\":[{\"text\":\"authBuffer\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"-DPd9HZ_uBjRyX9EVV2s5\",\"children\":[{\"id\":\"BKbABtpcXU1_GQWpsByjN\",\"children\":[{\"id\":\"vA_XcvI4gyDWA9RBKmALN\",\"children\":[{\"text\":\"const char*\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"u0uvIYKJRCLnRHnlgxHIm\",\"children\":[{\"id\":\"ATZE3iCw8frh4ug0co5Gi\",\"children\":[{\"id\":\"SJHHkE3rd3QJ9Hrr0aJ10\",\"children\":[{\"text\":\"Authentication key\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"Ya326bvU0hGpWj4Zjc3jr\",\"children\":[{\"id\":\"9Oe48PQYubl0yy6MxOpcM\",\"children\":[{\"id\":\"m7zTQQZRp3_Dwh6YVDpQ2\",\"children\":[{\"id\":\"vVIJ45NOoSHkSMBtbTjD7\",\"children\":[{\"text\":\"buffLen\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"C-TKCaaSHGGi7tWE94d6e\",\"children\":[{\"id\":\"wbeI6j_VBNW6qGURsgu9l\",\"children\":[{\"id\":\"ntoSG3ypUkZV_LKftCJlh\",\"children\":[{\"text\":\"int\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"EMYkUai066N3VpMi1p_eX\",\"children\":[{\"id\":\"6ehFPCmYH-syZateqdyZn\",\"children\":[{\"id\":\"36mQ86-JRZnWhRqukom_4\",\"children\":[{\"text\":\"Authentication key length\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[12,20,68],\"widthMode\":\"percentage\"},{\"id\":\"Ugj9-yrK6cV0FxbCmCyQF\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code8\",\"type\":\"h4\"},{\"id\":\"hn7vE42gkHpRk_osGUXQE\",\"children\":[{\"id\":\"kmyizs0UFD5wFzFmpIq8E\",\"children\":[{\"text\":\"ITMGContext* context = ITMGContextGetInstance();\"}],\"type\":\"code-line\"},{\"id\":\"d5dKRTdusPaLwOJsOUjXy\",\"children\":[{\"text\":\"context->EnterRoom(roomID, ITMG_ROOM_TYPE_FLUENCY, (char*)retAuthBuff,bufferLen);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"0YDhqDQKexdGI2PozUHh5\",\"children\":[{\"text\":\"Callback for room entry\"}],\"nodeId\":\"callback-for-room-entry\",\"type\":\"h3\"},{\"id\":\"ghzaSQDJTtgP5g6D44Pru\",\"children\":[{\"text\":\"After the user enters the room, the message \"},{\"code\":1,\"text\":\"ITMG_MAIN_EVENT_TYPE_ENTER_ROOM\"},{\"text\":\" will be sent and identified in the \"},{\"code\":1,\"text\":\"OnEvent\"},{\"text\":\" function for callback and processing. A successful callback means that the room entry is successful, and the billing starts.\"}],\"type\":\"p\"},{\"type\":\"accordion\",\"children\":[{\"type\":\"accordion-line\",\"id\":\"-0A6_n8N3JaFQbcG1kNHI\",\"children\":[{\"type\":\"accordion-line-title\",\"children\":[{\"text\":\"Billing references\",\"b\":1}],\"id\":\"D1j9hmHJ2_5essKEABX7v\"},{\"type\":\"uli\",\"children\":[{\"text\":\"\"},{\"type\":\"ref\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/50009\"},\"linkTarget\":\"self\",\"children\":[{\"text\":\"Purchase Guide\"}],\"id\":\"B_kzDzkQLhGgwaYa-KxqX\"},{\"text\":\"\"}],\"id\":\"aKmTKULDs64XGRMBfAg1j\"},{\"type\":\"uli\",\"id\":\"1YaS6XaHMcyLEWUcmz35f\",\"children\":[{\"text\":\"\"},{\"type\":\"ref\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/30255\"},\"linkTarget\":\"self\",\"children\":[{\"text\":\"Billing FAQs\"}],\"id\":\"1fEpYU5dIiGzcBsNqCWQB\"},{\"text\":\"\"}]},{\"type\":\"uli\",\"id\":\"QyXcEsjIw2LBAQOOE4Fzs\",\"children\":[{\"text\":\"\"},{\"type\":\"ref\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/30255#.E4.BD.BF.E7.94.A8.E5.AE.9E.E6.97.B6.E8.AF.AD.E9.9F.B3.E5.90.8E.EF.BC.8C.E5.A6.82.E6.9E.9C.E5.AE.A2.E6.88.B7.E7.AB.AF.E6.8E.89.E7.BA.BF.E4.BA.86.EF.BC.8C.E6.98.AF.E5.90.A6.E8.BF.98.E4.BC.9A.E7.BB.A7.E7.BB.AD.E8.AE.A1.E8.B4.B9.EF.BC.9F\"},\"linkTarget\":\"self\",\"children\":[{\"text\":\"Will Voice Chat still be charged when client is offlined?\"}],\"id\":\"nacJQjNGdx4zMRhqWkJNF\"},{\"color\":\"red\",\"text\":\"\"}]}]}],\"id\":\"iaHeVrez2cRmacbBUayk1\"},{\"id\":\"ft1x8boDuZx6I0BsetitE\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code9\",\"type\":\"h4\"},{\"id\":\"iCAiy-JJyRLDHqxsoAzJy\",\"children\":[{\"id\":\"X9AI2WGttM7H61k4tPnli\",\"children\":[{\"text\":\"void TMGTestScene::OnEvent(ITMG_MAIN_EVENT_TYPE eventType,const char* data){\"}],\"type\":\"code-line\"},{\"id\":\"KWeaxlYG-vcD8Z_Ddnt-J\",\"children\":[{\"text\":\" switch (eventType) {\"}],\"type\":\"code-line\"},{\"id\":\"aGt2LWmxYDHXqtRoQ7-q3\",\"children\":[{\"text\":\" case ITMG_MAIN_EVENT_TYPE_ENTER_ROOM:\"}],\"type\":\"code-line\"},{\"id\":\"ctd-tBOw_2AkacGAh5oSe\",\"children\":[{\"text\":\" {\"}],\"type\":\"code-line\"},{\"id\":\"crFrsEMP1jZ-Zbt1M8vaC\",\"children\":[{\"text\":\" // Process\"}],\"type\":\"code-line\"},{\"id\":\"bFFpOU4WBnis9ZJ4HyXXr\",\"children\":[{\"text\":\" break;\"}],\"type\":\"code-line\"},{\"id\":\"4h8DOJWy2J1S4sGkZMs8_\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"rhBpK7MPbAUnm-JAkmByX\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"zcIHDvHd0QwXTR-V8RTFA\",\"children\":[{\"text\":\"}\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"9BgpYx8x0cRByZ5GdMJuL\",\"children\":[{\"text\":\"Data details\"}],\"nodeId\":\"data-details\",\"type\":\"h4\"},{\"id\":\"Ql6Vedv0oVVAgx8i-Sai9\",\"children\":[{\"id\":\"Jv3tfdZ6llrWAB53RE6Tf\",\"children\":[{\"id\":\"VXtlgSS0MSOIjNgDSrerH\",\"children\":[{\"id\":\"Qb1SUvfSStu3DX922xE_m\",\"children\":[{\"text\":\"Message\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"FtWq5VNTzpH1kUVK7ibon\",\"children\":[{\"id\":\"OXDA9B4bLemw888pVoJNp\",\"children\":[{\"text\":\"Data\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"tWklEK2hr5o9_73c7veg0\",\"children\":[{\"id\":\"9o4BzkdnGxTtS6CRadfaQ\",\"children\":[{\"text\":\"Sample\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"NsnVMcmHb0cWtwdMtbVr1\",\"children\":[{\"id\":\"QvJ6806G4Yn7bQSJHVzAQ\",\"children\":[{\"id\":\"DmavkVXLY4MNbuHFLM0Xy\",\"children\":[{\"id\":\"8aWim2t3XXGdQNHIIFP6l\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_ENTER_ROOM\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Esn-rYOwLXTlHrDuzgWmV\",\"children\":[{\"id\":\"876L8k6aDB7tRLLgczv7s\",\"children\":[{\"id\":\"4LL6HXsLjV55ErBT563oY\",\"children\":[{\"text\":\"result; error_info\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ULHzu25-VosV34uUHK2vf\",\"children\":[{\"id\":\"WD_lPQjkGK6LCjfM85l8V\",\"children\":[{\"id\":\"LlG3PqaH8fwfRvKxLZ4z1\",\"children\":[{\"text\":\"{\\\"error_info\\\":\\\"\\\",\\\"result\\\":0}\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"Who33DL9Rpupvzkaj4jzv\",\"children\":[{\"id\":\"uRf3gDkMI6Fwf8iQdLBQQ\",\"children\":[{\"id\":\"sk6aklZnspPRZh9Lg6KKM\",\"children\":[{\"id\":\"J1d8_LmqA2Nb3LvVdNGrz\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_ROOM_DISCONNECT\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"HIEv3ULYKpo4zcYxJCSYa\",\"children\":[{\"id\":\"tbiYkvg3eQGaMMyGsucvL\",\"children\":[{\"id\":\"LLmIhdWOeDYtYYoX-Izhq\",\"children\":[{\"text\":\"result; error_info\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"qnRcldGQU2KuBZwzukh9y\",\"children\":[{\"id\":\"bK4FosA5cN-fTgn8U3oQu\",\"children\":[{\"id\":\"giYeC7jxLC4eYiuKo37ps\",\"children\":[{\"text\":\"{\\\"error_info\\\":\\\"waiting timeout, please check your network\\\",\\\"result\\\":0}\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[38,14,48],\"widthMode\":\"percentage\"},{\"id\":\"3fP-3UegzBdEoZ-oUXJJq\",\"children\":[{\"text\":\"If the network is disconnected, there will be a disconnected callback prompt \"},{\"code\":1,\"text\":\"ITMG_MAIN_EVENT_TYPE.ITMG_MAIN_EVENT_TYPE_ROOM_DISCONNECT\"},{\"text\":\". At this time, the SDK will automatically reconnect, and the callback is \"},{\"code\":1,\"text\":\"ITMG_MAIN_EVENT_TYPE_RECONNECT_START\"},{\"text\":\". When the reconnection is successful, there will be a callback \"},{\"code\":1,\"text\":\"ITMG_MAIN_EVENT_TYPE_RECONNECT_SUCCESS\"},{\"text\":\".\"}],\"type\":\"p\"},{\"id\":\"bQbInBPrfhWs1tlwTQnQ6\",\"children\":[{\"text\":\"Error codes\"}],\"nodeId\":\"error-codes\",\"type\":\"h4\"},{\"id\":\"1Qgpmc0JWmhD1TwUldw0y\",\"children\":[{\"id\":\"gQdg1RPDhtP70ZjsRDBHA\",\"children\":[{\"id\":\"epK1bOi4CJY0H-1q5wY5_\",\"children\":[{\"id\":\"ABi65yydFkBeX_iRewfjg\",\"children\":[{\"text\":\"Error Code Value\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"e_pStIiCHU7htAj4At06m\",\"children\":[{\"id\":\"XvU9wi_AtoV8CKpznai1Y\",\"children\":[{\"text\":\"Cause and Suggested Solution\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"LQZr0lNrHI6kTdEBgfRM3\",\"children\":[{\"id\":\"IBL3Wdw2ZQtaO1K_7uy2u\",\"children\":[{\"id\":\"7GXG0I1G8JE91BgUawPMK\",\"children\":[{\"id\":\"g0T5UPIzNpzjwwI3wrAfV\",\"children\":[{\"text\":\"7006\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"z53qaeIG0ezjnKuDwuuDK\",\"children\":[{\"id\":\"DVBGoqcCtEsgO3rPAMzlU\",\"children\":[{\"text\":\"Authentication failed:\"}],\"type\":\"p\"},{\"id\":\"PbyHRN42VuuXJ3E9xr2_6\",\"type\":\"uli\",\"children\":[{\"text\":\"The \"},{\"code\":1,\"text\":\"AppID\"},{\"text\":\" does not exist or is incorrect.\"}]},{\"id\":\"0pRZ92fnrPSAyBOAWB4Pn\",\"type\":\"uli\",\"children\":[{\"text\":\"An error occurred while authenticating the \"},{\"code\":1,\"text\":\"authbuff\"},{\"text\":\".\"}]},{\"id\":\"OuivrFR_gLl_P-LDGaWf2\",\"type\":\"uli\",\"children\":[{\"text\":\"Authentication expired.\"}]},{\"id\":\"PF47l6NxN8i9chtSEPp7-\",\"type\":\"uli\",\"children\":[{\"text\":\"The \"},{\"code\":1,\"text\":\"OpenId\"},{\"text\":\" does not meet the specification.\"}]}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"Uud5cIg5O2VCDQSppItZP\",\"children\":[{\"id\":\"nLi1z0Jl2gmYvYWG0NDjW\",\"children\":[{\"id\":\"xQgpNWqGfsd007t2Sugo8\",\"children\":[{\"id\":\"oeUtgZv5IWmaaZn6lNulK\",\"children\":[{\"text\":\"7007\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"73uRHMoYoFYOTGDZ9raHE\",\"children\":[{\"id\":\"4z8CJinuXY-99thr71-gF\",\"children\":[{\"id\":\"JFhycTbcmqdaTOuHhfV5r\",\"children\":[{\"text\":\"Already in another room.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"2Ysc72W5xTdx0IlyUyQvV\",\"children\":[{\"id\":\"4LBoX_MaXhwekRvF6qLCq\",\"children\":[{\"id\":\"QhpSy7wx5Gx9O39kMGSVW\",\"children\":[{\"id\":\"ojPrfUUq8IXtMOeTuJ3Oh\",\"children\":[{\"text\":\"1001\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Rw1SVK8vW6HiSX3DgMcKf\",\"children\":[{\"id\":\"umF5-vDWP5WELAQmsgIuT\",\"children\":[{\"id\":\"s82rVCzIFOy_o4AeSWm6a\",\"children\":[{\"text\":\"The user was already in the process of entering a room but repeated this operation. It is recommended not to call the room entering API until the room entry callback is returned.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"WKoQKKJ5M3Zi8zNYhhSgk\",\"children\":[{\"id\":\"-hyZIO5BowaN_0l7u_SLL\",\"children\":[{\"id\":\"PYVyUsFjC3KRaBIKt1bA8\",\"children\":[{\"id\":\"agjmqgGMVtpbn_q94grs2\",\"children\":[{\"text\":\"1003\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"qIOSfGlcHieK05RQbJkYs\",\"children\":[{\"id\":\"7e1X3FdOQSj7PdH8uo21E\",\"children\":[{\"id\":\"flW5hzIlq5UUb7lXDTW4B\",\"children\":[{\"text\":\"The user was already in the room and called the room entering API again.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"-HAa6PnP6PgpmaeiwzVED\",\"children\":[{\"id\":\"73sv6hPUT2XgKb_BdGKne\",\"children\":[{\"id\":\"IMcoYPtjs8EJ9AjdH5GUo\",\"children\":[{\"id\":\"BpHdB7tBi57bBmVE377lF\",\"children\":[{\"text\":\"1101\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"F6n75pkz-xj28Icqcaia4\",\"children\":[{\"id\":\"sdW-rxasR84iDAmL8DF5o\",\"children\":[{\"text\":\"Make sure that the SDK is initialized, \"},{\"code\":1,\"text\":\"OpenId\"},{\"text\":\" complies with the rules, the APIs are called in the same thread, and the \"},{\"code\":1,\"text\":\"Poll\"},{\"text\":\" API is called normally\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[19,81],\"widthMode\":\"percentage\"},{\"id\":\"rxw-seeLGpO2nn5uQMxF4\",\"children\":[{\"text\":\"Exiting a room\"}],\"nodeId\":\"exiting-a-room\",\"type\":\"h3\"},{\"id\":\"TRVohCSL3v3HM2jfoAaAd\",\"children\":[{\"text\":\"This API is used to exit the current room. It is an async API. The returned value \"},{\"code\":1,\"text\":\"AV_OK\"},{\"text\":\" indicates a successful async delivery. If there is a scenario in the application where room entry is performed immediately after room exit, you don't need to wait for the \"},{\"code\":1,\"text\":\"RoomExitComplete\"},{\"text\":\" callback notification from the \"},{\"code\":1,\"text\":\"ExitRoom\"},{\"text\":\" API during API call; instead, you can directly call the \"},{\"code\":1,\"text\":\"EnterRoom\"},{\"text\":\" API.\"}],\"nodeId\":\"ExitRoom\",\"type\":\"p\"},{\"id\":\"R2bi0rqFCui_ndAreggTB\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype8\",\"type\":\"h4\"},{\"id\":\"tUOTJtLNJr3c7UsO8Tje8\",\"children\":[{\"id\":\"tTEcutFwQLkXf67P76ryC\",\"children\":[{\"text\":\"ITMGContext virtual int ExitRoom()\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"8jwk94rVBv-dvjAoQ1iFh\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code10\",\"type\":\"h4\"},{\"id\":\"EGy9Xya0MYfOdGNduzsyC\",\"children\":[{\"id\":\"gdtbnPgNDYMwIZj6B3yVc\",\"children\":[{\"text\":\"ITMGContext* context = ITMGContextGetInstance();\"}],\"type\":\"code-line\"},{\"id\":\"TK1OSRjTpbdkJ5-wVpfLs\",\"children\":[{\"text\":\"context->ExitRoom();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"3r1N_WQMFc5E0Js76rpKe\",\"children\":[{\"text\":\"Callback for room exit\"}],\"nodeId\":\"callback-for-room-exit\",\"type\":\"h4\"},{\"id\":\"EvJecHIZFj04YkogT4pjt\",\"children\":[{\"text\":\"After the user exits a room, a callback will be returned with the message being \"},{\"code\":1,\"text\":\"ITMG_MAIN_EVENT_TYPE_EXIT_ROOM\"},{\"text\":\".\"}],\"type\":\"p\"},{\"id\":\"lvLHvPIn6Z89r8QqLsFnn\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code11\",\"type\":\"h4\"},{\"id\":\"Y0EGtqK3fNyAS7xnfLN-o\",\"children\":[{\"id\":\"o4Ny_j8H8HV8YOnPUYkFK\",\"children\":[{\"text\":\"void TMGTestScene::OnEvent(ITMG_MAIN_EVENT_TYPE eventType,const char* data){\"}],\"type\":\"code-line\"},{\"id\":\"ZRDvtcgAc-epWjmd7hGLh\",\"children\":[{\"text\":\" switch (eventType) {\"}],\"type\":\"code-line\"},{\"id\":\"AqFFvKp8OmKbmPimT_U30\",\"children\":[{\"text\":\" case ITMG_MAIN_EVENT_TYPE_EXIT_ROOM:\"}],\"type\":\"code-line\"},{\"id\":\"y3Ux4CzHXaErx42DqovHc\",\"children\":[{\"text\":\" {\"}],\"type\":\"code-line\"},{\"id\":\"HSozb4aJFb_Z5R8zmoFEb\",\"children\":[{\"text\":\" // Process\"}],\"type\":\"code-line\"},{\"id\":\"qCg0RCVDFK2REmb5FUOiQ\",\"children\":[{\"text\":\" break;\"}],\"type\":\"code-line\"},{\"id\":\"iI2kC8YQ5dyMw7U8p9575\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"QnB8ABCA4bXDDmqUkZVbY\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"ShvyFCEv1-xJCiuEghLgb\",\"children\":[{\"text\":\"}\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"OPsP1AnOxEBweX3ez5JP-\",\"children\":[{\"text\":\"Data details\"}],\"nodeId\":\"data-details2\",\"type\":\"h4\"},{\"id\":\"-hr-BhR-fS8aorDar-0Vz\",\"children\":[{\"id\":\"jNy-sgn-QmfbRSLz30hcz\",\"children\":[{\"id\":\"3vHYGIDcCyUpkQyqbgQeb\",\"children\":[{\"id\":\"2gk3HK0RKUKFSF0tQpsA-\",\"children\":[{\"text\":\"Message\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"6wxJPW2hBRFrSoFN5nBjT\",\"children\":[{\"id\":\"-CX0O_yaJSGQuUIMfnOBZ\",\"children\":[{\"text\":\"Data\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"M57SFDonNhM7QkOpDq7MB\",\"children\":[{\"id\":\"gmbp1w5Bp0a7gb2iu_gMG\",\"children\":[{\"text\":\"Sample\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"_IvwkitlsoVhS12-0Bayq\",\"children\":[{\"id\":\"iEbphEP-Nhm4q83tlDLCI\",\"children\":[{\"id\":\"-5WRgBcNP-wTfMvfBpzvr\",\"children\":[{\"id\":\"G5NyyGuITOF09TyQEg_ps\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_EXIT_ROOM\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"HqWrKX2-C-d5PApx4C7Fy\",\"children\":[{\"id\":\"_3y0mZ95WlC5sdSNc2Ayk\",\"children\":[{\"id\":\"sdpVkyIo21moTFRcAbtAF\",\"children\":[{\"text\":\"result; error_info\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"jIY-uar2zRQW2J4Nedkv2\",\"children\":[{\"id\":\"v9on9G5HXgZXTMJAx3Rtv\",\"children\":[{\"id\":\"CJd0ko2CHrSkHVvtAn4yb\",\"children\":[{\"text\":\"{\\\"error_info\\\":\\\"\\\",\\\"result\\\":0}\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[48,21,31],\"widthMode\":\"percentage\"},{\"id\":\"p2RbMz1F0-OlxnAN6cq0b\",\"children\":[{\"text\":\"Determining whether a user has entered a room\"}],\"nodeId\":\"determining-whether-a-user-has-entered-a-room\",\"type\":\"h3\"},{\"id\":\"iX2_ssF3ZHgOBMNzwiNMs\",\"children\":[{\"text\":\"This API is used to determine whether the user has entered a room. A value in bool type will be returned. Do not call this API during room entry.\"}],\"type\":\"p\"},{\"id\":\"Ap_YXWRpM1V3eQHmTHOE9\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype9\",\"type\":\"h4\"},{\"id\":\"ZnWGqfrPnJkR4eat2lKvj\",\"children\":[{\"id\":\"2ySmsoF7gBztVXEFYBZIU\",\"children\":[{\"text\":\"ITMGContext virtual bool IsRoomEntered()\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"to5Y3GibKSb1JaTytw7RF\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code12\",\"type\":\"h4\"},{\"id\":\"LgSae4RTfTG9_ycQKEOL1\",\"children\":[{\"id\":\"liJ2S2D6xskCNMi3rYP_N\",\"children\":[{\"text\":\"ITMGContext* context = ITMGContextGetInstance();\"}],\"type\":\"code-line\"},{\"id\":\"GcPcz-x8vtcS7GjHSvI4G\",\"children\":[{\"text\":\"context->IsRoomEntered();\"}],\"type\":\"code-line\"},{\"id\":\"5DIhHqC7CgS6PvzAWcrRe\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"wyWdhJP7YROgXfhCn5UZb\",\"children\":[{\"text\":\"Switching room\"}],\"nodeId\":\"switching-room\",\"type\":\"h3\"},{\"id\":\"kPLMJR87DZm8l4YKV9lre\",\"children\":[{\"text\":\"User can call this API to quickly switch the voice chat room after entering the room. After the room is switched, the device is not reset, that is, if the microphone is already enabled in this room, the microphone will keep enabled after the room is switched.\\nThe callback for quickly switching rooms is \"},{\"code\":1,\"text\":\"ITMG_MAIN_EVENT_TYPE.ITMG_MAIN_EVENT_TYPE_SWITCH_ROOM\"},{\"text\":\", and the fields are \"},{\"code\":1,\"text\":\"error_info\"},{\"text\":\" and \"},{\"code\":1,\"text\":\"result\"},{\"text\":\".\"}],\"type\":\"p\"},{\"id\":\"ayl18dy8vUX-Z7_Em2BmB\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype10\",\"type\":\"h4\"},{\"id\":\"cY8xPXCnN4a8i9AdDrqvY\",\"children\":[{\"id\":\"2enISZzbS3t1OZMarwMKE\",\"children\":[{\"text\":\"ITMGContext virtual int SwitchRoom(const char* targetRoomID, const char* authBuff, int buffLen);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"0rIZhChpGwg3IhCo2IE2U\",\"children\":[{\"text\":\"Type descriptions\"}],\"nodeId\":\"type-descriptions\",\"type\":\"h4\"},{\"id\":\"LLoqs5chDxGIO-t6jw-k4\",\"children\":[{\"id\":\"t43VWui1igLc8sDG2PeOx\",\"children\":[{\"id\":\"rplcoM_5AV6IdN14x1S2W\",\"children\":[{\"id\":\"VHtk47CUimV0A6sceDldD\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"lZyLWf7BHG9TCc_-q0SUX\",\"children\":[{\"id\":\"73ka3dQELIZ3LyzqQvevQ\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"aaG_3x1Zs2iJDt3xhn7PV\",\"children\":[{\"id\":\"Kn9uxmpSIZNpx3cXbvndG\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"65u1wn8i9UEe3cFEMmiD3\",\"children\":[{\"id\":\"yE9lAAUCtkVdEuL3pMBvp\",\"children\":[{\"id\":\"HEtPobxuds77Yw9RuCsA1\",\"children\":[{\"id\":\"rF8_69tZNAGKWkDNWUad8\",\"children\":[{\"text\":\"targetRoomID\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"dmXxOXp2Lx7raFiZVodaI\",\"children\":[{\"id\":\"k3_cAEIdH7_3Y-knaIH0L\",\"children\":[{\"id\":\"vCcxVcYWO1-Qrj5h-lIH_\",\"children\":[{\"text\":\"const char*\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"C3bAhU1EaBvv58G7Y64k7\",\"children\":[{\"id\":\"q1xBhijUAhJKLGtUpy9Pc\",\"children\":[{\"id\":\"vS1qliM6H8JdSRFP8bB0Z\",\"children\":[{\"text\":\"ID of the room to enter\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"ryoZVICSlyukiH5fmkY4-\",\"children\":[{\"id\":\"GDKhEouCUWgSRxdCOuapR\",\"children\":[{\"id\":\"qOmzVVEJaKpBz_fKo2KwD\",\"children\":[{\"id\":\"HLA2eIt1xpioXMuS57Hzo\",\"children\":[{\"text\":\"authBuffer\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"UzaOVhzJ7vBrOmYM57SX-\",\"children\":[{\"id\":\"K8gMabPzw4FbL6IxHK0xP\",\"children\":[{\"id\":\"_1S9CL5AKYDA-BaNkJp8c\",\"children\":[{\"text\":\"const char*\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"r_onlzCGUYU3Ya7eQZd_R\",\"children\":[{\"id\":\"GELOODjO6wU0pOSDbKkbT\",\"children\":[{\"id\":\"oswZMLARAl3xTqxkRRagN\",\"children\":[{\"text\":\"Generates a new authentication key with the ID of the room to enter\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"0_rtHF2UhBfdPJysd8tF5\",\"children\":[{\"id\":\"29rkw_MZFJmy9nUBKoZcZ\",\"children\":[{\"id\":\"8LEe4p33No1j0ShnisoLN\",\"children\":[{\"id\":\"XP6sENvC6X8LdY42U5jWu\",\"children\":[{\"text\":\"buffLen\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"op5Xa-ggU_H34lZtKOaRh\",\"children\":[{\"id\":\"rG8MX3rT-pmbZ39OioLyr\",\"children\":[{\"id\":\"dT2CpKhyJ4_CYemgt7YL8\",\"children\":[{\"text\":\"int\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"BGhaFx0p4YxsLmokRzpSy\",\"children\":[{\"id\":\"mPRxUHxOetycTR868CJZn\",\"children\":[{\"id\":\"7Y6VTBgF0qxRqE_QVahMJ\",\"children\":[{\"text\":\"Authentication key length\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[17,15,68],\"widthMode\":\"percentage\"},{\"id\":\"SyS8GsMPLwaVEAxtuzkE3\",\"children\":[{\"text\":\"Room Status Maintenance\"}],\"nodeId\":\"room-status-maintenance\",\"type\":\"h2\"},{\"id\":\"y6zF1Hlqd5TMGO6D40WPw\",\"children\":[{\"text\":\"APIs in this section are used to display speaking members and members entering or exiting the room and mute a member in the room at the business layer.\"}],\"type\":\"p\"},{\"type\":\"p\",\"children\":[{\"text\":\"\"},{\"id\":\"nSWK4LKtYY2y1rf7eNJdC\",\"alt\":\"\",\"children\":[{\"text\":\"\"}],\"inline\":true,\"type\":\"image\",\"url\":\"https://cloudcache.intl.tencent-cloud.com/cms/backend-cms/346e0b7fb34311eeb2a1525400170219.png\",\"naturalSize\":[521,410],\"size\":[521,410]},{\"text\":\"\"}],\"id\":\"2MKB-M8uz3TZ_PTtryTq_\"},{\"id\":\"AUyLvd7nF3QLWkgD8P5M1\",\"children\":[{\"id\":\"lfFq4VegDb0K8zx9NPj0j\",\"children\":[{\"id\":\"uLr2xJ2Yhobse--l2TVCz\",\"children\":[{\"id\":\"ScMlAkIQPbY1v9HGxoKDm\",\"children\":[{\"text\":\"API/Notification\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"frYD7-BGaoOXyKqE_8k5U\",\"children\":[{\"id\":\"sz7HTeD38885RH31-u0wM\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"u5dEy2oCYksCXFAWS49Dh\",\"children\":[{\"id\":\"qUlVeNtVzT9gHN6bV3z7G\",\"children\":[{\"id\":\"xnWj0HWYVOilkZaRYMBkd\",\"children\":[{\"id\":\"CrBOUcRU1PiOy7LPifjbE\",\"children\":[{\"text\":\"ITMG_MAIN_EVNET_TYPE_USER_UPDATE\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"140lW8JxGjlBMwFn_B5ov\",\"children\":[{\"id\":\"R7cXZ8edGvQ8eBXGg82Y2\",\"children\":[{\"id\":\"F8s2VF1mQK9kN06UTZmwV\",\"children\":[{\"text\":\"The member status changed\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"4qkfihJ09YXSCrC9Clm-F\",\"children\":[{\"id\":\"ZBdV6Dojiq7_AlKTOk0nK\",\"children\":[{\"id\":\"4BAfO8vbqJyLIzUUlfxd_\",\"children\":[{\"id\":\"vHpdQLmBnDymvagln_kO_\",\"children\":[{\"text\":\"AddAudioBlackList\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"-JudBF803ZuDpt1ejOBnu\",\"children\":[{\"id\":\"tcIo4K-O2JrG6gkEa6TTk\",\"children\":[{\"id\":\"kiba5Ea6EevWONkZ8pgFs\",\"children\":[{\"text\":\"Mutes a member in the room\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"5I76DrtF2etVcqjsGq-Yn\",\"children\":[{\"id\":\"qCLMe3VwN7A1hgpwCQBcT\",\"children\":[{\"id\":\"PKoMnDzcxodSHTKE_-DNP\",\"children\":[{\"id\":\"rrFvp25Q6D-7uIzzLqtNi\",\"children\":[{\"text\":\"RemoveAudioBlackList\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"6GLW708s_IbsWsij4Sd9Z\",\"children\":[{\"id\":\"LEk8LnlrZ-ekgpEgrLvbh\",\"children\":[{\"id\":\"SAesRaWVoismNVqoJs-fN\",\"children\":[{\"text\":\"Unmutes a user\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[46,54],\"widthMode\":\"percentage\"},{\"id\":\"NNZ8T5D41E6aOGRjOdkns\",\"children\":[{\"text\":\"Notification events of member room entry and speaking status\"}],\"nodeId\":\"notification-events-of-member-room-entry-and-speaking-status\",\"type\":\"h3\"},{\"id\":\"UsF9hDrZpM_YyZdxYLd44\",\"children\":[{\"text\":\"This API is used to obtain the user speaking in the room and display it in the UI, and to send a notification when someone entering or exiting the room.\\nNotification for this event will be sent only when the status changes. To get member status in real time, cache the notification when it is received at a higher layer. The event message is \"},{\"code\":1,\"text\":\"ITMG_MAIN_EVNET_TYPE_USER_UPDATE\"},{\"text\":\", where the data contains \"},{\"code\":1,\"text\":\"event_id\"},{\"text\":\" and \"},{\"code\":1,\"text\":\"user_list\"},{\"text\":\". The event message will be identified in the \"},{\"code\":1,\"text\":\"OnEvent\"},{\"text\":\" function.\\nNotifications for audio events are subject to a threshold, and a notification will be sent only when this threshold is exceeded. The notification \\\"A member has stopped sending audio packets\\\" will be sent if no audio packets are received in more than two seconds.\"}],\"type\":\"p\"},{\"id\":\"xu45IxtU0Z7zOt2oRYXlA\",\"children\":[{\"id\":\"HRkyCW6RcodqIVx1FAGSK\",\"children\":[{\"id\":\"kFXnhwe9LX0LSpT8CmMAG\",\"children\":[{\"id\":\"5-4HexKLxFZzP_p0Eg1r5\",\"children\":[{\"text\":\"event_id\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"p5XblyTp81mtiP4DBXk_y\",\"children\":[{\"id\":\"csj6FZrOW50K8eBh0gfyr\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"VEXcCCx-WxwRPjDeCcHkh\",\"children\":[{\"id\":\"S6cW3J1sxn6ZkI2o-rifv\",\"children\":[{\"text\":\"Maintenance\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"YUXzMw63S3O8dylDklUSI\",\"children\":[{\"id\":\"o9fnOJ8oLCAkW9QEa7CXA\",\"children\":[{\"id\":\"fjiXK393N1K-mIYIa0eGa\",\"children\":[{\"id\":\"DnVCfyhxeiGYsfdbgmC8N\",\"children\":[{\"text\":\"ITMG_EVENT_ID_USER_ENTER\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"zMDKCe9NL43eYdmQJC2UF\",\"children\":[{\"id\":\"TTK2mO3OexCUb7h_I4vCo\",\"children\":[{\"id\":\"KR41bWCvQiqyJkpMYJV6A\",\"children\":[{\"text\":\"Return the \"},{\"code\":1,\"text\":\"openid\"},{\"text\":\" of the member entering the room.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Fy3inIPk1-RccuUBVz1cl\",\"children\":[{\"id\":\"0LUdJ791MX7SmWWyTs1fi\",\"children\":[{\"id\":\"DLcdOK2QHHvCjUYAZwcAu\",\"children\":[{\"text\":\"Member list\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"dz3biB7bzEKBBmzOVO7BB\",\"children\":[{\"id\":\"b9kW8wA1n22PZE3uNuEUR\",\"children\":[{\"id\":\"YlO9OPAm3hV1Is8--U5ft\",\"children\":[{\"id\":\"cKFfQan4u4DvQp9xouyNf\",\"children\":[{\"text\":\"ITMG_EVENT_ID_USER_EXIT\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"uyMPp3jKwXTUDR_-kRi0y\",\"children\":[{\"id\":\"vHb3zfS42z9ch7JZk4VG9\",\"children\":[{\"id\":\"JrlRV5rjNCkqaEkIikKsS\",\"children\":[{\"text\":\"Return the \"},{\"code\":1,\"text\":\"openid\"},{\"text\":\" of the member exiting the room.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"MHnYA8sWXCo5FB6edLf8G\",\"children\":[{\"id\":\"83OSopkXfqYK9M-oHAhy5\",\"children\":[{\"id\":\"MHei6CUsr_iTEf8v1memq\",\"children\":[{\"text\":\"Member list\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"56AsQAvyDsv76B8Msmu0z\",\"children\":[{\"id\":\"UsghywkyMXUFUHxpnOW__\",\"children\":[{\"id\":\"Tv4K0MFOGGEuyWUY9DZFW\",\"children\":[{\"id\":\"0sjYg68j-DZik-AAau1jw\",\"children\":[{\"text\":\"ITMG_EVENT_ID_USER_HAS_AUDIO\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"qT6xaXe2WwR2XT-f2nxUY\",\"children\":[{\"id\":\"RonjymN8yzLy2L3BumKHn\",\"children\":[{\"id\":\"u4NoTKb-vYn6NOTkhSj20\",\"children\":[{\"text\":\"Return the \"},{\"code\":1,\"text\":\"openid\"},{\"text\":\" of the member sending audio packets in the room. This event can be used to determine whether a user is speaking and display the voiceprint effect.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"JDpqJSgOCMXFMAS8grTqh\",\"children\":[{\"id\":\"WCNRyYcBUObrkjT8gWC9e\",\"children\":[{\"id\":\"uUOLkdeEEWciBj-eGAih1\",\"children\":[{\"text\":\"Chat member list\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"wl134H6yjliHQeCqKdUTs\",\"children\":[{\"id\":\"lOandoFb-tOoJT1H2u2LF\",\"children\":[{\"id\":\"_m9g8nE6eKw5VSs9kKvVe\",\"children\":[{\"id\":\"U2zlJT4YCKRF5gKBCxHDW\",\"children\":[{\"text\":\"ITMG_EVENT_ID_USER_NO_AUDIO\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"COSn5wLZCizq6N7csxiPj\",\"children\":[{\"id\":\"MlMEpBBVf85B01UaUTEMM\",\"children\":[{\"id\":\"44Y1fy8CjCLh7vz-Rf_Vn\",\"children\":[{\"text\":\"Return the \"},{\"code\":1,\"text\":\"openid\"},{\"text\":\" of the member stopping sending audio packets in the room.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"6sjt6tNfyv53DJnDC6R7V\",\"children\":[{\"id\":\"SJmsK1Zmm6Osj-P16gg4p\",\"children\":[{\"id\":\"iE35jNrpXYwqQiVhkmQqu\",\"children\":[{\"text\":\"Chat member list\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[30,56,14],\"widthMode\":\"percentage\"},{\"id\":\"mKb-38sJZe89hdpQKryyw\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code13\",\"type\":\"h4\"},{\"id\":\"r0WzBums_79YMCaP0Nuxr\",\"children\":[{\"id\":\"8M5pfOSd4JC_0Hr63HG6C\",\"children\":[{\"text\":\"void TMGTestScene::OnEvent(ITMG_MAIN_EVENT_TYPE eventType,const char* data){\"}],\"type\":\"code-line\"},{\"id\":\"Sk7vXiuyJaftx_Sw62rhh\",\"children\":[{\"text\":\" switch (eventType) {\"}],\"type\":\"code-line\"},{\"id\":\"dU4L1cyQ1zbs_urZ4WfOc\",\"children\":[{\"text\":\" case ITMG_MAIN_EVNET_TYPE_USER_UPDATE:\"}],\"type\":\"code-line\"},{\"id\":\"3HNmPA0NuyLzQKXIAQWF2\",\"children\":[{\"text\":\" {\"}],\"type\":\"code-line\"},{\"id\":\"Pl0baG3474USwqdXn9rHM\",\"children\":[{\"text\":\" // Process\"}],\"type\":\"code-line\"},{\"id\":\"RYCNR7S3mkYr3kPtIZJ0L\",\"children\":[{\"text\":\" // Parse the parameter to get `eventID` and `user_list`\"}],\"type\":\"code-line\"},{\"id\":\"iLEt3eJNRSZZi_BHZveiU\",\"children\":[{\"text\":\" switch (eventID)\"}],\"type\":\"code-line\"},{\"id\":\"mRPOE0vBGsKrRUJJQxUI_\",\"children\":[{\"text\":\" {\"}],\"type\":\"code-line\"},{\"id\":\"ZQx5ZzVcIGNaHhHMUXn3Q\",\"children\":[{\"text\":\" case ITMG_EVENT_ID_USER_ENTER:\"}],\"type\":\"code-line\"},{\"id\":\"__6ooCy04IX42pwrX1R_E\",\"children\":[{\"text\":\" // A member enters the room\"}],\"type\":\"code-line\"},{\"id\":\"AdkvQkM4nuhq2L0dS5f9D\",\"children\":[{\"text\":\" break;\"}],\"type\":\"code-line\"},{\"id\":\"MVlRsAghcES8jgrv6OcR6\",\"children\":[{\"text\":\" case ITMG_EVENT_ID_USER_EXIT:\"}],\"type\":\"code-line\"},{\"id\":\"cQbqt05JaQPCHfGvC7Ndm\",\"children\":[{\"text\":\" // A member exits the room\"}],\"type\":\"code-line\"},{\"id\":\"YvscQU02yCegCsEJ3kVdk\",\"children\":[{\"text\":\" break;\"}],\"type\":\"code-line\"},{\"id\":\"T_5xJ4I-xSapfg28nDTle\",\"children\":[{\"text\":\" case ITMG_EVENT_ID_USER_HAS_AUDIO:\"}],\"type\":\"code-line\"},{\"id\":\"FjulNq6IO45IqOdFURD5n\",\"children\":[{\"text\":\" // A member sends audio packets\"}],\"type\":\"code-line\"},{\"id\":\"_FBQw3np4tLSVA8eSw362\",\"children\":[{\"text\":\" break;\"}],\"type\":\"code-line\"},{\"id\":\"RuEy_i8sg5Gp3G1upb7oH\",\"children\":[{\"text\":\" case ITMG_EVENT_ID_USER_NO_AUDIO:\"}],\"type\":\"code-line\"},{\"id\":\"nxurSfAPNqMg9SRGzFTdx\",\"children\":[{\"text\":\" // A member stops sending audio packets\"}],\"type\":\"code-line\"},{\"id\":\"76ul-fwlbXgd60MQI9TN8\",\"children\":[{\"text\":\" break;\"}],\"type\":\"code-line\"},{\"id\":\"9FrZJVMjcaM58D2LnuqjP\",\"children\":[{\"text\":\" default:\"}],\"type\":\"code-line\"},{\"id\":\"1JXiYA6XnhvwWYmgoOBpz\",\"children\":[{\"text\":\" break;\"}],\"type\":\"code-line\"},{\"id\":\"Gl4yejxmkhgG_ps16QzxJ\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"KG8ilkkD3oY5VHoUngFJX\",\"children\":[{\"text\":\" break;\"}],\"type\":\"code-line\"},{\"id\":\"mEdd1DDQTc5QkkirEBxDl\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"WeFNHFrQPSb7JPXy8ao2z\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"3_MES-LngERFdrZ3U8nhd\",\"children\":[{\"text\":\"}\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"Gf2fttEI42A7yhKrJ_z8D\",\"children\":[{\"text\":\"Muting a member in the room\"}],\"nodeId\":\"muting-a-member-in-the-room\",\"type\":\"h3\"},{\"id\":\"D0-La1fMS2oz1MHuW1VpF\",\"children\":[{\"text\":\"This API is used to add an ID to the audio data blocklist. This operation blocks audio from someone and only applies to the local device without affecting other devices. The returned value \"},{\"code\":1,\"text\":\"0\"},{\"text\":\" indicates that the call is successful. Assume that users A, B, and C are all speaking using their mic in a room: \"}],\"type\":\"p\"},{\"id\":\"qv92MM25bJ4TUgo_WNp2E\",\"children\":[{\"text\":\"If A blocks C, A can only hear B;\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"E2A7WnNu5JFzYyCFxfIZH\",\"children\":[{\"text\":\"If B blocks neither A nor C, B can hear both of them;\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"dtpSuae2W9Ie5JJ1GbbeQ\",\"children\":[{\"text\":\"If C blocks neither A nor B, C can hear both of them.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"FZ8oBnzIQo8y8OJ2Yfv35\",\"children\":[{\"text\":\"This API is suitable for scenarios where a user is muted in a room.\"}],\"type\":\"p\"},{\"id\":\"bMLnehoM8OEetXDBeqHVE\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype11\",\"type\":\"h4\"},{\"id\":\"mcKqn_EG2SSgGvqb7M3CQ\",\"children\":[{\"id\":\"EA5yUZpFDjVIV0Pz2BwqX\",\"children\":[{\"text\":\"ITMGContext ITMGAudioCtrl int AddAudioBlackList(const char* openId)\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"b4pzZeGcuRdCJRIyxoZ6e\",\"children\":[{\"id\":\"UQ8BoJrFWaNfGW1x-w86_\",\"children\":[{\"id\":\"KFJBEDrT3Maf52OpvufJM\",\"children\":[{\"id\":\"NwalEvWBpxpNXTj626b_4\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"MFV5JsVGaPjYcDvJE2gAc\",\"children\":[{\"id\":\"Sp-LJ2qjQTwaf3wQ6izdO\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"kaDqcn83ycRkE9vGPvY9h\",\"children\":[{\"id\":\"maP9o-tMO3aGYUyDoyFnw\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"98RR1UXifnovp5FavNv5T\",\"children\":[{\"id\":\"FryuxmbeyPkR5lSb__EeG\",\"children\":[{\"id\":\"Ld8qip4RW8VNdzFJzXM07\",\"children\":[{\"id\":\"HJz96TqSnBgLSuV429dcG\",\"children\":[{\"text\":\"openId\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"JQiPHQk2UpcGofFgOiHI-\",\"children\":[{\"id\":\"hUls7ayvcATSnSIWPEvZ_\",\"children\":[{\"id\":\"YG6ODyS2u7DJ0a2UpVu2M\",\"children\":[{\"text\":\"char*\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ENWAqWpVpKAg6uVnfqDIi\",\"children\":[{\"id\":\"DFuIJVO5g0sSV4eKS6olw\",\"children\":[{\"id\":\"0m00ECfoTU5gf1qCJqV6O\",\"children\":[{\"code\":1,\"text\":\"openid\"},{\"text\":\" of the user to be blocked\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[23,15,62],\"widthMode\":\"percentage\"},{\"id\":\"olmmqBRnc09NLHKqNPhT5\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code14\",\"type\":\"h4\"},{\"id\":\"Oii9PqoTbOhDVept8GO8i\",\"children\":[{\"id\":\"S_FCuS6r9R3XlZyBH2QvM\",\"children\":[{\"text\":\"ITMGContextGetInstance()->GetAudioCtrl()->AddAudioBlackList(openId);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"IT5yyGzEcRDEW2Fz0oBGL\",\"children\":[{\"text\":\"Unmuting\"}],\"nodeId\":\"unmuting\",\"type\":\"h3\"},{\"id\":\"jj0ApKtnH_kuHqSEr7heh\",\"children\":[{\"text\":\"This API is used to remove an ID from the audio data blacklist. A returned value of 0 indicates the call is successful.\"}],\"type\":\"p\"},{\"id\":\"DUDNI-yC4Q9gzzp6eNjBP\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype12\",\"type\":\"h4\"},{\"id\":\"yHkBPPhNq6dOTZ6-6rz7U\",\"children\":[{\"id\":\"MXCh5HDOAvBmlrIwV9RJC\",\"children\":[{\"text\":\"ITMGContext ITMGAudioCtrl int RemoveAudioBlackList(const char* openId)\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"A4c1zbxjgPpuadz449J4d\",\"children\":[{\"id\":\"ieof8ou4cBxRs_cVC_9Wz\",\"children\":[{\"id\":\"J22VUWEQZGZ559531dOVk\",\"children\":[{\"id\":\"_DkzCzQDAF0ktgWcikPDM\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"FTVDAFoejh-hgC42_6nFi\",\"children\":[{\"id\":\"Po9xfLJBOP6SSbHvj-rFO\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"7VMZNukpVIuuyHZDhBDue\",\"children\":[{\"id\":\"Dkg0FZVDh3Z10yoALgROj\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"VlNq-QMwD7iBzIEKMpW6d\",\"children\":[{\"id\":\"vYXnHvOjCHC61uxh-F3tZ\",\"children\":[{\"id\":\"_578ynoZwMCTKXoY87d0d\",\"children\":[{\"id\":\"4PsDaZrG4bgiUy5wJPsyN\",\"children\":[{\"text\":\"openId\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Q4lf9ufLedaxPSxtwoNpp\",\"children\":[{\"id\":\"hzBtouh9SPYlHySUK-zD5\",\"children\":[{\"id\":\"YDlMpALVml_aXkSHacN7d\",\"children\":[{\"text\":\"char*\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"5eE3KDc-VEi5ApR4hRhy7\",\"children\":[{\"id\":\"iefF6SnQQFl5QVv1gZ-gV\",\"children\":[{\"id\":\"QCgciy96t7a9oYGZd-Ia-\",\"children\":[{\"text\":\"ID to be unblocked\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[31,20,49],\"widthMode\":\"percentage\"},{\"id\":\"zCsPTgUcDgGp3lTSLXmNu\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code15\",\"type\":\"h4\"},{\"id\":\"z-AaOdGzFmhEBRyDxalMH\",\"children\":[{\"id\":\"nAfkHKGGf8AU15cZk_GG2\",\"children\":[{\"text\":\"ITMGContextGetInstance()->GetAudioCtrl()->RemoveAudioBlackList(openId);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"kKXVNkzOaXYPLtDGg5mFd\",\"children\":[{\"text\":\"Voice Chat Capturing APIs\"}],\"nodeId\":\"voice-chat-capturing-apis\",\"type\":\"h2\"},{\"id\":\"pECbLYvr1WuEAsNveC7pk\",\"children\":[{\"text\":\"The voice chat APIs can only be called after SDK initialization and room entry.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"To9kPJ-BRY1QIN12TgqWA\",\"children\":[{\"text\":\"When the user clicks the button of enabling/disabling the mic or speaker on the UI, we recommend you call the \"},{\"code\":1,\"text\":\"EnableMic\"},{\"text\":\" or \"},{\"code\":1,\"text\":\"EnableSpeaker\"},{\"text\":\" API.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"YUP-1szuJsVxPrOE7MDGt\",\"children\":[{\"text\":\"To enable the user to press the mic button on the UI to speak and release it to stop speaking, we recommend you call \"},{\"code\":1,\"text\":\"EnableAudioCaptureDevice\"},{\"text\":\" once during room entry and call \"},{\"code\":1,\"text\":\"EnableAudioSend\"},{\"text\":\" to enable the user to speak while pressing the button.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"hpWVZBQHOTXTcyl_q2D58\",\"children\":[{\"id\":\"qdDO43TcfUS78wzlyXzLg\",\"children\":[{\"id\":\"MuiQNpEfIVgVbsFd3UYcz\",\"children\":[{\"id\":\"5qi4nvzdcKGkqx3JYFqh4\",\"children\":[{\"text\":\"API\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"xe1HGMguijRqzzWlZKfqE\",\"children\":[{\"id\":\"XmScDvdxmQFWUnAmP_IEN\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"NSZsf_QhSIK9304BFUsmG\",\"children\":[{\"id\":\"X2s7QZxe6rtDEk6bP_OiV\",\"children\":[{\"id\":\"GhyNJVbA3rinduodsIou7\",\"children\":[{\"id\":\"ML_ZImE7jYAuaAN2OEmWP\",\"children\":[{\"text\":\"EnableMic\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Cdz5XCW2j6G86kWB8Rpq-\",\"children\":[{\"id\":\"P9EP-utz09BQNmpypzgsW\",\"children\":[{\"id\":\"pO-OKHyMXdn0dwCBBPzju\",\"children\":[{\"text\":\"Enables/Disables the mic\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"GkwLkBlm1vcWzchnlLyO4\",\"children\":[{\"id\":\"JQwicxAW3ojEU-7rjqIzK\",\"children\":[{\"id\":\"Ohde8fcdUpgQ29N_64QCC\",\"children\":[{\"id\":\"tHGpCODwcOuzd5hTwZu5x\",\"children\":[{\"text\":\"GetMicState\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"JfWpg5rsqyOfVW2IwVaNO\",\"children\":[{\"id\":\"r0xXwADJmoMN62tKFTbNY\",\"children\":[{\"id\":\"YYyF01Dn6Vf25yCOUI6z9\",\"children\":[{\"text\":\"Gets the mic status\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"QYtFFlzdzMweJOVCbp4Ex\",\"children\":[{\"id\":\"gVGKaG5tsh5KuQCusE25f\",\"children\":[{\"id\":\"iPkuEcafa0FE-P3UV1avB\",\"children\":[{\"id\":\"qAqk95nFDz7HMTbm4xoD3\",\"children\":[{\"text\":\"EnableAudioCaptureDevice\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"saOe_93A69ljj-Jh9XzAq\",\"children\":[{\"id\":\"2p3HP7aeWnmtMBU1p70od\",\"children\":[{\"id\":\"IaM5qYBfd6O1N0pspKDyC\",\"children\":[{\"text\":\"Enables/Disables the capturing device\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"a2G-kU_yRI3ut0AEwLC1N\",\"children\":[{\"id\":\"c5iUklEDm6vMR4Bypw2cS\",\"children\":[{\"id\":\"aUXGEQi0h4mUk60S0HL90\",\"children\":[{\"id\":\"RAMiskACGs-G6Ik0KuFw-\",\"children\":[{\"text\":\"IsAudioCaptureDeviceEnabled\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"pHSQ1FS_46aC0a0khwyQK\",\"children\":[{\"id\":\"xX2jdc9RO64sP-fNBHtOl\",\"children\":[{\"id\":\"MHJT6vc2Jn8lYfcMNuR6h\",\"children\":[{\"text\":\"Gets the capturing device status\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"auL0vrO3UrgKzxE5pMmZH\",\"children\":[{\"id\":\"NTqOkcfuNKoBvlj9Qv9tD\",\"children\":[{\"id\":\"lc5KkHBXn38O2hzi-Y5eG\",\"children\":[{\"id\":\"tzFHlwL8iEw9s9u1VPfnd\",\"children\":[{\"text\":\"EnableAudioSend\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"YkWTAFFNIpgELN78UnOtK\",\"children\":[{\"id\":\"UUG9l5OcnDf5FgMYSw-eB\",\"children\":[{\"id\":\"WZKXtHD_V7kRGhkUes9rA\",\"children\":[{\"text\":\"Enables/Disables audio upstreaming\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"Oy_GMq8rFsURURx0me0hw\",\"children\":[{\"id\":\"TNfZgFalk3kae4Adn49yQ\",\"children\":[{\"id\":\"jb--jpLbrWI0oux3Y818N\",\"children\":[{\"id\":\"KLMb2oGyjkrtNjV0cDonw\",\"children\":[{\"text\":\"IsAudioSendEnabled\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"2sQoUNm5GqZB6pl5gxmiQ\",\"children\":[{\"id\":\"zYnTQ2JjTom5uCv5DZuyv\",\"children\":[{\"id\":\"ziurz-10LzrZNUoZZsMkC\",\"children\":[{\"text\":\"Gets the audio upstreaming status\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"nZplN8C5Rh2Glc-gXgrK5\",\"children\":[{\"id\":\"ZWe37DU0s-N1ZS12ZyaIH\",\"children\":[{\"id\":\"o0ndtoPz1rC8S-nrtiJ2j\",\"children\":[{\"id\":\"iSbmY2y0RP1Emu_PrNnmR\",\"children\":[{\"text\":\"GetMicLevel\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ApFJJ4gh6GZiqaCmSrwqG\",\"children\":[{\"id\":\"84VyYxWeX3jxeg78l6FjV\",\"children\":[{\"id\":\"lGPixBr711pS5RaeBRxcI\",\"children\":[{\"text\":\"Gets the real-time mic volume level\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"0-EotJEVCRI-Nsu1CZHHQ\",\"children\":[{\"id\":\"4uZP4hP0IYEYF3nWms9Ys\",\"children\":[{\"id\":\"yLRcBZthZaPFnF2QcD653\",\"children\":[{\"id\":\"iu7ktBUgKsK9hC5zAIUrk\",\"children\":[{\"text\":\"GetSendStreamLevel\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"1U_OPmMIosKLG5xh51SNr\",\"children\":[{\"id\":\"78OZCKoOwFw3xkjVPZiIr\",\"children\":[{\"id\":\"YQQdEXF7DWJ4fBpyag2u-\",\"children\":[{\"text\":\"Gets real-time audio upstreaming volume\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"KAs-vNsOUvYhphBH_c2wg\",\"children\":[{\"id\":\"suYWXJSUVF0CZGrAAaLwF\",\"children\":[{\"id\":\"Yp7HCkwOuQKGKMvrNqQPp\",\"children\":[{\"id\":\"XPjW41E1O02o0oEsHlBrB\",\"children\":[{\"text\":\"SetMicVolume\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"tHCAstr17D93rVNNjGeLj\",\"children\":[{\"id\":\"KyO0yn3Hfj70gh8sJSCcy\",\"children\":[{\"id\":\"m39F2JbRUiYRhoxxklT9j\",\"children\":[{\"text\":\"Sets the mic volume level\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"Zz4LdowlzGTSScUcailSK\",\"children\":[{\"id\":\"cud6OLEOaoxGmq6KY5fCN\",\"children\":[{\"id\":\"1hPjuU834t2iqe3CKxQys\",\"children\":[{\"id\":\"tNTgV2LXPwLmFoYAfkPow\",\"children\":[{\"text\":\"GetMicVolume\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"G6FaDbY6nKScEWp_ivzAI\",\"children\":[{\"id\":\"a11K3uRjPq4A9O1Nddpt3\",\"children\":[{\"text\":\"Gets the mic volume level\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[43,57],\"widthMode\":\"percentage\"},{\"id\":\"YxTkB7BEYo96q4dZALFK5\",\"children\":[{\"text\":\"Enabling or disabling mic\"}],\"nodeId\":\"enabling-or-disabling-mic\",\"type\":\"h3\"},{\"id\":\"-rtzo3jIoLtHliS5aiVA2\",\"children\":[{\"text\":\"This API is used to enable/disable the mic. The mic and speaker are not enabled by default after room entry. \"},{\"b\":1,\"text\":\"EnableMic = EnableAudioCaptureDevice + EnableAudioSend\"}],\"nodeId\":\"EnableMic\",\"type\":\"p\"},{\"id\":\"Y6HCHMOc7UUm8jqYzp_l7\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype13\",\"type\":\"h4\"},{\"id\":\"tPun96BdRj1OZJq04zaFf\",\"children\":[{\"id\":\"VJ52-QriWy8UfBtas9Pww\",\"children\":[{\"text\":\"ITMGAudioCtrl virtual int EnableMic(bool bEnabled)\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"fi6PyqnnshwKMg20z4hnE\",\"children\":[{\"id\":\"uymjc0TkqT2yRCbrmhvgR\",\"children\":[{\"id\":\"NE89HADnn6AhIjsR-bRhp\",\"children\":[{\"id\":\"N-DQex8KFJ7W750K5mkhE\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"S55RQj32HSc3l5fLv9ESw\",\"children\":[{\"id\":\"8CXedJgOqRO2xD6ZNPcse\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"acDPNsZG_VIiKXTSWlyKt\",\"children\":[{\"id\":\"5dFnlVwpVMSt8niqTtWNl\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"8AJe7W4otnWfWDDeHd0DS\",\"children\":[{\"id\":\"M4oNJ7dKEhmqHjSoJHZ_P\",\"children\":[{\"id\":\"I7-iW3TWPiZlvWXyk2qE1\",\"children\":[{\"id\":\"NiAW2ZsO8D3vDV3oV8SAE\",\"children\":[{\"text\":\"bEnabled\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"EquBLuXujWaz1eqxldhIS\",\"children\":[{\"id\":\"nUguJbn8PZPiuYr_SPP1w\",\"children\":[{\"id\":\"vFgwsbK5K7ttqM2MhFjT7\",\"children\":[{\"text\":\"bool\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"M8TEucro-PlGpSnHcD-aD\",\"children\":[{\"id\":\"M9kMb7VpM3-wa8daYpozP\",\"children\":[{\"id\":\"zobHs4LQrDnL7y-9_aqHP\",\"children\":[{\"text\":\"To enable the mic, set this parameter to \"},{\"code\":1,\"text\":\"true\"},{\"text\":\", otherwise, set it to \"},{\"code\":1,\"text\":\"false\"},{\"text\":\".\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[14,9,77],\"widthMode\":\"percentage\"},{\"id\":\"ggQh4dchc44CLYCdbcllh\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code16\",\"type\":\"h4\"},{\"id\":\"DEjYAH3eblQTdg-e4SZ-z\",\"children\":[{\"id\":\"v29zM-iS5bVoGXikld1wh\",\"children\":[{\"text\":\"// Enable mic\"}],\"type\":\"code-line\"},{\"id\":\"hv3wwoLkqEnlgwiv-Ddua\",\"children\":[{\"text\":\"ITMGContextGetInstance()->GetAudioCtrl()->EnableMic(true);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"i6KZXp_JgDaklKdFAnMUe\",\"children\":[{\"text\":\"Getting the mic status\"}],\"nodeId\":\"getting-the-mic-status\",\"type\":\"h3\"},{\"id\":\"DIqpOXZpf1OLI18ZVWG7X\",\"children\":[{\"text\":\"This API is used to get the mic status. The returned value 0 indicates that the mic is off, while 1 is on.\"}],\"type\":\"p\"},{\"id\":\"A9J1Xn7DhIRviLHbr2dEp\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype14\",\"type\":\"h4\"},{\"id\":\"TiokXvoLNYUi-_zBeHp5a\",\"children\":[{\"id\":\"sYhP20Nc7Zl-iknD2rGVQ\",\"children\":[{\"text\":\"ITMGAudioCtrl virtual int GetMicState()\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"KMRjaO1QBOjlTAFvcOXKv\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code17\",\"type\":\"h4\"},{\"id\":\"ULyhnHao2OPv6VdpRqjSV\",\"children\":[{\"id\":\"pVoJduAzV5NHz76Glw7g8\",\"children\":[{\"text\":\"ITMGContextGetInstance()->GetAudioCtrl()->GetMicState();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"y4luDf1SZBu_L5AENFpA1\",\"children\":[{\"text\":\"Enabling or disabling capturing device\"}],\"nodeId\":\"enabling-or-disabling-capturing-device\",\"type\":\"h3\"},{\"id\":\"SUVdM7HwKi5yTao5gmbgZ\",\"children\":[{\"text\":\"This API is used to enable/disable a capturing device. The device is not enabled by default after room entry.\"}],\"type\":\"p\"},{\"id\":\"TEMbIJxqElJf63kZPO1Th\",\"children\":[{\"text\":\"This API can only be called after room entry. The device will be disabled automatically after room exit.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"dbVAzAOgzkFRK6F150SFG\",\"children\":[{\"text\":\"Operations such as permission application and volume type adjustment will generally be performed when a capturing device is enabled on a mobile device.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"50l5iRVqPKIOYDt8399IC\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype15\",\"type\":\"h4\"},{\"id\":\"sEKdUoTDCe5-8r3LSE6rP\",\"children\":[{\"id\":\"UjHBinU3I_QG_Mthc864P\",\"children\":[{\"text\":\"ITMGAudioCtrl virtual int EnableAudioCaptureDevice(bool enable)\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"sWEhgBQZ0dRVaIrp9KPSQ\",\"children\":[{\"id\":\"IOIxSM-gRCRwTAfnYe7Xc\",\"children\":[{\"id\":\"cOlvdOy0yZAFREwanqSWL\",\"children\":[{\"id\":\"i6BYLG5-LVNnSo2WL367N\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"S6hdGNu_dmhdyirygCN8z\",\"children\":[{\"id\":\"_vsD1zvmcv2qgfYnQcYqO\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"qC9H1yKrXgQHj-4lPLC4f\",\"children\":[{\"id\":\"zTPnLkIvcoKQNCBStWEaT\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"x5tyTm-90rMtSTsD8G02Z\",\"children\":[{\"id\":\"6tGCPvWIu7TLxphw5Z8QX\",\"children\":[{\"id\":\"NBLOdlMxr4hM6vCaJLxrt\",\"children\":[{\"id\":\"hmndum6tUBTIlRkG3A1KF\",\"children\":[{\"text\":\"enable\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"QmbZ8srOFNBaI6IL5Hda8\",\"children\":[{\"id\":\"_yta3BXQFCWgVlqrT2g_h\",\"children\":[{\"id\":\"we7DLc5KS-KaZFstMozeg\",\"children\":[{\"text\":\"bool\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ebWf2NcTwDQtdmc9sxKwz\",\"children\":[{\"id\":\"aXlHf8oWObtILj5OrK-X5\",\"children\":[{\"id\":\"IKSiyFk03yngK1cT3oOBN\",\"children\":[{\"text\":\"To enable the capturing device, set this parameter to \"},{\"code\":1,\"text\":\"true\"},{\"text\":\", otherwise, set it to \"},{\"code\":1,\"text\":\"false\"},{\"text\":\".\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[13,8,79],\"widthMode\":\"percentage\"},{\"id\":\"DFpKLCKKJ2onvfKO62g_z\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code18\",\"type\":\"h4\"},{\"id\":\"xOQTQCku0Y9NdGS6IVbPX\",\"children\":[{\"id\":\"gfrQHsx3jjTR0y1KtGrAL\",\"children\":[{\"text\":\"// Enable capturing device\"}],\"type\":\"code-line\"},{\"id\":\"fsBKMh3-P1dFZuQix6Gds\",\"children\":[{\"text\":\"ITMGContextGetInstance()->GetAudioCtrl()->EnableAudioCaptureDevice(true);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"Uuuai36NQ5Omh2Pt1CIac\",\"children\":[{\"text\":\"Getting the capturing device status\"}],\"nodeId\":\"getting-the-capturing-device-status\",\"type\":\"h3\"},{\"id\":\"qY4cbBOlxqyTsf8TatflY\",\"children\":[{\"text\":\"This API is used to get the status of a capturing device.\"}],\"type\":\"p\"},{\"id\":\"skpm0dTsvIiCU3A0_a7K3\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype16\",\"type\":\"h4\"},{\"id\":\"R93UIs2CPEmTS11_DrdNl\",\"children\":[{\"id\":\"X3ATK4uXH9R51SS1H9svN\",\"children\":[{\"text\":\"ITMGContext virtual bool IsAudioCaptureDeviceEnabled()\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"ve2SVF7Q6rHp8assORnaX\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code19\",\"type\":\"h4\"},{\"id\":\"Q6CKa7VPvAttQaQzpjjEw\",\"children\":[{\"id\":\"u5c2Zk_oZBYzKzK2xbUot\",\"children\":[{\"text\":\"ITMGContextGetInstance()->GetAudioCtrl()->IsAudioCaptureDeviceEnabled();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"6Wh92hFpBJnOGtbc5TkCZ\",\"children\":[{\"text\":\"Enabling or disabling audio upstreaming\"}],\"nodeId\":\"enabling-or-disabling-audio-upstreaming\",\"type\":\"h3\"},{\"id\":\"FzkeyYpsNLKG87ruwOcnm\",\"children\":[{\"text\":\"This API is used to enable/disable audio upstreaming. If a capturing device is already enabled, it will send captured audio data; otherwise, it will remain mute. For more information on how to enable/disable the capturing device, please see the \"},{\"code\":1,\"text\":\"EnableAudioCaptureDevice\"},{\"text\":\" API.\"}],\"type\":\"p\"},{\"id\":\"1z5tbckvQweF6oo70gQE-\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype17\",\"type\":\"h4\"},{\"id\":\"lTJExXbIjopAstIYiQ_n1\",\"children\":[{\"id\":\"qg4-TrHywRv2bVOcjpFyy\",\"children\":[{\"text\":\"ITMGContext virtual int EnableAudioSend(bool bEnable)\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"mrRdF8fH6U2n1d5-wdpWw\",\"children\":[{\"id\":\"lAeStcdAsF9gHMcKa6t5D\",\"children\":[{\"id\":\"MwkETlw7gG9Fbt5FrbRVu\",\"children\":[{\"id\":\"CQMaPnhk2C2FH-59EkYdB\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"x9JJ-fFYLbtvd5ZpntMnj\",\"children\":[{\"id\":\"IkGyw3-USLGRdTVpPv289\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"e0EwJNmBqy1y179AzLuxy\",\"children\":[{\"id\":\"DXOuKV7WSrdDMGZ8TOeUe\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"ovSs74XPR2X3oXY8U2Je8\",\"children\":[{\"id\":\"iQN8UKp97ANhbASdJkEZE\",\"children\":[{\"id\":\"c9bSRVHMPGKriaBaPKRJW\",\"children\":[{\"id\":\"o9c5MZfgbKlgpyUUcRbP7\",\"children\":[{\"text\":\"bEnable\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"q-C4ucAR2k7m-qci_77tC\",\"children\":[{\"id\":\"cxPDyd3QfpA5BnJWN3HEM\",\"children\":[{\"id\":\"dxxau5lMMXMCalBX3buo5\",\"children\":[{\"text\":\"bool\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"CSsc4SV2S5dRHRAF5mZ3o\",\"children\":[{\"id\":\"EAMzXaowTQ35UpQ4myiYO\",\"children\":[{\"id\":\"Vpw3iKf0nYyDJGjuCGjSe\",\"children\":[{\"text\":\"To enable audio upstreaming, set this parameter to \"},{\"code\":1,\"text\":\"true\"},{\"text\":\"; otherwise, set it to \"},{\"code\":1,\"text\":\"false\"},{\"text\":\".\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[13,8,79],\"widthMode\":\"percentage\"},{\"id\":\"WHHVMYXrVEI2B4BJonCgL\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code20\",\"type\":\"h4\"},{\"id\":\"0lT6SSKLZh0zZ08APLLip\",\"children\":[{\"id\":\"S2eSmBYcC0aeakGbQn1MO\",\"children\":[{\"text\":\"ITMGContextGetInstance()->GetAudioCtrl()->EnableAudioSend(true);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"D_04pMgRyGR7B8bssahjw\",\"children\":[{\"text\":\"Getting audio upstreaming status\"}],\"nodeId\":\"getting-audio-upstreaming-status\",\"type\":\"h3\"},{\"id\":\"nS237HRPpa2y0kjkYO8uE\",\"children\":[{\"text\":\"This API is used to get the status of audio upstreaming.\"}],\"type\":\"p\"},{\"id\":\"oKnTwObZCIg--sFBU2dBP\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype18\",\"type\":\"h4\"},{\"id\":\"_Dn_zYolU2ac1qg3XtEg8\",\"children\":[{\"id\":\"k4EWk_cpDNAAL3-HnZGJf\",\"children\":[{\"text\":\"ITMGContext virtual bool IsAudioSendEnabled()\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"TDc8t9tOdb-ytgBJr98X6\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code21\",\"type\":\"h4\"},{\"id\":\"tiniev23AoTXYJ0YXcMkQ\",\"children\":[{\"id\":\"ivqjDUbMZ1aFj3HHUe-OJ\",\"children\":[{\"text\":\"ITMGContextGetInstance()->GetAudioCtrl()->IsAudioSendEnabled();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"R1OCSlT5SWwrpAdEB_Say\",\"children\":[{\"text\":\"Getting the real-time mic volume\"}],\"nodeId\":\"getting-the-real-time-mic-volume\",\"type\":\"h3\"},{\"id\":\"EO6puGWNX0W4swwYgvJzn\",\"children\":[{\"text\":\"This API is used to get the real-time mic volume. An int-type value in the range of 0-100 will be returned. It is recommended to call this API once every 20 ms.\"}],\"type\":\"p\"},{\"id\":\"j5g86DTg7os7mo8a14tUD\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype19\",\"type\":\"h4\"},{\"id\":\"zK_BcyOrcjocWamkCrdEI\",\"children\":[{\"id\":\"hhtGvP60HXwYeiJtg-0aP\",\"children\":[{\"text\":\"ITMGAudioCtrl virtual int GetMicLevel()\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"aFcFfXNex2TxSRvwvBmQ0\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code22\",\"type\":\"h4\"},{\"id\":\"XpHvJOJKfy9WZGaTvkdBh\",\"children\":[{\"id\":\"w-H9P3oZ1cE6zaDSYR5o9\",\"children\":[{\"text\":\"ITMGContextGetInstance()->GetAudioCtrl()->GetMicLevel();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"VBLg39ME_0LehQIvkAxTX\",\"children\":[{\"text\":\"Getting the real-time audio upstreaming volume\"}],\"nodeId\":\"getting-the-real-time-audio-upstreaming-volume\",\"type\":\"h3\"},{\"id\":\"nt_Bkr709LTwKxplK97vN\",\"children\":[{\"text\":\"This API is used to get the local real-time audio upstreaming volume. An int-type value in the range of 0-100 will be returned.\"}],\"type\":\"p\"},{\"id\":\"M9ivQ_upcBy3W0h5Gn-OU\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype20\",\"type\":\"h4\"},{\"id\":\"fSDie8IBukOuruRUN3Nx7\",\"children\":[{\"id\":\"AIdU7Yp5Lab2bJfKbBVIY\",\"children\":[{\"text\":\"ITMGAudioCtrl virtual int GetSendStreamLevel()\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"ep7grF2CzRNpA0HjePOj1\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code23\",\"type\":\"h4\"},{\"id\":\"f1bruW1x0YQZao7am2n-s\",\"children\":[{\"id\":\"0MT91tniCKTQEIFkxgrd-\",\"children\":[{\"text\":\"ITMGContextGetInstance()->GetAudioCtrl()->GetSendStreamLevel();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"yKfwJ-qjfindZOusFPRYV\",\"children\":[{\"text\":\"Setting the mic software volume\"}],\"nodeId\":\"setting-the-mic-software-volume\",\"type\":\"h3\"},{\"id\":\"EVK3o2SDGCG6xCCKU_uUQ\",\"children\":[{\"text\":\"This API is used to set the mic volume level. The corresponding parameter is \"},{\"code\":1,\"text\":\"volume\"},{\"text\":\", which is equivalent to attenuating or gaining the captured sound.\"}],\"type\":\"p\"},{\"id\":\"iKgef8uAuqmJyt7pxS_zM\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype21\",\"type\":\"h4\"},{\"id\":\"lQNueu9gQ-epQs7h0ENQW\",\"children\":[{\"id\":\"2Zy17o4n0ZEJZ63Og5N-m\",\"children\":[{\"text\":\"ITMGAudioCtrl virtual int SetMicVolume(int vol)\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"DqZc1OTJvko0AlkyZqQ-9\",\"children\":[{\"id\":\"3X8iZVUspDurdpibfjSwu\",\"children\":[{\"id\":\"s5RSIBIUzDqYx3IXFq5i6\",\"children\":[{\"id\":\"z2BZ1UVfCtbDfwCtKAVPp\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"W1YdtNI-zWEl1mpG0GZGT\",\"children\":[{\"id\":\"hHn32kMDzHwtjaHEx_8eW\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"WSLi3_N_CknisJboBskrF\",\"children\":[{\"id\":\"4GC95lzRo0k7d8DIoxNcL\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"_avb1xNvBZYt6zigB8MY6\",\"children\":[{\"id\":\"7OalCvX3iOwDBIBFireXI\",\"children\":[{\"id\":\"jVuBilbjDkH0fzX0XMH8Z\",\"children\":[{\"id\":\"c4Unh3daGVNxS02wUZChY\",\"children\":[{\"text\":\"vol\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"YBFZLJp1pWCRaVchvlbV0\",\"children\":[{\"id\":\"u8_owQuUpLSam7S4dXX8Z\",\"children\":[{\"id\":\"ZcE3QecXWLZlELPakkTyQ\",\"children\":[{\"text\":\"int\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"y7hA6bYPNRBjGWS4HxG4z\",\"children\":[{\"id\":\"UsBzuMzeGXv8tvyFqJQkY\",\"children\":[{\"id\":\"V8gBb_eO2SRewafo5KGDt\",\"children\":[{\"text\":\"Value range: 0–200. Default value: 100. \"},{\"code\":1,\"text\":\"0\"},{\"text\":\" indicates that the audio is mute, while \"},{\"code\":1,\"text\":\"100\"},{\"text\":\" indicates that the volume level remains unchanged.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[12,13,75],\"widthMode\":\"percentage\"},{\"id\":\"lJDA5VqxbPGOYOxeTmEjy\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code24\",\"type\":\"h4\"},{\"id\":\"1TLFcfuGr_DPwjQ4Hg9zV\",\"children\":[{\"id\":\"ZyelXicAThBNGEKp1DOUw\",\"children\":[{\"text\":\"int micVol = (int)(value * 100);\"}],\"type\":\"code-line\"},{\"id\":\"_jc5aCDaFHDsDUbeJxrdN\",\"children\":[{\"text\":\"ITMGContextGetInstance()->GetAudioCtrl()->SetMicVolume(vol);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"v-qv9Qv8NmVhg06Wi9Jkn\",\"children\":[{\"text\":\"Getting the mic software volume\"}],\"nodeId\":\"getting-the-mic-software-volume\",\"type\":\"h3\"},{\"id\":\"FOvjnqgf7HWLh7WNxyYrY\",\"children\":[{\"text\":\"This API is used to obtain the microphone volume. An \\\"int\\\" value is returned. Value 101 represents API SetMicVolume has not been called.\"}],\"type\":\"p\"},{\"id\":\"DzShiQzELsXq0AOi8EU8g\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype22\",\"type\":\"h4\"},{\"id\":\"4ovNPD8ZaPvkkRF4Jr21l\",\"children\":[{\"id\":\"yvulCXjn2hJF5Xb5yaAXD\",\"children\":[{\"text\":\"ITMGAudioCtrl virtual int GetMicVolume()\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"i7dAcHdoEArrA9sLV6pk2\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code25\",\"type\":\"h4\"},{\"id\":\"-9PZJKXIFnfYacrTmTBIG\",\"children\":[{\"id\":\"qC0tkFfycAxOSEIojcNfQ\",\"children\":[{\"text\":\"ITMGContextGetInstance()->GetAudioCtrl()->GetMicVolume();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"0JRVnOx95-1ziMNSP_o0n\",\"children\":[{\"text\":\"Voice Chat Playback APIs\"}],\"nodeId\":\"voice-chat-playback-apis\",\"type\":\"h2\"},{\"id\":\"s3W8MQuaF7BeUJJylgf2M\",\"children\":[{\"id\":\"hTHQumtc7dtL_dykEjUB-\",\"children\":[{\"id\":\"6JFhK30uXdEfBZHTcQz5B\",\"children\":[{\"id\":\"DbtKIaswDEv9NIQK-bwu2\",\"children\":[{\"text\":\"API\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"-65PyU4zgIckjjiQav8_6\",\"children\":[{\"id\":\"n3p5LOcYdvihm8ZEKpOE1\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"BO5Db5qLXZGIvr3p4r_Ug\",\"children\":[{\"id\":\"-RD6ZISfZZy8ZG1Tmooj8\",\"children\":[{\"id\":\"xQBN_U5jQopdRQAop4b-6\",\"children\":[{\"id\":\"72Qjk4pd2GH_PIc2Kc6Fu\",\"children\":[{\"text\":\"EnableSpeaker\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"YcJ26TApSfJK0yUb03ABz\",\"children\":[{\"id\":\"7fMjKbDAaaYBS7bjSW0ut\",\"children\":[{\"id\":\"QvWCZD_g3VVKRIUSF2AUW\",\"children\":[{\"text\":\"Enables/Disables the speaker\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"mmxPIZgLDXSpozmLl--Vf\",\"children\":[{\"id\":\"ncZeZHl_ZCGZM76CKImmI\",\"children\":[{\"id\":\"M5uqytVId28d2jCiikKLD\",\"children\":[{\"id\":\"Fh1vo-zyUNif9FjuYv00K\",\"children\":[{\"text\":\"GetSpeakerState\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"jP8caDJ2AdLmQrmvVMWmD\",\"children\":[{\"id\":\"vO9VozsvE81rcW5Znkb4-\",\"children\":[{\"id\":\"UevEUBKyih1mkxcW3Qr52\",\"children\":[{\"text\":\"Gets the speaker status\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"RlGrE_kfdhzI5eJl1IXZ0\",\"children\":[{\"id\":\"8mvJizPndyas6SoXrDf4t\",\"children\":[{\"id\":\"-K0oD5O5JEftfhFIs-eQs\",\"children\":[{\"id\":\"B7e0AnIo4Ug3L5q7NT2Az\",\"children\":[{\"text\":\"EnableAudioPlayDevice\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"XN4Oa-MpMUl0UFWoD2DP5\",\"children\":[{\"id\":\"mfg9c6JPb4Sf0Jc_L7jFR\",\"children\":[{\"id\":\"EPSQzoWwZnSCg3OADzFOd\",\"children\":[{\"text\":\"Enables/Disables the playback device\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"xCI6m7rmUagrJE8B66ldg\",\"children\":[{\"id\":\"U82zZhFLnEZsBw8rT3Bza\",\"children\":[{\"id\":\"KVVs9bvZNeKS3fYWUZBj9\",\"children\":[{\"id\":\"T_N8ypQhDj4GSKV9Pg2U7\",\"children\":[{\"text\":\"IsAudioPlayDeviceEnabled\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"jL9f-rpl8a80f6YbcOfr2\",\"children\":[{\"id\":\"fkGzPKupyYDVApkXPGaYF\",\"children\":[{\"id\":\"8iZw2qgFFQRWyKC18Qrgb\",\"children\":[{\"text\":\"Gets playback device status\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"HfjL1az_7Qnd0wIQSZKj_\",\"children\":[{\"id\":\"_WECJtExEy3n36KRBBvIa\",\"children\":[{\"id\":\"HsXjf8TVfIgwalQc_ZUdM\",\"children\":[{\"id\":\"snQ2oDwv0iEXsXfrlD5EH\",\"children\":[{\"text\":\"EnableAudioRecv\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"5CYReAKl8BUVkbjt5S8fi\",\"children\":[{\"id\":\"3zr_uHX3D1JMtlb0M3k4S\",\"children\":[{\"id\":\"TeXguLS6SPZ_RgJe6uvsp\",\"children\":[{\"text\":\"Enables/Disables audio downstreaming\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"pNJAWVMpzYaTiDzSe8q68\",\"children\":[{\"id\":\"hr0lv_5mTPo93-SoQxyuO\",\"children\":[{\"id\":\"V7TlL2aQN9nrFSwjMsACv\",\"children\":[{\"id\":\"yu282TkTx3wWvWhAr_YN-\",\"children\":[{\"text\":\"IsAudioRecvEnabled\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"IdnuwwLTJAYacb_dHOPYZ\",\"children\":[{\"id\":\"SLE5QOAFbaAxCa3uIBVpj\",\"children\":[{\"id\":\"NrGARNA-qQSmZMmL3R5MZ\",\"children\":[{\"text\":\"Gets the audio downstreaming status\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"_bnqmseqivsGl1JRq6laD\",\"children\":[{\"id\":\"R3jqN07pHraCbKfubt8wG\",\"children\":[{\"id\":\"0sqyLKBetLltHePtavYMP\",\"children\":[{\"id\":\"jJxM2nFght7bJVvOJVgr8\",\"children\":[{\"text\":\"GetSpeakerLevel\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"VCvvv02v5WxhKJuwSDRYD\",\"children\":[{\"id\":\"wm22xbWuaq0Ie46Bz-yiP\",\"children\":[{\"id\":\"Hfk7JzfYZJfLxgSBLPIoZ\",\"children\":[{\"text\":\"Gets the real-time speaker volume level\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"-0Sd34NjSmvSFMAhv-xnZ\",\"children\":[{\"id\":\"atVlnEn9HSikoNWe2gzu2\",\"children\":[{\"id\":\"5z5cdnBn1jfORXnNnAFR5\",\"children\":[{\"id\":\"fG7S58K0IU0tw-iRdBoqq\",\"children\":[{\"text\":\"GetRecvStreamLevel\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"lPaPfHBhMWM6W-bxfarKu\",\"children\":[{\"id\":\"PYYGbVyyKl5UidVSdJHAM\",\"children\":[{\"id\":\"W0_dqNB3eDJ6OloH3l5FZ\",\"children\":[{\"text\":\"Gets the real-time downstreaming audio volume levels of other members in the room\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"ABUmGfSjwMHOyJBDj9Va8\",\"children\":[{\"id\":\"Hg5lGeL22ZxUxwKKNBZTK\",\"children\":[{\"id\":\"ldL6jsycEZQPNaWqnuST2\",\"children\":[{\"id\":\"KmP-dDl6xArdQaHU9YrjD\",\"children\":[{\"text\":\"SetSpeakerVolume\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"1yWS35s_1XU1OTvAcYuQQ\",\"children\":[{\"id\":\"cnhyQhenuNQetkk9BB3WX\",\"children\":[{\"id\":\"a48IEOxHP29N_hVlqjzTh\",\"children\":[{\"text\":\"Sets the speaker volume level\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"Qa22K8GMDdLwug0wuE9p3\",\"children\":[{\"id\":\"fNso1t0uLNaj0YklGSbot\",\"children\":[{\"id\":\"5yY8jxyDzKltY7fvRMRKO\",\"children\":[{\"id\":\"Y8adHE24gDuTSzQ7KwbiI\",\"children\":[{\"text\":\"GetSpeakerVolume\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"SFO-KQtgGQuNI16KrJa-o\",\"children\":[{\"id\":\"6gnzHcBOViottMNxLjA13\",\"children\":[{\"text\":\"Gets the speaker volume level\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[26,74],\"widthMode\":\"percentage\"},{\"id\":\"YiB3PNe7JS9ZlbvNX_NSB\",\"children\":[{\"text\":\"Enabling or disabling speaker\"}],\"nodeId\":\"enabling-or-disabling-speaker\",\"type\":\"h3\"},{\"id\":\"kdiknYeAAnJDuietJlXmp\",\"children\":[{\"text\":\"This API is used to enable/disable the speaker. \"},{\"b\":1,\"text\":\"EnableSpeaker = EnableAudioPlayDevice + EnableAudioRecv\"}],\"nodeId\":\"EnableSpeaker\",\"type\":\"p\"},{\"id\":\"AWxYq2RpDNg8KAzwq2Qhf\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype23\",\"type\":\"h4\"},{\"id\":\"EJu25xGg326BwJrUwgXlU\",\"children\":[{\"id\":\"NXaxcMuGUngXcSgizkh-G\",\"children\":[{\"text\":\"ITMGAudioCtrl virtual int EnableSpeaker(bool enable)\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"qno2r6Y0oTX4FAI3Uhgj5\",\"children\":[{\"id\":\"5uQpa_tzICM3LyyQRPWK9\",\"children\":[{\"id\":\"qea3vYduhDRgK7W_LX9Ln\",\"children\":[{\"id\":\"ebm2GslfGJD3wJNWdujMo\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"BmF_M9Taw0RRd-YL7vOD9\",\"children\":[{\"id\":\"locarOOijNwZ3ETiNsT-u\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"2FV-FsHHll8sxrQx5T2OV\",\"children\":[{\"id\":\"_6X21Ssx9vlqa72HZzA_v\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"O8OzoVmCOFn0ha4NV0McH\",\"children\":[{\"id\":\"XLiQso6baOZtVXLqdqe8p\",\"children\":[{\"id\":\"YjX4cI76pqsdZwSSKDsG5\",\"children\":[{\"id\":\"y4Mui6q-dhzN6g1m3-RGO\",\"children\":[{\"text\":\"enable\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"340QPdeioy6i2rF_PBG7q\",\"children\":[{\"id\":\"ZGuSkPqpHeOw-PM7AwzXm\",\"children\":[{\"id\":\"PnB-2tM6ZwV6Vk05Z0s2_\",\"children\":[{\"text\":\"bool\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"SLUfCJA-r3qkDDyucC9Vc\",\"children\":[{\"id\":\"nltLtinfesvUtPAtbflpM\",\"children\":[{\"id\":\"Wm0tsyyJbfgXqgOgMiYfv\",\"children\":[{\"text\":\"To disable the speaker, set this parameter to \"},{\"code\":1,\"text\":\"false\"},{\"text\":\"; otherwise, set it to \"},{\"code\":1,\"text\":\"true\"},{\"text\":\".\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[14,9,77],\"widthMode\":\"percentage\"},{\"id\":\"6Jw5NJKVk-MO6O00v2rod\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code26\",\"type\":\"h4\"},{\"id\":\"jhw9_11h-An1rfbh3XIHr\",\"children\":[{\"id\":\"veOcEw8dGRIyVheJZnVvm\",\"children\":[{\"text\":\"// Enable the speaker\"}],\"type\":\"code-line\"},{\"id\":\"CaSlaegg_Nd48A8afaZ8I\",\"children\":[{\"text\":\"ITMGContextGetInstance()->GetAudioCtrl()->EnableSpeaker(true);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"8dc6eTy6k9o_S3vzWv1iA\",\"children\":[{\"text\":\"Getting the speaker status\"}],\"nodeId\":\"getting-the-speaker-status\",\"type\":\"h3\"},{\"id\":\"XhAun5XwDjDotP5z8VEsE\",\"children\":[{\"text\":\"This API is used to get the speaker status. 0 indicates that the speaker is off, and 1 is on.\"}],\"type\":\"p\"},{\"id\":\"QPVNpbvEydfOh-l4QY8rZ\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype24\",\"type\":\"h4\"},{\"id\":\"e-qV7geZlpJuktfLRVGRr\",\"children\":[{\"id\":\"YjdqXEfIr90q3DZzNhe1K\",\"children\":[{\"text\":\"ITMGAudioCtrl virtual int GetSpeakerState()\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"NZ1ugd9IJVHnrjLKf1RSB\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code27\",\"type\":\"h4\"},{\"id\":\"6Em7m23TQFK1cpM-pqnJW\",\"children\":[{\"id\":\"5YFtJn1Jxu5f0SdFhanw6\",\"children\":[{\"text\":\"ITMGContextGetInstance()->GetAudioCtrl()->GetSpeakerState();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"2UOBVmMOzOH-g_IiBDl-M\",\"children\":[{\"text\":\"Enabling or disabling playback device\"}],\"nodeId\":\"enabling-or-disabling-playback-device\",\"type\":\"h3\"},{\"id\":\"tmmafSZc1wMmmeu9xP-hz\",\"children\":[{\"text\":\"This API is used to enable/disable a playback device.\"}],\"type\":\"p\"},{\"id\":\"EFX21IXg8RL43X8UIYEYD\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype25\",\"type\":\"h4\"},{\"id\":\"EUpl1Y5WDcm51WA3zz8BN\",\"children\":[{\"id\":\"8r0zfxT2sTBdAkifDuwhA\",\"children\":[{\"text\":\"ITMGAudioCtrl virtual int EnableAudioPlayDevice(bool enable) \"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"9ekdkZgTQm_goNXu90HvG\",\"children\":[{\"id\":\"reRtUVAkeCwqNmW0otgff\",\"children\":[{\"id\":\"MTpIIFrFKotICIjyCRdDo\",\"children\":[{\"id\":\"4Goj_98eGTq15g9rL3XT3\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"tE3VPT7d3ipPY9GqK8pq1\",\"children\":[{\"id\":\"mxfS8Cbo5FvOdf6VAtMIW\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"503XZ_snvciWkxoDasLVq\",\"children\":[{\"id\":\"xcqN3KbRFkAfNGzb3aeqk\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"p1SGHlE1-6S4a8cYJPoQm\",\"children\":[{\"id\":\"EHTAOZoQyUxO15uU-YDM7\",\"children\":[{\"id\":\"LIiiB-yvgqMjhWhBGyet9\",\"children\":[{\"id\":\"nmZUhNktb_J7F81FYIJ9C\",\"children\":[{\"text\":\"enable\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"GTsXtlEa3bgvG_-scB3WI\",\"children\":[{\"id\":\"vPHmiOkavIw6vjRQb9pxX\",\"children\":[{\"id\":\"It3uqAaMC92P1r2i2Gsr4\",\"children\":[{\"text\":\"bool\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"QRvBHx2HJLk2TFEi5n2Yd\",\"children\":[{\"id\":\"XIX1PwdgA3QNVUR7gQQn1\",\"children\":[{\"id\":\"YBqrPZj4jDO87Frzojhr4\",\"children\":[{\"text\":\"To disable the playback device, set this parameter to \"},{\"code\":1,\"text\":\"false\"},{\"text\":\"; otherwise, set it to \"},{\"code\":1,\"text\":\"true\"},{\"text\":\".\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[13,8,79],\"widthMode\":\"percentage\"},{\"id\":\"Pb2HrUaRuJOou4UvmZSWN\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code28\",\"type\":\"h4\"},{\"id\":\"lgvvjz_oB3ghCt5AvtTlC\",\"children\":[{\"id\":\"gyA0NjrHkL0tAYgczsgor\",\"children\":[{\"text\":\"ITMGContextGetInstance()->GetAudioCtrl()->EnableAudioPlayDevice(true);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"RHn8FgdJfT0UjnNKhZ_Cy\",\"children\":[{\"text\":\"Getting the playback device status\"}],\"nodeId\":\"getting-the-playback-device-status\",\"type\":\"h3\"},{\"id\":\"mt_Z-hX6V6jL_o4UC-uBA\",\"children\":[{\"text\":\"This API is used to get the status of a playback device.\"}],\"type\":\"p\"},{\"id\":\"MRwJFcgF_T7zraEClYLuF\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype26\",\"type\":\"h4\"},{\"id\":\"ID6M681YWPGbEz_Ou3vK5\",\"children\":[{\"id\":\"xwm27PTok-Y7fFNr19nGb\",\"children\":[{\"text\":\"ITMGAudioCtrl virtual bool IsAudioPlayDeviceEnabled()\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"r2QvAsOUiF-nJEFTgK4fD\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code29\",\"type\":\"h4\"},{\"id\":\"19XJ12sBqJdnAsO8EAvqw\",\"children\":[{\"id\":\"2RKTKNHPXO2oNXXRoOXCo\",\"children\":[{\"text\":\"ITMGContextGetInstance()->GetAudioCtrl()->IsAudioPlayDeviceEnabled();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"j72U7MvSW5DesIRBeFWBY\",\"children\":[{\"text\":\"Enabling or disabling audio downstreaming\"}],\"nodeId\":\"enabling-or-disabling-audio-downstreaming\",\"type\":\"h3\"},{\"id\":\"nqpR4Da6EQXrVKDjRIy9K\",\"children\":[{\"text\":\"This API is used to enable/disable audio downstreaming. If a playback device is already enabled, it will play back audio data from other members in the room; otherwise, it will remain mute. For more information on how to enable/disable the playback device, please see the \"},{\"code\":1,\"text\":\"EnableAudioPlayDevice\"},{\"text\":\" API.\"}],\"type\":\"p\"},{\"id\":\"TXyQ-gl9hlNQ_6eP1aQgY\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype27\",\"type\":\"h4\"},{\"id\":\"Xf34M2-V59S-dIp5cp8mr\",\"children\":[{\"id\":\"LGQFJ9bHCFvIB7rLYhz0x\",\"children\":[{\"text\":\"ITMGAudioCtrl virtual int EnableAudioRecv(bool enable)\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"ZyHnjvs0Adth9RKkQjkwF\",\"children\":[{\"id\":\"nOHnOPTBQM7w_ecTgZUzV\",\"children\":[{\"id\":\"2AsTHox4RA2sUKJlynQxu\",\"children\":[{\"id\":\"1-gpzAEAl6gTGn1P63Kkh\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"4CxDHLgmOknCsJtDHufC5\",\"children\":[{\"id\":\"pnoVo1woteODDBR8LzAdg\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"XrK_kpVkwV-qb3k4FAAN_\",\"children\":[{\"id\":\"h-RK2czCSldyPjp-RNyyo\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"g8JEUv430BU-ekSGwy8xK\",\"children\":[{\"id\":\"gvw5KFC5s-zLWoGlYY88M\",\"children\":[{\"id\":\"JuFGF45K52cyjCwb5hJAR\",\"children\":[{\"id\":\"-SxPljv3hIundfaV0Qbl2\",\"children\":[{\"text\":\"enable\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"E5k3wM07uhQl3rZaF46ZA\",\"children\":[{\"id\":\"JrzuIVd7asNfyRf44QRxN\",\"children\":[{\"id\":\"wTgGPK4Sd7m4Gesyinh6P\",\"children\":[{\"text\":\"bool\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"U30VWhFFPeJ3WKj28wNtv\",\"children\":[{\"id\":\"rWFr4kImLDRQkbEYbPvuT\",\"children\":[{\"id\":\"0ov9Mg4NSi0ENSPO0gJEA\",\"children\":[{\"text\":\"To enable audio downstreaming, set this parameter to \"},{\"code\":1,\"text\":\"true\"},{\"text\":\"; otherwise, set it to \"},{\"code\":1,\"text\":\"false\"},{\"text\":\".\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[13,8,79],\"widthMode\":\"percentage\"},{\"id\":\"D5rR9I7taUPkFMt7PI5vH\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code30\",\"type\":\"h4\"},{\"id\":\"VmDXcwt_Yvi3_WeKS_mZg\",\"children\":[{\"id\":\"6RtvsGch_zQguGenpweeC\",\"children\":[{\"text\":\"ITMGContextGetInstance()->GetAudioCtrl()->EnableAudioRecv(true);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"5WFFwi8eeM7SHHyhWRGr_\",\"children\":[{\"text\":\"Getting audio downstreaming status\"}],\"nodeId\":\"getting-audio-downstreaming-status\",\"type\":\"h3\"},{\"id\":\"1gR8_LJpX4ki6IZWfHRk_\",\"children\":[{\"text\":\"This API is used to get the status of audio downstreaming.\"}],\"type\":\"p\"},{\"id\":\"Y3y7pXCSVpW4WCX4it84D\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype28\",\"type\":\"h4\"},{\"id\":\"sBbt6C8Uob_aA52oySc1M\",\"children\":[{\"id\":\"Pj1GDjYWGMghr3Gk_g3qn\",\"children\":[{\"text\":\"ITMGAudioCtrl virtual bool IsAudioRecvEnabled() \"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"KS4cW9EZe7JE9F86AYVv8\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code31\",\"type\":\"h4\"},{\"id\":\"DD-rk5Nd3GoWn7zHRvX_V\",\"children\":[{\"id\":\"N_eOejEaREWT5ewsiwULz\",\"children\":[{\"text\":\"ITMGContextGetInstance()->GetAudioCtrl()->IsAudioRecvEnabled();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"Ja0gD36o-TmRYcXVuZJb-\",\"children\":[{\"text\":\"Getting the real-time speaker volume\"}],\"nodeId\":\"getting-the-real-time-speaker-volume\",\"type\":\"h3\"},{\"id\":\"czBcAEuvjj0zuJys0fbdm\",\"children\":[{\"text\":\"This API is used to get the real-time speaker volume. An int-type value will be returned to indicate the volume. It is recommended to call this API once every 20 ms.\"}],\"type\":\"p\"},{\"id\":\"r_CVhvPmp7HNof1lAwFtm\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype29\",\"type\":\"h4\"},{\"id\":\"9EHHWRjAzvwe__uVjeQqv\",\"children\":[{\"id\":\"cLhzqzDYNcEjhHd8Wpoug\",\"children\":[{\"text\":\"ITMGAudioCtrl virtual int GetSpeakerLevel()\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"Yjs9ZOhBvtRAD7bvLT5ig\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code32\",\"type\":\"h4\"},{\"id\":\"jA2xfP9Wf7--zkRoa-m3z\",\"children\":[{\"id\":\"jooHoG0XjVjcyEGpwlD9f\",\"children\":[{\"text\":\"ITMGContextGetInstance()->GetAudioCtrl()->GetSpeakerLevel();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"mdIM3v9idwAQLEICDxu2c\",\"children\":[{\"text\":\"Getting the real-time downstreaming audio levels of other members in the room\"}],\"nodeId\":\"getting-the-real-time-downstreaming-audio-levels-of-other-members-in-the-room\",\"type\":\"h3\"},{\"id\":\"Ug__cJBYmyKZFSWo9F2S4\",\"children\":[{\"text\":\"This API is used to get the real-time audio downstreaming volume of other members in the room. An int-type value will be returned. Value range: 0-200.\"}],\"type\":\"p\"},{\"id\":\"0n_JOKbBzTLBwSdrPp_1j\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype30\",\"type\":\"h4\"},{\"id\":\"xIM8RzzZ803-MfbN7Piy-\",\"children\":[{\"id\":\"2Bg0cfOEGnDggiaXBmVyH\",\"children\":[{\"text\":\"ITMGAudioCtrl virtual int GetRecvStreamLevel(const char* openId)\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"Z4oqL8BBZY2zQgDKnWQg2\",\"children\":[{\"id\":\"NEL68594hXE43mBGNv7MU\",\"children\":[{\"id\":\"xQ6IdTCz4QvYe395KhziB\",\"children\":[{\"id\":\"UFT-lINkA7CFobF01zhFf\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"PYImk58zNZZCFaRKBzRLU\",\"children\":[{\"id\":\"bs_qs8BrvMGsvBF5PlQZJ\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"HZ8Cws4h0oBtMJUyNF78f\",\"children\":[{\"id\":\"pA5vFIR_wSBSIJ_4OTNUz\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"UDuGkaU4FyGkw8SdYkLYZ\",\"children\":[{\"id\":\"I5s21YY2ObiOxsxeiyD3D\",\"children\":[{\"id\":\"lI0utA2L4Zms0Cp3QnSze\",\"children\":[{\"id\":\"6lyI2xFNHloOtLNL2XrZn\",\"children\":[{\"text\":\"openId\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"FUpvO-ePFFrYgVCPJO9EY\",\"children\":[{\"id\":\"S8dwlV_Vvsp2QFBSjy-me\",\"children\":[{\"id\":\"8RK67VnXEEyBpLUaggcsD\",\"children\":[{\"text\":\"char*\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"SS4OlddOho8zIuZUnfhak\",\"children\":[{\"id\":\"x3s0LtStORcipYY8SqKg6\",\"children\":[{\"id\":\"lhbmsF2quGD21KHUsnPx3\",\"children\":[{\"code\":1,\"text\":\"openId\"},{\"text\":\" of other members in the room\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[22,14,64],\"widthMode\":\"percentage\"},{\"id\":\"vEc4q7fdcye8XzCFWE2uV\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code33\",\"type\":\"h4\"},{\"id\":\"c0vqnpmHp_ZNJ79ca3NPJ\",\"children\":[{\"id\":\"64DV3RiLgIKH3c6j7YPf0\",\"children\":[{\"text\":\"iter->second.level = ITMGContextGetInstance()->GetAudioCtrl()->GetRecvStreamLevel(iter->second.openid.c_str());\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"Crj5a-gzDSL3HzF_MKAfU\",\"children\":[{\"text\":\"Setting the speaker volume\"}],\"nodeId\":\"setting-the-speaker-volume\",\"type\":\"h3\"},{\"id\":\"uA1NBRyZvKyUzRxH1kbUJ\",\"children\":[{\"text\":\"This API is used to set the speaker volume.\"}],\"type\":\"p\"},{\"id\":\"qPfHvkjXi2jzgX4Z-RAWS\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype31\",\"type\":\"h4\"},{\"id\":\"ayviMAnRbWVkf-5E4ckQB\",\"children\":[{\"id\":\"P2UiEJQW_B48Ur4PmwCLz\",\"children\":[{\"text\":\"ITMGAudioCtrl virtual int SetSpeakerVolume(int vol)\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"ysPYyRKeNJjTMK1K1iZOh\",\"children\":[{\"id\":\"pEXW2XEiN8_6qwFB2mFY_\",\"children\":[{\"id\":\"kBpL-uSW-mylKnj40XXCT\",\"children\":[{\"id\":\"nHNJRALIzikMvu63Z8rKe\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"KnXt7qHX1fBgLnv47PxPl\",\"children\":[{\"id\":\"S3w-lxXZLCQ8Y-ySUkmfp\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"YHZPisP8arggXjV1TPRKI\",\"children\":[{\"id\":\"sEtkeXmLWlkQlkzSq90OV\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"IGmRfVWpFDDdEBTCIlnMa\",\"children\":[{\"id\":\"zdrGlA3W1B8E1r6uFeGVu\",\"children\":[{\"id\":\"rWYZsjuRQLQyIjmlT_xeg\",\"children\":[{\"id\":\"xq9VL-O1LJWAP51-T38ho\",\"children\":[{\"text\":\"vol\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"AkqDLrYorSMuzR4Ybe7IT\",\"children\":[{\"id\":\"vu4ZgiXbBoL2jk0fWVKDg\",\"children\":[{\"id\":\"ojS8SwaI6tD1ckwy9vBXy\",\"children\":[{\"text\":\"int\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"FC2r_7S1TcBCzGwRRKZNX\",\"children\":[{\"id\":\"5XlMWngAtI4VqXpwXz4Mt\",\"children\":[{\"id\":\"6PWAz1V6RwnxxzmfYwIHW\",\"children\":[{\"text\":\"Volume level. Value range: 0–200. Default value: 100. \"},{\"code\":1,\"text\":\"0\"},{\"text\":\" indicates that the audio is mute, while \"},{\"code\":1,\"text\":\"100\"},{\"text\":\" indicates that the volume level remains unchanged.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[13,10,77],\"widthMode\":\"percentage\"},{\"id\":\"7OoegSkdbMmaYLspQ3_1N\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code34\",\"type\":\"h4\"},{\"id\":\"2Z9ryY1UgcAMRoRIQcHNJ\",\"children\":[{\"id\":\"PXSBI4conw5nuiHUWBJpO\",\"children\":[{\"text\":\"int vol = 100;\"}],\"type\":\"code-line\"},{\"id\":\"UW_3rdiZ5JR_b0Og1J0Xb\",\"children\":[{\"text\":\"ITMGContextGetInstance()->GetAudioCtrl()->SetSpeakerVolume(vol);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"tDgcuvHKvm4UdRMntOEgb\",\"children\":[{\"text\":\"Getting the speaker volume\"}],\"nodeId\":\"getting-the-speaker-volume\",\"type\":\"h3\"},{\"id\":\"bMuYNiMb-dTprXZL8SeL8\",\"children\":[{\"text\":\"This API is used to get the speaker volume. An int-type value will be returned to indicate the volume. 101 indicates that the \"},{\"code\":1,\"text\":\"SetSpeakerVolume\"},{\"text\":\" API has not been called.\\n\\\"Level\\\" indicates the real-time volume, and \\\"Volume\\\" the speaker volume. The final volume = Level * Volume%. For example, if the \\\"Level\\\" is 100 and \\\"Volume\\\" is 60, the final volume is \\\"60\\\".\"}],\"type\":\"p\"},{\"id\":\"DhEeRrfV6FDGEl9X6aiqt\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype32\",\"type\":\"h4\"},{\"id\":\"KLLPENKQGbeNzAiDy9Ba4\",\"children\":[{\"id\":\"TdoYVDZDroo6ONmjX6N7D\",\"children\":[{\"text\":\"ITMGAudioCtrl virtual int GetSpeakerVolume()\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"xrreCd0uJEGa_peIA_gn3\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code35\",\"type\":\"h4\"},{\"id\":\"0ICuwkb7BJBcZCv2CuYqM\",\"children\":[{\"id\":\"MWDOQSVDeV09AgQU7x5B_\",\"children\":[{\"text\":\"ITMGContextGetInstance()->GetAudioCtrl()->GetSpeakerVolume();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"HxTtHZ4jYaLP5jt70xLld\",\"children\":[{\"text\":\"Device Selection APIs\"}],\"nodeId\":\"device-selection-apis\",\"type\":\"h2\"},{\"id\":\"YAxM71jvcMFxFJSCcL5h3\",\"children\":[{\"text\":\"Device selection APIs can be used only on PC.\"}],\"type\":\"p\"},{\"id\":\"SJddOwhxoLt-vx3JWGM63\",\"children\":[{\"id\":\"l8TS1MXVYmR9ysWBSYuZb\",\"children\":[{\"id\":\"29jaeQbPBQ6ubCpJaS9-C\",\"children\":[{\"id\":\"3tRapJsz5XpshSDxCdXlJ\",\"children\":[{\"text\":\"API\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Gc4gkGmNfKQDqvv4b-ahv\",\"children\":[{\"id\":\"OKIyIbWHmbU56ejy_d3RG\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"stPTddIAFMHelfd0qSPF6\",\"children\":[{\"id\":\"ygt0frx3cYs7Y2svX3Ma7\",\"children\":[{\"id\":\"SkgB1QKEZZY4UAIBZ5oM5\",\"children\":[{\"id\":\"e4F-fJ8RG1zA5roHygBL5\",\"children\":[{\"text\":\"GetMicListCount\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"lq479JpIJwL88NIFbNP0V\",\"children\":[{\"id\":\"zaw0INO0ySHFflLSoJEPa\",\"children\":[{\"id\":\"ZFyLLUH3YUfLsFjNqnWmT\",\"children\":[{\"text\":\"Gets the number of mics\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"NnzjlUIaPQzNMHQqpXfkM\",\"children\":[{\"id\":\"VvQwR_C2dX3exGiXMHFmB\",\"children\":[{\"id\":\"WPdt786YrWGCuhoc_5MEJ\",\"children\":[{\"id\":\"CYoo-3jJKRmnhQoLhxFIK\",\"children\":[{\"text\":\"GetMicList\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"nFL3qLlkfYmXQmrfjGMvl\",\"children\":[{\"id\":\"J_zD59cfS80CAv7af6l2t\",\"children\":[{\"id\":\"Oj4AVj5NStwrNosajB-QQ\",\"children\":[{\"text\":\"Lists mics\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"V8QlBVese6KGKkDM5PSdk\",\"children\":[{\"id\":\"5vgpYOEhPkOtCoCeiFM4b\",\"children\":[{\"id\":\"315WuzzU7YWRHGuR6IiZ3\",\"children\":[{\"id\":\"PMWKYJ8Ms9tblrdi8EsMp\",\"children\":[{\"text\":\"GetSpeakerListCount\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"kN8cKf0GUVV7MQ8QR6EBV\",\"children\":[{\"id\":\"BbosNSCXN2I8qNQfK4vHf\",\"children\":[{\"id\":\"J-BVitNuLUoej6WdoW_hz\",\"children\":[{\"text\":\"Gets the number of speakers\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"g1ZrzBvfkb4gMtWgDPx2h\",\"children\":[{\"id\":\"lb2DaLNfX-94hXQKXbe_8\",\"children\":[{\"id\":\"SsHNZn2Z34fxUfE_zQLhw\",\"children\":[{\"id\":\"Ga7R7wPkS_OWjBEOKhBbJ\",\"children\":[{\"text\":\"GetSpeakerList\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"VooTbRyvE0aiqgGk1vUMU\",\"children\":[{\"id\":\"u7OcbPLHMJ8ArylkIVUZO\",\"children\":[{\"id\":\"OhuVKBF-A-PhOHFmWXR_u\",\"children\":[{\"text\":\"Lists speakers\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"kQlldMKOowbGxgQ-XwnuE\",\"children\":[{\"id\":\"c3P8N0TlNxelwN2nUUATB\",\"children\":[{\"id\":\"OJsgK1eQQkwHecfXw4nyU\",\"children\":[{\"id\":\"RLpoibwmWOqsa0krwfX8x\",\"children\":[{\"text\":\"SelectMic\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"QtE46fEdptWc9ZFwMjASl\",\"children\":[{\"id\":\"ku2GGupGxDlAM5mnssoQF\",\"children\":[{\"id\":\"kyvAvQdG5VfO72m9oPeUy\",\"children\":[{\"text\":\"Selects mics\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"FnXYzrcN8KKUHh3sX52qX\",\"children\":[{\"id\":\"DWskde8EOsLCnNoUz-srs\",\"children\":[{\"id\":\"U4sDhvE0vooeGny7Y5D1p\",\"children\":[{\"id\":\"lYJFz4FBNf52JdnwPRWP4\",\"children\":[{\"text\":\"SelectSpeaker\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"xtMw7O_BSQmbz8rpcdWG8\",\"children\":[{\"id\":\"f2sL0x5umGJw6nbSQFlJN\",\"children\":[{\"id\":\"TnhyCDvq5RYfGWRlfXWwg\",\"children\":[{\"text\":\"Selects speakers\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[43,57],\"widthMode\":\"percentage\"},{\"id\":\"x0sOlMkK1Kysc50pI8uuj\",\"children\":[{\"text\":\"Getting the number of mics\"}],\"nodeId\":\"getting-the-number-of-mics\",\"type\":\"h3\"},{\"id\":\"qCcvKiAka3Xi-rURTE8Gw\",\"children\":[{\"text\":\"This API is used to get the number of mics.\"}],\"type\":\"p\"},{\"id\":\"f6_XiNw9KfcgM4pCgrw4o\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\"function-prototype\",\"type\":\"h4\"},{\"id\":\"OGlCeQNajB3JNGIBDaFKe\",\"children\":[{\"id\":\"cE0HE770b-Hy_bVzJ7pjp\",\"children\":[{\"text\":\"ITMGAudioCtrl virtual int GetMicListCount()\"}],\"type\":\"code-line\"},{\"id\":\"aQweTu-kBAOxDbN5qZ839\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"Ep53DGdPEmaReCbwk5ZxO\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code36\",\"type\":\"h4\"},{\"id\":\"ip2CXyQKjzMt84nxVJH5X\",\"children\":[{\"id\":\"xsM0cMkwNOe8Zx6fXRa_y\",\"children\":[{\"text\":\"ITMGContextGetInstance()->GetAudioCtrl()->GetMicListCount();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"QNfX9NOAOxKygTRoVEeh1\",\"children\":[{\"text\":\"Enumerating mics\"}],\"nodeId\":\"enumerating-mics\",\"type\":\"h3\"},{\"id\":\"u7qlctxzJwErbXzog13He\",\"children\":[{\"text\":\"This API is used together with the \"},{\"code\":1,\"text\":\"GetMicListCount\"},{\"text\":\" API to enumerate mics.\"}],\"type\":\"p\"},{\"id\":\"hZ5CVncYTpVScRvaH5Q27\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\"function-prototype2\",\"type\":\"h4\"},{\"id\":\"P1uYip4Ny5bvN5LP9Q5ww\",\"children\":[{\"id\":\"98WktTmA7hjCqeOp7S0dA\",\"children\":[{\"text\":\"ITMGAudioCtrl virtual int GetMicList(TMGAudioDeviceInfo* ppDeviceInfoList, int nCount)\"}],\"type\":\"code-line\"},{\"id\":\"4sfNUiZchqkEWa1rDn7Xb\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"},{\"id\":\"ejmu3b4uc37yERWT8sGnz\",\"children\":[{\"text\":\"class TMGAudioDeviceInfo\"}],\"type\":\"code-line\"},{\"id\":\"EcZxMEqGoF0E4jiyxtr_y\",\"children\":[{\"text\":\"{\"}],\"type\":\"code-line\"},{\"id\":\"N9-lctAGp-G1kJFThz_2t\",\"children\":[{\"text\":\"public:\"}],\"type\":\"code-line\"},{\"id\":\"-NBYFwe_AItyjG9Ew08_T\",\"children\":[{\"text\":\" const char* pDeviceID;\"}],\"type\":\"code-line\"},{\"id\":\"ojvcIS0i3axhOJZWewhwp\",\"children\":[{\"text\":\" const char* pDeviceName;\"}],\"type\":\"code-line\"},{\"id\":\"C3Ry7JCHgcViKaJX7hnBn\",\"children\":[{\"text\":\"};\"}],\"type\":\"code-line\"},{\"id\":\"1HmUZpMThAoIJRTGEu9NJ\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"TV9cb4WyOs8iVC0xeEy0v\",\"children\":[{\"id\":\"Fkuf83Bl8yp9qdakyfbPC\",\"children\":[{\"id\":\"HfTcmoftpTwELF-JqQObX\",\"children\":[{\"id\":\"MqIinInB-DfCkn4_jwRA6\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"MtnnLMQ3uMxC5tFAQL57r\",\"children\":[{\"id\":\"HHJKb79_yI92Jj4aUDklN\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"90zuJS9FqaUWDPVsaysgW\",\"children\":[{\"id\":\"foBmnoy0InTGfkNneNhkd\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"w_G0M_f3ppQRlkJdAv--G\",\"children\":[{\"id\":\"GT1Ibq1kHP-S2mM3O3r4M\",\"children\":[{\"id\":\"p9W35DOzbAXP3gqWu76Vs\",\"children\":[{\"id\":\"JjLAGA3ffRrgm1C56BEAt\",\"children\":[{\"text\":\"ppDeviceInfoList\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"3SsRk9ikxH5HTMAOgDQvP\",\"children\":[{\"id\":\"IfyyceD8cwhLqMl7DTuLt\",\"children\":[{\"id\":\"YkZOUPdTc_Xg8twvZfZTX\",\"children\":[{\"text\":\"TMGAudioDeviceInfo\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"_qJsWUBdpt_yp8she9GhI\",\"children\":[{\"id\":\"jU7wa931vanYYXFVkosZa\",\"children\":[{\"id\":\"QZfZbltGnbxDewRID6v_6\",\"children\":[{\"text\":\"Device list\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"jENTIPvThig_Fm7H5Csu2\",\"children\":[{\"id\":\"Kl1AjWsi7z6Mb2JNoMdM8\",\"children\":[{\"id\":\"QsIiRpT-Dr97tv6ztZeD_\",\"children\":[{\"id\":\"zig4_KW4BiJDI8n-rdpvd\",\"children\":[{\"text\":\"nCount\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ybyDKC-8eO_25pWsMnKfp\",\"children\":[{\"id\":\"SvpOCk1XF6ykAnWwV8QxD\",\"children\":[{\"id\":\"TF8GVXj3zTXkMQJBHT-Kt\",\"children\":[{\"text\":\"int\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"dmyulRmX0tMJLsysQvDrg\",\"children\":[{\"id\":\"cTB7mr341k2MxjtHkqBNe\",\"children\":[{\"id\":\"XJyzfJTrmvVpry396SIB3\",\"children\":[{\"text\":\"Number of the mics\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[29,36,35],\"widthMode\":\"percentage\"},{\"id\":\"zRUirXEOkgSqjKg-I3iub\",\"children\":[{\"id\":\"NsU0M_ScW4-Vu-g94gnJH\",\"children\":[{\"id\":\"w8JzxzkyZAjA1iEUzyYEg\",\"children\":[{\"id\":\"oXhxI00NHER3VevQCGBC6\",\"children\":[{\"code\":1,\"text\":\"TMGAudioDeviceInfo\"},{\"text\":\" Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"dw9RAxKaL7dhhBrBdhQis\",\"children\":[{\"id\":\"-YBb02ZPcvwZqIvLi3p5a\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"fYAnRUHApCRW-e6UIIfRa\",\"children\":[{\"id\":\"iI-FQeTi7x5K8c5iBXwM0\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"1mmm1uiAV2apVWx7qUeDi\",\"children\":[{\"id\":\"L0brhQ284HbDEWB8Yo5Az\",\"children\":[{\"id\":\"UuwcXOy0K-HMnKOpzgC67\",\"children\":[{\"id\":\"prLvvBDN-ePd6giBx8zzx\",\"children\":[{\"text\":\"pDeviceID\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"DpJnTFrRLW7kvx5b2Jav4\",\"children\":[{\"id\":\"vnHwRMUahW8j2yh9nNNIa\",\"children\":[{\"id\":\"oiwsB7ilYR1mgm7DlpIct\",\"children\":[{\"text\":\"const char*\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"rcvJbx2zM7k39X0PjpIVW\",\"children\":[{\"id\":\"guuCVZL4Gy3Ebb0FgQYbB\",\"children\":[{\"id\":\"hwQneZ6lQRcPCkWu8RcBx\",\"children\":[{\"text\":\"Device ID\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"MQw-IE9NaEe0jwNhRTVKT\",\"children\":[{\"id\":\"OoPl6zbsUoW5Lh9pjxg8B\",\"children\":[{\"id\":\"WZv9J2dqCy5ggfI9uL0nu\",\"children\":[{\"id\":\"bAanaWyymnCllg4BfTVfX\",\"children\":[{\"text\":\"pDeviceName\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ED0B9YjFoMuLLrkiuSF6u\",\"children\":[{\"id\":\"-3mKFaZw5z5lmWk_DWD3g\",\"children\":[{\"id\":\"PJcj_vpC1KHzNxQ07-eXn\",\"children\":[{\"text\":\"const char*\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"eHLhzRb3IJNWOJgAXK_ga\",\"children\":[{\"id\":\"eFpKv4l87vKWmLfEr38ue\",\"children\":[{\"id\":\"3YY2oZFI3S3ulZPW07ICd\",\"children\":[{\"text\":\"Device name\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[29,36,35],\"widthMode\":\"percentage\"},{\"id\":\"zEq4nFeZ91AULQ4MnnVuW\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code37\",\"type\":\"h4\"},{\"id\":\"L2hvi-b_jPBfOULjSCrdF\",\"children\":[{\"id\":\"qLPu4XGh-RxL0N9S3AgAj\",\"children\":[{\"text\":\"ITMGContextGetInstance()->GetAudioCtrl()->GetMicList(ppDeviceInfoList,nCount);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"CxR6YZ5eDBbOovOv4mtZ_\",\"children\":[{\"text\":\"Selecting a mic\"}],\"nodeId\":\"selecting-a-mic\",\"type\":\"h3\"},{\"id\":\"HaUwzYcj6UT1wik0PIjLZ\",\"children\":[{\"text\":\"This API is used to select a mic. If this API is not called or \"},{\"code\":1,\"text\":\"DEVICEID_DEFAULT\"},{\"text\":\" is passed in, the default mic will be selected.\\nThe 0th device id returned in the GetMicList API is the default device of the call device. If there is a selected call device, it will be maintained by service. If it is unplugged, the call device will be changed back into the default device.\"}],\"type\":\"p\"},{\"id\":\"Mb_7kdG2ZnY7A0ZCOwoPd\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\"function-prototype3\",\"type\":\"h4\"},{\"id\":\"R9w0-mcQ7lDHPaCY-OLRp\",\"children\":[{\"id\":\"N30ar3-Z4MTAvx88rZH6Q\",\"children\":[{\"text\":\"ITMGAudioCtrl virtual int SelectMic(const char* pMicID)\"}],\"type\":\"code-line\"},{\"id\":\"W3T40K-xIu93P67wGXkXb\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"ArCFR6FCNjJODN1ToAF1f\",\"children\":[{\"id\":\"P3ZmW5QCL_Ykre1ibghtZ\",\"children\":[{\"id\":\"l7NZInbtoiXz7fEVzRoA1\",\"children\":[{\"id\":\"6ymh3Cb7ESnvZ7_NN1rXT\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"w11aW6IKRGuYynGz7CNIj\",\"children\":[{\"id\":\"7IiqvDAD8kMQS6TOwlREb\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"mJsuXUFpvdcWF_WG-E9vH\",\"children\":[{\"id\":\"r8J_9A-9h1vWZmjHW9P_h\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"T5np64rrNhhm-M9BZwz_W\",\"children\":[{\"id\":\"obKb6OtWIXqC4VeFCk3UN\",\"children\":[{\"id\":\"r6VNbv_aN-Ro4xBwVuM4y\",\"children\":[{\"id\":\"naTdvvO4H6vVSfVOfkaWV\",\"children\":[{\"text\":\"pMicID\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"1cAZwU1YME7-vyvmyqiTX\",\"children\":[{\"id\":\"ROW5_TvPVs6aufFdzXq_T\",\"children\":[{\"id\":\"uLl7KobfDXaVTm56OuRdq\",\"children\":[{\"text\":\"const char*\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"rYjz8uzejxAg3w7od560M\",\"children\":[{\"id\":\"aqZxwtj0SfD0Tu81fNkZz\",\"children\":[{\"id\":\"cpV5bzyZg-vWsKu9otpMg\",\"children\":[{\"text\":\"Mic ID, which is from the list returned by \"},{\"code\":1,\"text\":\"GetMicList\"},{\"text\":\".\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[16,17,67],\"widthMode\":\"percentage\"},{\"id\":\"IOlF6cvwLrUHVfzkpRdPg\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code38\",\"type\":\"h4\"},{\"id\":\"KWaT0s0Lm1jOdn3UAMUVN\",\"children\":[{\"id\":\"NhLGcS2A15r7649HFkh9x\",\"children\":[{\"text\":\"const char* pMicID =\\\"{0.0.1.00000000}.{7b0b712d-3b46-4f7a-bb83-bf9be4047f0d}\\\";\"}],\"type\":\"code-line\"},{\"id\":\"_4gItaLWvJdA3J6-_xkNY\",\"children\":[{\"text\":\"ITMGContextGetInstance()->GetAudioCtrl()->SelectMic(pMicID);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"FB8dEAhFB-sW_qL5rZ3WY\",\"children\":[{\"text\":\"Getting the number of speakers\"}],\"nodeId\":\"getting-the-number-of-speakers\",\"type\":\"h3\"},{\"id\":\"M6NcVU73d17Fcvq5g2z24\",\"children\":[{\"text\":\"This API is used to get the number of speakers.\"}],\"type\":\"p\"},{\"id\":\"Iz281cpCSHPu3Phfxsrw1\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\"function-prototype4\",\"type\":\"h4\"},{\"id\":\"mi5weS4JgifQcht6l66kM\",\"children\":[{\"id\":\"sUXAeNVco822l_83Pi18n\",\"children\":[{\"text\":\"ITMGAudioCtrl virtual int GetSpeakerListCount()\"}],\"type\":\"code-line\"},{\"id\":\"u3Gksr-0nfuYDruuBZUa2\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"GRyDd5AsfiQ3OPPJHW6nc\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code39\",\"type\":\"h4\"},{\"id\":\"WSH-wZL10EnXtZe7yKDEF\",\"children\":[{\"id\":\"Hsn6hgvVKDQ5OTBa1HL7y\",\"children\":[{\"text\":\"ITMGContextGetInstance()->GetAudioCtrl()->GetSpeakerListCount();\"}],\"type\":\"code-line\"},{\"id\":\"cqwlXI7rl9iUs3FsycB3H\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"vo4UUo-rmBH2yIQxYhbhj\",\"children\":[{\"text\":\"Enumerating speakers\"}],\"nodeId\":\"enumerating-speakers\",\"type\":\"h3\"},{\"id\":\"xilsLHifbS0uemPUZpz8w\",\"children\":[{\"text\":\"This API is used together with the \"},{\"code\":1,\"text\":\"GetSpeakerListCount\"},{\"text\":\" API to enumerate speakers.\"}],\"type\":\"p\"},{\"id\":\"B1XMutTHKvGBjhu-QPdYb\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\"function-prototype5\",\"type\":\"h4\"},{\"id\":\"XRq2dZf4vJXlWxtkuERbE\",\"children\":[{\"id\":\"VHW4_yIvJkVlbvB0zzl3v\",\"children\":[{\"text\":\"ITMGAudioCtrl virtual int GetSpeakerList(TMGAudioDeviceInfo* ppDeviceInfoList, int nCount)\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"Y2UpmvWRGJAy_PHnqBYeZ\",\"children\":[{\"id\":\"GXczb3ylWnZ4HxhSbGa4y\",\"children\":[{\"id\":\"lwyinaJLSyaoGIvV99te6\",\"children\":[{\"id\":\"a4R4NaWYTRtjrBLEzmk1l\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"SFjYFcbK5zZqP7uRrwH9j\",\"children\":[{\"id\":\"Ch4rl-Ov75y1fmjuXWj3n\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"hSjrP13AKXrSNUbrxknZb\",\"children\":[{\"id\":\"6qCob66pSBkB_gTzcyNsR\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"jtyRo8Hm1ydLZPyIEJvqQ\",\"children\":[{\"id\":\"yjkrskz6HDk18iMXr91PC\",\"children\":[{\"id\":\"B1b53YLrw8dJgGoe3JiRr\",\"children\":[{\"id\":\"hc9GVuUwc_kvwbT0nMO10\",\"children\":[{\"text\":\"ppDeviceInfoList\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"nZ8AC_LhneIgIJOBO8t_b\",\"children\":[{\"id\":\"RSzra1d-k1nDJCA-uS2hy\",\"children\":[{\"id\":\"ondLBqS2IEHJMnt0bwcsl\",\"children\":[{\"text\":\"TMGAudioDeviceInfo\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"R0_kDANQ8j3EhAeuj3zsT\",\"children\":[{\"id\":\"b32bpztIBVAyjPKSr_-fZ\",\"children\":[{\"id\":\"ZFSkORsbIQzc-BmaQSo_L\",\"children\":[{\"text\":\"Device list\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"62ZYONu5hbN3xFjPnbh-8\",\"children\":[{\"id\":\"tPeRfkxgQ39T4aYruueje\",\"children\":[{\"id\":\"ObKNxaRYaqJ3DE78URBBZ\",\"children\":[{\"id\":\"CJ3vQDe2zPkwMwsmnDxn9\",\"children\":[{\"text\":\"nCount\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"MgPsWxKy3pH-sXVW7nca2\",\"children\":[{\"id\":\"mvB3CTFiNs2z3hfcjp7W5\",\"children\":[{\"id\":\"ET2NDE4usJP80Vq-wYvgU\",\"children\":[{\"text\":\"int\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"24aZfYfw5wHqGuDyi-tek\",\"children\":[{\"id\":\"kyIpT8x-2mT0MTxGMKYPw\",\"children\":[{\"id\":\"Qa7yTRSPRizPq1djU9dqG\",\"children\":[{\"text\":\"Number of the speakers\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[36,26,38],\"widthMode\":\"percentage\"},{\"id\":\"rzNHl78cdX_aWp4IWD_ND\",\"children\":[{\"id\":\"YGJv8uHWD8yrks3hNBOER\",\"children\":[{\"id\":\"5sB9AP_XMlfhzF6JZwTT-\",\"children\":[{\"id\":\"xaZg_FKX9tCGBTwDAUkD4\",\"children\":[{\"code\":1,\"text\":\"TMGAudioDeviceInfo\"},{\"text\":\" Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ootFT86zOdCP67qOV96li\",\"children\":[{\"id\":\"2UjIZAg4mVRQehamDqm0A\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"UR3ZTyc5i-aJinYNIle-l\",\"children\":[{\"id\":\"jHJBpgJxIA7-WCu0Yk61D\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"ZR2e264Wf13YdfaSAWQDi\",\"children\":[{\"id\":\"OgXr-rUK4_jqBv1F53s3U\",\"children\":[{\"id\":\"SKLrfddOCQjmjJckN7HaO\",\"children\":[{\"id\":\"as8GGvPiZ5eyK5S9JyW6b\",\"children\":[{\"text\":\"pDeviceID\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Vae9fX3QWuK5NeMD50kaP\",\"children\":[{\"id\":\"kzb-lV1HB9ghHBI-GxJMg\",\"children\":[{\"id\":\"be9f7Od7w4Bj5Fai5FqSE\",\"children\":[{\"text\":\"const char*\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"3RLT7XZvC8iKYYYWdpPWt\",\"children\":[{\"id\":\"XJ_OmpQ24ySIGx8noV44G\",\"children\":[{\"id\":\"VVlWzl-GVHrXYojS2k2DE\",\"children\":[{\"text\":\"Device ID\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"3MMOEe9kkjaJMnV_61ecP\",\"children\":[{\"id\":\"4QxaUntlpdjPglamRjJWB\",\"children\":[{\"id\":\"9qLgSGCgypL1VTQyREigZ\",\"children\":[{\"id\":\"3OSte26fukNTC81vCJrff\",\"children\":[{\"text\":\"pDeviceName\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"tHLF1XZZvd80w72WxK3-g\",\"children\":[{\"id\":\"tNxQOHMT6ANfPPZdtTTXN\",\"children\":[{\"id\":\"cBYT61zoGuxZa11Xmujy2\",\"children\":[{\"text\":\"const char*\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"-A_3gx0ntzTth1xynoAax\",\"children\":[{\"id\":\"AmC_skGG-avUTDdhBt2N3\",\"children\":[{\"id\":\"4DPh4gJlVaiPO3Iwbgu61\",\"children\":[{\"text\":\"Device name\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[36,26,38],\"widthMode\":\"percentage\"},{\"id\":\"2o4GW8VlTcoGrdBQIrRdP\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code40\",\"type\":\"h4\"},{\"id\":\"A0zsfBgTIWvGQQa1PCVm3\",\"children\":[{\"id\":\"uDJtMuLsdoJFee4OruMpV\",\"children\":[{\"text\":\"ITMGContextGetInstance()->GetAudioCtrl()->GetSpeakerList(ppDeviceInfoList,nCount);\"}],\"type\":\"code-line\"},{\"id\":\"8siUliTXESAiERxWiTfgM\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"e5ZkPEaOLX8PBLnk6hDle\",\"children\":[{\"text\":\"Selecting a speaker\"}],\"nodeId\":\"selecting-a-speaker\",\"type\":\"h3\"},{\"id\":\"qWPFKVdzBi02tIomtyWQ0\",\"children\":[{\"text\":\"This API is used to select a playback device. If this API is not called or \"},{\"code\":1,\"text\":\"DEVICEID_DEFAULT\"},{\"text\":\" is passed in, the default playback device will be selected.\"}],\"type\":\"p\"},{\"id\":\"Nb87RV7VhsnmJzI2uab4G\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\"function-prototype6\",\"type\":\"h4\"},{\"id\":\"Q1YcFcgGjUUk7lHe6u7R5\",\"children\":[{\"id\":\"1h5CtUJx1ZH7ddJA4T8x4\",\"children\":[{\"text\":\"ITMGAudioCtrl virtual int SelectSpeaker(const char* pSpeakerID)\"}],\"type\":\"code-line\"},{\"id\":\"jsEznF3CmDeCmw0g4cUeO\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"iGGI-ttS7lJwjPHntyVOd\",\"children\":[{\"id\":\"F272cwL8h0qzx5SZxgDdY\",\"children\":[{\"id\":\"C11Yz6Ju-1afjpgvVbWeh\",\"children\":[{\"id\":\"kXLfn8UMYqapQqsc408xW\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"zddc5dLzjBOIq5NOtsFar\",\"children\":[{\"id\":\"c8bhia1Ez1lR5oOMdOxtt\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"4FPNw1sVco7vtK2wfwmuU\",\"children\":[{\"id\":\"a_kWzq2D6Fhx1ho6Qsk7G\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"rgFiLAfW-D1e7KptF5ygd\",\"children\":[{\"id\":\"1rWi_48Br-rzbL7Rbriaz\",\"children\":[{\"id\":\"7oefZ59MOL8Y2b4NTMflC\",\"children\":[{\"id\":\"brnY_q3ER2fNJk8zkzgat\",\"children\":[{\"text\":\"pSpeakerID\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"e4AmthMJTfatI3eVBsYM0\",\"children\":[{\"id\":\"obSd06X8J0w149BYLXOs_\",\"children\":[{\"id\":\"vAkzm7KUwhQwJ0H2vxjHh\",\"children\":[{\"text\":\"const char*\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Ps301YpFQbOrmWBKUpiQ0\",\"children\":[{\"id\":\"27hNVBXxuRSygxpGsfX9m\",\"children\":[{\"id\":\"PFiqMjxxHYZidvfe8-wF-\",\"children\":[{\"text\":\"Speaker ID, which is from the list returned by \"},{\"code\":1,\"text\":\"GetSpeakerList\"},{\"text\":\".\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[16,15,69],\"widthMode\":\"percentage\"},{\"id\":\"Fq36byssiLv8NmVhaOCL3\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code41\",\"type\":\"h4\"},{\"id\":\"eP9ycxGLEwVtZV8zos9S5\",\"children\":[{\"id\":\"FddvoZWn1Rd1RuwSKiqBn\",\"children\":[{\"text\":\"const char* pSpeakerID =\\\"{0.0.1.00000000}.{7b0b712d-3b46-4f7a-bb83-bf9be4047f0d}\\\";\"}],\"type\":\"code-line\"},{\"id\":\"mzmcy5udqsNZMlPsAx3w7\",\"children\":[{\"text\":\"ITMGContextGetInstance()->GetAudioCtrl()->SelectSpeaker(pSpeakerID);\"}],\"type\":\"code-line\"},{\"id\":\"uihgKnp4WriD-Xi4H48Vu\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"GVcPzQRqHSQLH7UqfbmCb\",\"children\":[{\"text\":\"Advanced APIs\"}],\"nodeId\":\"advanced-apis\",\"type\":\"h2\"},{\"id\":\"e5RapuqD8M9hXadId7C2x\",\"children\":[{\"text\":\"Enabling in-ear monitoring\"}],\"nodeId\":\"enabling-in-ear-monitoring\",\"type\":\"h3\"},{\"id\":\"zcjadxDH7PQ1_wubRHTMn\",\"children\":[{\"text\":\"This API is used to enable in-ear monitoring. You need to call \"},{\"code\":1,\"text\":\"EnableLoopBack+EnableSpeaker\"},{\"text\":\" before you can hear your own voice.\"}],\"type\":\"p\"},{\"id\":\"-5L7W7uNLmaWZo7GHu0GP\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype33\",\"type\":\"h4\"},{\"id\":\"2AkI7NC0vyN_r_xgk-TXG\",\"children\":[{\"id\":\"LKL4Ng0hakYHeN94TLbMy\",\"children\":[{\"text\":\"ITMGAudioCtrl virtual int EnableLoopBack(bool enable)\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"ieCdL4TOeWkqYKjqeg4Mk\",\"children\":[{\"id\":\"SsuUiLnb-G0VQACeCXaYx\",\"children\":[{\"id\":\"LCGh8sdLZoNuJPJG5KAkU\",\"children\":[{\"id\":\"85jLibr8i3_XAOZL8rQcV\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"6YqtJs9UxrVUCoBLSdMsZ\",\"children\":[{\"id\":\"Fy7i8Zq6jkxzwrNGK9y1l\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"MvmTrHOQs3qv65f6M41tX\",\"children\":[{\"id\":\"6n16wueCG0cuqT6MUB1xf\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"gMLHO-LR8nPOM5bbUOqoh\",\"children\":[{\"id\":\"sjVLjed1xFlG0I7YmCN1y\",\"children\":[{\"id\":\"r0UfEZKvb0yvfH1zoqmyQ\",\"children\":[{\"id\":\"zUOqEPX3s6iL0X2rOZ19H\",\"children\":[{\"text\":\"enable\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"nQYBsxuSvJUgy0uwnzTLb\",\"children\":[{\"id\":\"7a9VLUm4qeMwOAqZjaU2Z\",\"children\":[{\"id\":\"DsQimghfyP9zXuVqih57_\",\"children\":[{\"text\":\"bool\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"YNykRnUxT5OEiL-wyaQLP\",\"children\":[{\"id\":\"qnlIcGO-766JSWfC-4f8s\",\"children\":[{\"id\":\"hBgfgYqZd-ZDT-uubm_LN\",\"children\":[{\"text\":\"Specifies whether to enable\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[26,17,57],\"widthMode\":\"percentage\"},{\"id\":\"l0utDdwLa_94cGoQUASw-\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code42\",\"type\":\"h4\"},{\"id\":\"Hi0Bl230rtRX_CiovootF\",\"children\":[{\"id\":\"wLwokzOuIT4MBjCB9PCdN\",\"children\":[{\"text\":\"ITMGContextGetInstance()->GetAudioCtrl()->EnableLoopBack(true);\"}],\"type\":\"code-line\"},{\"id\":\"b8bLzM2umxyGAW5SBWgJ7\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"glGzmyegI9N_2w2hZepEf\",\"children\":[{\"text\":\"Getting a user's room audio type\"}],\"nodeId\":\"getting-a-user's-room-audio-type\",\"type\":\"h3\"},{\"id\":\"yHLxksYzzi__QqkwoyXte\",\"children\":[{\"text\":\"This API is used to get a user's room audio type. The returned value is the room audio type. Value 0 indicates that an error occurred while getting the user's room audio type. For room audio types, please see the \"},{\"code\":1,\"text\":\"EnterRoom\"},{\"text\":\" API.\"}],\"type\":\"p\"},{\"id\":\"zQI8h4xmdFUzfIWkMS3xN\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype34\",\"type\":\"h4\"},{\"id\":\"cbUoG_6LvP9Bn1sSflkVb\",\"children\":[{\"id\":\"rgyS4ECoLSdNIblmRlSxr\",\"children\":[{\"text\":\"class ITMGRoom {\"}],\"type\":\"code-line\"},{\"id\":\"60Z07VhPt7UGJ1N6tqPBH\",\"children\":[{\"text\":\"public:\"}],\"type\":\"code-line\"},{\"id\":\"LK9uoaVXAOWWphfn80Yz9\",\"children\":[{\"text\":\" virtual ~ITMGRoom() {} ;\"}],\"type\":\"code-line\"},{\"id\":\"chq836zOTjCtjRZzifpnd\",\"children\":[{\"text\":\" virtual int GetRoomType() = 0;\"}],\"type\":\"code-line\"},{\"id\":\"zkFvZTOhgi57KlYYrebci\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"},{\"id\":\"Tj_qy440xcVNKkQXA9q0m\",\"children\":[{\"text\":\"};\"}],\"type\":\"code-line\"},{\"id\":\"nXQDiqCPmEx6eihJGPJb2\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"7M6py4S996fuHu1-aGCUV\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code43\",\"type\":\"h4\"},{\"id\":\"qsEx1KmoBE4GWUNL9RQDx\",\"children\":[{\"id\":\"YZ4J61FoSbL0W4UAyofr1\",\"children\":[{\"text\":\"ITMGContext* context = ITMGContextGetInstance();\"}],\"type\":\"code-line\"},{\"id\":\"DecQvg7semiEnXD66uHtb\",\"children\":[{\"text\":\"ITMGContextGetInstance()->GetRoom()->GetRoomType();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"_WbH2aOrR9QiQNQoFaGI2\",\"children\":[{\"text\":\"Changing the room type\"}],\"nodeId\":\"changing-the-room-type\",\"type\":\"h3\"},{\"id\":\"G-odEEqVcRL3XCKJK3K9j\",\"children\":[{\"text\":\"This API is used to modify a user's room audio type. For the result, please see the callback event. The event type is \"},{\"code\":1,\"text\":\"ITMG_MAIN_EVENT_TYPE_CHANGE_ROOM_TYPE\"},{\"text\":\". The audio type of the room is determined by the first user to enter the room. After that, if a member in the room changes the room type, it will take effect for all members there.\"}],\"type\":\"p\"},{\"id\":\"ZSrrAIUitV7wTswl0cDVG\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype35\",\"type\":\"h4\"},{\"id\":\"rBDy5iACNB7OTPf3hRO7w\",\"children\":[{\"id\":\"XEaY2L5KTmH_fiBBx46sO\",\"children\":[{\"text\":\"IITMGContext TMGRoom public int ChangeRoomType((ITMG_ROOM_TYPE roomType)\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"AO6TlnIR-2a8VhokyXhxo\",\"children\":[{\"id\":\"YYLZDMyNCtLbDXBOA0LwM\",\"children\":[{\"id\":\"aIbGkt_7Tf_HRsWOegLxv\",\"children\":[{\"id\":\"R4SVHmU9WAdqmuvc9DJCg\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"r3q8DUTOhTG-hmTbHvH-v\",\"children\":[{\"id\":\"O0Mc4mmh-AQgqwqm73q7u\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"wjoMvUVurpXTIVYpJ2w2G\",\"children\":[{\"id\":\"Q97YR4HTmHqfEfeE2jpdV\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"pHN_cRrfH-JkCOwlgMJmS\",\"children\":[{\"id\":\"D-_aEQil0KjLlkFm2PDvc\",\"children\":[{\"id\":\"CASuWSXeqLGfPHNVFHrak\",\"children\":[{\"id\":\"u9d24PJw2z3fS5dTnTXqF\",\"children\":[{\"text\":\"roomType\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"eQ3FGcRLnPNz0jJxBoT22\",\"children\":[{\"id\":\"5y0YcRXNGS3sKrVtVLX9L\",\"children\":[{\"id\":\"Q5gF6_rzhukZijF88GGha\",\"children\":[{\"text\":\"ITMG_ROOM_TYPE\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"UyCluBAprpMyfE69ohfYl\",\"children\":[{\"id\":\"O64X7aOq9Dj-M4zUxY0r4\",\"children\":[{\"id\":\"cCWgQAkCGhkAQ1uH26ETK\",\"children\":[{\"text\":\"Room type to be switched to the target type. For room audio types, please see the \"},{\"code\":1,\"text\":\"EnterRoom\"},{\"text\":\" API.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[15,22,63],\"widthMode\":\"percentage\"},{\"id\":\"ewTU0dgIh4VKDp06ms_On\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code44\",\"type\":\"h4\"},{\"id\":\"YMdGrWUwXsX_qVrgpesWA\",\"children\":[{\"id\":\"gqIo-QuJNabsjrCWIU-ai\",\"children\":[{\"text\":\"ITMGContext* context = ITMGContextGetInstance();\"}],\"type\":\"code-line\"},{\"id\":\"55JvLnXCQlBcH_pAzu34V\",\"children\":[{\"text\":\"ITMGContextGetInstance()->GetRoom()->ChangeRoomType(ITMG_ROOM_TYPE_FLUENCY);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"w-4bu6aRrMkhcEJonHXrN\",\"children\":[{\"text\":\"Data details\"}],\"nodeId\":\"data-details3\",\"type\":\"h4\"},{\"id\":\"JjftnDb2XpiAkkntmfSlj\",\"children\":[{\"id\":\"XXI98Q40Za28VBqzujGEU\",\"children\":[{\"id\":\"2rlAV_jfqXMiWCJQrt_3M\",\"children\":[{\"id\":\"PkpsBPB9p29QhNLMmRJNZ\",\"children\":[{\"text\":\"Message\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"mDu20tJJskQdvAqMEyodq\",\"children\":[{\"id\":\"V-rBNkG5BOnp_KdZL-4SG\",\"children\":[{\"text\":\"Data\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Zg2k7I-KwAtUUFXp3UBlD\",\"children\":[{\"id\":\"yrXrzdcce0JExChhsnmmx\",\"children\":[{\"text\":\"Sample\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"WhEiW68cETXNsKcajVSDU\",\"children\":[{\"id\":\"nTFMBSpvXTe9jYLsZTL5i\",\"children\":[{\"id\":\"vU0ca6QcSFbWuHFCPKSJo\",\"children\":[{\"id\":\"cPEU-uXJUQyDksR_QiGlh\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_CHANGE_ROOM_TYPE\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"-PCLCY9NpGHhjlttUQWwB\",\"children\":[{\"id\":\"8lqipCMvdytI_rQ6l8UiF\",\"children\":[{\"id\":\"AGiIo4GNtlp7qmlPzaZeg\",\"children\":[{\"text\":\"result; error_info; new_room_type\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"IMfJr7fJymMK0jn_ryiYl\",\"children\":[{\"id\":\"HvO4LBulBefIOIbs_x6EY\",\"children\":[{\"id\":\"9Xcu3pFFnQGBvPGj_w-oY\",\"children\":[{\"text\":\"{\\\"error_info\\\":\\\"\\\",\\\"new_room_type\\\":0,\\\"result\\\":0}\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[40,26,34],\"widthMode\":\"percentage\"},{\"id\":\"SVwu8W5NpJoYOdHJB6CwX\",\"children\":[{\"text\":\"Callback for room type setting completion\"}],\"nodeId\":\"callback-for-room-type-setting-completion\",\"type\":\"h3\"},{\"id\":\"0T9YOWKtq6Jm81rvJySUv\",\"children\":[{\"text\":\"After the room type is set, the event message \"},{\"code\":1,\"text\":\"ITMG_MAIN_EVENT_TYPE_CHANGE_ROOM_TYPE\"},{\"text\":\" will be returned in the callback. The returned parameters include \"},{\"code\":1,\"text\":\"result\"},{\"text\":\", \"},{\"code\":1,\"text\":\"error_info\"},{\"text\":\", and \"},{\"code\":1,\"text\":\"new_room_type\"},{\"text\":\". The \"},{\"code\":1,\"text\":\"new_room_type\"},{\"text\":\" represents the following information. The event message will be identified in the \"},{\"code\":1,\"text\":\"OnEvent\"},{\"text\":\" function.\"}],\"type\":\"p\"},{\"id\":\"cpuFxxOVyfzeMHcb3If7J\",\"children\":[{\"id\":\"euOtKN6_eCBF_lWXBXC2y\",\"children\":[{\"id\":\"dOiA8Ie_GJhYq00f-tmkG\",\"children\":[{\"id\":\"rBF_-On0au2mb7yIn9-gT\",\"children\":[{\"text\":\"Event Subtype\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"EURHpRZnW-AFTENE3ZXv8\",\"children\":[{\"id\":\"u-vnSQwAmJbfcCvvhlVbL\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"UIO8l2gzpmhsr7_9hJr1T\",\"children\":[{\"id\":\"foXifbVGhcHR9vZ9qs2HV\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"fzHMRU9bnXHvlwf10th6r\",\"children\":[{\"id\":\"tKOq7ZjwU5VroJEPVnITI\",\"children\":[{\"id\":\"fvBEus0eCF2prSDlI3oNV\",\"children\":[{\"id\":\"b-Q5QQUShZ4M0EexBUuf2\",\"children\":[{\"text\":\"ITMG_ROOM_CHANGE_EVENT_ENTERROOM\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"W-p3ZkULngDm6u6FhEpNi\",\"children\":[{\"id\":\"DfdGDgz-8cAcO64xh8lHg\",\"children\":[{\"id\":\"VRyd9JOOXNC4bZsNipg-K\",\"children\":[{\"text\":\"1\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"SORqJGV9lacDLzspw_0Yy\",\"children\":[{\"id\":\"UkGsjZQ23dSjK39Nv_jF_\",\"children\":[{\"id\":\"BXaXFx0uGLFC6IgHdJavl\",\"children\":[{\"text\":\"Indicates that the existing audio type is inconsistent with and changed to that of the entered room.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"HLQQ9IgqV-PyXnthxIS1u\",\"children\":[{\"id\":\"5tS3ykryjTxkaIt-mbh66\",\"children\":[{\"id\":\"3cZLfaGb5LI4m8B4Z2HKR\",\"children\":[{\"id\":\"app6Nvvyr5Renysa-3d-c\",\"children\":[{\"text\":\"ITMG_ROOM_CHANGE_EVENT_START\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"g30Xnlpr99JKichn-qNxe\",\"children\":[{\"id\":\"LOeorjgUH7Qqd7P-FGfC0\",\"children\":[{\"id\":\"vvTyjt4DeQ3sBl10u3qI1\",\"children\":[{\"text\":\"2\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"W3T1U3tiT4oDuDPcMYxKx\",\"children\":[{\"id\":\"g4if8nTQ69KPYeoydTD4m\",\"children\":[{\"id\":\"zBRS7lOxe96av4kbruAMR\",\"children\":[{\"text\":\"Indicates that a user is already in the room and the audio type starts changing (e.g., calling the \"},{\"code\":1,\"text\":\"ChangeRoomType\"},{\"text\":\" API to change the audio type).\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"VegIz3-OS6CSgOArSGdmT\",\"children\":[{\"id\":\"VmV1adoxv4pLf5vRhx_tG\",\"children\":[{\"id\":\"GWzXyrka8M-tJkXzHw6yS\",\"children\":[{\"id\":\"0fs-0aTA73HJbKHFHdBau\",\"children\":[{\"text\":\"ITMG_ROOM_CHANGE_EVENT_COMPLETE\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"FaeK9Kn6Z_NjTD3FIXYmH\",\"children\":[{\"id\":\"b2g83tr9skmq48Yrr8X6n\",\"children\":[{\"id\":\"YuT62yL0PBxVsHHyBWl79\",\"children\":[{\"text\":\"3\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"aLLb4WgZ6dYzvhhjqT8Aq\",\"children\":[{\"id\":\"R4rYUAPn90P9A0sB7ceR1\",\"children\":[{\"id\":\"X0cIMUoqRJcwcrc8NCQAp\",\"children\":[{\"text\":\"Indicates that a user is already in the room and the audio type has been changed.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"xLd9FyQkaGRjbtRPYjvFE\",\"children\":[{\"id\":\"zBgT5v9-nsmIDz9Nl42KW\",\"children\":[{\"id\":\"UnuMLd1T-ATGw70c2-eXz\",\"children\":[{\"id\":\"ExzyXRHtFHZKLdxXjrdAy\",\"children\":[{\"text\":\"ITMG_ROOM_CHANGE_EVENT_REQUEST\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"jiQX250QyNT_511jA2RFr\",\"children\":[{\"id\":\"1Anmn5-vIyGB2Ht1EdO-N\",\"children\":[{\"id\":\"Xt9M62LIJVnQ4Usxmu7vb\",\"children\":[{\"text\":\"4\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"bYYSdQq7dqdllYiP9sQE0\",\"children\":[{\"id\":\"ri1YJ1YsbDiwQdbwauVv3\",\"children\":[{\"id\":\"a39MIRjOJnTgK3Hp7L6L5\",\"children\":[{\"text\":\"Indicates that a room member calls the \"},{\"code\":1,\"text\":\"ChangeRoomType\"},{\"text\":\" API to request a change of room audio type.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[36,11,53],\"widthMode\":\"percentage\"},{\"id\":\"Ufkspjm48QMrYOmVxy_L7\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code45\",\"type\":\"h4\"},{\"id\":\"FPidBUnA86NiyCLCUc6rK\",\"children\":[{\"id\":\"oha4ychPuU7LRSgS8ZoEv\",\"children\":[{\"text\":\"void TMGTestScene::OnEvent(ITMG_MAIN_EVENT_TYPE eventType,const char* data){\"}],\"type\":\"code-line\"},{\"id\":\"jJgO80UDbTW2rPYVz8_yF\",\"children\":[{\"text\":\" if (ITMGContext.ITMG_MAIN_EVENT_TYPE.ITMG_MAIN_EVENT_TYPE_CHANGE_ROOM_TYPE == type)\"}],\"type\":\"code-line\"},{\"id\":\"8DkdWtp9yiv39lAkQjcMb\",\"children\":[{\"text\":\" {\"}],\"type\":\"code-line\"},{\"id\":\"weW5Ozy1Mx8tdLXswG-CD\",\"children\":[{\"text\":\" // Process room type events\"}],\"type\":\"code-line\"},{\"id\":\"Ebl-lDhmEGaMRtsxykOcr\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"1BXzkhagA7UwtPpOLwD8R\",\"children\":[{\"text\":\"}\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"WFKKzWIRN0j-dN8mPceUN\",\"children\":[{\"text\":\"The monitoring event of room call quality\"}],\"nodeId\":\"the-monitoring-event-of-room-call-quality\",\"type\":\"h3\"},{\"id\":\"V2N8hbdzVZyTtWgMeoJSG\",\"children\":[{\"text\":\"This is the quality monitoring event, which is triggered once every two seconds after room entry, and its message is \"},{\"code\":1,\"text\":\"ITMG_MAIN_EVENT_TYPE_CHANGE_ROOM_QUALITY\"},{\"text\":\". The returned parameters include \"},{\"code\":1,\"text\":\"weight\"},{\"text\":\", \"},{\"code\":1,\"text\":\"loss\"},{\"text\":\", and \"},{\"code\":1,\"text\":\"delay\"},{\"text\":\", which are as detailed below:\"}],\"type\":\"p\"},{\"id\":\"w1VyO-k1cwFFV-MC98dMX\",\"children\":[{\"id\":\"sOIuyv3qdaoVRYogVTfnl\",\"children\":[{\"id\":\"waUku10mQq6GD1H2qiSVH\",\"children\":[{\"id\":\"rkH2vtKSy6d8e8AZD8qNK\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"txBqFH7SaF4TEnNf41I2t\",\"children\":[{\"id\":\"-4dWk1ImHcp3eXoaMySEv\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"v9olMHsW9osZBafExvvIl\",\"children\":[{\"id\":\"c7FIzY7xvv4G_lFRf3Utv\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"5juPtfKcTdLCI6qBsbUka\",\"children\":[{\"id\":\"00XR4L5WEzxjXgJcEe36V\",\"children\":[{\"id\":\"SNVWjmeZw9HgQD0e8FYTM\",\"children\":[{\"id\":\"8XiU74r8HcPRGQENeIhtC\",\"children\":[{\"text\":\"weight\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"8qBf2hZa-KzQjQSP-gPbs\",\"children\":[{\"id\":\"IcVQF-OjN88h-rgMaNE7A\",\"children\":[{\"id\":\"W9jLU7yh-lh9HD_K-UbXU\",\"children\":[{\"text\":\"int\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"OQO-HfPRa8i-zyRE5aGqx\",\"children\":[{\"id\":\"5fRpaLb8qt7ZXtvi38rMY\",\"children\":[{\"id\":\"Mu80z5flVpf6wRw9BlKR2\",\"children\":[{\"text\":\"Value range: 1-50. 50 indicates excellent sound quality, 1 indicates very poor (barely usable) sound quality, and 0 represents an initial meaningless value. Generally, if the value is below 30, the business layer will remind users that the network is poor and recommend them to switch the network.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"NTUZrQWPx_jAPezRf39Kj\",\"children\":[{\"id\":\"NfBeMEI5UTDizDguBriin\",\"children\":[{\"id\":\"BvNWt119oE9pAQ-_60Ap6\",\"children\":[{\"id\":\"Mzc0TAGQAqhl31D73jTWp\",\"children\":[{\"text\":\"loss\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"RLGkawa2k0yJVVVb_hRS7\",\"children\":[{\"id\":\"WyqIZK3_3XSdT91K0Yo-c\",\"children\":[{\"id\":\"eN-ovrbdWihnQZcCLTQ1k\",\"children\":[{\"text\":\"double\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"TmaGTZ8QDDJOBjmInVs6T\",\"children\":[{\"id\":\"8cinSPmEy511G1phaysH0\",\"children\":[{\"id\":\"lpcxFqOda28WYtGrmjbZB\",\"children\":[{\"text\":\"Upstream packet loss rate\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"775b0fEfTvHGINtiMlzZk\",\"children\":[{\"id\":\"tgmELpyhTvIjuVksQqW68\",\"children\":[{\"id\":\"AMcEw9L5wEbLST4j3nk4O\",\"children\":[{\"id\":\"6bGru1mQmAA7NemegI9IF\",\"children\":[{\"text\":\"delay\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"AfGOrn35VG30yAXmIy00K\",\"children\":[{\"id\":\"EOg2FQJEorjBqAxzvHTQX\",\"children\":[{\"id\":\"1xuRWqrUROw8vCKXZyAGQ\",\"children\":[{\"text\":\"int\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"kSYgM0ywIths4U-e9LHSX\",\"children\":[{\"id\":\"NF6k3gp1pFd-3eTJu4juM\",\"children\":[{\"id\":\"dWJp_yWULTunCmhAiVGIX\",\"children\":[{\"text\":\"Voice chat delay in ms\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[12,9,79],\"widthMode\":\"percentage\"},{\"id\":\"16pfiVtGlU39ChIpJz63H\",\"children\":[{\"text\":\"Getting the version number\"}],\"nodeId\":\"getting-the-version-number\",\"type\":\"h3\"},{\"id\":\"CPs4e86Lnw7fYAoux54CD\",\"children\":[{\"text\":\"This API is used to get the SDK version number for analysis.\"}],\"type\":\"p\"},{\"id\":\"NKDySsnpLaMR3tCf5OZU3\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype36\",\"type\":\"h4\"},{\"id\":\"Dxle0rui0D5wK6Lcsb5gc\",\"children\":[{\"id\":\"qlne8AX4CVDjnkA7JscvJ\",\"children\":[{\"text\":\"ITMGContext virtual const char* GetSDKVersion()\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"gxori8bk2V0DVWfdZgLx5\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code46\",\"type\":\"h4\"},{\"id\":\"ANWuN6N9hLy2KOZznySQc\",\"children\":[{\"id\":\"_cM1u2aDsfI0CFxXsmgk7\",\"children\":[{\"text\":\"ITMGContextGetInstance()->GetSDKVersion();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"6EAPs4C8tFo1byvWfvJML\",\"children\":[{\"text\":\"Setting the log printing level\"}],\"nodeId\":\"setting-the-log-printing-level\",\"type\":\"h3\"},{\"id\":\"ptBVovy9dAS8_mUIla7aW\",\"children\":[{\"text\":\"This API is used to set the level of logs to be printed, and needs to be called before the initialization. It is recommended to keep the default level.\"}],\"type\":\"p\"},{\"id\":\"p-aahAwRvbBDUie_CLFRZ\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype37\",\"type\":\"h4\"},{\"id\":\"kaPSUqLOPaVDsUizw3VNq\",\"children\":[{\"id\":\"ejzv9HqfD--opcdz9IcCy\",\"children\":[{\"text\":\"ITMGContext int SetLogLevel(ITMG_LOG_LEVEL levelWrite, ITMG_LOG_LEVEL levelPrint)\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"eir_JOW-ijWUR78ge_A_B\",\"children\":[{\"text\":\"Parameter description\"}],\"nodeId\":\"parameter-description\",\"type\":\"h4\"},{\"id\":\"kXyPbev4oC3qbC37upT8y\",\"children\":[{\"id\":\"bXZF5-gXcsJ5_o3vMHksC\",\"children\":[{\"id\":\"3QzKfw4nZTqc53KMz7ww5\",\"children\":[{\"id\":\"DbEAqjvPl3Ze3D1ow6-8M\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Do6QrxDFzA0i21VCF4Wmp\",\"children\":[{\"id\":\"Gz9KZZkUxSBW-1kP46G-z\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"oyREma8X1zOu98MpkitFK\",\"children\":[{\"id\":\"S2lCMyaW8BbzSVZvyDtTj\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"PE_M8uTbu21HtNwBKUh3q\",\"children\":[{\"id\":\"SEohKFWmYfxeFey3G7VbR\",\"children\":[{\"id\":\"7T_O_ugD4vum9eS6AjD0J\",\"children\":[{\"id\":\"wXDlzoRj3bDn7j3nwvtfV\",\"children\":[{\"text\":\"levelWrite\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"owA_Co2PMFIvjNUtsrqyt\",\"children\":[{\"id\":\"NslUPJY_9FD5HYduGOWYS\",\"children\":[{\"id\":\"gwLZ3NPtnsC7EiXdruE17\",\"children\":[{\"text\":\"ITMG_LOG_LEVEL\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"jNRTUjQmmkR_vot8zjr6P\",\"children\":[{\"id\":\"tJdxvHJLfv483mm8cYIH-\",\"children\":[{\"id\":\"0chemTP-XAYwo-55x3Xa5\",\"children\":[{\"text\":\"Sets the level of logs to be written. \"},{\"code\":1,\"text\":\"TMG_LOG_LEVEL_NONE\"},{\"text\":\" indicates not to write. Default value: TMG_LOG_LEVEL_INFO\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"Aeejf4S_pbCEJxVaJO15R\",\"children\":[{\"id\":\"xCfvr11ZtdTJALd1D-X9Y\",\"children\":[{\"id\":\"S4Pti8-j1aSG7-igblwF0\",\"children\":[{\"id\":\"_Q68feRvqKWtl3fYPdNWM\",\"children\":[{\"text\":\"levelPrint\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"aZikR_QYqtIo3A-9vSfND\",\"children\":[{\"id\":\"4U2czQlNoCeXJ9qwRMt0U\",\"children\":[{\"id\":\"QfdhoomaMPL56uC9xJD4W\",\"children\":[{\"text\":\"ITMG_LOG_LEVEL\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"T_fvqeH7DIBzX3k24N99-\",\"children\":[{\"id\":\"kvlD1T6JvUlO_-GolCvlm\",\"children\":[{\"id\":\"sPV1JiY_vKtDgBX5mD1aa\",\"children\":[{\"text\":\"Sets the level of logs to be printed. \"},{\"code\":1,\"text\":\"TMG_LOG_LEVEL_NONE\"},{\"text\":\" indicates not to print. Default value: TMG_LOG_LEVEL_ERROR\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[13,19,68],\"widthMode\":\"percentage\"},{\"id\":\"2xnWHtnEPcAblakVeyikC\",\"children\":[{\"code\":1,\"text\":\"ITMG_LOG_LEVEL\"},{\"text\":\" is as detailed below:\"}],\"type\":\"p\"},{\"id\":\"nJVl2WVWtgxgOEiPS49tw\",\"children\":[{\"id\":\"ND5dmyQZnULngb_T1uLC6\",\"children\":[{\"id\":\"5cY-8WpEe6nekmOb-tVxM\",\"children\":[{\"id\":\"ppMRr7W7mF06JZPMEA-Wn\",\"children\":[{\"text\":\"ITMG_LOG_LEVEL\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Hx0GrSnWaWBCopvj-IF4a\",\"children\":[{\"id\":\"plnwiP-lno7G7JulReK60\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"4kbYqaSPFNeqmPuW7IQDx\",\"children\":[{\"id\":\"n-IZJLOHAvC8HAXkbYNj9\",\"children\":[{\"id\":\"nVejweZLsmGpOiaELM-vG\",\"children\":[{\"id\":\"ih2_AIp6pH4Q6fvBQ6wQ-\",\"children\":[{\"text\":\"TMG_LOG_LEVEL_NONE\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Ne98Pbfvj09lgqJVhs93a\",\"children\":[{\"id\":\"4Pd3NTSmtEmm3a4_HtSQj\",\"children\":[{\"id\":\"Yftzgmfz7EHzF2mDFnscu\",\"children\":[{\"text\":\"Does not print logs\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"9ogzzlp8wRoa-mZ-hYL3b\",\"children\":[{\"id\":\"0THJr85Gg7WPXyMakTXbF\",\"children\":[{\"id\":\"sa_hicpRRQZf5FEwuWwjT\",\"children\":[{\"id\":\"SSx7FH9-GQx7TXChBYfZS\",\"children\":[{\"text\":\"TMG_LOG_LEVEL_ERROR\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"08F58QOgGjp1GYJtpu2Xj\",\"children\":[{\"id\":\"i6O3-vVLwafeEf0q7OcTQ\",\"children\":[{\"id\":\"Jvolm82DHHzVsHK9oih3o\",\"children\":[{\"text\":\"Prints error logs (default)\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"RQcg0fQupRxNzdNcoCL3W\",\"children\":[{\"id\":\"0QeqKrqn3yXpBkr3t5DWS\",\"children\":[{\"id\":\"E3l4KkWfUpbjeW4iFMNOf\",\"children\":[{\"id\":\"TtfVxoQVp1iAs9DFmbCA6\",\"children\":[{\"text\":\"TMG_LOG_LEVEL_INFO\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"4pfWmqNi1rIhK2jqafrDj\",\"children\":[{\"id\":\"Ceen9DQaw0iLv95gMv4mT\",\"children\":[{\"id\":\"dr65ffGhpqvNXqD7oHTxE\",\"children\":[{\"text\":\"Prints info logs\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"9HUrThCkONESQy4UW4Tlv\",\"children\":[{\"id\":\"vmmvo7fF3acl8rd1gwAE6\",\"children\":[{\"id\":\"co_sP6vfAh229fC27_u9O\",\"children\":[{\"id\":\"MUs29QnO8dYA2igENWN51\",\"children\":[{\"text\":\"TMG_LOG_LEVEL_DEBUG\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"msuuGnhi2ApwxyfF2nb7R\",\"children\":[{\"id\":\"IYgde6aSPPgcoBrnZAHNG\",\"children\":[{\"id\":\"taLmlYHNgscqGC3jVSmvN\",\"children\":[{\"text\":\"Prints debug logs\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"bLFzgF6EGG8TJQtCUxMSg\",\"children\":[{\"id\":\"xWwRHZLBdRG_1YJGTnNBM\",\"children\":[{\"id\":\"W_Ad2Oc1JVPGMvY3AzDIw\",\"children\":[{\"id\":\"Hd2IRARV0u3oUHM09aBGf\",\"children\":[{\"text\":\"TMG_LOG_LEVEL_VERBOSE\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"dD2Hp8J50meYAU3rHEgrO\",\"children\":[{\"id\":\"9226Qwx_WGuABQvO07xRf\",\"children\":[{\"id\":\"_F-iu__DnehVPTL-s7rLQ\",\"children\":[{\"text\":\"Prints verbose logs\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[38,62],\"widthMode\":\"percentage\"},{\"id\":\"yAtVp6HkUoDOjzYobrA1v\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code47\",\"type\":\"h4\"},{\"id\":\"sDvULqzvWwKfE7uIH9OJ8\",\"children\":[{\"id\":\"NcYTwVjKvdaLqWjyxAXWI\",\"children\":[{\"text\":\"ITMGContextGetInstance()->SetLogLevel(TMG_LOG_LEVEL_INFO,TMG_LOG_LEVEL_INFO);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"XZixZUvWI4g1xuHJWdxYl\",\"children\":[{\"text\":\"Setting the log printing path\"}],\"nodeId\":\"setting-the-log-printing-path\",\"type\":\"h3\"},{\"id\":\"iYDO1DXiUiujAd25A-Hqj\",\"children\":[{\"text\":\"This API is used to set the log printing path. The default path is as follows. It needs to be called before Init.\"}],\"type\":\"p\"},{\"id\":\"-d3ZYWYFhGIAZkHyy_UtQ\",\"children\":[{\"id\":\"XyL-HVQ_pYFMfSck5QN6u\",\"children\":[{\"id\":\"braw3ethpxjXLxADGBMGU\",\"children\":[{\"id\":\"0DehddpXfrH8-Zx0FI7vs\",\"children\":[{\"text\":\"OS\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"VJQrFr7IPjdp2MRFMJ1Hy\",\"children\":[{\"id\":\"w0J8DIvi-gTIuXhI2AwPI\",\"children\":[{\"text\":\"Path\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"vuAlvVPH_sAdfrd3Gs-1q\",\"children\":[{\"id\":\"n-MWdyftYbqa27tVBH5_I\",\"children\":[{\"id\":\"FH3O5dbXpVPNQEPnmpinW\",\"children\":[{\"id\":\"lkpCuzBLza75XwRppH_Vv\",\"children\":[{\"text\":\"Windows\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"XnmfPx0fG__RXuKcxo_gY\",\"children\":[{\"id\":\"DYKI-QTbINduSgu8dqyE5\",\"children\":[{\"id\":\"6N16ynOdSvmU0aIlsrCgT\",\"children\":[{\"text\":\"%appdata%\\\\Tencent\\\\GME\\\\ProcessName\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"-GC039bCuyU1jP3UzDllp\",\"children\":[{\"id\":\"JH4J2xUaRtfB468v283ZS\",\"children\":[{\"id\":\"vYs2xhd0FFy842_NZmN5R\",\"children\":[{\"id\":\"kdW76zD2AbhsQG86n1CGq\",\"children\":[{\"text\":\"iOS\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"qXLW45epUiBlR1l6HUcCX\",\"children\":[{\"id\":\"Ax-8oNP_AKT07jNqVhgMA\",\"children\":[{\"id\":\"BDH8fow_HsTgvsmgmNyzX\",\"children\":[{\"text\":\"Application/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/Documents\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"ikW-c03klrgEi59toEEWv\",\"children\":[{\"id\":\"Pa40gwkskzm6FOg-Db1W3\",\"children\":[{\"id\":\"x1rYh7rBmPIN80q90o2Ol\",\"children\":[{\"id\":\"XZdJvQHynH_-yxZaKHoNq\",\"children\":[{\"text\":\"Android\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"CAYn-n4I4Y-nz2LVkNG73\",\"children\":[{\"id\":\"GzAkTz6zLnM0XHj-HHkvD\",\"children\":[{\"id\":\"TpiS7oDUX5jmwjYn79_5p\",\"children\":[{\"text\":\"/sdcard/Android/data/xxx.xxx.xxx/files\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"GxsoDPnifETVcKqxYc3Ur\",\"children\":[{\"id\":\"aaPKUXxMXhHwjM8xFW79o\",\"children\":[{\"id\":\"SsOHriW1wwQEPfQqZO6j1\",\"children\":[{\"id\":\"B0erYf_j6KD4E4Qgh32By\",\"children\":[{\"text\":\"Mac\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Ehpww-S8ttu-o7RXBai7J\",\"children\":[{\"id\":\"zHzsYYcLdG0Lnbgo42KUW\",\"children\":[{\"id\":\"2ar16EGTWxbPf7qXDklCT\",\"children\":[{\"text\":\"/Users/username/Library/Containers/xxx.xxx.xxx/Data/Documents\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[16,84],\"widthMode\":\"percentage\"},{\"id\":\"YW8vd7UMGCHi12SzO4eA3\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype38\",\"type\":\"h4\"},{\"id\":\"mAFJYpSKQJLzDUHpYbc-I\",\"children\":[{\"id\":\"2lsvXVY8E6uPWb6hekluF\",\"children\":[{\"text\":\"ITMGContext virtual int SetLogPath(const char* logDir) \"}],\"type\":\"code-line\"},{\"id\":\"NanDFN9VEaZ79DONpP2Nc\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"EZVJmbOm3bmd_jVaDRYes\",\"children\":[{\"id\":\"3laLqReX5haXjHy2TOt61\",\"children\":[{\"id\":\"LaW8qDYY8rJTAnlam8-nk\",\"children\":[{\"id\":\"iPz0BmAzM0c0MQdRS5kN_\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"1gP_FzjseqnngwPjTXQqS\",\"children\":[{\"id\":\"mgr5TwTifk8EzRbfrTAV2\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"0SqPpHKX67nQJMAXFlVCq\",\"children\":[{\"id\":\"tFpGtNBDO09J8hl3xTcvS\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"XieXN_qy4f_qfKtJAMKIX\",\"children\":[{\"id\":\"Gd-IhSn-UOvs_AoIggY4q\",\"children\":[{\"id\":\"SI2XcnFYfz7bpP5PERvbi\",\"children\":[{\"id\":\"Nun1bPfj0NmD4Zal2YSaq\",\"children\":[{\"text\":\"logDir\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"mgjlXcfbyjOw1xiB4Oz9-\",\"children\":[{\"id\":\"rsBSUv9oGP9xOkXZiZCAB\",\"children\":[{\"id\":\"os1l-L0mL_EyEhSgUeWX9\",\"children\":[{\"text\":\"const char*\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"GpArLvZK7G9WLTyow7EbO\",\"children\":[{\"id\":\"RCPOislnMTVmbBBBtc1GX\",\"children\":[{\"id\":\"1X0Mtap6j8BSfVEAMSmze\",\"children\":[{\"text\":\"Path\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[32,33,35],\"widthMode\":\"percentage\"},{\"id\":\"ps_-gKf2QchV6UXsBJnq5\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code48\",\"type\":\"h4\"},{\"id\":\"OpudxDBZ6SBJQmPjYJ_0I\",\"children\":[{\"id\":\"NlxgS4KtOalwauFy7ujTv\",\"children\":[{\"text\":\"cosnt char* logDir = \\\"\\\"// Set a path by yourself\"}],\"type\":\"code-line\"},{\"id\":\"ql3KUAsi6Uj9V_2XLPzxW\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"},{\"id\":\"0cE70nIh9bgglBegdc4pm\",\"children\":[{\"text\":\"ITMGContext* context = ITMGContextGetInstance();\"}],\"type\":\"code-line\"},{\"id\":\"1T2wgSKoobwEiUdmGOI8W\",\"children\":[{\"text\":\"context->SetLogPath(logDir);\"}],\"type\":\"code-line\"},{\"id\":\"G3rZ20EnGGqT5BBJjhMJw\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"FU8USqt2I3a8xQvCONVUY\",\"children\":[{\"text\":\"Getting the diagnostic messages\"}],\"nodeId\":\"getting-the-diagnostic-messages\",\"type\":\"h3\"},{\"id\":\"xWCQhvAoyWRDstzDmMnaZ\",\"children\":[{\"text\":\"This API is used to get information on the quality of real-time audio/video calls, which is mainly used to view real-time call quality and troubleshoot and can be ignored on the business side.\"}],\"type\":\"p\"},{\"id\":\"OBUsWTfmN2Ksm7RLaUq-n\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype39\",\"type\":\"h4\"},{\"id\":\"WcUWy1mJ2xYlruadW9Lvk\",\"children\":[{\"id\":\"3apQSFc_Tcbbth_Osbkv9\",\"children\":[{\"text\":\"ITMGRoom virtual const char* GetQualityTips()\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"3xCIjygS4l6BGWZ8sCy4w\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code49\",\"type\":\"h4\"},{\"id\":\"5lfrNx_o9QLgK3R6zU9n5\",\"children\":[{\"id\":\"UEcDiLOAyqa93cYdukd37\",\"children\":[{\"text\":\"ITMGContextGetInstance()->GetRoom()->GetQualityTips();\"}],\"type\":\"code-line\"},{\"id\":\"evxUTWJeIc42CYiqcqgQS\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"JigOY2bIt3PuL_fVkY3Jy\",\"children\":[{\"text\":\"Callback Messages\"}],\"nodeId\":\"callback-messages\",\"type\":\"h2\"},{\"type\":\"table\",\"rowHeader\":true,\"children\":[{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"Message\"}],\"id\":\"Vm2y4LaFS1Ci-J0fdb5JV\"}],\"id\":\"5R9uEP9tZxg-fE6CyLLOv\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"Description\"}],\"id\":\"U1wMFog7qAJhOCW0lkldP\"}],\"id\":\"gulGrRXV_O089ieVZmlwz\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"Parameter\"}],\"id\":\"QoN_N6kPfelcQma4p51uf\"}],\"id\":\"EVHzSP6DEUoqH8ZohdudX\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"Sample\"}],\"id\":\"HANImKMrzTgnOOCOc43WM\"}],\"id\":\"whsFwuwA8-SWydNQyfj86\"}],\"id\":\"qZCxOOTHfK9rQjYBiy_uc\"},{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_ENTER_ROOM\"}],\"id\":\"m9YQmsrgLK-V6NmVaFsY9\"}],\"id\":\"X33pP4tdjvLC-gug_EVLF\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"A member entered the audio room\"}],\"id\":\"VVU8O96FRZP_j7ZdTrUkx\"}],\"id\":\"eE38T7jBEkEcCvFLc5aZ-\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"result; error_info\"}],\"id\":\"83xy-b-Squu9r_i8LA7mF\"}],\"id\":\"lk1-ZTFAWDYyQZMDhlp_M\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"{\\\"error_info\\\":\\\"\\\",\\\"result\\\":0}\"}],\"id\":\"hYriCfWEkWYLiXDLFY6PG\"}],\"id\":\"jE5_ouU0mqxt7FoWBmb6b\"}],\"id\":\"UdnonmmtKX2ocekaq3luN\"},{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_EXIT_ROOM\"}],\"id\":\"0h2DAL45bNJEHmz7ThTBc\"}],\"id\":\"Coc-BufTE5vqoCOMjfsW1\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"A member exited the audio room\"}],\"id\":\"W_MF-TmW5aw501K-hD7OG\"}],\"id\":\"xaz4DwCvA3VZUDsl-Id56\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"result; error_info\"}],\"id\":\"jB-unBWxYGTny7KWUeiEV\"}],\"id\":\"blva6pViQuELbxhc5Esn1\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"{\\\"error_info\\\":\\\"\\\",\\\"result\\\":0}\"}],\"id\":\"NWVNdC6xr7HU58JSYlBJ3\"}],\"id\":\"DBTAaXTPBPW7E-8P_wYgG\"}],\"id\":\"zlTLdY2KPGLG-USKuhbcq\"},{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_ROOM_DISCONNECT\"}],\"id\":\"5zj9DiuHWs6TV99Mv3xDv\"}],\"id\":\"MfHpdC0nOSZSUfI6JVM0v\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"The room was disconnected for network or other reasons\"}],\"id\":\"OJtdq5Mcjk6-MgZXskOR8\"}],\"id\":\"hCSbUMb3-UjvGQe4C0WXy\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"result; error_info\"}],\"id\":\"GQ-SSCshRsimWDwtHMu_l\"}],\"id\":\"jGcoCKXP6mch58Hx2xbXz\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"{\\\"error_info\\\":\\\"waiting timeout, please check your network\\\",\\\"result\\\":0}\"}],\"id\":\"E15dwkCTTq_m84zasJKYv\"}],\"id\":\"Ck3-4BUdw_kLzpNhjFpBr\"}],\"id\":\"CGFM3Stj3tWNsoHKOEf1J\"},{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"ITMG_MAIN_EVNET_TYPE_USER_UPDATE\"}],\"id\":\"LU2yzVsEQRLqC6LPBDXXc\"}],\"id\":\"ooPS4O9ZNB2OIjqYX_8uP\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"The room members were updated\"}],\"id\":\"RxSK9tujptcvuJvq2mN9S\"}],\"id\":\"e0gELuVtd77ieqM3qJgbb\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"user_list; event_id\"}],\"id\":\"YdExtWW7idRVPTn4pshHB\"}],\"id\":\"vOem3FNfaP9vgu-ZlqNp9\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"{\\\"event_id\\\":1,\\\"user_list\\\":[\\\"0\\\"]}\"}],\"id\":\"tHqPaRR0Bg2eNgl_j0OOM\"}],\"id\":\"b5cIiNHI7aDRiwFuKljW0\"}],\"id\":\"9OfyF7fLLuicr7OzL2DKU\"},{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_RECONNECT_START\"}],\"id\":\"TCQk6zHNV3Ejj_xjgL1Us\"}],\"id\":\"OV2Y2e5J1fJwfY9wdfdwd\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"Room reconnection started\"}],\"id\":\"y6yXUM5HF9gZ3Uu5HLfcy\"}],\"id\":\"2CzLi3gE285sGMvjwMVGS\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"result; error_info\"}],\"id\":\"0mcBq2t2MgTbdejeyBOiX\"}],\"id\":\"psUUNWmIJmMBFcCXFRvmI\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"{\\\"error_info\\\":\\\"\\\",\\\"result\\\":0}\"}],\"id\":\"FRPiG1k5mnWcxYED-OwTE\"}],\"id\":\"n_VyEYHlcS5dry6VhA85f\"}],\"id\":\"FgVpZju6JbDmQASKHs2w_\"},{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_RECONNECT_SUCCESS\"}],\"id\":\"_qW0Yf2MS9UUEBIfsXGBV\"}],\"id\":\"gDHViid3opaCIQLjHpOo2\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"Room reconnection succeeded\"}],\"id\":\"aY8rvUyod5IRXD_8S4VnK\"}],\"id\":\"MgHn6zsw5oMxvJtEO-FQB\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"result; error_info\"}],\"id\":\"x1qcAEV8Oc4i3TZhvwcUj\"}],\"id\":\"vQEST1No6CcF_dDIlrw0w\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"{\\\"error_info\\\":\\\"\\\",\\\"result\\\":0}\"}],\"id\":\"wPbY_8Nw6aahHSeVbe4JS\"}],\"id\":\"jWsFdXQN1VewZ_5-zeEva\"}],\"id\":\"ga5toNtBvkZglJDDppE6x\"},{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_SWITCH_ROOM\"}],\"id\":\"Q-9bA1ZPqsR5j5eNqSiyG\"}],\"id\":\"pnD2B3ijTGemueQoh4TtD\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"The room was quickly switched\"}],\"id\":\"SGxPjpVhrnvhsbTJaIEOZ\"}],\"id\":\"xe-jT5q0ZKS8cdnRTpYzq\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"result; error_info\"}],\"id\":\"vmLQPNJPfI4Fsmca0y_BV\"}],\"id\":\"80PFflGPyVl8BWxjp9srd\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"{\\\"error_info\\\":\\\"\\\",\\\"result\\\":0}\"}],\"id\":\"Ux3ZEmzvokKeqiJB0obnM\"}],\"id\":\"JGtzSumCSzRItre9LPJ5B\"}],\"id\":\"sIl067ezZNaVBuX5ZxZlV\"},{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_CHANGE_ROOM_TYPE\"}],\"id\":\"L4uAlJCUuN9xpfiVj1-Bl\"}],\"id\":\"s7vPYWXDwajjKgp9rUQuI\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"The room status changed\"}],\"id\":\"y8ZrPOr7NLm2I2UgtkMpp\"}],\"id\":\"5OIbME5sxTrDCGhhRH8Gu\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"result; error_info; sub_event_type; new_room_type\"}],\"id\":\"FviqnCFAl5R8FeTz8_jki\"}],\"id\":\"77504X-ecnSA0Fv4SeuKv\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"{\\\"error_info\\\":\\\"\\\",\\\"new_room_type\\\":0,\\\"result\\\":0}\"}],\"id\":\"O2rDQfAWFYfzzH4Hn1kar\"}],\"id\":\"LRPaCGc5dAP7OShLQCJ9s\"}],\"id\":\"tnTMcV2a6vv1JRbHt2BGB\"},{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_ROOM_SHARING_START\"}],\"id\":\"FnZ0wbR_XkN4qmHhJRV3a\"}],\"id\":\"_h1IhXEj2cpkSaZqtGyLl\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"Cross-room mic connect started\"}],\"id\":\"WkFpbO9h7rJSEfs7LRtQr\"}],\"id\":\"RnBWIbMzQxSDDnDJzAEBq\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"result;\"}],\"id\":\"KWUXM9JT6NrNNyDCjEbdl\"}],\"id\":\"f0ywC1JEeGPVf4Lrlng7I\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"{\\\"result\\\":0}\"}],\"id\":\"J20jd4-MTsykDjNHLBCxn\"}],\"id\":\"FPSrXseCqjI9jGLxgPjyU\"}],\"id\":\"GixSc14QY9QxGA81d0TE8\"},{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_ROOM_SHARING_STOP\"}],\"id\":\"PB8U6ckYoKKqvxLFB5MfF\"}],\"id\":\"9TDcIUIR7HA0hQzLJxiGP\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"Cross-room mic connect stopped\"}],\"id\":\"kUuAy6P_0taynGe75FDX0\"}],\"id\":\"Zv2gczWc4Wki5GS5oJyWx\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"result;\"}],\"id\":\"lDL6Vn1ZDh9vXjaDUTNhX\"}],\"id\":\"-uPPtEwSjELpAGPwXnKoH\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"{\\\"result\\\":0}\"}],\"id\":\"gWxNFs5AXxhNEiV62l9jz\"}],\"id\":\"vKDWZx5-Tboa4NfmTWrkB\"}],\"id\":\"XWXezKNSIgg3Db2sy8cAS\"},{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_SPEAKER_DEFAULT_DEVICE_CHANGED\"}],\"id\":\"dmRrSh-KAjDhHaWYoA1Tb\"}],\"id\":\"2gH-ojoug5gGItQCG4rQ5\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"The default speaker was changed\"}],\"id\":\"WL8zyKfTw6Exq5HNKWV0i\"}],\"id\":\"Z2QT7vi5d_3Wfow5EQEPe\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"result; error_info\"}],\"id\":\"NBy53kaNo3tuveraN4aji\"}],\"id\":\"nZWesc2e9r5CF3gdf1FQS\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"{\\\"deviceID\\\":\\\"{0.0.0.00000000}.{a4f1e8be-49fa-43e2-b8cf-dd00542b47ae}\\\",\\\"deviceName\\\":\\\"speaker (Realtek High Definition Audio)\\\",\\\"error_info\\\":\\\"\\\",\\\"isNewDevice\\\":true,\\\"isUsedDevice\\\":false,\\\"result\\\":0}\"}],\"id\":\"TT7D90NPXY0932lVKUGI6\"}],\"id\":\"aiKHy3gmhbL0kIXj3iz5c\"}],\"id\":\"Pp6jghINuOO4e8_YdnT_D\"},{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_SPEAKER_NEW_DEVICE\"}],\"id\":\"MoeEXamfTs50rbkN1UrEB\"}],\"id\":\"f_QRsIZ1KMF6K_eb7YbyK\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"A speaker was added\"}],\"id\":\"Id0i5WsVkDD3yrM6Pk8sN\"}],\"id\":\"_OAu8X3ACUuRIH9twHxPj\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"result; error_info\"}],\"id\":\"noG6AVaINFW1OXgs9xA9n\"}],\"id\":\"BNrf0xMRAMeaCTn_Eqet1\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"{\\\"deviceID\\\":\\\"{0.0.0.00000000}.{a4f1e8be-49fa-43e2-b8cf-dd00542b47ae}\\\",\\\"deviceName\\\":\\\"speaker (Realtek High Definition Audio)\\\",\\\"error_info\\\":\\\"\\\",\\\"isNewDevice\\\":true,\\\"isUsedDevice\\\":false,\\\"result\\\":0}\"}],\"id\":\"PGRmbgJhHGNFLoVdbyWzQ\"}],\"id\":\"jtkxSLUSMUo7HldCZnbR6\"}],\"id\":\"-GjgHm8GWMEQUE_S4XQHO\"},{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_SPEAKER_LOST_DEVICE\"}],\"id\":\"tQgi6WzVPvv_qWRjh4ADi\"}],\"id\":\"VcxWAsKIDncipnrD0L-jx\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"A speaker was lost\"}],\"id\":\"rHirKB-SczS52tbuCY09G\"}],\"id\":\"DAjWa2I4u2LJsJ3Zj-i9z\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"result; error_info\"}],\"id\":\"iqO_ux5nHzg5-ND3gIAq2\"}],\"id\":\"tXogdKFwAVGGQx4ntoQ9f\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"{\\\"deviceID\\\":\\\"{0.0.0.00000000}.{a4f1e8be-49fa-43e2-b8cf-dd00542b47ae}\\\",\\\"deviceName\\\":\\\"speaker (Realtek High Definition Audio)\\\",\\\"error_info\\\":\\\"\\\",\\\"isNewDevice\\\":false,\\\"isUsedDevice\\\":false,\\\"result\\\":0}\"}],\"id\":\"Yymk5GOpc9vFCcfplavhb\"}],\"id\":\"ji5uEiocAZ7g1DDq-rYgh\"}],\"id\":\"ZFqEQtX34jJM-xS8etlYg\"},{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_MIC_NEW_DEVICE\"}],\"id\":\"77HraHTzadP9DlM_jiVX4\"}],\"id\":\"Nqo720cGVd1Xb4eNcVeJn\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"A mic was added\"}],\"id\":\"lwitYW2vojkvICWx1Kvg_\"}],\"id\":\"j5GEAEXJ-3OG-seqBlXyw\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"result; error_info\"}],\"id\":\"DkkxkGR4MoMjRN0e4Ool-\"}],\"id\":\"i2LTpm3KPxuhgkZ2kvQLV\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"{\\\"deviceID\\\":\\\"{0.0.1.00000000}.{5fdf1a5b-f42d-4ab2-890a-7e454093f229}\\\",\\\"deviceName\\\":\\\"mic (Realtek High Definition Audio)\\\",\\\"error_info\\\":\\\"\\\",\\\"isNewDevice\\\":true,\\\"isUsedDevice\\\":true,\\\"result\\\":0}\"}],\"id\":\"5Z0mJJda08tgLnhAQzff6\"}],\"id\":\"-XyuW1LjsiNyR-gyP3-Qr\"}],\"id\":\"fnNuqS4mqmvWRF-49Y8eB\"},{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_MIC_LOST_DEVICE\"}],\"id\":\"uH2dimk4bHbEBvCXxR0PM\"}],\"id\":\"Gr4p4FMvKh-5KC3mBoRXL\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"A mic was lost\"}],\"id\":\"xL8_ojlgDnufpIcdzv7wl\"}],\"id\":\"-bCSc0Xt_y6B7Qf--agwu\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"result; error_info\"}],\"id\":\"X33VlCaUXsKwbridl0Bkg\"}],\"id\":\"Dwli-9dcz1844A-Ei5e8t\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"{\\\"deviceID\\\":\\\"{0.0.1.00000000}.{5fdf1a5b-f42d-4ab2-890a-7e454093f229}\\\",\\\"deviceName\\\":\\\"mic (Realtek High Definition Audio)\\\",\\\"error_info\\\":\\\"\\\",\\\"isNewDevice\\\":false,\\\"isUsedDevice\\\":true,\\\"result\\\":0}\"}],\"id\":\"77fmUBR8GzZG82VAkrnKk\"}],\"id\":\"Nrwkvin1H_kCvDSeRKUYM\"}],\"id\":\"SMntMbwX-q86rDAHzMzoF\"},{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_MIC_DEFAULT_DEVICE_CHANGED\"}],\"id\":\"iDRyvpM800DpD2l7SONnU\"}],\"id\":\"4oBL_Pq-l55v43ykx4P8t\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"The default mic was changed\"}],\"id\":\"NsoeTt3GOnvj7YXHtSRSI\"}],\"id\":\"yENyp0vWntWzQEK1MnUOQ\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"result; error_info\"}],\"id\":\"RnD1vZEQdLpioxLWLOzdr\"}],\"id\":\"aruiEKU75rEZ3zLOZV6CK\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"{\\\"deviceID\\\":\\\"{0.0.1.00000000}.{5fdf1a5b-f42d-4ab2-890a-7e454093f229}\\\",\\\"deviceName\\\":\\\"mic (Realtek High Definition Audio)\\\",\\\"error_info\\\":\\\"\\\",\\\"isNewDevice\\\":false,\\\"isUsedDevice\\\":true,\\\"result\\\":0}\"}],\"id\":\"2WeWSSpoYqqshe4RLDrre\"}],\"id\":\"kgTsosWG-tZpdWJqMiktC\"}],\"id\":\"lz6aN9_QjyiDjCODhxK6L\"},{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_CHANGE_ROOM_QUALITY\"}],\"id\":\"8QccDqeB3eZ96rxiAw_X6\"}],\"id\":\"-_0HLF_MW_B2Io_OuqzC_\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"Room quality message\"}],\"id\":\"zeu2GCJFhSohdDwe5m5Ef\"}],\"id\":\"vf61-xGWDCBT5KRohPsIH\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"weight; loss; delay\"}],\"id\":\"DGa-RoP8HrTjHiXG7aQn6\"}],\"id\":\"6DPtaWM0s5bJP21o-W9Mf\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"{\\\"weight\\\":5,\\\"loss\\\":0.1,\\\"delay\\\":1}\"}],\"id\":\"lvjowszM2HxdItpVbyg82\"}],\"id\":\"eaeUNV6VAu2dEjz6I0FI6\"}],\"id\":\"QflBjjMmMiLJLQOaEYAyj\"},{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_RECORD_COMPLETE\"}],\"id\":\"nJrL_wntMEEp8h03MxPfY\"}],\"id\":\"mxoG23OZTGH8QTI4eMf6v\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"Recording of a voice message was completed\"}],\"id\":\"W3wGg8rjGXqf0Gcz3k_TW\"}],\"id\":\"mWDbfmrt9vDvgA3YHuRYv\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"result; file_path\"}],\"id\":\"QETbT9KMi5S-j1pjkO1GN\"}],\"id\":\"xA1aMcuv4HS3C4Wqrp2Hn\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"{\\\"file_path\\\":\\\"\\\",\\\"result\\\":0}\"}],\"id\":\"zNSGWttpgALxNj-q0Bwbd\"}],\"id\":\"OBqrNWNEOSqUwt-QH37_s\"}],\"id\":\"D9kKOd-P8KpEiZSW1s4aw\"},{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_UPLOAD_COMPLETE\"}],\"id\":\"vmbV6eG_pzbxHN9TBNQ8T\"}],\"id\":\"P7XGfzQ1CTcgiWoe2HF16\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"Upload of a voice message was completed\"}],\"id\":\"BpY6cn9mu2w464kyHbBf5\"}],\"id\":\"bB2NSExAiVTT7zGyzulRN\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"result; file_path;file_id\"}],\"id\":\"a6UeqCQLeNSrLMVMTNtnA\"}],\"id\":\"TBIT48Hgr_MD0iypTanhp\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"{\\\"file_id\\\":\\\"\\\",\\\"file_path\\\":\\\"\\\",\\\"result\\\":0}\"}],\"id\":\"7hoCmHhYdiQo29gveB4Ds\"}],\"id\":\"3sQF_QuwE-C13w4VvvI6c\"}],\"id\":\"HwIroIHvM3l-vKYbV6GWi\"},{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_DOWNLOAD_COMPLETE\"}],\"id\":\"jkI4EWfbXeh8ILpznzz-c\"}],\"id\":\"mrZAIe_kvP8FElXLUe-hD\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"Download of a voice message was completed\"}],\"id\":\"9v_IG4_1B_tWBBzY6SHXI\"}],\"id\":\"yRdWScOz4SfDlrc2l8X3I\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"result; file_path;file_id\"}],\"id\":\"QGqMV73qNthiQ7Ce3-lCG\"}],\"id\":\"LqNClXAQ60iRj3qFZeAyF\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"{\\\"file_id\\\":\\\"\\\",\\\"file_path\\\":\\\"\\\",\\\"result\\\":0}\"}],\"id\":\"bZ8v4BTV90QYeX5kmosWr\"}],\"id\":\"P59Vkm5Ygo_okzxqk1mec\"}],\"id\":\"byhgNKv_Py-Dhd3G6Nq9P\"},{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_PLAY_COMPLETE\"}],\"id\":\"qHaqmirSXgZVgn8Xuj4Ga\"}],\"id\":\"ee1_W0PjBOOs0gNVeYTPF\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"Playback of a voice message was completed\"}],\"id\":\"4UQFIJpySOXXBCOg152dK\"}],\"id\":\"T_r1WQAoH7aevkIH3W-3G\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"result; file_path\"}],\"id\":\"ziq6R61fwegl1dnGzoK3A\"}],\"id\":\"oloNniT56-tOIiPkGIniC\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"{\\\"file_path\\\":\\\"\\\",\\\"result\\\":0}\"}],\"id\":\"qSkcrAhEujMcUHDOlP1P-\"}],\"id\":\"xWkeN84TySCostEZYX6de\"}],\"id\":\"Q_DRlJDwBiMMXmHeXriXE\"},{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_SPEECH2TEXT_COMPLETE\"}],\"id\":\"Ol85JCOR_2jYSIyZFBox-\"}],\"id\":\"WkLasxXYSAcLLb5DkPIfB\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"Fast recording-to-text conversion was completed\"}],\"id\":\"UoIeUYch4j2_85xTmoEFq\"}],\"id\":\"yqxMOfnqG1zaKyH7yzS2y\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"result; text;file_id\"}],\"id\":\"8g-SIn9LBDO4iLQStgbAY\"}],\"id\":\"aMKrLEAvpjD1EahemMy8s\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"{\\\"file_id\\\":\\\"\\\",\\\"text\\\":\\\"\\\",\\\"result\\\":0}\"}],\"id\":\"gwi6ixim-947qZCo_aV_J\"}],\"id\":\"m11IxqFCp-h09nDAPMeIc\"}],\"id\":\"eKFYZRYNR3q7XNgC_fL90\"},{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRECOGNITION_COMPLETE\"}],\"id\":\"YN6mgNaozfBUSa_fAs-n4\"}],\"id\":\"WWRRjQlioLJu_Kw0cenKZ\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"Streaming speech-to-text conversion was completed\"}],\"id\":\"T0F305gDezhu2zPy9Bm6F\"}],\"id\":\"As950yzW7lXT6nCVm6qsj\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"result; file_path; text;file_id\"}],\"id\":\"DeX0GITci-4MLgSJxJsTh\"}],\"id\":\"SLmqYeuHE-klpCrRQ6XBj\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"{\\\"file_id\\\":\\\"\\\",\\\"file_path\\\":\\\",\\\"text\\\":\\\"\\\",\\\"result\\\":0}\"}],\"id\":\"BgWPESoSXyfyDPAEFPsex\"}],\"id\":\"ZIwUMwxpISrh650TxEN3x\"}],\"id\":\"i8fvsRi9XwBBRLb6vPDyF\"},{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRECOGNITION_IS_RUNNING\"}],\"id\":\"7KM1AkJKNSYfv6tdQHSED\"}],\"id\":\"_7qpdkWlabQiYHWrPKA0d\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"A voice message is being converted into text in a streaming manner\"}],\"id\":\"rWlAXq-9zslTVNuKMnN3C\"}],\"id\":\"DQ6LZTA99ZutxRQv3azy0\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"result; file_path; text;file_id\"}],\"id\":\"twBE28nAoA6edGEQiUNQX\"}],\"id\":\"-ou4nu9J0XaNje0YYOX7-\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"{\\\"file_id\\\":\\\"\\\",\\\"file_path\\\":\\\",\\\"text\\\":\\\"\\\",\\\"result\\\":0}\"}],\"id\":\"KgdVJ1XiqbF20LzuAJqQy\"}],\"id\":\"p_rH_ve2V-wD8V-2zb3kd\"}],\"id\":\"I7NsXgttmpkYxK94MoQv2\"},{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_TEXT2SPEECH_COMPLETE\"}],\"id\":\"XtRlvsPZlA9uQ7aGP77au\"}],\"id\":\"0L2UbvgznS4sw3BtH-8F8\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"Text-to-speech conversion was completed\"}],\"id\":\"9D8PdwTh_VcYXzw3hMpYY\"}],\"id\":\"XpaTpCfL3td2Czxk7wB46\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"result; text;file_id\"}],\"id\":\"iYF--f72JHPghmomA7r4u\"}],\"id\":\"ztwaNrT0uEMGrzGTMt4Os\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"{\\\"file_id\\\":\\\"\\\",\\\"text\\\":\\\"\\\",\\\"result\\\":0}\"}],\"id\":\"syYfXXima6Ly7rgb88Rsq\"}],\"id\":\"Jnk9uD0Cgj1VSa8u2IZkg\"}],\"id\":\"hzdRRMTZHDfRHVHOvjYy4\"},{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_TRANSLATE_TEXT_COMPLETE\"}],\"id\":\"uZWNGonp6M2fTV5Sr5ktN\"}],\"id\":\"BRvWQDEBENRgC61MMjHTK\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"Text translation was completed\"}],\"id\":\"Jj4ksKMOEkZ3HH73pxFZ5\"}],\"id\":\"t-YMQxa4licfhKaDGKBkT\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"result; text;file_id\"}],\"id\":\"Y3pabwT2eQUGhb6kOSpam\"}],\"id\":\"dw1M916xUWxSNzUwpTrVn\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"{\\\"file_id\\\":\\\"\\\",\\\"text\\\":\\\"\\\",\\\"result\\\":0}\"}],\"id\":\"_1V2CO_GO08NGVqXfHGHI\"}],\"id\":\"LxFqSfXtuPjm-0ATOO_2N\"}],\"id\":\"8OGLvtW40BVIxxLOvBYOW\"}],\"id\":\"NUW4xA2IPVz-muTHbYEkw\",\"widths\":[23,24,20,33],\"widthMode\":\"percentage\"},{\"type\":\"p\",\"children\":[{\"text\":\"\"}],\"id\":\"r6QJhFr2C2G41d3vdsoXy\"}]"}},"51127":{"categoryId":607,"weight":76,"type":"page","extension":"","pid":15178,"id":51127,"lang":"en","title":"Speech-to-Text Service","pdfUrl":"","docType":"default","children":[],"firstReleaseTime":"2022-10-28 01:22:51","recentReleaseTime":"2022-10-28 01:22:51","content":{"title":"Speech-to-Text Service","body":"
This document describes how to integrate with and debug GME client APIs for the voice messaging and speech-to-text services for Cocos2d.

Key Considerations for Using GME

GME provides the real-time voice service and voice messaging and speech-to-text services, which all depend on core APIs such as Init and Poll.
Caution:
There is a default call rate limit for speech-to-text APIs. For more information on how calls are billed within the limit, see Purchase Guide. If you want to increase the limit or learn more about how excessive calls are billed, submit a ticket.
Non-streaming speech-to-text API SpeechToText(): There can be up to 10 concurrent requests per account.
Streaming speech-to-text API StartRecordingWithStreamingRecognition(): There can be up to 50 concurrent requests per account.
Real-time streaming speech-to-text API StartRealTimeASR(): There can be up to 50 concurrent requests per account.

Notes

You have created a GME application and obtained the SDK AppID and key. For more information, see Activating Services.
You have activated GME real-time voice service and voice messaging and speech-to-text services. For more information, see Activating Services.
Configure your project before using GME; otherwise, the SDK will not take effect.
After a GME API is called successfully, AV_OK will be returned with the value being 0.
GME APIs should be called in the same thread.
The Poll API should be called periodically for GME to trigger event callbacks.
For detailed error code, see Error Codes.

Integrating the SDK

Directions

Key processes involved in SDK integration are as follows:

\"\"



C++ classes

Class
Description
ITMGContext
Key APIs
ITMGPTT
Voice messaging and speech-to-text APIs

Key APIs

API
Description
Init
Initializes GME
Poll
Triggers event callback
Pause
Pauses the system
Resume
Resumes the system
Uninit
Uninitializes GME

Importing the header file

#include "auth_buffer.h"
#include "tmg_sdk.h"
#include "AdvanceHeaders/tmg_sdk_adv.h"
#include <vector>

Callback

Setting callback sample

// When initializing the SDK
m_pTmgContext = ITMGContextGetInstance();
m_pTmgContext->SetTMGDelegate(this);

// In the destructor
CTMGSDK_For_AudioDlg::~CTMGSDK_For_AudioDlg()
{
ITMGContextGetInstance()->SetTMGDelegate(NULL);
}


Message delivery

The API class uses the Delegate method to send callback notifications to the application. ITMG_MAIN_EVENT_TYPE indicates the message type. The data on Windows is in json string format. For the key-value pairs, please see the relevant documentation.
// Declaration in the header file
virtual void OnEvent(ITMG_MAIN_EVENT_TYPE eventType,const char* data);
// Sample code
void CTMGSDK_For_AudioDlg::OnEvent(ITMG_MAIN_EVENT_TYPE eventType, const char* data)
{
switch(eventType)
{
case ITMG_MAIN_EVENT_TYPE_XXXX_XXXX:
{
// Process the callback
}
break;
}
}

Getting singleton

The GME SDK is provided in the form of a singleton, all calls begin with ITMGContext, and callbacks are passed to the application through ITMGDelegate, which should be configured first.

Sample code

ITMGContext* m_pTmgContext;
m_pTmgContext->Init(AppID, OpenID);

Initializing SDK

You need to initialize the SDK through the Init API before you can use the real-time voice, voice message, and speech-to-text services. The Init API must be called in the same thread as other APIs. We recommend you call all APIs in the main thread.

API prototype

ITMGContext virtual int Init(const char* sdkAppId, const char* openId)
Parameter
Type
Description
sdkAppId
const char*
AppID provided in the GME console, which can be obtained as instructed in Activating Services.
openID
const char*
openID can only be in Int64 type, which is passed in after being converted to a const char*. You can customize its rules, and it must be unique in the application. To pass in openID as a string, submit a ticket for application.

Returned values

Returned Value
Description
AV_OK = 0
Initialized SDK successfully.
AV_ERR_SDK_NOT_FULL_UPDATE=7015
Checks whether the SDK file is complete. It is recommended to delete it and then import the SDK again.
Notes on 7015 error code:
The 7015 error code is judged by md5. If this error is reported during integration, please check the integrity and version of the SDK file as prompted.
The returned value AV_ERR_SDK_NOT_FULL_UPDATE is only a reminder but will not cause an initialization failure.
Due to the third-party reinforcement, Unity packaging mechanism and other factors, the md5 of the library file will be affected, resulting in misjudgment. Please ignore this error in the logic for official release, and try to avoid displaying it in the UI.

Sample code

#define SDKAPPID3RD "14000xxxxxx"
cosnt char* openId="10001";
ITMGContext* context = ITMGContextGetInstance();
context->Init(SDKAPPID3RD, openId);

Triggering event callback

Event callbacks can be triggered by periodically calling the Poll API in update. Poll is the message pump of GME, and the Poll API should be called periodically for GME to trigger event callbacks; otherwise, the entire SDK service will run exceptionally.\nYou can refer to the EnginePollHelper.cpp file in the demo.
Note:
The Poll API must be called periodically and in the main thread to avoid abnormal API callbacks.

API prototype

class ITMGContext {
protected:
virtual ~ITMGContext() {}

public:
virtual void Poll()= 0;
}

Sample code

void TMGTestScene::update(float delta)
{
ITMGContextGetInstance()->Poll();
}

Pausing the system

When a Pause event occurs in the system, the engine should also be notified for pause. If you do not need the background to play back the audio in the room, please call Pause API to pause the GME service.

API prototype

ITMGContext int Pause()

Resuming the system

When a Resume event occurs in the system, the engine should also be notified for resumption. The Resume API only supports resuming voice chat.

API prototype

ITMGContext int Resume()

Uninitializing SDK

This API is used to uninitialize the SDK to make it uninitialized. If the game business account is bound to openid, switching game account requires uninitializing GME and then using the new openid to initialize again.

API prototype

ITMGContext int Uninit()

Voice Messaging and Speech-to-Text Services

Note:
The speech-to-text service consists of fast recording-to-text conversion and streaming speech-to-text conversion.
You do not need to enter a voice chat room when using the voice message service.
The maximum recording duration of a voice message is 58 seconds by default, and the minimum recording duration cannot be less than 1 second. If you want to customize the recording duration, for example, to modify the maximum recording duration to 10 seconds, call the SetMaxMessageLength API to set it after initialization.

\"\"



Flowchart for using the speech-to-text service


\"\"


API
Description
GenAuthBuffer
Generates the local authentication key
ApplyPTTAuthbuffer
Initializes authentication
SetMaxMessageLength
Specifies the maximum length of voice message

Generating the local authentication key

Generate AuthBuffer for encryption and authentication of relevant features. For release in the production environment, please use the backend deployment key as detailed in Authentication Key.

API prototype

int QAVSDK_AuthBuffer_GenAuthBuffer(unsigned int dwSdkAppID, const char* strRoomID, const char* strOpenID,
const char* strKey, unsigned char* strAuthBuffer, unsigned int bufferLength);
Parameter
Type
Description
dwSdkAppID
int
AppId from the Tencent Cloud console.
strRoomID
const char*
Enter null or an empty string
strOpenID
const char*
User Identifier, which is the same as openID during initialization.
strKey
const char*
Permission key from the Tencent Cloud console.
strAuthBuffer
const char*
Returned authbuff.
bufferLength
int
Length of the authbuff passed in. 500 is recommended.

Application authentication

After the authentication information is generated, the authentication is assigned to the SDK.

API prototype

ITMGPTT virtual int ApplyPTTAuthbuffer(const char* authBuffer, int authBufferLen)
Parameter
Type
Description
authBuffer
const char*
Authentication
authBufferLen
int
Authentication length

Sample code

ITMGContextGetInstance()->GetPTT()->ApplyPTTAuthbuffer(authBuffer,authBufferLen);

Specifying the maximum duration of voice message

This API is used to specify the maximum duration of a voice message, which can be up to 58 seconds.

API prototype

ITMGPTT virtual int SetMaxMessageLength(int msTime)
Parameter
Type
Description
msTime
int
Audio duration in ms. Value range: 1000 < msTime <= 58000

Sample code

int msTime = 10000;
ITMGContextGetInstance()->GetPTT()->SetMaxMessageLength(msTime);

Streaming Speech Recognition

Voice messaging and speech-to-text APIs

API
Description
StartRecordingWithStreamingRecognition
Starts streaming recording
StopRecording
Stops recording

Starting streaming speech recognition

This API is used to start streaming speech recognition. Text obtained from speech-to-text conversion will be returned in real time in its callback. It can specify a language for recognition or translate the information recognized in speech into a specified language and return the translation. To stop recording, call Stop recording.

API prototype

ITMGPTT virtual int StartRecordingWithStreamingRecognition(const char* filePath)
ITMGPTT virtual int StartRecordingWithStreamingRecognition(const char* filePath,const char* translateLanguage,const char* translateLanguage)
Parameter
Type
Description
filePath
const char*
Path of stored audio file
speechLanguage
const char*
The language in which the audio file is to be converted to text. For parameters, see Language Parameter Reference List.
translateLanguage
const char*
The language in which the audio file is to be translated to text. For parameters, see Language Parameter Reference List.

Sample code

ITMGContextGetInstance()->GetPTT()->StartRecordingWithStreamingRecognition(filePath,"cmn-Hans-CN","cmn-Hans-CN");
Note:
Translation incurs additional fees. For more information, see Purchase Guide.

Callback for streaming speech recognition

After streaming speech recognition is started, you need to listen on callback messages in the OnEvent notification, which is as detailed below:
ITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRECOGNITION_COMPLETE returns text after the recording is stopped and the recognition is completed, which is equivalent to returning the recognized text after a paragraph of speech.
ITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRECOGNITION_IS_RUNNING returns the recognized text in real-time during the recording, which is equivalent to returning the recognized text while speaking.
The event message will be identified in the OnEvent notification based on the actual needs. The passed parameters include the following four messages.
Message Name
Description
result
Return code indicating whether streaming speech recognition is successful
text
Text converted from speech
file_path
Local path of stored recording file
file_id
Backend URL address of recording file, which will be retained for 90 days
Note:
The file_id is empty when the 'ITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRecognition_IS_RUNNING' message is listened.

Error codes

Error Code
Description
Suggested Solution
32775
Streaming speech-to-text conversion failed, but recording succeeded.
Call the UploadRecordedFile API to upload the recording file and then call the SpeechToText API to perform speech-to-text conversion.
32777
Streaming speech-to-text conversion failed, but recording and upload succeeded.
The message returned contains a backend URL after successful upload. Call the SpeechToText API to perform speech-to-text conversion.
32786
Streaming speech-to-text conversion failed.
During streaming recording, wait for the execution result of the streaming recording API to return.
32787
Speech-to-text conversion succeeded, but the text translation service was not activated.
Activate the text translation service in the console.
32788
Speech-to-text conversion succeeded, but the language parameter of the text translation service was invalid.
Check the parameter passed in.
If the error code 4098 is reported, see FAQs for solutions.

Sample code

void TMGTestScene::OnEvent(ITMG_MAIN_EVENT_TYPE eventType,const char* data){
switch (eventType) {
case ITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRECOGNITION_COMPLETE:
{
HandleSTREAM2TEXTComplete(data,true);
break;
}
...
case ITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRECOGNITION_IS_RUNNING:
{
HandleSTREAM2TEXTComplete(data, false);
break;
}
}
}

void CTMGSDK_For_AudioDlg::HandleSTREAM2TEXTComplete(const char* data, bool isComplete)
{
std::string strText = "STREAM2TEXT: ret=";
strText += data;
m_EditMonitor.SetWindowText(MByteToWChar(strText).c_str());
Json::Reader reader;
Json::Value root;
bool parseRet = reader.parse(data, root);
if (!parseRet) {
::SetWindowText(m_EditInfo.GetSafeHwnd(),MByteToWChar(std::string("parse result Json error")).c_str());
}
else
{
if (isComplete) {
::SetWindowText(m_EditUpload.GetSafeHwnd(), MByteToWChar(root["file_id"].asString()).c_str());
}
else {
std::string isruning = "STREAMINGRECOGNITION_IS_RUNNING";
::SetWindowText(m_EditUpload.GetSafeHwnd(), MByteToWChar(isruning).c_str());
}
}
}

Voice Message Recording

The recording process is as follows: start recording > stop recording > return recording callback > start the next recording.

Voice message and speech-to-text APIs

API
Description
StartRecording
Starts recording
PauseRecording
Pauses recording
ResumeRecording
Resumes recording
StopRecording
Stops recording
CancelRecording
Cancels recording

Starting recording

This API is used to start recording.

API prototype

ITMGPTT virtual int StartRecording(const char* fileDir)
Parameter
Type
Description
fileDir
const char*
Path of stored audio file

Sample code

char buffer[256]={0};
snprintf(buffer, sizeof(buffer), "%sunreal_ptt_local.file", getFilePath().c_str());
ITMGContextGetInstance()->GetPTT()->StartRecording(buffer);

Stopping recording

This API is used to stop recording. It is async, and a callback for recording completion will be returned after recording stops. A recording file will be available only after recording succeeds.

API prototype

ITMGPTT virtual int StopRecording()

Sample code

ITMGContextGetInstance()->GetPTT()->StopRecording();

Callback for recording start

The recording start result will be returned through the callback.
To stop recording, call StopRecording. The callback for recording start will be returned after the recording is stopped.
Parameter
Type
Description
result
int32
0: recording is completed
filepath
FString
Path of stored recording file, which must be accessible and cannot be the fileid

Error codes

Error Code Value
Cause
Suggested Solution
4097
Parameter is empty.
Check whether the API parameters in the code are correct.
4098
Initialization error.
Check whether the device is being used, whether the permissions are normal, and whether the initialization is normal.
4099
Recording is in progress.
Ensure that the SDK recording feature is used at the right time.
4100
Audio data is not captured.
Check whether the mic is working properly.
4101
An error occurred while accessing the file during recording.
Ensure the existence of the file and the validity of the file path.
4102
The mic is not authorized.
Mic permission is required for using the SDK. To add the permission, please see the SDK project configuration document for the corresponding engine or platform.
4103
The recording duration is too short.
The recording duration should be in ms and longer than 1,000 ms.
4104
No recording operation is started.
Check whether the recording starting API has been called.

Sample code

void TMGTestScene::OnEvent(ITMG_MAIN_EVENT_TYPE eventType,const char* data){
switch (eventType) {
case ITMG_MAIN_EVENT_TYPE_ENTER_ROOM:
{
// Process
break;
}
...
case ITMG_MAIN_EVNET_TYPE_PTT_RECORD_COMPLETE:
{
// Process
break;
}
}
}

Pausing recording

This API is used to pause recording. If you want to resume recording, please call the ResumeRecording API.

API prototype

ITMGPTT virtual int PauseRecording()

Sample code

ITMGContextGetInstance()->GetPTT()->PauseRecording();

Resuming recording

This API is used to resume recording.

API prototype

ITMGPTT virtual int ResumeRecording()

Sample code

ITMGContextGetInstance()->GetPTT()->ResumeRecording();

Canceling recording

This API is used to cancel recording. There is no callback after cancellation.

API prototype

ITMGPTT virtual int CancelRecording()

Sample code

ITMGContextGetInstance()->GetPTT()->CancelRecording();

Voice Message Upload, Download, and Playback

API
Description
UploadRecordedFile
Uploads the audio file
DownloadRecordedFile
Downloads the audio file
PlayRecordedFile
Plays back the audio file
StopPlayFile
Stops playing back the audio file
GetFileSize
Gets audio file size
GetVoiceFileDuration
Gets the audio file duration

Uploading an audio file

This API is used to upload an audio file.

API prototype

ITMGPTT virtual int UploadRecordedFile(const char* filePath)
Parameter
Type
Description
filePath
const char*
Path of uploaded audio file, which is a local path

Sample code

ITMGContextGetInstance()->GetPTT()->UploadRecordedFile(filePath);

Callback for audio file upload completion

After the audio file is uploaded, the event message ITMG_MAIN_EVNET_TYPE_PTT_UPLOAD_COMPLETE will be returned, which will be identified in the OnEvent function.\nThe passed parameters include result, file_path, and file_id.
Parameter
Type
Description
result
int32
0: recording is completed
filepath
FString
Path of stored recording file
fileid
FString
File URL path

Error codes

Error Code Value
Cause
Suggested Solution
8193
An error occurred while accessing the file during upload.
Ensure the existence of the file and the validity of the file path.
8194
Signature verification failed.
Check whether the authentication key is correct and whether the voice message and speech-to-text feature is initialized.
8195
A network error occurred.
Check whether the device can access the internet.
8196
The network failed while getting the upload parameters.
Check whether the authentication is correct and whether the device can access the internet.
8197
The packet returned during the process of getting the upload parameters is empty.
Check whether the authentication is correct and whether the device network can normally access the internet.
8198
Failed to decode the packet returned during the process of getting the upload parameters.
Check whether the authentication is correct and whether the device can access the internet.
8200
No appinfo is set.
Check whether the apply API is called or whether the input parameters are empty.

Sample code

void TMGTestScene::OnEvent(ITMG_MAIN_EVENT_TYPE eventType,const char* data){
switch (eventType) {
case ITMG_MAIN_EVENT_TYPE_ENTER_ROOM:
{
// Process
break;
}
...
case ITMG_MAIN_EVNET_TYPE_PTT_UPLOAD_COMPLETE:
{
// Process
break;
}
}
}

Downloading the audio file

This API is used to download an audio file.

API prototype

ITMGPTT virtual int DownloadRecordedFile(const char* fileId, const char* filePath)
Parameter
Type
Description
fileId
const char*
URL path of file
filePath
const char*
Local path of saved file

Sample code

ITMGContextGetInstance()->GetPTT()->DownloadRecordedFile(fileID,filePath);

Callback for audio file download completion

After the audio file is downloaded, the event message ITMG_MAIN_EVNET_TYPE_PTT_DOWNLOAD_COMPLETE will be returned, which will be identified in the OnEvent function.\nThe passed parameters include result, file_path, and file_id.
Parameter
Type
Description
result
int32
0: recording is completed
filepath
FString
Path of stored recording file
fileid
FString
URL path of file, which will be retained on the server for 90 days

Error codes

Error Code Value
Cause
Suggested Solution
12289
An error occurred while accessing the file during download.
Check whether the file path is valid.
12290
Signature verification failed.
Check whether the authentication key is correct and whether the voice message and speech-to-text feature is initialized.
12291
Network storage system exception.
The server failed to get the audio file. Check whether the API parameter fileid is correct, whether the network is normal, and whether the file exists in COS.
12292
Server file system error.
Check whether the device can access the internet and whether the file exists on the server.
12293
The HTTP network failed during the process of getting the download parameters.
Check whether the device can access the internet.
12294
The packet returned during the process of getting the download parameters is empty.
Check whether the device can access the internet.
12295
Failed to decode the packet returned during the process of getting the download parameters.
Check whether the device can access the internet.
12297
No appinfo is set.
Check whether the authentication key is correct and whether the voice message and speech-to-text feature is initialized.

Sample code

void TMGTestScene::OnEvent(ITMG_MAIN_EVENT_TYPE eventType,const char* data){
switch (eventType) {
case ITMG_MAIN_EVENT_TYPE_ENTER_ROOM:
{
// Process
break;
}

Playing back audio

This API is used to play back audio.

API prototype

ITMGPTT virtual int PlayRecordedFile(const char* filePath)
ITMGPTT virtual int PlayRecordedFile(const char* filePath, nt voiceType)
Parameter
Type
Description
filePath
const char*
Local audio file path
voicetype
int
Voice changer type. For more information, see Voice Changing Effects.

Error codes

Error Code Value
Cause
Suggested Solution
20485
Playback is not started.
Ensure the existence of the file and the validity of the file path.

Sample code

ITMGContextGetInstance()->GetPTT()->PlayRecordedFile(filePath);

Callback for audio playback

After the audio is played back, the event message ITMG_MAIN_EVNET_TYPE_PTT_PLAY_COMPLETE will be returned, which will be identified in the OnEvent function.\nThe passed parameter includes result and file_path.
Parameter
Type
Description
code
int
0: playback is completed
filepath
FString
Path of stored recording file

Error codes

Error Code Value
Cause
Suggested Solution
20481
Initialization error.
Check whether the device is being used, whether the permissions are normal, and whether the initialization is normal.
20482
During playback, the client tried to interrupt and play back the next one but failed (which should succeed normally).
Check whether the code logic is correct.
20483
Parameter is empty.
Check whether the API parameters in the code are correct.
20484
Internal error.
An error occurred while initializing the player. This error code is generally caused by failure in decoding, and the error should be located with the aid of logs.

Sample code

void TMGTestScene::OnEvent(ITMG_MAIN_EVENT_TYPE eventType,const char* data){
switch (eventType) {
...
else if (eventType == ITMG_MAIN_EVNET_TYPE_PTT_PLAY_COMPLETE) {
int32 result = JsonObject->GetIntegerField(TEXT("result"));
FString filepath = JsonObject->GetStringField(TEXT("file_path"));
onPttPlayFileCompleted(result, filepath);
}
}
}

Stopping audio playback

This API is used to stop audio playback. There will be a callback for playback completion when the playback stops.

API prototype

ITMGPTT virtual int StopPlayFile()

Sample code

ITMGContextGetInstance()->GetPTT()->StopPlayFile();

Getting audio file size

This API is used to get the size of an audio file.

API prototype

ITMGPTT virtual int GetFileSize(const char* filePath)
Parameter
Type
Description
filePath
const char*
Path of audio file, which is a local path

Sample code

ITMGContextGetInstance()->GetPTT()->GetFileSize(filePath);

Getting audio file duration

This API is used to get the duration of an audio file in milliseconds.

API prototype

ITMGPTT virtual int GetVoiceFileDuration(const char* filePath)
Parameter
Type
Description
filePath
const char*
Path of audio file, which is a local path

Sample code

ITMGContextGetInstance()->GetPTT()->GetVoiceFileDuration(filePath);

Fast Recording-to-Text Conversion

API
Description
SpeechToText
Converts speech to text

Converting audio file to text

This API is used to convert a specified audio file to text.

API prototype

ITMGPTT virtual void SpeechToText(const char* fileID)
Parameter
Type
Description
fileID
const char*
Audio file URL

Sample code

ITMGContextGetInstance()->GetPTT()->SpeechToText(fileID);

Translating audio file into text in specified language

This API can specify a language for recognition or translate the information recognized in speech into a specified language and return the translation.
Note:
Translation incurs additional fees. For more information, see Purchase Guide.

API prototype

ITMGPTT virtual int SpeechToText(const char* fileID,const char* speechLanguage)
ITMGPTT virtual int SpeechToText(const char* fileID,const char* speechLanguage,const char* translateLanguage)
Parameter
Type
Description
fileID
const char*
The URL of the audio file, which will be retained on the server for 90 days.
speechLanguage
const char*
The language in which the audio file is to be converted to text. For parameters, see Language Parameter Reference List.
translatelanguage
const char*
The language in which the audio file is to be translated to text. For parameters, see Language Parameter Reference List.

Sample code

ITMGContextGetInstance()->GetPTT()->SpeechToText(filePath,"cmn-Hans-CN","cmn-Hans-CN");

Callback for recognition

After the specified audio file is converted to text, the event message ITMG_MAIN_EVNET_TYPE_PTT_SPEECH2TEXT_COMPLETE will be returned, which will be identified in the OnEvent function.\nThe passed parameters include result, file_path and text (recognized text).
Parameter
Type
Description
result
int32
0: recording is completed
fileid
FString
URL of recording file, which will be retained on the server for 90 days
text
FString
Converted text

Error codes

Error Code Value
Cause
Suggested Solution
32769
An internal error occurred.
Analyze logs, get the actual error code returned from the backend to the client, and ask backend personnel for assistance.
32770
Network failed.
Check whether the device can access the internet.
32772
Failed to decode the returned packet.
Analyze logs, get the actual error code returned from the backend to the client, and ask backend personnel for assistance.
32774
No appinfo is set.
Check whether the authentication key is correct and whether the voice messaging and speech-to-text feature is initialized.
32776
authbuffer check failed.
Check whether authbuffer is correct.
32784
Incorrect speech-to-text conversion parameter.
Check whether the API parameter fileid in the code is empty.
32785
Speech-to-text translation returned an error.
Error with the backend of voice messaging and speech-to-text feature. Analyze logs, get the actual error code returned from the backend to the client, and ask backend personnel for assistance.
32787
Speech-to-text conversion succeeded, but the text translation service was not activated.
Activate the text translation service in the console.
32788
Speech-to-text conversion succeeded, but the language parameter of the text translation service was invalid.
Check the parameter passed in.

Sample code

void TMGTestScene::OnEvent(ITMG_MAIN_EVENT_TYPE eventType,const char* data){
switch (eventType) {
case ITMG_MAIN_EVENT_TYPE_ENTER_ROOM:
{
// Process
break;
}
...
case ITMG_MAIN_EVNET_TYPE_PTT_SPEECH2TEXT_COMPLETE:
{
// Process
break;
}
}
}

Voice Message Volume Level APIs

API
Description
GetMicLevel
Gets real-time mic volume level
SetMicVolume
Sets recording volume level
GetMicVolume
Gets recording volume level
GetSpeakerLevel
Gets real-time speaker volume
SetSpeakerVolume
Sets playback volume level
GetSpeakerVolume
Gets playback volume level

Getting the real-time mic volume of voice message

This API is used to get the real-time mic volume. An int-type value will be returned. Value range: 0-200.

API prototype

ITMGPTT virtual int GetMicLevel()

Sample code

ITMGContext.GetInstance(this).GetPTT().GetMicLevel();

Setting the recording volume of voice message

This API is used to set the recording volume of voice message. Value range: 0-200.

API prototype

ITMGPTT virtual int SetMicVolume(int vol)

Sample code

ITMGContextGetInstance()->GetPTT()->SetMicVolume(100);

Getting the recording volume of voice message

This API is used to get the recording volume of voice message. An int-type value will be returned. Value range: 0-200.

API prototype

ITMGPTT virtual int GetMicVolume()

Sample code

ITMGContextGetInstance()->GetPTT()->GetMicVolume();

Getting the real-time speaker volume of voice message

This API is used to get the real-time speaker volume. An int-type value will be returned. Value range: 0-200.

API prototype

ITMGPTT virtual int GetSpeakerLevel()

Sample code

ITMGContextGetInstance()->GetPTT()->GetSpeakerLevel();

Setting the playback volume of voice message

This API is used to set the playback volume of voice message. Value range: 0-200.

API prototype

ITMGPTT virtual int SetSpeakerVolume(int vol)

Sample code

ITMGContextGetInstance()->GetPTT()->SetSpeakerVolume(100);

Getting the playback volume of voice message

This API is used to get the playback volume of voice message. An int-type value will be returned. Value range: 0-200.

API prototype

ITMGPTT virtual int GetSpeakerVolume()

Sample code

ITMGContextGetInstance()->GetPTT()->GetSpeakerVolume();

Advanced APIs

Getting version number

This API is used to get the SDK version number for SDK usage analysis.

API prototype

ITMGContext virtual const char* GetSDKVersion()

Sample code

ITMGContextGetInstance()->GetSDKVersion();

Setting log printing level

This API is used to set the level of logs to be printed, and needs to be called before the initialization. It is recommended to keep the default level.

API prototype

ITMGContext int SetLogLevel(ITMG_LOG_LEVEL levelWrite, ITMG_LOG_LEVEL levelPrint)

Parameter description

Parameter
Type
Description
levelWrite
ITMG_LOG_LEVEL
Sets the level of logs to be written. TMG_LOG_LEVEL_NONE indicates not to write. Default value: TMG_LOG_LEVEL_INFO
levelPrint
ITMG_LOG_LEVEL
Sets the level of logs to be printed. TMG_LOG_LEVEL_NONE indicates not to print. Default value: TMG_LOG_LEVEL_ERROR
ITMG_LOG_LEVEL description:
ITMG_LOG_LEVEL
Description
TMG_LOG_LEVEL_NONE
Does not print logs
TMG_LOG_LEVEL_ERROR
Prints error logs (default)
TMG_LOG_LEVEL_INFO
Prints info logs
TMG_LOG_LEVEL_DEBUG
Prints debug logs
TMG_LOG_LEVEL_VERBOSE
Prints verbose logs

Sample code

ITMGContextGetInstance()->SetLogLevel(TMG_LOG_LEVEL_INFO,TMG_LOG_LEVEL_INFO);

Setting the log printing path

This API is used to set the log printing path. The default path is as follows. It needs to be called before Init.
OS
Path
Windows
%appdata%\\Tencent\\GME\\ProcessName
iOS
Application/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/Documents
Android
/sdcard/Android/data/xxx.xxx.xxx/files
Mac
/Users/username/Library/Containers/xxx.xxx.xxx/Data/Documents

API prototype

ITMGContext virtual int SetLogPath(const char* logDir)
Parameter
Type
Description
logDir
const char*
Path

Sample code

cosnt char* logDir = ""// Set a path by yourself
ITMGContext* context = ITMGContextGetInstance();
context->SetLogPath(logDir);

Callback Messages

Message
Description
Parameter
Sample
ITMG_MAIN_EVENT_TYPE_ENTER_ROOM
A member entered the audio room
result; error_info
{"error_info":"","result":0}
ITMG_MAIN_EVENT_TYPE_EXIT_ROOM
A member exited the audio room
result; error_info
{"error_info":"","result":0}
ITMG_MAIN_EVENT_TYPE_ROOM_DISCONNECT
The room was disconnected for network or other reasons
result; error_info
{"error_info":"waiting timeout, please check your network","result":0}
ITMG_MAIN_EVNET_TYPE_USER_UPDATE
Room members were updated
user_list; event_id
{"event_id":1,"user_list":["0"]}
ITMG_MAIN_EVENT_TYPE_RECONNECT_START
The reconnection to the room started
result; error_info
{"error_info":"","result":0}
ITMG_MAIN_EVENT_TYPE_RECONNECT_SUCCESS
The reconnection to the room succeeded
result; error_info
{"error_info":"","result":0}
ITMG_MAIN_EVENT_TYPE_SWITCH_ROOM
The room was quickly switched
result; error_info
{"error_info":"","result":0}
ITMG_MAIN_EVENT_TYPE_CHANGE_ROOM_TYPE
The room status was changed
result; error_info; sub_event_type; new_room_type
{"error_info":"","new_room_type":0,"result":0}
ITMG_MAIN_EVENT_TYPE_ROOM_SHARING_START
Cross-room mic connect started
result;
{"result":0}
ITMG_MAIN_EVENT_TYPE_ROOM_SHARING_STOP
Cross-room mic connect stopped
result;
{"result":0}
ITMG_MAIN_EVENT_TYPE_SPEAKER_DEFAULT_DEVICE_CHANGED
The default speaker device was changed
result; error_info
{"deviceID":"{0.0.0.00000000}.{a4f1e8be-49fa-43e2-b8cf-dd00542b47ae}","deviceName":"Speaker (Realtek High Definition Audio)","error_info":"","isNewDevice":true,"isUsedDevice":false,"result":0}
ITMG_MAIN_EVENT_TYPE_SPEAKER_NEW_DEVICE
A new speaker device was added
result; error_info
{"deviceID":"{0.0.0.00000000}.{a4f1e8be-49fa-43e2-b8cf-dd00542b47ae}","deviceName":"Speaker (Realtek High Definition Audio)","error_info":"","isNewDevice":true,"isUsedDevice":false,"result":0}
ITMG_MAIN_EVENT_TYPE_SPEAKER_LOST_DEVICE
A speaker device was lost
result; error_info
{"deviceID":"{0.0.0.00000000}.{a4f1e8be-49fa-43e2-b8cf-dd00542b47ae}","deviceName":"Speaker (Realtek High Definition Audio)","error_info":"","isNewDevice":false,"isUsedDevice":false,"result":0}
ITMG_MAIN_EVENT_TYPE_MIC_NEW_DEVICE
A new mic device was added
result; error_info
{"deviceID":"{0.0.1.00000000}.{5fdf1a5b-f42d-4ab2-890a-7e454093f229}","deviceName":"Mic (Realtek High Definition Audio)","error_info":"","isNewDevice":true,"isUsedDevice":true,"result":0}
ITMG_MAIN_EVENT_TYPE_MIC_LOST_DEVICE
A mic device was lost
result; error_info
{"deviceID":"{0.0.1.00000000}.{5fdf1a5b-f42d-4ab2-890a-7e454093f229}","deviceName":"Mic (Realtek High Definition Audio)","error_info":"","isNewDevice":false,"isUsedDevice":true,"result":0}
ITMG_MAIN_EVENT_TYPE_MIC_DEFAULT_DEVICE_CHANGED
The default mic device was changed
result; error_info
{"deviceID":"{0.0.1.00000000}.{5fdf1a5b-f42d-4ab2-890a-7e454093f229}","deviceName":"Mic (Realtek High Definition Audio)","error_info":"","isNewDevice":false,"isUsedDevice":true,"result":0}
ITMG_MAIN_EVENT_TYPE_CHANGE_ROOM_QUALITY
The room quality changed
weight; loss; delay
{"weight":5,"loss":0.1,"delay":1}
ITMG_MAIN_EVNET_TYPE_PTT_RECORD_COMPLETE
Voice message recording was completed
result; file_path
{"file_path":"","result":0}
ITMG_MAIN_EVNET_TYPE_PTT_UPLOAD_COMPLETE
Voice message upload was completed
result; file_path;file_id
{"file_id":"","file_path":"","result":0}
ITMG_MAIN_EVNET_TYPE_PTT_DOWNLOAD_COMPLETE
Voice message download was completed
result; file_path;file_id
{"file_id":"","file_path":"","result":0}
ITMG_MAIN_EVNET_TYPE_PTT_PLAY_COMPLETE
Voice message playback was completed
result; file_path
{"file_path":"","result":0}
ITMG_MAIN_EVNET_TYPE_PTT_SPEECH2TEXT_COMPLETE
Fast speech-to-text conversion was completed
result; text;file_id
{"file_id":"","text":"","result":0}
ITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRECOGNITION_COMPLETE
Streaming speech-to-text conversion was completed
result; file_path; text;file_id
{"file_id":"","file_path":","text":"","result":0}
ITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRECOGNITION_IS_RUNNING
Streaming speech-to-text conversion is in progress
result; file_path; text;file_id
{"file_id":"","file_path":","text":"","result":0}
ITMG_MAIN_EVNET_TYPE_PTT_TEXT2SPEECH_COMPLETE
Text-to-speech conversion was completed
result; text;file_id
{"file_id":"","text":"","result":0}
ITMG_MAIN_EVNET_TYPE_PTT_TRANSLATE_TEXT_COMPLETE
Text translation was completed
result; text;file_id
{"file_id":"","text":"","result":0}

","recentReleaseTime":"2024-01-18 15:11:45","slate":"[{\"id\":\"HES9YTaLnRpict0XPCuZs\",\"children\":[{\"text\":\"This document describes how to integrate with and debug GME client APIs for the voice messaging and speech-to-text services for Cocos2d.\"}],\"type\":\"p\"},{\"id\":\"ZN97oc52wHjwi70XcprHx\",\"children\":[{\"text\":\"Key Considerations for Using GME\"}],\"nodeId\":\"key-considerations-for-using-gme\",\"type\":\"h2\"},{\"id\":\"vyMqWJuA7-UQHVuM3IUcT\",\"children\":[{\"text\":\"GME provides the real-time voice service and voice messaging and speech-to-text services, which all depend on core APIs such as \"},{\"code\":1,\"text\":\"Init\"},{\"text\":\" and \"},{\"code\":1,\"text\":\"Poll\"},{\"text\":\".\"}],\"type\":\"p\"},{\"id\":\"4129ycjXhyCnb0NZt5PYZ\",\"children\":[{\"id\":\"_qWsqymH2WkbST-eS6G7o\",\"children\":[{\"b\":1,\"color\":\"#04C8DC\",\"text\":\"Caution: \"}],\"type\":\"p\"},{\"id\":\"NOmyGiuGjY5CjrUcFFELX\",\"children\":[{\"text\":\"There is a default call rate limit for speech-to-text APIs. For more information on how calls are billed within the limit, see \"},{\"id\":\"mpRu6gELpbQ8vQzFOFTXg\",\"children\":[{\"text\":\"Purchase Guide\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://intl.cloud.tencent.com/document/product/607/50009\",\"props\":{\"type\":\"link\",\"url\":\"https://intl.cloud.tencent.com/document/product/607/50009\"},\"type\":\"ref\"},{\"text\":\". If you want to increase the limit or learn more about how excessive calls are billed, \"},{\"id\":\"fHrvsNOr2IUaxct7ulrNu\",\"children\":[{\"text\":\"submit a ticket\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://console.tencentcloud.com/workorder/category?level1_id=438&level2_id=445&source=0&data_title=%E6%B8%B8%E6%88%8F%E5%A4%9A%E5%AA%92%E4%BD%93%E5%BC%95%E6%93%8EGME&step=1\",\"props\":{\"type\":\"link\",\"url\":\"https://console.tencentcloud.com/workorder/category?level1_id=438&level2_id=445&source=0&data_title=%E6%B8%B8%E6%88%8F%E5%A4%9A%E5%AA%92%E4%BD%93%E5%BC%95%E6%93%8EGME&step=1\"},\"type\":\"ref\"},{\"text\":\".\"}],\"type\":\"p\"},{\"id\":\"PMnNMBaXwHNCzdSCmWmAO\",\"children\":[{\"text\":\"Non-streaming speech-to-text API \"},{\"b\":1,\"i\":1,\"text\":\"SpeechToText()\"},{\"text\":\": There can be up to 10 concurrent requests per account.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"ZfkWCwg8JPhZ5080dvEdF\",\"children\":[{\"text\":\"Streaming speech-to-text API \"},{\"b\":1,\"i\":1,\"text\":\"StartRecordingWithStreamingRecognition()\"},{\"text\":\": There can be up to 50 concurrent requests per account.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"snEfMkyCNne1wSwwwIZS0\",\"children\":[{\"text\":\"Real-time streaming speech-to-text API \"},{\"b\":1,\"i\":1,\"text\":\"StartRealTimeASR()\"},{\"text\":\": There can be up to 50 concurrent requests per account.\"}],\"start\":false,\"type\":\"uli\"}],\"hintType\":\"alert\",\"type\":\"hint\"},{\"id\":\"qIIk1fTYsRI3JnjlHdQf9\",\"children\":[{\"text\":\"Notes\"}],\"nodeId\":\"notes\",\"type\":\"h4\"},{\"id\":\"qcjXRG0-YTSYzrpxPdZog\",\"children\":[{\"text\":\"You have created a GME application and obtained the SDK AppID and key. For more information, see \"},{\"id\":\"6Zcrt9gtBLCD9hzfyJmQQ\",\"children\":[{\"text\":\"Activating Services\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://intl.cloud.tencent.com/document/product/607/10782\",\"props\":{\"type\":\"link\",\"url\":\"https://intl.cloud.tencent.com/document/product/607/10782\"},\"type\":\"ref\"},{\"text\":\".\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"TRJJohnEoZG9EtQUngsAv\",\"children\":[{\"text\":\"You have activated \"},{\"b\":1,\"text\":\"GME real-time voice service and voice messaging and speech-to-text services\"},{\"text\":\". For more information, see \"},{\"id\":\"iMwiBGkEJEie0eEmMBNv9\",\"children\":[{\"text\":\"Activating Services\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://intl.cloud.tencent.com/document/product/607/10782\",\"props\":{\"type\":\"link\",\"url\":\"https://intl.cloud.tencent.com/document/product/607/10782\"},\"type\":\"ref\"},{\"text\":\".\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"oAMIleU6s07vnYrWXnLy1\",\"children\":[{\"text\":\"Configure your project before using GME; otherwise, the SDK will not take effect.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"h2qrpUOBxy1hap5dy-Ej9\",\"children\":[{\"text\":\"After a GME API is called successfully, \"},{\"code\":1,\"text\":\"AV_OK\"},{\"text\":\" will be returned with the value being 0.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"oVoMhaq0sc8007wfIrwU6\",\"children\":[{\"text\":\"GME APIs should be called in the same thread.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"H2XMaBCHZM5jVi9W1aYJn\",\"children\":[{\"text\":\"The \"},{\"code\":1,\"text\":\"Poll\"},{\"text\":\" API should be called periodically for GME to trigger event callbacks.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"Mp6nPm-KKqelmrU8SgV9v\",\"children\":[{\"text\":\"For detailed error code, see \"},{\"type\":\"ref\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/33223\"},\"children\":[{\"text\":\"Error Codes\"}],\"id\":\"HCHuxNnAPFi_4JcoGGNmw\"},{\"text\":\".\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"Te4YY20e0cCw5TTFTtdPr\",\"children\":[{\"text\":\"Integrating the SDK\"}],\"nodeId\":\"integrating-the-sdk\",\"type\":\"h2\"},{\"id\":\"DfayhCI2cSS9LW_TJfjFq\",\"children\":[{\"text\":\"Directions\"}],\"nodeId\":\"directions\",\"type\":\"h3\"},{\"id\":\"K6vOQ6GOL3_RUXRc6xdcs\",\"children\":[{\"text\":\"Key processes involved in SDK integration are as follows:\"}],\"type\":\"p\"},{\"type\":\"p\",\"children\":[{\"text\":\"\"},{\"id\":\"QHUD2UbXxgD_A2q9FJWFx\",\"alt\":\"\",\"children\":[{\"text\":\"\"}],\"inline\":true,\"type\":\"image\",\"url\":\"https://cloudcache.intl.tencent-cloud.com/cms/backend-cms/d294c022b34411eeae9a525400c26da5.jpeg\",\"naturalSize\":[1560,1030],\"size\":[802,529]},{\"text\":\"\"}],\"id\":\"1k1vN9lh0kzroVPAcrQzN\"},{\"type\":\"oli\",\"children\":[{\"text\":\"\"},{\"type\":\"ref\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/51127?!editLang=en&!preview=&lang=en&pg=#Init\"},\"children\":[{\"text\":\"Initializing GME, API: Init\"}],\"id\":\"iaYqU6Z69XHuOWbI2Sef6\"},{\"text\":\"\"}],\"id\":\"c-RNTp3pIskRl38Pcoc1G\"},{\"type\":\"oli\",\"children\":[{\"text\":\"\"},{\"type\":\"ref\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/51127?!editLang=en&!preview=&lang=en&pg=#Poll\"},\"children\":[{\"text\":\"Calling Poll periodically to trigger event callbacks, API: Poll\"}],\"id\":\"Q4zxYBC-eD0T7ZG0iCxRR\"},{\"text\":\"\"}],\"id\":\"ZDOTF1jc9g0OObwVWflcU\"},{\"type\":\"oli\",\"children\":[{\"text\":\"\"},{\"type\":\"ref\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/51127?!editLang=en&!preview=&lang=en&pg=#ApplyPtt\"},\"children\":[{\"text\":\"Initializing authentication, API: ApplyPTTAuthbuffer\"}],\"id\":\"7_QsbPld3gxWNIJkwDG_O\"},{\"text\":\"\"}],\"id\":\"J-B2uFQD9ar8iQiXhx8j9\"},{\"type\":\"oli\",\"children\":[{\"text\":\"\"},{\"type\":\"ref\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/51127?!editLang=en&!preview=&lang=en&pg=#StartRWSR\"},\"children\":[{\"text\":\"Starting streaming speech recognition, API: StartRecordingWithStreamingRecognition\"}],\"id\":\"t0LuJ-HbU_VygUYC1_HQK\"},{\"text\":\"\"}],\"id\":\"YGxBhUI8eMwUBNBjN5B1k\"},{\"type\":\"oli\",\"children\":[{\"text\":\"\"},{\"type\":\"ref\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/51127?!editLang=en&!preview=&lang=en&pg=#Stop\"},\"children\":[{\"text\":\"Stop recording, API: StopRecording\"}],\"id\":\"W1SVu6-0_tBb_lyI8M21x\"},{\"text\":\"\"}],\"id\":\"04upvaNqUHxxntFDvpswG\"},{\"type\":\"oli\",\"children\":[{\"text\":\"\"},{\"type\":\"ref\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/51127?!editLang=en&!preview=&lang=en&pg=#UnInit\"},\"children\":[{\"text\":\"Uninitializing GME, API: UnInit\"}],\"id\":\"BB0juW7oKFY9CO250KWa0\"},{\"text\":\"\"}],\"id\":\"XnoRMY79QYA8pQ1h_udo3\"},{\"id\":\"oa_hhlgqAt7ezXCbcXsGb\",\"children\":[{\"text\":\"C++ classes\"}],\"nodeId\":\"c.2B.2B-classes\",\"type\":\"h3\"},{\"id\":\"O39_sreHftZHbUAOSRlii\",\"children\":[{\"id\":\"CV9nyNu_JyCOtUS_EzRST\",\"children\":[{\"id\":\"PMY_zgp1mQv8KIG23Yrvz\",\"children\":[{\"id\":\"smsaRIVtxTCkc-zIl3Fgg\",\"children\":[{\"text\":\"Class\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"6plBGTUbiMmMf-K_l4aDu\",\"children\":[{\"id\":\"eX7Kbwh9F-tCqJHcvrvl2\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"ZwTb-VfW05fkuNk9e1_pI\",\"children\":[{\"id\":\"saLHQCdLIHPbMYBpnaoTK\",\"children\":[{\"id\":\"xpTSGtopIg1OWZKae3mui\",\"children\":[{\"id\":\"BlUzHIf4n-O1c106XK4Cc\",\"children\":[{\"text\":\"ITMGContext\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"mH5HGu0jmaalHDIw7h3Qs\",\"children\":[{\"id\":\"SKaikHHa-cPQj9RPPJ0B5\",\"children\":[{\"id\":\"1yVwekfK5I7LydHFoITkJ\",\"children\":[{\"text\":\"Key APIs\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"T1v6bdvarwFR9U7D-F5Xz\",\"children\":[{\"id\":\"iq3cgC-nx4fnB0fTWuIJH\",\"children\":[{\"id\":\"eHe1QWTE5_Enpug0VIfKY\",\"children\":[{\"id\":\"1hFy9QH-RNzXMj3WThHVH\",\"children\":[{\"text\":\"ITMGPTT\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"zZKw83Qz7_TeJq2aW9MS7\",\"children\":[{\"id\":\"KNco_bMMKIkcYDyP2QJAN\",\"children\":[{\"id\":\"M6ydN05tn-nF1T7YN2aSC\",\"children\":[{\"text\":\"Voice messaging and speech-to-text APIs\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[28,72],\"widthMode\":\"percentage\"},{\"id\":\"0451FpQdIxIbbyRHwqOjg\",\"children\":[{\"text\":\"Key APIs\"}],\"nodeId\":\"key-apis\",\"type\":\"h2\"},{\"id\":\"j2isZNb7hMd9tX9YZjFaf\",\"children\":[{\"id\":\"926eRw2b27PPfOZs1iH4A\",\"children\":[{\"id\":\"xKXMxRap0XU_hsN78sbTA\",\"children\":[{\"id\":\"ViB7omq8B7T1iiT3A_7sM\",\"children\":[{\"text\":\"API\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"OPU19paT29yveiHBedtik\",\"children\":[{\"id\":\"CfwGw6rExJPZ37QYk_uiJ\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"5ckbYZeTCwdwyO8HIvDmv\",\"children\":[{\"id\":\"5yEXYRs1bPt0423BOxIxe\",\"children\":[{\"id\":\"ROVkiN_phUbgRWzTc9FJp\",\"children\":[{\"id\":\"Zl5z_5EVerUPzeI6H2BvW\",\"children\":[{\"text\":\"Init\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Yvnv7hpF4kCQpy1VGwFFx\",\"children\":[{\"id\":\"S4KcSsGwak7YLHBtNu3Gd\",\"children\":[{\"id\":\"Mrfuv36iV-jNR2yxIZbFV\",\"children\":[{\"text\":\"Initializes GME\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"evSe8hdq5iruZdgXYgYaF\",\"children\":[{\"id\":\"Lxat0ug-spG6exqjoWc_r\",\"children\":[{\"id\":\"DVRgrgDc6vjatTMufCRMd\",\"children\":[{\"id\":\"XR-P_Apzm7dkkrT8QCmO4\",\"children\":[{\"text\":\"Poll\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"h5JxZ6jUk5CPUG9t7_rAG\",\"children\":[{\"id\":\"itVrP6Wvm_lZqYxI92yE7\",\"children\":[{\"id\":\"sW2yjbFV4zC9Q3IXGpfcj\",\"children\":[{\"text\":\"Triggers event callback\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"jECV-QiySHZRKlPjX22lA\",\"children\":[{\"id\":\"BbVYeX7MS1FoLVAnm9-6B\",\"children\":[{\"id\":\"UafIwsBaekJrWwLenaysL\",\"children\":[{\"id\":\"C9OoRG-HNDnuLEon2eruU\",\"children\":[{\"text\":\"Pause\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"BxRCmpnO7mkJuG5uhou27\",\"children\":[{\"id\":\"typBcLcw9pCXdQMASRB_l\",\"children\":[{\"id\":\"nfROyxbMFe4LU1o75Yfc6\",\"children\":[{\"text\":\"Pauses the system\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"0PIr1N3a3V3RHk1ARmuvC\",\"children\":[{\"id\":\"vTJ-17P9_JxLX00YpV8k9\",\"children\":[{\"id\":\"q9CH_Og7dcej6mc8Fxdbw\",\"children\":[{\"id\":\"ZZgr2rC2b6ceSKrsHFpBY\",\"children\":[{\"text\":\"Resume\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"39pXrb8xd77qXaeQJDgQG\",\"children\":[{\"id\":\"x8oYA-V-4NpKB4mig8i59\",\"children\":[{\"id\":\"7OZXiJa8jgyxkgEf8Xyhf\",\"children\":[{\"text\":\"Resumes the system\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"k1nbZZoCLc8xQ_Tcmge_q\",\"children\":[{\"id\":\"ZewqtAPGAqav5tJ_3p4Ik\",\"children\":[{\"id\":\"hq-6C9bOiV1XL_Tlk0aYJ\",\"children\":[{\"id\":\"G96URA4CplZgrRZeaazAx\",\"children\":[{\"text\":\"Uninit\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"IfnIDydJjdQ_XVzp-p-4b\",\"children\":[{\"id\":\"SEW9BU8xzDdolcR3m7AsO\",\"children\":[{\"id\":\"A0UclOPxbdek8inDJWY67\",\"children\":[{\"text\":\"Uninitializes GME\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[28,72],\"widthMode\":\"percentage\"},{\"id\":\"Ym_iRKlkhmOl1A4w37NtO\",\"children\":[{\"text\":\"Importing the header file\"}],\"nodeId\":\"importing-the-header-file\",\"type\":\"h3\"},{\"id\":\"0kshzATEYjBczgJMU3wz3\",\"children\":[{\"id\":\"jSi1vdQo5i2mjiekIbOFJ\",\"children\":[{\"text\":\"#include \\\"auth_buffer.h\\\"\"}],\"type\":\"code-line\"},{\"id\":\"7n7NEp_idZw5nnUnN4h40\",\"children\":[{\"text\":\"#include \\\"tmg_sdk.h\\\"\"}],\"type\":\"code-line\"},{\"id\":\"9lMJkWDD9lhezkXV7peOy\",\"children\":[{\"text\":\"#include \\\"AdvanceHeaders/tmg_sdk_adv.h\\\"\"}],\"type\":\"code-line\"},{\"id\":\"aGL9UN4ZgV8BJIDdeJsK_\",\"children\":[{\"text\":\"#include \"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"8Ay3yPea-mn9mE4X0EJ7u\",\"children\":[{\"text\":\"Callback\"}],\"nodeId\":\"callback\",\"type\":\"h3\"},{\"id\":\"fIxtcb5_w2EqRN2_-h-sS\",\"children\":[{\"text\":\"Setting callback sample\"}],\"nodeId\":\"setting-callback-sample\",\"type\":\"h4\"},{\"id\":\"kVI5HEoCBzg1Do1l99A5i\",\"children\":[{\"id\":\"Kv74eFqu4YkkX1e1RoG10\",\"children\":[{\"text\":\"// When initializing the SDK\"}],\"type\":\"code-line\"},{\"id\":\"rhPIea8Dbr3yWH8xNCYfF\",\"children\":[{\"text\":\"m_pTmgContext = ITMGContextGetInstance();\"}],\"type\":\"code-line\"},{\"id\":\"GnUFXxanbgYfBhiCYejfM\",\"children\":[{\"text\":\"m_pTmgContext->SetTMGDelegate(this);\"}],\"type\":\"code-line\"},{\"id\":\"8yfGKJ6Y4ZmONmj3XBHuP\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"},{\"id\":\"td4UgE9FoWAN6jKhagUBY\",\"children\":[{\"text\":\"// In the destructor\"}],\"type\":\"code-line\"},{\"id\":\"fMwgUZX8fU_Q-WH98Wzbo\",\"children\":[{\"text\":\"CTMGSDK_For_AudioDlg::~CTMGSDK_For_AudioDlg()\"}],\"type\":\"code-line\"},{\"id\":\"L6MoAUYQvrZsSdDlwjesM\",\"children\":[{\"text\":\"{\"}],\"type\":\"code-line\"},{\"id\":\"FoDJ1KLiim1RHk_tOvgYl\",\"children\":[{\"text\":\" ITMGContextGetInstance()->SetTMGDelegate(NULL);\"}],\"type\":\"code-line\"},{\"id\":\"0Y91mVc5ydUkUTgDzlaqi\",\"children\":[{\"text\":\"}\"}],\"type\":\"code-line\"},{\"id\":\"-5avImNUj0YHzSuUaAJa3\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"o7G9Y7nlTWLzbiCBqjOVa\",\"children\":[{\"text\":\"Message delivery\"}],\"nodeId\":\"message-delivery\",\"type\":\"h4\"},{\"id\":\"CrIkwkOObaxwDNJSY5DKe\",\"children\":[{\"text\":\"The API class uses the \"},{\"code\":1,\"text\":\"Delegate\"},{\"text\":\" method to send callback notifications to the application. \"},{\"code\":1,\"text\":\"ITMG_MAIN_EVENT_TYPE\"},{\"text\":\" indicates the message type. The data on Windows is in json string format. For the key-value pairs, please see the relevant documentation.\"}],\"type\":\"p\"},{\"id\":\"TV9y_n4Xgq_5o5TYfQFwY\",\"children\":[{\"id\":\"TP7swhpSt9iTHdj0H8T-A\",\"children\":[{\"text\":\"// Declaration in the header file\"}],\"type\":\"code-line\"},{\"id\":\"fMe8JvLUK7cwZkWSnYJcN\",\"children\":[{\"text\":\"virtual void OnEvent(ITMG_MAIN_EVENT_TYPE eventType,const char* data);\"}],\"type\":\"code-line\"},{\"id\":\"wL6tNkX4WTTXylalZFdv2\",\"children\":[{\"text\":\"// Sample code\"}],\"type\":\"code-line\"},{\"id\":\"IrmR8x8jdczL0d5iyBOhq\",\"children\":[{\"text\":\"void CTMGSDK_For_AudioDlg::OnEvent(ITMG_MAIN_EVENT_TYPE eventType, const char* data)\"}],\"type\":\"code-line\"},{\"id\":\"oWOHQHa0R1oxENcwfUM8x\",\"children\":[{\"text\":\"{\"}],\"type\":\"code-line\"},{\"id\":\"Ws9_oweHjTmyEsqH6Sz_f\",\"children\":[{\"text\":\" switch(eventType)\"}],\"type\":\"code-line\"},{\"id\":\"q6umIga_9jyQYIRrIgcCf\",\"children\":[{\"text\":\" {\"}],\"type\":\"code-line\"},{\"id\":\"CQ8TlTA8uj0MyaEhdjlmj\",\"children\":[{\"text\":\" case ITMG_MAIN_EVENT_TYPE_XXXX_XXXX:\"}],\"type\":\"code-line\"},{\"id\":\"sLoYUT7TUE4E77kzzSqJO\",\"children\":[{\"text\":\" {\"}],\"type\":\"code-line\"},{\"id\":\"JWiI8vUVDRr8N5XFiLHoi\",\"children\":[{\"text\":\" // Process the callback\"}],\"type\":\"code-line\"},{\"id\":\"vKTKw9Bc3ziTVZb3K-1wS\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"whamNomu8XUQ3kfXasU6J\",\"children\":[{\"text\":\" break;\"}],\"type\":\"code-line\"},{\"id\":\"yM9Ec2ccP_Ub2qoWaKfpf\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"X1VxICECfAIqu7l3UoHcY\",\"children\":[{\"text\":\"}\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"AM9HVATqkmtBSdpC6_B-y\",\"children\":[{\"text\":\"Getting singleton\"}],\"nodeId\":\"getting-singleton\",\"type\":\"h3\"},{\"id\":\"0KCWBib1gzjsP39s2bwKY\",\"children\":[{\"text\":\"The GME SDK is provided in the form of a singleton, all calls begin with \"},{\"code\":1,\"text\":\"ITMGContext\"},{\"text\":\", and callbacks are passed to the application through \"},{\"code\":1,\"text\":\"ITMGDelegate\"},{\"text\":\", which should be configured first.\"}],\"type\":\"p\"},{\"id\":\"kzbH2Gmh38A6uWq88Fbpk\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code\",\"type\":\"h4\"},{\"id\":\"Fcj99gLfUu5E4q9CoP78z\",\"children\":[{\"id\":\"EL_a8G-I0p-OTgZYZZpoR\",\"children\":[{\"text\":\"ITMGContext* m_pTmgContext;\"}],\"type\":\"code-line\"},{\"id\":\"AwAuJX7gPI1Xgm6JhBbpW\",\"children\":[{\"text\":\"m_pTmgContext->Init(AppID, OpenID);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"_E2m92VyUx_JGdTU-VQPb\",\"children\":[{\"id\":\"8Hhvm0UEWeH-QvTVaEgRf\",\"children\":[{\"text\":\"Initializing SDK\"}],\"nodeId\":\"Init\",\"type\":\"p\"}],\"nodeId\":\".3Ca-id.3D.22init.22.3Einitializing-sdk.3C.2Fa.3E\",\"type\":\"h3\"},{\"id\":\"ZEhICW2GHEzjgbM1Kn727\",\"children\":[{\"b\":1,\"text\":\"You need to initialize the SDK through the \"},{\"b\":1,\"code\":1,\"text\":\"Init\"},{\"b\":1,\"text\":\" API\"},{\"text\":\" before you can use the real-time voice, voice message, and speech-to-text services. The \"},{\"code\":1,\"text\":\"Init\"},{\"text\":\" API must be called in the same thread as other APIs. We recommend you call all APIs in the main thread.\"}],\"type\":\"p\"},{\"id\":\"IN6wUprv0uoB1xz0bYfzx\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype\",\"type\":\"h4\"},{\"id\":\"AwU65631zJA5m9Q-4zZUJ\",\"children\":[{\"id\":\"jOgDu12cg93L_9ak6hxQh\",\"children\":[{\"text\":\"ITMGContext virtual int Init(const char* sdkAppId, const char* openId)\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"xPWicwBgdSqnGJGV8Mxhk\",\"children\":[{\"id\":\"GaoAOcSfiHVp5mibL1Ann\",\"children\":[{\"id\":\"mKobAZvvu9xv3SGHsw0Xn\",\"children\":[{\"id\":\"_Vf5r4wag2hQJWu2l0oEa\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"pJN7vZAoiKf9sz2Ccj9KS\",\"children\":[{\"id\":\"shfUxx0DfzogjqCRfwQqA\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"yDnBU9oiIJ9ca-xUJIp9e\",\"children\":[{\"id\":\"Bm98lY9SYMpjraXNuE-ak\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"-CzkSCUNfPxcd9_WZEJii\",\"children\":[{\"id\":\"3aUHdl0qLR8EgOSRK4zgI\",\"children\":[{\"id\":\"JXgw5By4geEq9OWuIgx7o\",\"children\":[{\"id\":\"Cilo8hcbJsUOR6w4nVHy5\",\"children\":[{\"text\":\"sdkAppId\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"-VEaQ6_izgR_fveYzRWzw\",\"children\":[{\"id\":\"2i6vywTqY8pobw_RUmpyH\",\"children\":[{\"id\":\"LI5dUF-2sQNmwlbe3iYC5\",\"children\":[{\"text\":\"const char*\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"cBu_zPz2yg1706lXYCuxZ\",\"children\":[{\"id\":\"KYea5X0xn6ODt1r0U_CBl\",\"children\":[{\"id\":\"SK6eKAUPlG8soMjz_Oo4Z\",\"children\":[{\"code\":1,\"text\":\"AppID\"},{\"text\":\" provided in the \"},{\"id\":\"jyHmJJyErzc1OmX2AEIdy\",\"children\":[{\"text\":\"GME console\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://console.tencentcloud.com/gamegme\",\"props\":{\"type\":\"link\",\"url\":\"https://console.tencentcloud.com/gamegme\"},\"type\":\"ref\"},{\"text\":\", which can be obtained as instructed in \"},{\"id\":\"TjW3aFowLidCGjT3pNypf\",\"children\":[{\"text\":\"Activating Services\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://intl.cloud.tencent.com/document/product/607/10782#.E9.87.8D.E7.82.B9.E5.8F.82.E6.95.B0\",\"props\":{\"type\":\"link\",\"url\":\"https://intl.cloud.tencent.com/document/product/607/10782#.E9.87.8D.E7.82.B9.E5.8F.82.E6.95.B0\"},\"type\":\"ref\"},{\"text\":\".\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"7zC5kYpy9dYhilqjqoJTY\",\"children\":[{\"id\":\"eyCYCcDkOc3YRvp5deiUc\",\"children\":[{\"id\":\"XAcFCX6wWCSgk3mkas9i8\",\"children\":[{\"id\":\"yeL3gx8k2UdG18cXzIZY3\",\"children\":[{\"text\":\"openID\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"VaUSlrOgFFa-M14pOB2Bm\",\"children\":[{\"id\":\"f6pHvyiL1_YKgnLqlMu78\",\"children\":[{\"id\":\"TCkizDgbuu93uyROwygLi\",\"children\":[{\"text\":\"const char*\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"tbcvYejldhOM_DoUG8i20\",\"children\":[{\"id\":\"ecfOsH4-Vd_toIdojrnlm\",\"children\":[{\"id\":\"tX0sGC-D-phx8nvx2n8ML\",\"children\":[{\"code\":1,\"text\":\"openID\"},{\"text\":\" can only be in \"},{\"code\":1,\"text\":\"Int64\"},{\"text\":\" type, which is passed in after being converted to a \"},{\"code\":1,\"text\":\"const char*\"},{\"text\":\". You can customize its rules, and it must be unique in the application. To pass in \"},{\"code\":1,\"text\":\"openID\"},{\"text\":\" as a string, \"},{\"id\":\"R8uU4oUuSm4Wx4LaxaIOH\",\"children\":[{\"text\":\"submit a ticket\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://console.tencentcloud.com/workorder/category?level1_id=438&level2_id=445&source=0&data_title=%E6%B8%B8%E6%88%8F%E5%A4%9A%E5%AA%92%E4%BD%93%E5%BC%95%E6%93%8EGME&step=1\",\"props\":{\"type\":\"link\",\"url\":\"https://console.tencentcloud.com/workorder/category?level1_id=438&level2_id=445&source=0&data_title=%E6%B8%B8%E6%88%8F%E5%A4%9A%E5%AA%92%E4%BD%93%E5%BC%95%E6%93%8EGME&step=1\"},\"type\":\"ref\"},{\"text\":\" for application.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[12,13,75],\"widthMode\":\"percentage\"},{\"id\":\"0iI8y8_pX1tmTndbsYtNK\",\"children\":[{\"text\":\"Returned values\"}],\"nodeId\":\"returned-values\",\"type\":\"h4\"},{\"id\":\"DhI23ihE1maH1GXk5uaUe\",\"children\":[{\"id\":\"1UKFHwhcRULYuZYDzPUf6\",\"children\":[{\"id\":\"BVzpIBF4zScJds-ik7njs\",\"children\":[{\"id\":\"T6DVC44acs5wzaovVyzCN\",\"children\":[{\"text\":\"Returned Value\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"LV5db8uArusD0V7IYHonh\",\"children\":[{\"id\":\"aUrm7Ajg-d64PJrb2OvHZ\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"3BfBQguFT2wQ2lQr09F3e\",\"children\":[{\"id\":\"zW8WdNNDt5eRb2i5yyuR7\",\"children\":[{\"id\":\"sX0NOwwjjxzhoLA8GiIS4\",\"children\":[{\"id\":\"9GA8LwqTgtoYmarwTxVwm\",\"children\":[{\"text\":\"AV_OK = 0\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"S69AXNd9dfliRqGAdQIHT\",\"children\":[{\"id\":\"SfHXGMf7ve2arAmEzQWnb\",\"children\":[{\"id\":\"qbxO8MdGfj0sNW6HaSG7J\",\"children\":[{\"text\":\"Initialized SDK successfully.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"Wx7OeMVp1a0GMan37XV0S\",\"children\":[{\"id\":\"jNFNnuuuVyAA5s31E_MnY\",\"children\":[{\"id\":\"zg35aIoQuGK2SygYlSOdY\",\"children\":[{\"id\":\"T0z8A2pPbOBiqCGkqNJlH\",\"children\":[{\"text\":\"AV_ERR_SDK_NOT_FULL_UPDATE=7015\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"2TykM05W7f8UX9HWomlEW\",\"children\":[{\"id\":\"lr3zbkHIw_-iEeUD_ZCRp\",\"children\":[{\"id\":\"7bbO5IuT7QNCoGFRnpGE8\",\"children\":[{\"text\":\"Checks whether the SDK file is complete. It is recommended to delete it and then import the SDK again.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[33,67],\"widthMode\":\"percentage\"},{\"id\":\"xft6oSPSOIk-d4EXo-rJH\",\"children\":[{\"id\":\"TB9MdXXn8uvxu8Shi5xSp\",\"children\":[{\"b\":1,\"color\":\"#04C8DC\",\"text\":\"Notes on 7015 error code:\"}],\"type\":\"p\"},{\"id\":\"dijF0D_j9fI4vPYCm9XoD\",\"children\":[{\"text\":\"The 7015 error code is judged by md5. If this error is reported during integration, please check the integrity and version of the SDK file as prompted.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"FJazNwZcA39S5stCxchTF\",\"children\":[{\"text\":\"The returned value \"},{\"code\":1,\"text\":\"AV_ERR_SDK_NOT_FULL_UPDATE\"},{\"text\":\" is \"},{\"b\":1,\"text\":\"only a reminder\"},{\"text\":\" but will not cause an initialization failure.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"LPgKr4Cthzk99kRgwRGKt\",\"children\":[{\"text\":\"Due to the third-party reinforcement, Unity packaging mechanism and other factors, the md5 of the library file will be affected, resulting in misjudgment. \"},{\"b\":1,\"text\":\"Please ignore this error in the logic for official release\"},{\"text\":\", and try to avoid displaying it in the UI.\"}],\"start\":false,\"type\":\"uli\"}],\"hintType\":\"alert\",\"type\":\"hint\"},{\"id\":\"6oR2Q6Ujk31ToZSl9o4nZ\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code2\",\"type\":\"h4\"},{\"id\":\"wfYCAuoBXBDOA_qlYGAfA\",\"children\":[{\"id\":\"t0yprSZ-WTgBwGr-4658K\",\"children\":[{\"text\":\"#define SDKAPPID3RD \\\"14000xxxxxx\\\"\"}],\"type\":\"code-line\"},{\"id\":\"CVX9F_HfA_G8-QMfGvULK\",\"children\":[{\"text\":\"cosnt char* openId=\\\"10001\\\";\"}],\"type\":\"code-line\"},{\"id\":\"m5egos8XUHmiuUOOrYiPM\",\"children\":[{\"text\":\"ITMGContext* context = ITMGContextGetInstance();\"}],\"type\":\"code-line\"},{\"id\":\"iIj1DVtrTEoVJYOH9QTjK\",\"children\":[{\"text\":\"context->Init(SDKAPPID3RD, openId);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"k3iQXwVKFHJDBEOIJ0aQt\",\"children\":[{\"text\":\"Triggering event callback\"}],\"nodeId\":\"triggering-event-callback\",\"type\":\"h3\"},{\"id\":\"4EdIwXMEmrQfHQgpBqlYa\",\"children\":[{\"text\":\"Event callbacks can be triggered by periodically calling the \"},{\"code\":1,\"text\":\"Poll\"},{\"text\":\" API in \"},{\"code\":1,\"text\":\"update\"},{\"text\":\". \"},{\"code\":1,\"text\":\"Poll\"},{\"text\":\" is the message pump of GME, and the \"},{\"code\":1,\"text\":\"Poll\"},{\"text\":\" API should be called periodically for GME to trigger event callbacks; otherwise, the entire SDK service will run exceptionally.\\nYou can refer to the \"},{\"code\":1,\"text\":\"EnginePollHelper.cpp\"},{\"text\":\" file in the demo.\"}],\"nodeId\":\"Poll\",\"type\":\"p\"},{\"id\":\"yxr_wAAunDD7VCj4g-DsD\",\"children\":[{\"id\":\"_n2mUUNMlZvp_mOB5LPDJ\",\"children\":[{\"b\":1,\"color\":\"#04C8DC\",\"text\":\"Note: \"}],\"type\":\"p\"},{\"id\":\"PVGdpynqQc72KBbjswUiU\",\"children\":[{\"text\":\"The \"},{\"code\":1,\"text\":\"Poll\"},{\"text\":\" API must be called periodically and in the main thread to avoid abnormal API callbacks.\"}],\"type\":\"p\"}],\"hintType\":\"alert\",\"type\":\"hint\"},{\"id\":\"mc7E_YuDi2rSy3wW5uVPw\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype2\",\"type\":\"h4\"},{\"id\":\"iQS6lQUXRYDxyxocUn98r\",\"children\":[{\"id\":\"JX4Bf8UyZ9nozdBAe-7d_\",\"children\":[{\"text\":\"class ITMGContext {\"}],\"type\":\"code-line\"},{\"id\":\"jAp0N2pctoClo3lSrh--m\",\"children\":[{\"text\":\"protected:\"}],\"type\":\"code-line\"},{\"id\":\"cGMaJTjt80H8D29XKXczz\",\"children\":[{\"text\":\" virtual ~ITMGContext() {}\"}],\"type\":\"code-line\"},{\"id\":\"dNx2jh6PZyopC_ITV-Uzi\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"},{\"id\":\"E5P5pW4OUqbQF8YnqS4ZT\",\"children\":[{\"text\":\"public: \"}],\"type\":\"code-line\"},{\"id\":\"5Ps6kL_7qm8G_Z58E19Pv\",\"children\":[{\"text\":\" virtual void Poll()= 0;\"}],\"type\":\"code-line\"},{\"id\":\"ffKFHfK24ty3UDe-9C5au\",\"children\":[{\"text\":\"}\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"eMomwPEAb1lFodBziCydD\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code3\",\"type\":\"h4\"},{\"id\":\"nyf5-TMmTScyr-ORZUT6f\",\"children\":[{\"id\":\"cpBGG5eQ8CSSAp4Gv6V56\",\"children\":[{\"text\":\"void TMGTestScene::update(float delta)\"}],\"type\":\"code-line\"},{\"id\":\"dWayJgJD4xGZJAPL8y5kj\",\"children\":[{\"text\":\"{\"}],\"type\":\"code-line\"},{\"id\":\"6DLyzYJ32CUNoJPSFUfMf\",\"children\":[{\"text\":\" ITMGContextGetInstance()->Poll();\"}],\"type\":\"code-line\"},{\"id\":\"MoTvgQ0YiLfK486AxIauY\",\"children\":[{\"text\":\"}\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"E38moxby3-mib0GPnX34x\",\"children\":[{\"text\":\"Pausing the system\"}],\"nodeId\":\"pausing-the-system\",\"type\":\"h3\"},{\"id\":\"AAa18V_YfoezxOSZlvfK5\",\"children\":[{\"text\":\"When a \"},{\"code\":1,\"text\":\"Pause\"},{\"text\":\" event occurs in the system, the engine should also be notified for pause. If you do not need the background to play back the audio in the room, please call \"},{\"code\":1,\"text\":\"Pause\"},{\"text\":\" API to pause the GME service.\"}],\"type\":\"p\"},{\"id\":\"6MMBrFN7LZ8UEHvXWF1Dz\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype3\",\"type\":\"h4\"},{\"id\":\"vn35upE-TV0X4uJ4fU55V\",\"children\":[{\"id\":\"1RMD3TSE2FSUTOZU-dikv\",\"children\":[{\"text\":\"ITMGContext int Pause()\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"xjaNyU-Vnc5a-MzNkrfYg\",\"children\":[{\"text\":\"Resuming the system\"}],\"nodeId\":\"resuming-the-system\",\"type\":\"h3\"},{\"id\":\"M7brvqNQjX-r-MrZWyhwS\",\"children\":[{\"text\":\"When a \"},{\"code\":1,\"text\":\"Resume\"},{\"text\":\" event occurs in the system, the engine should also be notified for resumption. The \"},{\"code\":1,\"text\":\"Resume\"},{\"text\":\" API only supports resuming voice chat.\"}],\"type\":\"p\"},{\"id\":\"fC20e2eLGPn--n7z9zZKx\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype4\",\"type\":\"h4\"},{\"id\":\"FuN7E-Ujk3I4bp7G8PNQv\",\"children\":[{\"id\":\"_1eyPDk2iEvaqQuP2NBgC\",\"children\":[{\"text\":\"ITMGContext int Resume()\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"2U_GU3vPfq-Dm3qXS-FFL\",\"children\":[{\"text\":\"Uninitializing SDK\"}],\"nodeId\":\"uninitializing-sdk\",\"type\":\"h3\"},{\"id\":\"Jc4YXkmEvhZP--qpH6aBR\",\"children\":[{\"text\":\"This API is used to uninitialize the SDK to make it uninitialized. \"},{\"b\":1,\"text\":\"If the game business account is bound to \"},{\"b\":1,\"code\":1,\"text\":\"openid\"},{\"b\":1,\"text\":\", switching game account requires uninitializing GME and then using the new \"},{\"b\":1,\"code\":1,\"text\":\"openid\"},{\"b\":1,\"text\":\" to initialize again.\"}],\"nodeId\":\"UnInit\",\"type\":\"p\"},{\"id\":\"xTefbZJuveczYDuMiMiWV\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype5\",\"type\":\"h4\"},{\"id\":\"X2FDcAeYJ_bvwizHzGUwd\",\"children\":[{\"id\":\"uNy1NrjtNT9FrxYNr1vRk\",\"children\":[{\"text\":\"ITMGContext int Uninit()\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"zRrl1tVDkdyi1chQ44hzX\",\"children\":[{\"text\":\"Voice Messaging and Speech-to-Text Services\"}],\"nodeId\":\"voice-messaging-and-speech-to-text-services\",\"type\":\"h2\"},{\"id\":\"7bEmqWbB76IhLaISazN1z\",\"children\":[{\"id\":\"aa5ex0qQO1ztm_1EoBefV\",\"children\":[{\"b\":1,\"color\":\"inherit\",\"text\":\"Note: \"}],\"type\":\"p\"},{\"id\":\"GZO8hMwRHVyaJNgK7j05j\",\"children\":[{\"text\":\"The speech-to-text service consists of fast recording-to-text conversion and streaming speech-to-text conversion.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"CfY61DpoxBAIIEtuhp7n-\",\"children\":[{\"text\":\"You do not need to enter a voice chat room when using the voice message service.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"zVUUELjigA8mXDrhQsSm8\",\"children\":[{\"text\":\"The maximum recording duration of a voice message is 58 seconds by default, and the minimum recording duration cannot be less than 1 second. If you want to customize the recording duration, for example, to modify the maximum recording duration to 10 seconds, call the \"},{\"code\":1,\"text\":\"SetMaxMessageLength\"},{\"text\":\" API to set it after initialization.\"}],\"start\":false,\"type\":\"uli\"}],\"hintType\":\"info\",\"type\":\"hint\"},{\"type\":\"p\",\"children\":[{\"text\":\"\"},{\"id\":\"pzscMauKCn_1kGybfhdMT\",\"alt\":\"\",\"children\":[{\"text\":\"\"}],\"inline\":true,\"type\":\"image\",\"url\":\"https://cloudcache.intl.tencent-cloud.com/cms/backend-cms/d2958c2ab34411eeae9a525400c26da5.jpeg\",\"naturalSize\":[923,675],\"size\":[801,585]},{\"text\":\"\"}],\"id\":\"WMXqOQITng8B1MoguKNGX\"},{\"id\":\"wFQA0smxL5ExeKgfve-Ok\",\"children\":[{\"text\":\"Flowchart for using the speech-to-text service\"}],\"nodeId\":\"flowchart-for-using-the-speech-to-text-service\",\"type\":\"h3\"},{\"type\":\"p\",\"children\":[{\"text\":\"\"},{\"id\":\"8QlUI7iZB5l2g35_y4wAq\",\"alt\":\"\",\"children\":[{\"text\":\"\"}],\"inline\":true,\"type\":\"image\",\"url\":\"https://cloudcache.intl.tencent-cloud.com/cms/backend-cms/d2b81568b34411ee9939525400461a83.jpeg\",\"naturalSize\":[1138,1043],\"size\":[802,735]},{\"text\":\"\"}],\"id\":\"cDWtJw8xr-l1YB1vVq137\"},{\"id\":\"6WJ54uPsQlAma_nuOc1xX\",\"children\":[{\"id\":\"qnN_mFW-oh4WLLStPnwuk\",\"children\":[{\"id\":\"oUjo7A9i6rpb1ztTl3kPk\",\"children\":[{\"id\":\"M2JblKu9mIsnZEMtg-aui\",\"children\":[{\"text\":\"API\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"mOadIsTB87jFx0ROLcDM-\",\"children\":[{\"id\":\"2ZddhPmgmq9mgfJO3SrWK\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"wu80N6sdBpluGsfImc_Kw\",\"children\":[{\"id\":\"aju1Tl2Uo4rY8wANs2eaT\",\"children\":[{\"id\":\"_IGMctplWOwzrTFq6vabe\",\"children\":[{\"id\":\"tgXCVdG1OL5aYpdiz9_Ez\",\"children\":[{\"text\":\"GenAuthBuffer\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"BvZzyzEwyzCT3csSf9lDv\",\"children\":[{\"id\":\"hHesD9v8sCPT-fYJwehUA\",\"children\":[{\"id\":\"xWtqulI-miRkSa7NwxtSh\",\"children\":[{\"text\":\"Generates the local authentication key\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"XE1YTgkG6cO5ykbBTEfuN\",\"children\":[{\"id\":\"iON3ODZYLSXUIUXt0SP0s\",\"children\":[{\"id\":\"gYTNayndLNNhturMotDQG\",\"children\":[{\"id\":\"Gpd-A9x8LARl7DVPwITf5\",\"children\":[{\"text\":\"ApplyPTTAuthbuffer\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"MC4TCWUxhTQBKgHSJ-Po2\",\"children\":[{\"id\":\"GlJkk-qL9DYPuAlHfxnVJ\",\"children\":[{\"id\":\"o80rbMIPBkiNhSrXBvBlA\",\"children\":[{\"text\":\"Initializes authentication\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"98IoV6bvb_j4cjl7uuDmz\",\"children\":[{\"id\":\"IFQf4bY95DV4qa41blB4g\",\"children\":[{\"id\":\"zWYal0lDKlrKfMN8PXjZW\",\"children\":[{\"id\":\"6DPDhlo34xI7Pr9nZXIKq\",\"children\":[{\"text\":\"SetMaxMessageLength\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"WNlTnQ2BOqHUDQ-aVmJOr\",\"children\":[{\"id\":\"UXyeKet6Dq95IvA1qFzuu\",\"children\":[{\"id\":\"FNs480xga6c6rjpTR0R74\",\"children\":[{\"text\":\"Specifies the maximum length of voice message\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[35,65],\"widthMode\":\"percentage\"},{\"id\":\"IuqOdtn2rr7MWTpqhiHWU\",\"children\":[{\"text\":\"Generating the local authentication key\"}],\"nodeId\":\"generating-the-local-authentication-key\",\"type\":\"h3\"},{\"id\":\"dT1mpgtRI5FVDEtpYyK5W\",\"children\":[{\"text\":\"Generate \"},{\"code\":1,\"text\":\"AuthBuffer\"},{\"text\":\" for encryption and authentication of relevant features. For release in the production environment, please use the backend deployment key as detailed in \"},{\"id\":\"haxIPIO9A0a7MjIv-5H2K\",\"children\":[{\"text\":\"Authentication Key\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://intl.cloud.tencent.com/document/product/607/12218\",\"props\":{\"type\":\"link\",\"url\":\"https://intl.cloud.tencent.com/document/product/607/12218\"},\"type\":\"ref\"},{\"text\":\". \"}],\"type\":\"p\"},{\"id\":\"779ixVOVbOAOqqkXxGGM2\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype6\",\"type\":\"h4\"},{\"id\":\"Fgo-aruoDx2KCltX1jmye\",\"children\":[{\"id\":\"5aJsXd3nvH94GSQCql6Bn\",\"children\":[{\"text\":\"int QAVSDK_AuthBuffer_GenAuthBuffer(unsigned int dwSdkAppID, const char* strRoomID, const char* strOpenID,\"}],\"type\":\"code-line\"},{\"id\":\"PRKfsuwbL_CTCp4iFrr-V\",\"children\":[{\"text\":\" const char* strKey, unsigned char* strAuthBuffer, unsigned int bufferLength);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"GYK461lyzH_tPKh47pyR7\",\"children\":[{\"id\":\"ddCzd6XafD6K5yxiqi-nm\",\"children\":[{\"id\":\"fuheHEd5FjfKtQilRC7iA\",\"children\":[{\"id\":\"tJ7xXBU21fL2S4CrKajxq\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"WSuMqb950GHnb59WiQjvN\",\"children\":[{\"id\":\"sKl7go8yQxZu4Dxnw6WxA\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"aoin0DYLXdVj-hrb1zbxU\",\"children\":[{\"id\":\"RghqJB3o9XVIGzhkohllD\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"ghd5009wdMYpy6aUQPfBC\",\"children\":[{\"id\":\"5I4X22W4zWEB5lYiF9Tq4\",\"children\":[{\"id\":\"ZDJKb-HGjMkYhfxBDC15F\",\"children\":[{\"id\":\"xyxnxWjhvc2E6iJ4wHCmF\",\"children\":[{\"text\":\"dwSdkAppID\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"GpjYYCkPwAer5j4wMsbKL\",\"children\":[{\"id\":\"xGS8Qo13b0Emur73m7Wag\",\"children\":[{\"id\":\"keMbsq6Bm5vK8tnSU37-R\",\"children\":[{\"text\":\"int\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"NuNvFX2tL_x-4yWq5fLZl\",\"children\":[{\"id\":\"KWlYXrip6Yvg5aKQF2JL2\",\"children\":[{\"id\":\"P67bKFMlfAKT6XdIf9f3w\",\"children\":[{\"code\":1,\"text\":\"AppId\"},{\"text\":\" from the Tencent Cloud console.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"5ZmyNlb1834faljibRFvi\",\"children\":[{\"id\":\"wEujJu5ryEhRmQ7kij4eY\",\"children\":[{\"id\":\"Y5rBfWoyhTTyh81qT8DHv\",\"children\":[{\"id\":\"tpktrHkEH-szWNXcgzLPX\",\"children\":[{\"text\":\"strRoomID\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"6BMjGqK7UOLQ8iJazJqIB\",\"children\":[{\"id\":\"aQ32EPj0SRoDG86pkNFVw\",\"children\":[{\"id\":\"bhDwmZ8gxKWy4AX9ZZLHA\",\"children\":[{\"text\":\"const char*\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"g3PDfnpEGP82HjVeHbId7\",\"children\":[{\"id\":\"CR8znXsmfnJk_93XgSNbf\",\"children\":[{\"id\":\"VIRIzLsXu36iYi_bCNDkn\",\"children\":[{\"text\":\"Enter \"},{\"code\":1,\"text\":\"null\"},{\"text\":\" or an empty string\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"17pIfcPAcSnJnvcy8afFB\",\"children\":[{\"id\":\"dyEgGT5bq6y41AoDd00aJ\",\"children\":[{\"id\":\"nAikRgFbWu-ipctAn-dz_\",\"children\":[{\"id\":\"yMKdd5_mjl1XgQWwJOrrv\",\"children\":[{\"text\":\"strOpenID\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"YZEsBlLJBZswrgeU9C9ZR\",\"children\":[{\"id\":\"N7VNNLCh-Nvqh1vg7qDdc\",\"children\":[{\"id\":\"_ZckAAYtaQ_pC2KS5SxUi\",\"children\":[{\"text\":\"const char*\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"FhEmTXisgQ3WEZP1o-evb\",\"children\":[{\"id\":\"6vtopDM51FYtspuAze_Q4\",\"children\":[{\"id\":\"Eo0HHcyds3vM2swAvKyWI\",\"children\":[{\"text\":\"User Identifier, which is the same as \"},{\"code\":1,\"text\":\"openID\"},{\"text\":\" during initialization.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"o2fiD7vn5fbVu_5NPvzom\",\"children\":[{\"id\":\"U-F2gCeaxZCmtmcg2Tz9K\",\"children\":[{\"id\":\"AWbZtN2fKxD7AImlh6_g3\",\"children\":[{\"id\":\"N3_UAdn-FjBYTNI8DQ7kh\",\"children\":[{\"text\":\"strKey\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"1gZvEea3wgM9Whi7D50qJ\",\"children\":[{\"id\":\"I9W5elRcJyyOu46h6fwGs\",\"children\":[{\"id\":\"g4tKvaZvZg8IIwPnBfR0X\",\"children\":[{\"text\":\"const char*\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"I1GilNF_KRS4NoCueTX1Q\",\"children\":[{\"id\":\"c5MFrAM1tQcrM0uM_rI2y\",\"children\":[{\"id\":\"laQSYx__Wvvr-cKrLAQR7\",\"children\":[{\"text\":\"Permission key from the Tencent Cloud \"},{\"id\":\"aunsT_0BMJUilja1cSHd7\",\"children\":[{\"text\":\"console\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://console.tencentcloud.com/gamegme\",\"props\":{\"type\":\"link\",\"url\":\"https://console.tencentcloud.com/gamegme\"},\"type\":\"ref\"},{\"text\":\".\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"EuckuYfon0_j2qikdg77D\",\"children\":[{\"id\":\"OtewkhxNyD_6CqpNoM6xw\",\"children\":[{\"id\":\"O-v1hTFyGpfggM6OZbZGX\",\"children\":[{\"id\":\"ywzTPWCYnf7RuYrlp8KqS\",\"children\":[{\"text\":\"strAuthBuffer\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"VaoFwWQMm9Vy9XtkUwLKc\",\"children\":[{\"id\":\"KOxrdeAwkgqH_eUNZe1y-\",\"children\":[{\"id\":\"ZIyCB_xAJdGEoZiPiY6SN\",\"children\":[{\"text\":\"const char*\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"8h6_Ayfb2rrQyZ8c18xa3\",\"children\":[{\"id\":\"uLFvxJ7oXy9Ii6snZadbp\",\"children\":[{\"id\":\"TFFsC-h2BMXKEHPa7kbXJ\",\"children\":[{\"text\":\"Returned \"},{\"code\":1,\"text\":\"authbuff\"},{\"text\":\".\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"4Ejj_BhSolXwa7UItXSQk\",\"children\":[{\"id\":\"fVWryn_t3JhvjLJX1KI7X\",\"children\":[{\"id\":\"h13wbD4OgIsYH4PkLGWTj\",\"children\":[{\"id\":\"f1Gae1Rn3pPrbpI1gk8lD\",\"children\":[{\"text\":\"bufferLength\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"8RIyEeB5IhKNZRg75h0LJ\",\"children\":[{\"id\":\"xuGN_IxofzsHyS1atqcKD\",\"children\":[{\"id\":\"glxL0XYburvifbzjVXx0B\",\"children\":[{\"text\":\"int\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Kms9o9IJNiDd66pUOGuyb\",\"children\":[{\"id\":\"RpBDohqeMgS_jm75j37TI\",\"children\":[{\"id\":\"VVk0EkUVL9Io1nzafT15z\",\"children\":[{\"text\":\"Length of the \"},{\"code\":1,\"text\":\"authbuff\"},{\"text\":\" passed in. 500 is recommended.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[17,15,68],\"widthMode\":\"percentage\"},{\"id\":\"p_hqav9NmeXgPSE3KEC8R\",\"children\":[{\"text\":\"Application authentication\"}],\"nodeId\":\"application-authentication\",\"type\":\"h3\"},{\"id\":\"lhXlP29tjRGqwGAaBI5XY\",\"children\":[{\"text\":\"After the authentication information is generated, the authentication is assigned to the SDK. \"}],\"type\":\"p\"},{\"id\":\"DawkNriseTyJUg_d5pJbr\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype7\",\"type\":\"h4\"},{\"id\":\"IwYqfLLXYvXoR60OlVQcG\",\"children\":[{\"id\":\"hyG6QTJ6ZoEgRSOmzWHp-\",\"children\":[{\"text\":\"ITMGPTT virtual int ApplyPTTAuthbuffer(const char* authBuffer, int authBufferLen)\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"KKZ5Ol-FyZvXT_84Rnx7W\",\"children\":[{\"id\":\"b67-xtWenvsYwgSUuLJD0\",\"children\":[{\"id\":\"VjnIsqi-F8mzzNgd_jyBP\",\"children\":[{\"id\":\"NuUS1LqWFki3ct5KjXgJU\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"l3FZsOFPu_87bMASPH8uA\",\"children\":[{\"id\":\"aIeZDKQXnKmplfmeUbeVQ\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"jFqjJToMGXmC0Pa8TU4Lu\",\"children\":[{\"id\":\"V31VGeqHbzh5PjvDAP4Vv\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"7Pmts-uSAXZSumKrlMPDo\",\"children\":[{\"id\":\"CllKV3HxYqn9Bosa5c5F3\",\"children\":[{\"id\":\"fHGBQIhDu9Me36WyTCxwY\",\"children\":[{\"id\":\"pGoxXkvhusCIMnlI4FMVx\",\"children\":[{\"text\":\"authBuffer\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"VeSbY2UO2TEvBsGNWgoMQ\",\"children\":[{\"id\":\"6BoOUaET0A_oo52JMI9QI\",\"children\":[{\"id\":\"rRMGONPtPjIgNJrXI5M5X\",\"children\":[{\"text\":\"const char*\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"TvUg1SIfPxCnuDvdFQuly\",\"children\":[{\"id\":\"O3TU__yIkYZEjwDGGICCS\",\"children\":[{\"id\":\"Q6SR8earXnGnZEOW2fZmW\",\"children\":[{\"text\":\"Authentication\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"EXssuWnegTdgY1hnGZx5y\",\"children\":[{\"id\":\"ZtGqQ01p1VZ5j9B4w8pxC\",\"children\":[{\"id\":\"JK98FbbBgCe0-ssxRtkDo\",\"children\":[{\"id\":\"X-ycje8-EkviLn5SxZk7-\",\"children\":[{\"text\":\"authBufferLen\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"rQiVfyCGjJuDfVazXSfrD\",\"children\":[{\"id\":\"tlq9gpHSrEjNM8PuRfPlx\",\"children\":[{\"id\":\"A4FltWgCx6RqY7Sd1u8ty\",\"children\":[{\"text\":\"int\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"4GZ_qxEjqCPBBq603qxLs\",\"children\":[{\"id\":\"WY78azo1R7Re7lv-UbU0d\",\"children\":[{\"id\":\"NOUsXWkI78_xVqVJ_3IGW\",\"children\":[{\"text\":\"Authentication length\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[31,26,43],\"widthMode\":\"percentage\"},{\"id\":\"rhxBOZDs0Sr4IreQvpLXb\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code4\",\"type\":\"h4\"},{\"id\":\"UVCngj9i3LW7RWl5Qc5gg\",\"children\":[{\"id\":\"QLB2pkNBwF9I1OFXTrwI0\",\"children\":[{\"text\":\"ITMGContextGetInstance()->GetPTT()->ApplyPTTAuthbuffer(authBuffer,authBufferLen);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"kviP9BYb2soEJT4msv58S\",\"children\":[{\"text\":\"Specifying the maximum duration of voice message\"}],\"nodeId\":\"specifying-the-maximum-duration-of-voice-message\",\"type\":\"h3\"},{\"id\":\"3NjHYUiB4wpO_XDoZ4cPv\",\"children\":[{\"text\":\"This API is used to specify the maximum duration of a voice message, which can be up to 58 seconds.\"}],\"type\":\"p\"},{\"id\":\"z1NsHZP4yLpfz0-k85Cbc\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype8\",\"type\":\"h4\"},{\"id\":\"Bbkxd2WVuCAligIIUD35z\",\"children\":[{\"id\":\"QgUUyRK4q55at8Pb1Syfq\",\"children\":[{\"text\":\"ITMGPTT virtual int SetMaxMessageLength(int msTime)\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"k2eEcJvhl7KBikQIioAhL\",\"children\":[{\"id\":\"ze7hh_OVpCF0lq3IwZ6bg\",\"children\":[{\"id\":\"lYxuAJ8UVvFwwnz8OTAbb\",\"children\":[{\"id\":\"yYg8sEoEjUdjBteOcZZ4q\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ccREauQ5ODmVbfI9FTdgx\",\"children\":[{\"id\":\"hLztwHojBsTwNl08Xw-zq\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"pfI2fIA1hmiEgNueVuLm-\",\"children\":[{\"id\":\"QswWokjNrIhw-K1lRpMT5\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"sRM7CmhpQokqTdi_6bybs\",\"children\":[{\"id\":\"9L-wQDXehcqHB5YOidi5E\",\"children\":[{\"id\":\"TDR8SlZ0oiKQ8_8LNGjpZ\",\"children\":[{\"id\":\"qFHPId3IeRPkkyo5NUoq0\",\"children\":[{\"text\":\"msTime\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"3UpzUF_KKlJKxosR0h6EE\",\"children\":[{\"id\":\"-PTEJ72laQ4roALeI9L9H\",\"children\":[{\"id\":\"EPgl9Wg9DRUisy061q39Z\",\"children\":[{\"text\":\"int\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"OT9oLIASnUUqGcAXkL2bL\",\"children\":[{\"id\":\"UXLFtN0HzNA7rF90sEQuS\",\"children\":[{\"id\":\"pohz5_-koL2zq6PjqD2KY\",\"children\":[{\"text\":\"Audio duration in ms. Value range: 1000 < msTime <= 58000\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[17,11,72],\"widthMode\":\"percentage\"},{\"id\":\"8-fxQYT23cbwARphV0bKO\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code5\",\"type\":\"h4\"},{\"id\":\"zPjVCe7zWiA1kEyFEG5em\",\"children\":[{\"id\":\"Rsxij1asv5rVzysTrF8Qi\",\"children\":[{\"text\":\"int msTime = 10000;\"}],\"type\":\"code-line\"},{\"id\":\"Wo6punmuiCaHoPBqyr4fE\",\"children\":[{\"text\":\"ITMGContextGetInstance()->GetPTT()->SetMaxMessageLength(msTime);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"0uDEoQwQR-poWKxiO2Muc\",\"children\":[{\"text\":\"Streaming Speech Recognition\"}],\"nodeId\":\"streaming-speech-recognition\",\"type\":\"h2\"},{\"id\":\"WOnaohgblBFVqL1UELNV6\",\"children\":[{\"text\":\"Voice messaging and speech-to-text APIs\"}],\"nodeId\":\"voice-messaging-and-speech-to-text-apis\",\"type\":\"h3\"},{\"id\":\"J1nho2AbDC9rs-4mpv1aq\",\"children\":[{\"id\":\"bMzOvel7OYM1_YpnItrbK\",\"children\":[{\"id\":\"SY90ucFIxlO0qmjMSSPXF\",\"children\":[{\"id\":\"ge-5cmoMYVurtI-dfNHll\",\"children\":[{\"text\":\"API\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"bN5tZUv70UadeQZjRdkpU\",\"children\":[{\"id\":\"rNig0ApuOQ2lotbbEfvjN\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"NcQnP_vv1CjCZfnVSwt4s\",\"children\":[{\"id\":\"fekYUqcNX9ZKt4h0680DH\",\"children\":[{\"id\":\"f8e2Latp3OnI9a85xDgj4\",\"children\":[{\"id\":\"ynLFH39Bna3GuJF8EXypv\",\"children\":[{\"text\":\"StartRecordingWithStreamingRecognition\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"tbWC256jNIevCtwpC5Gpt\",\"children\":[{\"id\":\"sOiyxCLglhfb_5cY7Jskn\",\"children\":[{\"id\":\"M72Tlh37mMo3tvV9xEJ6a\",\"children\":[{\"text\":\"Starts streaming recording\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"xLXlL1EL0HDNGPl8apVT2\",\"children\":[{\"id\":\"TvRkj-qzMHzEjO1mMkmId\",\"children\":[{\"id\":\"xO7HuVWGgPmFTJuoKEDVS\",\"children\":[{\"id\":\"i_EAPqkDlx9ZT1uscxAXX\",\"children\":[{\"text\":\"StopRecording\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"xXzuYdFGu6LkuWHSp-490\",\"children\":[{\"id\":\"fYlQWCPrOp77-u6y3D69S\",\"children\":[{\"text\":\"Stops recording\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[59,41],\"widthMode\":\"percentage\"},{\"id\":\"eEvgedIEKWBOkXClUu0Bj\",\"children\":[{\"text\":\"Starting streaming speech recognition\"}],\"nodeId\":\"starting-streaming-speech-recognition\",\"type\":\"h3\"},{\"id\":\"DDafvZn0Ah8Mx020CmeVB\",\"children\":[{\"text\":\"This API is used to start streaming speech recognition. Text obtained from speech-to-text conversion will be returned in real time in its callback. It can specify a language for recognition or translate the information recognized in speech into a specified language and return the translation. \"},{\"b\":1,\"text\":\"To stop recording, call \"},{\"type\":\"ref\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/51127?!editLang=en&!preview=&lang=en&pg=#Stop\"},\"children\":[{\"text\":\"Stop recording\"}],\"id\":\"q4m1Ad0uylejXxQTMs_NB\"},{\"text\":\".\"}],\"type\":\"p\"},{\"id\":\"wOjUjeZVoYgxRPvSscqM0\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype9\",\"type\":\"h4\"},{\"id\":\"SfF0fvh3ZBZvb2FRE2enR\",\"children\":[{\"id\":\"Q5IZoZen20wEzlmmHBJat\",\"children\":[{\"text\":\"ITMGPTT virtual int StartRecordingWithStreamingRecognition(const char* filePath) \"}],\"type\":\"code-line\"},{\"id\":\"vj46tmmJTckTgZcLvkmpX\",\"children\":[{\"text\":\"ITMGPTT virtual int StartRecordingWithStreamingRecognition(const char* filePath,const char* translateLanguage,const char* translateLanguage) \"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"TWXxS2nwwPd3jpDIrvh3B\",\"children\":[{\"id\":\"20z0SgaqHGWTbS9176-rm\",\"children\":[{\"id\":\"MV_xVJ-8_-BWoecsMBpxk\",\"children\":[{\"id\":\"HUw6sSpQs0gZDLLYSxdFM\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"s1PNKT75Y9AOd941BK2Gn\",\"children\":[{\"id\":\"x8XIE9q9rf_HeT3B8rH78\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"MfRpJzXSu4NnAwTy6DT6z\",\"children\":[{\"id\":\"RdhQ_bTncE0Ro-GrtLyug\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"nnCwsSbhOy1MmfpNdDMSH\",\"children\":[{\"id\":\"fFuwLgwfbJvIwupWNJPFm\",\"children\":[{\"id\":\"QMrwru5nbDvqcyEsTy-M1\",\"children\":[{\"id\":\"0X5XpbtAAiHzWDv8SLMZ_\",\"children\":[{\"text\":\"filePath\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ltmLJs60PG018SFj_aXty\",\"children\":[{\"id\":\"87ML8buJbR96En5lHAXL_\",\"children\":[{\"id\":\"4Caq9eUIO2en0lJjHzRQn\",\"children\":[{\"text\":\"const char*\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"kmvY0Vzx-bE2jMGp-2IRa\",\"children\":[{\"id\":\"S75KZ36ezCdp-O52osVqQ\",\"children\":[{\"id\":\"vC_pbdE3f-ansF2OdCsHD\",\"children\":[{\"text\":\"Path of stored audio file\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"IberzOuzRz1EhGc3piwVU\",\"children\":[{\"id\":\"Bfom8ZYxtu6Z-7KjRNFXo\",\"children\":[{\"id\":\"7ou550ZcdO_4OdVGlGvyZ\",\"children\":[{\"id\":\"UOSq0lkFnD9fO5TK-UHAY\",\"children\":[{\"text\":\"speechLanguage\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ewI4hGw0KwL1jiW74BvGt\",\"children\":[{\"id\":\"OGveEiQASfVV5wVdkADHa\",\"children\":[{\"id\":\"CqEuPuhISLoc9SRdj4o0w\",\"children\":[{\"text\":\"const char*\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"kwi0xZ5PP_E4XUkpf_4Il\",\"children\":[{\"id\":\"ye9SMSi-PFUxIY6cW0AHr\",\"children\":[{\"id\":\"TDAPY5rPGxhpU-jwKdhaO\",\"children\":[{\"text\":\"The language in which the audio file is to be converted to text. For parameters, see \"},{\"id\":\"caB6JWTGNbKAZ-FBZgfoh\",\"children\":[{\"text\":\"Language Parameter Reference List\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://intl.cloud.tencent.com/document/product/607/30260\",\"props\":{\"type\":\"link\",\"url\":\"https://intl.cloud.tencent.com/document/product/607/30260\"},\"type\":\"ref\"},{\"text\":\".\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"aoPBY-LVZDVH6DnMutFUY\",\"children\":[{\"id\":\"Lf24GqHVCD1LwH29OqJ2p\",\"children\":[{\"id\":\"PkjSO5bCCBz9onWuKYLTP\",\"children\":[{\"id\":\"PqMc7efSZ7t7cIefIz7qU\",\"children\":[{\"text\":\"translateLanguage\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"QJ9PZwgBN2ZK9P6pV6ndp\",\"children\":[{\"id\":\"d_OF8iBBJROZduVAfkykV\",\"children\":[{\"id\":\"uV_G9vECrwWGHHsAVRgd4\",\"children\":[{\"text\":\"const char*\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"pWpdc4ST_2PkXNos-RiJQ\",\"children\":[{\"id\":\"wTpZ5dPjtx8mDSmUQlXi9\",\"children\":[{\"id\":\"3rHcWbT4AKHXtFHAPdXl6\",\"children\":[{\"text\":\"The language in which the audio file is to be translated to text. For parameters, see \"},{\"id\":\"kog_EhnDZWC5CxTZHi_AK\",\"children\":[{\"text\":\"Language Parameter Reference List\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://intl.cloud.tencent.com/document/product/607/30260\",\"props\":{\"type\":\"link\",\"url\":\"https://intl.cloud.tencent.com/document/product/607/30260\"},\"type\":\"ref\"},{\"text\":\".\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[17,14,69],\"widthMode\":\"percentage\"},{\"id\":\"C9jRNUVbATdUU4wEb7TJg\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code6\",\"type\":\"h4\"},{\"id\":\"qw6BdK2AJ_ogiw5JOAfSz\",\"children\":[{\"id\":\"B090X-SlWNGjk7wv9F38K\",\"children\":[{\"text\":\"ITMGContextGetInstance()->GetPTT()->StartRecordingWithStreamingRecognition(filePath,\\\"cmn-Hans-CN\\\",\\\"cmn-Hans-CN\\\");\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"_UmqTi7pem6uNP9qt5Tu4\",\"children\":[{\"id\":\"mU4kYKwad3MWLP84DCA9f\",\"children\":[{\"b\":1,\"color\":\"#04C8DC\",\"text\":\"Note: \",\"type\":\"text\"}],\"type\":\"p\"},{\"id\":\"Kwm40iZOvWPMXnpfoqQuS\",\"children\":[{\"text\":\"Translation incurs additional fees. For more information, see \"},{\"id\":\"f4ejtRap77rZbLRvAgkTM\",\"children\":[{\"text\":\"Purchase Guide\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://intl.cloud.tencent.com/document/product/607/50009\",\"props\":{\"type\":\"link\",\"url\":\"https://intl.cloud.tencent.com/document/product/607/50009\"},\"type\":\"ref\"},{\"text\":\".\"}],\"type\":\"p\"}],\"hintType\":\"alert\",\"type\":\"hint\"},{\"id\":\"LLwcdvCMxS1oFzxdCPTFu\",\"children\":[{\"text\":\"Callback for streaming speech recognition\"}],\"nodeId\":\"callback-for-streaming-speech-recognition\",\"type\":\"h3\"},{\"id\":\"cZIFvjDo19WJEb5HAaT4h\",\"children\":[{\"text\":\"After streaming speech recognition is started, you need to listen on callback messages in the \"},{\"code\":1,\"text\":\"OnEvent\"},{\"text\":\" notification, which is as detailed below:\"}],\"type\":\"p\"},{\"id\":\"7Eyqel9rzYYGDDdq24M8O\",\"children\":[{\"code\":1,\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRECOGNITION_COMPLETE\"},{\"text\":\" returns text after the recording is stopped and the recognition is completed, which is equivalent to returning the recognized text after a paragraph of speech.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"DSUiy4PVYaFowM5IvCJ_w\",\"children\":[{\"code\":1,\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRECOGNITION_IS_RUNNING\"},{\"text\":\" returns the recognized text in real-time during the recording, which is equivalent to returning the recognized text while speaking.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"mhaUPPytR5qOaquNH16pF\",\"children\":[{\"text\":\"The event message will be identified in the \"},{\"code\":1,\"text\":\"OnEvent\"},{\"text\":\" notification based on the actual needs. The passed parameters include the following four messages.\"}],\"type\":\"p\"},{\"id\":\"cQi61GNEqJRayhVeP6Xg3\",\"children\":[{\"id\":\"WrthCl0zuzoM1684PVk1t\",\"children\":[{\"id\":\"3aKcO2gk6m7dhzfdYCS_4\",\"children\":[{\"id\":\"RDFEwJHjZcV5_BkW-58ic\",\"children\":[{\"text\":\"Message Name\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"oXW9X8YfTabY4exsoveeg\",\"children\":[{\"id\":\"_AucKSXNgcs6I7GPZ0_Nz\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"zSuyU8hWVP7hUkj2iaUys\",\"children\":[{\"id\":\"4n6k0VQ6DwKA4KVcUEdk2\",\"children\":[{\"id\":\"8A4wMmqFizlYiQLwHR3ei\",\"children\":[{\"id\":\"EaMrmse4yFv2ZNNjqGOar\",\"children\":[{\"text\":\"result\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"dQiLAJ83CxkU9G8LOS5zW\",\"children\":[{\"id\":\"RHM3NZ03luzHZgZo_BWhC\",\"children\":[{\"id\":\"d8WAQD9fpgvpucbrd_Wlf\",\"children\":[{\"text\":\"Return code indicating whether streaming speech recognition is successful\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"qxRuk9lD0u2Qrw-hBRfaJ\",\"children\":[{\"id\":\"8hCqDqN2a2y0kD-x-n0jv\",\"children\":[{\"id\":\"RE8CVc78iTY0VarMNQGST\",\"children\":[{\"id\":\"VsuV-uR5t5MFL4GuMkIx7\",\"children\":[{\"text\":\"text\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"FABPFUIXfCQUJmYA1bx4l\",\"children\":[{\"id\":\"AUUAzSefaIpfga2UAcgaZ\",\"children\":[{\"id\":\"ocEAhHB1qBWc-LAiJFrCw\",\"children\":[{\"text\":\"Text converted from speech\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"OImgEuBEw8HwG-DMT7XHw\",\"children\":[{\"id\":\"WC_xHWfOhzlCygdT2vEVS\",\"children\":[{\"id\":\"cmB83r4uJpUOPfBkllzm4\",\"children\":[{\"id\":\"0zv4HUeKnHmrs6LGt0LlW\",\"children\":[{\"text\":\"file_path\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"RVcEm9ZJXl6LDs9czW2wd\",\"children\":[{\"id\":\"muJs6rwz3oADh0Ra77ZoG\",\"children\":[{\"id\":\"ITjawJbklDnqopOmRDbWE\",\"children\":[{\"text\":\"Local path of stored recording file\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"fvL1gRLfQfJGOd8Zp7h17\",\"children\":[{\"id\":\"3JNu47B-r-CHQiTk9VOB-\",\"children\":[{\"id\":\"a2bGowZTpS1qN2XCAYGvm\",\"children\":[{\"id\":\"avFxdbvK0LC3JzrZ0kk6k\",\"children\":[{\"text\":\"file_id\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"GdeM9o3at_JUpo6w2tT-g\",\"children\":[{\"id\":\"61BVTLIA3YrnzbNCgFWWT\",\"children\":[{\"id\":\"wdEKwgOFt8QmKwBcpKRke\",\"children\":[{\"text\":\"Backend URL address of recording file, which will be retained for 90 days\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[20,80],\"widthMode\":\"percentage\"},{\"id\":\"JsG6sBXucBlegTELK6Qxh\",\"children\":[{\"id\":\"S4dqcf_9E1fGpINTRykWe\",\"children\":[{\"b\":1,\"color\":\"#04C8DC\",\"text\":\"Note: \"}],\"type\":\"p\"},{\"id\":\"WVqP5vOIcQ0jPDUO_nsfV\",\"children\":[{\"text\":\"The file_id is empty when the 'ITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRecognition_IS_RUNNING' message is listened.\"}],\"type\":\"p\"}],\"hintType\":\"alert\",\"type\":\"hint\"},{\"id\":\"PfhpMw8jvkn5Zkh4YZpKO\",\"children\":[{\"text\":\"Error codes\"}],\"nodeId\":\"error-codes\",\"type\":\"h4\"},{\"id\":\"umbKwBW1x2AUXSAQKkJuS\",\"children\":[{\"id\":\"QE2-BBYuowzXT6rx9yYF4\",\"children\":[{\"id\":\"NpIzWPbNoWSEW0S1tpf3J\",\"children\":[{\"id\":\"m26xrdXkmRZaZ_SQ6kU5I\",\"children\":[{\"text\":\"Error Code\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"8FcmY5VB_5Wnx55W63dcW\",\"children\":[{\"id\":\"T4gQfMchPgosNg-OEILlu\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"2jvNun_plzgz1I6MHud_X\",\"children\":[{\"id\":\"UT9L6B6Pk0ZNKm5PkvyXB\",\"children\":[{\"text\":\"Suggested Solution\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"SZDsWcYflnWt9FVCkUtuQ\",\"children\":[{\"id\":\"DsLkElcwOPK0uDrimXl7X\",\"children\":[{\"id\":\"yOVCjboXG229M_1hJVZYe\",\"children\":[{\"id\":\"lEnDDEFmSWvZpuQRUAGe3\",\"children\":[{\"text\":\"32775\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"29S2bcAZjX8vxQGtfgFwu\",\"children\":[{\"id\":\"R_G6zloCoXpY_9kOg2Ewm\",\"children\":[{\"id\":\"DcmeyTVkB_uU3nnnal5ef\",\"children\":[{\"text\":\"Streaming speech-to-text conversion failed, but recording succeeded.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"LmjWmOSlnly1t2AxCa-uu\",\"children\":[{\"id\":\"7J6Q9bHUohiA8AlAXHldn\",\"children\":[{\"id\":\"FJfo0a3NHt5r4LYQPrq4o\",\"children\":[{\"text\":\"Call the \"},{\"code\":1,\"text\":\"UploadRecordedFile\"},{\"text\":\" API to upload the recording file and then call the \"},{\"code\":1,\"text\":\"SpeechToText\"},{\"text\":\" API to perform speech-to-text conversion.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"nAO2y9rx8_jd_Kheg6Au9\",\"children\":[{\"id\":\"f9Ojst3i0FfQBr2-ekmIB\",\"children\":[{\"id\":\"VBhYkhdJRy5kvGWtzZO2w\",\"children\":[{\"id\":\"9J0YE_1qrBLXNz2V15KfC\",\"children\":[{\"text\":\"32777\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ytQCSXzG6em7HA8tap1CK\",\"children\":[{\"id\":\"Ea1r8sRB3q47Z3hJm82mt\",\"children\":[{\"id\":\"lgvlxY7SgjzBUwBg9LK9F\",\"children\":[{\"text\":\"Streaming speech-to-text conversion failed, but recording and upload succeeded.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"_7FRUcpZtxQD-BuRIEDni\",\"children\":[{\"id\":\"3mVZ-bMn9nr3Sqv4eG40z\",\"children\":[{\"id\":\"Ql1QhmAj5KUzqW2SVyiQt\",\"children\":[{\"text\":\"The message returned contains a backend URL after successful upload. Call the \"},{\"code\":1,\"text\":\"SpeechToText\"},{\"text\":\" API to perform speech-to-text conversion.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"2CCrAIb6wQRlj1XNfdXie\",\"children\":[{\"id\":\"LdIRJRJunRSPGl0nC1GxR\",\"children\":[{\"id\":\"cIHK9YqAw4Bit_boYYLYe\",\"children\":[{\"id\":\"S1w3Mss670C4BVDGrLxHx\",\"children\":[{\"text\":\"32786\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"bsddPAvb_Wq469Ohos4Sd\",\"children\":[{\"id\":\"_bBoyST6ztmgkZkLjXRrm\",\"children\":[{\"id\":\"Ateseh0XdtqwFDYpc8bg6\",\"children\":[{\"text\":\"Streaming speech-to-text conversion failed.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"DOfIdMRV1ds0VCpEVo7qj\",\"children\":[{\"id\":\"dVM5KlOGI5jEbit7cbAAY\",\"children\":[{\"id\":\"ifVfVrtt8BNaXoTgocwNX\",\"children\":[{\"text\":\"During streaming recording, wait for the execution result of the streaming recording API to return.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"wG0uSBl8wkl8mLk3KpPk3\",\"children\":[{\"id\":\"BsGeMr2z2qBNR4G3PFj3U\",\"children\":[{\"id\":\"LTWQo3BXQWUckB4Qujr8o\",\"children\":[{\"id\":\"6meiOaWcl5sF7D3jcqYKE\",\"children\":[{\"text\":\"32787\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Eay8yRYVcNQP8xN922956\",\"children\":[{\"id\":\"o08tt0LPIpGCnvkRa_0Go\",\"children\":[{\"id\":\"qbsZUqsOLakM_viR8UJl2\",\"children\":[{\"text\":\"Speech-to-text conversion succeeded, but the text translation service was not activated.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"xDn_RIqyicsR-iOphd4RS\",\"children\":[{\"id\":\"cQun7mQ24R1KQWGyVRoPJ\",\"children\":[{\"id\":\"nG6UQxUW7nsm2P7sH6qlT\",\"children\":[{\"text\":\"Activate the text translation service in the console.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"5Jmt7zClvbk9d_h3BsvRA\",\"children\":[{\"id\":\"AHgIww5-kyEi1NCLdbMmC\",\"children\":[{\"id\":\"hiKh3WlfUXLDHUKR0hOdy\",\"children\":[{\"id\":\"M1ERfWcxIWHpaIIj4J_9I\",\"children\":[{\"text\":\"32788\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"GvV1ybHuzGRZQvJepWYuQ\",\"children\":[{\"id\":\"LcdHFrPvsOYFgsIsVz3Sn\",\"children\":[{\"id\":\"UWIPtsjiEu50dUPj0uo5f\",\"children\":[{\"text\":\"Speech-to-text conversion succeeded, but the language parameter of the text translation service was invalid.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"JASebfiSEY8TLlrrOUMH7\",\"children\":[{\"id\":\"Nzci_PsKvkj23Mp_HoObe\",\"children\":[{\"id\":\"Gs1LBqTPfxS2uEDBHYmFp\",\"children\":[{\"text\":\"Check the parameter passed in.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[12,35,53],\"widthMode\":\"percentage\"},{\"id\":\"S1WlikifG6RiUsZx5DaGV\",\"children\":[{\"text\":\"If the error code 4098 is reported, see \"},{\"id\":\"WkIT5gx2r-uQDYCCljBxz\",\"children\":[{\"text\":\"FAQs\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://intl.cloud.tencent.com/document/product/607/39716\",\"props\":{\"type\":\"link\",\"url\":\"https://intl.cloud.tencent.com/document/product/607/39716\"},\"type\":\"ref\"},{\"text\":\" for solutions.\"}],\"type\":\"p\"},{\"id\":\"79ds7jIdA9pAMoB7kVOSf\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code7\",\"type\":\"h4\"},{\"id\":\"66fGMMNzoAlGTw2R92ZPo\",\"children\":[{\"id\":\"NS7TWGc7yvxdcXJolCOM4\",\"children\":[{\"text\":\"void TMGTestScene::OnEvent(ITMG_MAIN_EVENT_TYPE eventType,const char* data){\"}],\"type\":\"code-line\"},{\"id\":\"OBod-tD0lSTQoSj5r7fGt\",\"children\":[{\"text\":\" switch (eventType) {\"}],\"type\":\"code-line\"},{\"id\":\"yN5pVhMYSpd0RMckg6Oki\",\"children\":[{\"text\":\" case ITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRECOGNITION_COMPLETE:\"}],\"type\":\"code-line\"},{\"id\":\"PROZwi9GxXI5c0CdphouB\",\"children\":[{\"text\":\" {\"}],\"type\":\"code-line\"},{\"id\":\"35pXmZojHZYpDlkN_K3bT\",\"children\":[{\"text\":\" HandleSTREAM2TEXTComplete(data,true);\"}],\"type\":\"code-line\"},{\"id\":\"gNwQB9dYFquAGTzdgI3F_\",\"children\":[{\"text\":\" break;\"}],\"type\":\"code-line\"},{\"id\":\"0gOa_0v1R2N8BG6vwwbdP\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"iqws0mNxzt872AXXQT1go\",\"children\":[{\"text\":\" ...\"}],\"type\":\"code-line\"},{\"id\":\"O46-CK0zV5ivyoNkfzWlu\",\"children\":[{\"text\":\" case ITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRECOGNITION_IS_RUNNING:\"}],\"type\":\"code-line\"},{\"id\":\"blfWx7MlH8K2dWgKD13cu\",\"children\":[{\"text\":\" {\"}],\"type\":\"code-line\"},{\"id\":\"JKaoVQ15bH5H97F-Zsa0P\",\"children\":[{\"text\":\" HandleSTREAM2TEXTComplete(data, false);\"}],\"type\":\"code-line\"},{\"id\":\"Ty6c8jKIoYlo0dChiA9lt\",\"children\":[{\"text\":\" break;\"}],\"type\":\"code-line\"},{\"id\":\"hNeipw82yJz0NAAdN713g\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"n6zuBbhw4tBijzHgTG877\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"x-RYOHaPhqBtnXWt-Ff0i\",\"children\":[{\"text\":\"}\"}],\"type\":\"code-line\"},{\"id\":\"c3tLKiIyDT0ongst2cI9C\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"},{\"id\":\"qIyTfuVSrH1eitWz5blS1\",\"children\":[{\"text\":\"void CTMGSDK_For_AudioDlg::HandleSTREAM2TEXTComplete(const char* data, bool isComplete)\"}],\"type\":\"code-line\"},{\"id\":\"0FcTCpxJJfVI48gpyEqbn\",\"children\":[{\"text\":\"{\"}],\"type\":\"code-line\"},{\"id\":\"unegbKUrgaeU2XJUB_ZKo\",\"children\":[{\"text\":\" std::string strText = \\\"STREAM2TEXT: ret=\\\";\"}],\"type\":\"code-line\"},{\"id\":\"0kP9wkaGX9P3HBEY8ITgX\",\"children\":[{\"text\":\" strText += data;\"}],\"type\":\"code-line\"},{\"id\":\"yTUf8KzT5AwgipZjRtAzO\",\"children\":[{\"text\":\" m_EditMonitor.SetWindowText(MByteToWChar(strText).c_str());\"}],\"type\":\"code-line\"},{\"id\":\"Ab0afv4x4k8YkMAosnC7F\",\"children\":[{\"text\":\" Json::Reader reader;\"}],\"type\":\"code-line\"},{\"id\":\"eBPP04ef3Zqi_DfwHyITb\",\"children\":[{\"text\":\" Json::Value root;\"}],\"type\":\"code-line\"},{\"id\":\"fGk3WCUFneRUhxSd2LGqH\",\"children\":[{\"text\":\" bool parseRet = reader.parse(data, root);\"}],\"type\":\"code-line\"},{\"id\":\"RrUoBEVpH3os6lYgYcQGN\",\"children\":[{\"text\":\" if (!parseRet) {\"}],\"type\":\"code-line\"},{\"id\":\"vTkAab1h5zsJIPnE-_HbE\",\"children\":[{\"text\":\" ::SetWindowText(m_EditInfo.GetSafeHwnd(),MByteToWChar(std::string(\\\"parse result Json error\\\")).c_str());\"}],\"type\":\"code-line\"},{\"id\":\"zig48_3EuU0FMqku8c9Mv\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"kXW1-r_z7jUXDMih6tBDU\",\"children\":[{\"text\":\" else\"}],\"type\":\"code-line\"},{\"id\":\"-F04BhtxPgxWP8IWAPbNU\",\"children\":[{\"text\":\" {\"}],\"type\":\"code-line\"},{\"id\":\"KOaJ7b8lY3p6KGKcYZiUN\",\"children\":[{\"text\":\" if (isComplete) {\"}],\"type\":\"code-line\"},{\"id\":\"jF7YuRfmlYayC8ebNV9ZY\",\"children\":[{\"text\":\" ::SetWindowText(m_EditUpload.GetSafeHwnd(), MByteToWChar(root[\\\"file_id\\\"].asString()).c_str());\"}],\"type\":\"code-line\"},{\"id\":\"j8mHG1BhJED3KfyZoF1oA\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"uapQy8CITeb5VlbyQGD-x\",\"children\":[{\"text\":\" else {\"}],\"type\":\"code-line\"},{\"id\":\"Qamu3HYVxmfo8EpSRBy6o\",\"children\":[{\"text\":\" std::string isruning = \\\"STREAMINGRECOGNITION_IS_RUNNING\\\";\"}],\"type\":\"code-line\"},{\"id\":\"Tis2iRbBlp4nMLDePlopg\",\"children\":[{\"text\":\" ::SetWindowText(m_EditUpload.GetSafeHwnd(), MByteToWChar(isruning).c_str());\"}],\"type\":\"code-line\"},{\"id\":\"SMReOlmyFMr9a1CbWIXsb\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"Y2u6cF8hmRW19rYpLctTN\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"ZiuXoeCVUA3ci9QL2RbXR\",\"children\":[{\"text\":\"}\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"1jCYT90yjh-Zx4k7i2hkD\",\"children\":[{\"text\":\"Voice Message Recording\"}],\"nodeId\":\"voice-message-recording\",\"type\":\"h2\"},{\"id\":\"BEKRl3ybRWSO2MjOjolzO\",\"children\":[{\"b\":1,\"text\":\"The recording process is as follows: start recording > stop recording > return recording callback > start the next recording.\"}],\"type\":\"p\"},{\"id\":\"bUntthChynhm1Va7_JW49\",\"children\":[{\"text\":\"Voice message and speech-to-text APIs\"}],\"nodeId\":\"voice-message-and-speech-to-text-apis\",\"type\":\"h3\"},{\"id\":\"5Wpi3jaqxyHYDs8gdTEmd\",\"children\":[{\"id\":\"YNsJyPjyFqZ8GxcCcCns2\",\"children\":[{\"id\":\"Fx4gj6G_N_8AuqBWpFGDW\",\"children\":[{\"id\":\"bBN1_6ptQh-aNi-ACnQ1Q\",\"children\":[{\"text\":\"API\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"gfJXLUr220-ZoWQ2_FPlT\",\"children\":[{\"id\":\"FEX2ToZnVQ47p3ZCOhhjr\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"ReqwG5JhiVlnW1Q0Sogsy\",\"children\":[{\"id\":\"cmJ8OfU9vJLKP53sXfBJF\",\"children\":[{\"id\":\"y-dAvpIfM-gqYg0bqo-fp\",\"children\":[{\"id\":\"v90phxH_fPeAM_b7H-vdJ\",\"children\":[{\"text\":\"StartRecording\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"TXfuBrETcoYcSf7dC_ihD\",\"children\":[{\"id\":\"fjRHdk8-QUSZ6jbN_wr-E\",\"children\":[{\"id\":\"nckokjgzQxlqkyfaYiNoZ\",\"children\":[{\"text\":\"Starts recording\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"WByNS6BqEXyM1aCr4xeUq\",\"children\":[{\"id\":\"wg7EoMsAx1gwtbjPPM_sR\",\"children\":[{\"id\":\"dOVZBZkb1H13Vj4ULTUYV\",\"children\":[{\"id\":\"Tz4cUYxTXMb6UOOtjDNwh\",\"children\":[{\"text\":\"PauseRecording\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"-7LOAlnhoqg3XU_FpEL_d\",\"children\":[{\"id\":\"mz6Q6MQlRcLEsKfMMmoNV\",\"children\":[{\"id\":\"sBYfzP1KIFAE7gsWiF864\",\"children\":[{\"text\":\"Pauses recording\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"CT4cj_lnMRvqQcEjHaHyI\",\"children\":[{\"id\":\"YagItVWfNfFxW9a12UWqo\",\"children\":[{\"id\":\"aExqQ2oz0xEmf7E-LRPu4\",\"children\":[{\"id\":\"OMoqLmygeByHI_xhyuzug\",\"children\":[{\"text\":\"ResumeRecording\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"QBJZ66NKTggQ72LT_pYR8\",\"children\":[{\"id\":\"jUC8imOqY3CRuP13JpsW4\",\"children\":[{\"id\":\"-TqFZT5dR_OYNf41kNjYk\",\"children\":[{\"text\":\"Resumes recording\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"iEZrxosKII4l2zIxDCxBN\",\"children\":[{\"id\":\"sB0zGfFXB9xCPrC7QFgQx\",\"children\":[{\"id\":\"vNs6XUVGjNdb2wLZUlSAp\",\"children\":[{\"id\":\"JZ9AwoRO4YQRW3bDOCGiW\",\"children\":[{\"text\":\"StopRecording\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"g3zwJ9w5P45l7VKZOFpoL\",\"children\":[{\"id\":\"_Ru9jV5Crq61TWujxPeJu\",\"children\":[{\"id\":\"W3ue-rfw8lumk58aLT4Dc\",\"children\":[{\"text\":\"Stops recording\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"SZwnWO9tMm1W88A7LvylN\",\"children\":[{\"id\":\"jwmeC1bcHL0HT3tBx9rMN\",\"children\":[{\"id\":\"4ypsd-6fLDOG9oNz3ikZs\",\"children\":[{\"id\":\"pWupO-4kcQhhq3UPzCP4I\",\"children\":[{\"text\":\"CancelRecording\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"sRd6gbfYqsmve9M_9mafH\",\"children\":[{\"id\":\"ArRAWyGvkX1XTpHO5Oqym\",\"children\":[{\"id\":\"mKaq-eUIki5vLfZjY0dB8\",\"children\":[{\"text\":\"Cancels recording\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[49,51],\"widthMode\":\"percentage\"},{\"id\":\"6WPLmheI5YHiGfCpgvdV9\",\"children\":[{\"text\":\"Starting recording\"}],\"nodeId\":\"starting-recording\",\"type\":\"h3\"},{\"id\":\"pDxeJDOQ59wOBV84ktlEJ\",\"children\":[{\"text\":\"This API is used to start recording.\"}],\"type\":\"p\"},{\"id\":\"qV-6hJMWVIMGLeuL-Mpro\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype10\",\"type\":\"h4\"},{\"id\":\"76fcOwh0sZowql0spY7T9\",\"children\":[{\"id\":\"CBNYrBlB-_iG2B1O5n9JR\",\"children\":[{\"text\":\"ITMGPTT virtual int StartRecording(const char* fileDir)\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"KwDGo2ekbhPIRaYlAPZxF\",\"children\":[{\"id\":\"iXBN0f5QF0gCwFThvt-sX\",\"children\":[{\"id\":\"fhHXD7E0dIy-ecSy54Z5K\",\"children\":[{\"id\":\"1LCU8TatzkchSygPyLB5G\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"u_JuEXE2QKTeHU4PDs5ek\",\"children\":[{\"id\":\"Csq_2CEyq4iJSY-jNEPWR\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"8sCeBW0NRjWCml25xCEM9\",\"children\":[{\"id\":\"LFMAGhiXEfzUPTcrbp23V\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"5BD19hkJIgHXZB3-AQnQ8\",\"children\":[{\"id\":\"rw6txTz87-L8Ezl1QNCe6\",\"children\":[{\"id\":\"s3nWpn8LBFZ_xV5rkMP0X\",\"children\":[{\"id\":\"V11ZmuqK2Kw_7Uh_ymWMH\",\"children\":[{\"text\":\"fileDir\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"0jeTSSlfDwABRwPBO_eQu\",\"children\":[{\"id\":\"XR0wYmqUFwBb6FfTvQj3a\",\"children\":[{\"id\":\"SM_E5_p5aH_ItEuviqC3n\",\"children\":[{\"text\":\"const char*\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"haMZ0mq1WMXwozc4DLw22\",\"children\":[{\"id\":\"G6FxEHRi_cMaRv-FOT_BJ\",\"children\":[{\"id\":\"RJZGY9vBy1QDce5ccBg1U\",\"children\":[{\"text\":\"Path of stored audio file\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[25,27,48],\"widthMode\":\"percentage\"},{\"id\":\"qsi1cvsYziEzfoZwDJBa8\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code8\",\"type\":\"h4\"},{\"id\":\"nAFpD-Mh91GAFk_AncOtn\",\"children\":[{\"id\":\"g8JxhXLhTLDYjPVNAUzsp\",\"children\":[{\"text\":\"char buffer[256]={0};\"}],\"type\":\"code-line\"},{\"id\":\"5LRu6OxyIZyFHJMcRZ6b9\",\"children\":[{\"text\":\"snprintf(buffer, sizeof(buffer), \\\"%sunreal_ptt_local.file\\\", getFilePath().c_str());\"}],\"type\":\"code-line\"},{\"id\":\"bDf_KrVYUM_pf8PKVLvQ7\",\"children\":[{\"text\":\"ITMGContextGetInstance()->GetPTT()->StartRecording(buffer);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"UKvxO6FHRboFi3m6xf9ll\",\"children\":[{\"text\":\"Stopping recording\"}],\"nodeId\":\"stopping-recording\",\"type\":\"h3\"},{\"id\":\"g2HF4raDpKtbLhXJB_IdZ\",\"children\":[{\"text\":\"This API is used to stop recording. It is async, and a callback for recording completion will be returned after recording stops. A recording file will be available only after recording succeeds.\"}],\"nodeId\":\"Stop\",\"type\":\"p\"},{\"id\":\"viUwlb42C5TgtkVM0Xpw-\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype11\",\"type\":\"h4\"},{\"id\":\"daZAyHJcN8q4QYXGz617z\",\"children\":[{\"id\":\"aS1tPqnv46o2qfpo1B7Mc\",\"children\":[{\"text\":\"ITMGPTT virtual int StopRecording()\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"Tp2BqWcwSULUOk6e44mJL\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code9\",\"type\":\"h4\"},{\"id\":\"SafkcGV0sL0o3qIHNzHYp\",\"children\":[{\"id\":\"h5gnne467duzQFUVKBB7y\",\"children\":[{\"text\":\"ITMGContextGetInstance()->GetPTT()->StopRecording();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"JP5Y6HeP0GnHq5FSjIwv9\",\"children\":[{\"text\":\"Callback for recording start\"}],\"nodeId\":\"callback-for-recording-start\",\"type\":\"h3\"},{\"id\":\"Opv3jmMS4_w6p6V3pMtNM\",\"children\":[{\"text\":\"The recording start result will be returned through the callback.\"}],\"type\":\"p\"},{\"id\":\"ar95wCSVG56iXBDU7Z4XB\",\"children\":[{\"b\":1,\"text\":\"To stop recording, call \"},{\"b\":1,\"code\":1,\"text\":\"StopRecording\"},{\"text\":\". The callback for recording start will be returned after the recording is stopped.\"}],\"type\":\"p\"},{\"id\":\"9cpyVMF60uASBf0zniAQL\",\"children\":[{\"id\":\"ojMB2pU07XDydB7ZxyJDW\",\"children\":[{\"id\":\"H8ymQe7p5sI1VLRyjJ1jj\",\"children\":[{\"id\":\"1ubDIkEMSD0x-fSZo21kx\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"_9s5UMTZc1Ozh2CPHvw49\",\"children\":[{\"id\":\"M1rZOINHbvkBsSlrl6EL5\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"qgrktn5dcrd7w7pblQUvE\",\"children\":[{\"id\":\"CK5lkg9ZW6tZg8VszLN0u\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"3pwGagCUeeLC1HmQY0JoX\",\"children\":[{\"id\":\"wdF8iMO-q8pe3dIC7Cuhh\",\"children\":[{\"id\":\"Gz2AEDfLAyRVKw19tWgVn\",\"children\":[{\"id\":\"gk4f7C8juIqVqLRhuAJEj\",\"children\":[{\"text\":\"result\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"BGfYNy2v0mg7Po69HJ4xB\",\"children\":[{\"id\":\"jAwsC_cVOC1RTx-NezFPR\",\"children\":[{\"id\":\"IFOFchEJIN3_r9IbLvi9H\",\"children\":[{\"text\":\"int32\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"bszfUQzmNjs-SdP_SP1b_\",\"children\":[{\"id\":\"-M4NmAQPINAgN3yt-F-eZ\",\"children\":[{\"id\":\"gtLGOCsVvzKGWC7WCggur\",\"children\":[{\"text\":\"0: recording is completed\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"E9onFBHFmMLNTWMShVFGT\",\"children\":[{\"id\":\"Ri9XRdEz_ZoWGcxwZFIt_\",\"children\":[{\"id\":\"H9ewEQnGkJNjqjCrc5zee\",\"children\":[{\"id\":\"ChwrMGWBMTCi4wdwr_D44\",\"children\":[{\"text\":\"filepath\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"w74r6cuTpD9h-JwNrLo9A\",\"children\":[{\"id\":\"BTfDVahzYgPHND3t6GuBL\",\"children\":[{\"id\":\"JuP0vf6a9YWKRhrqraHqw\",\"children\":[{\"text\":\"FString\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"0sBBcwxFNwj1uAWbExvDI\",\"children\":[{\"id\":\"0Du6KbOLxB2-6vpCdgqEQ\",\"children\":[{\"id\":\"mG1J1T4BF6fHy2eRWt7QU\",\"children\":[{\"text\":\"Path of stored recording file, which must be accessible and cannot be the \"},{\"code\":1,\"text\":\"fileid\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[13,10,77],\"widthMode\":\"percentage\"},{\"id\":\"-JudFT7FwqfR9eQsQ4bMG\",\"children\":[{\"text\":\"Error codes\"}],\"nodeId\":\"error-codes2\",\"type\":\"h4\"},{\"id\":\"21Hft7yZ-I9aZmyDW4ngA\",\"children\":[{\"id\":\"_ydVIezY8Ro1ibDoffL9l\",\"children\":[{\"id\":\"h_UZ8niHUkMLLyH_TXIja\",\"children\":[{\"id\":\"mH8cwwdnyUS7lkXZcnNAj\",\"children\":[{\"text\":\"Error Code Value\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"v5g7sU4qtbQYCU9DZKm4M\",\"children\":[{\"id\":\"YrX64GnOqmFFBj36ntVkB\",\"children\":[{\"text\":\"Cause\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"R2BmTzAvzRE79wgU3Tq_N\",\"children\":[{\"id\":\"0UKczk_S-vR1qRWhS6ZAO\",\"children\":[{\"text\":\"Suggested Solution\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"P46AQnnbIDgG2R-rfZpAK\",\"children\":[{\"id\":\"BlVmWCVvndQ0KNpmbMFvr\",\"children\":[{\"id\":\"V95DNMeH4jFOAGh6xRaHe\",\"children\":[{\"id\":\"Jk4x-XPvQ4GFWKqOVGsMI\",\"children\":[{\"text\":\"4097\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"dy-20HnARXSBzMgADTgms\",\"children\":[{\"id\":\"w2d9e-78i1oHPAj_Ml7aV\",\"children\":[{\"id\":\"7O9O4aaZwKehTZmK2lKFT\",\"children\":[{\"text\":\"Parameter is empty.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"IeoszIS_bqPGqtVeWcRrr\",\"children\":[{\"id\":\"-XNwOS2FGzAImzbrd_ZSA\",\"children\":[{\"id\":\"OnADAmgBa-nJMTvi_z_F7\",\"children\":[{\"text\":\"Check whether the API parameters in the code are correct.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"_Dtq_cRet5KFHbgjhZ7xo\",\"children\":[{\"id\":\"lkUZ6NAJJ-upLd4skIz6o\",\"children\":[{\"id\":\"5jX2YR44AVEw1MYfz07o2\",\"children\":[{\"id\":\"V-S_gZdHp-Csc47-JVkBB\",\"children\":[{\"text\":\"4098\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"8I739-0xxcKw84YtWqo_B\",\"children\":[{\"id\":\"u71G11bFUz54rtiCAD_iM\",\"children\":[{\"id\":\"YceMxeUaoUC5la8is8vd3\",\"children\":[{\"text\":\"Initialization error.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"tAwCvXAITDhwfvVdmlWcs\",\"children\":[{\"id\":\"7dEtEznAfeYCTlKXFA11v\",\"children\":[{\"id\":\"819Ejy1XbtsYAKOnPQVs6\",\"children\":[{\"text\":\"Check whether the device is being used, whether the permissions are normal, and whether the initialization is normal.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"itmVu1of3HuYVkOreIdk4\",\"children\":[{\"id\":\"c_FcSXEArWOgrMeRxa-2i\",\"children\":[{\"id\":\"u6Gh3c7g4-zZo1rwQzqA_\",\"children\":[{\"id\":\"iCeMrVsM0Xw1qGy1pt_kd\",\"children\":[{\"text\":\"4099\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"jPwVoSzzPj-T6GZEvSBVy\",\"children\":[{\"id\":\"kL4baX5Oo7OhgFcAWYCrr\",\"children\":[{\"id\":\"BIh25leGq4BdkkAySx741\",\"children\":[{\"text\":\"Recording is in progress.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"-tVMjgsYiR9fLbcWZvXIH\",\"children\":[{\"id\":\"OAc31bEHwEg1-KIbeUFjz\",\"children\":[{\"id\":\"-bxzDq3lUCXYTNxf3U0cB\",\"children\":[{\"text\":\"Ensure that the SDK recording feature is used at the right time.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"CEJbGI4LoWFtK5OH74TiK\",\"children\":[{\"id\":\"CCE5sdvI_BxKK361sLdrn\",\"children\":[{\"id\":\"kpX5VD5PlZWW02J6OwsrZ\",\"children\":[{\"id\":\"-zKigookf5JeS8Ta_igOB\",\"children\":[{\"text\":\"4100\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"BSsD7i8VaOzWjbpC3L3mC\",\"children\":[{\"id\":\"eCto93WAyGArsvYPxTyZh\",\"children\":[{\"id\":\"2KKNN-bmf1k8vQMfeOKEm\",\"children\":[{\"text\":\"Audio data is not captured.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"w_uugE7xNxKNM7e8MUzuo\",\"children\":[{\"id\":\"CH7PBFUIRBK4i-xCJRzVo\",\"children\":[{\"id\":\"8OqR0Rsn_DdaY-MnY2shc\",\"children\":[{\"text\":\"Check whether the mic is working properly.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"QLsfZrxHiSfkLlRwdkoR_\",\"children\":[{\"id\":\"IQGDoGtc6sagzMDKinahF\",\"children\":[{\"id\":\"PmkU2du5fy5Z86shC4DI0\",\"children\":[{\"id\":\"Tygqiieke1dPGsjDbkBbv\",\"children\":[{\"text\":\"4101\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"E6AVYX_cpMkJtK0tq-hS5\",\"children\":[{\"id\":\"0-qvJg7BqLa9AHo2Z0cPA\",\"children\":[{\"id\":\"3VvovyRHknESzlyfM2VIB\",\"children\":[{\"text\":\"An error occurred while accessing the file during recording.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"cgfYIOd3IR3P3_-MMTT-a\",\"children\":[{\"id\":\"Jor056FtSFas6SPCLEp3e\",\"children\":[{\"id\":\"_uUVLKpRkqEUSzW486G_Q\",\"children\":[{\"text\":\"Ensure the existence of the file and the validity of the file path.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"i9mPvSeFgCpEakBWnmlie\",\"children\":[{\"id\":\"-SvthQkKWSTiVshiwGyhI\",\"children\":[{\"id\":\"iZcWi51UZMIEhWesO8FLb\",\"children\":[{\"id\":\"U4gW8-lg6qPv4pQk_eO4C\",\"children\":[{\"text\":\"4102\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"KynbPQbATtfyAaFMr1hyv\",\"children\":[{\"id\":\"rAWj0J5Ua2p3FuTi-QzLI\",\"children\":[{\"id\":\"-2LDgOKA0QF0fHK3JasnV\",\"children\":[{\"text\":\"The mic is not authorized.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"EulyswUiyDBAXazzgHt-h\",\"children\":[{\"id\":\"IDynqE7VrMuU1sDBuo5-2\",\"children\":[{\"id\":\"cTbFEyXqATlZjhblu0Fc6\",\"children\":[{\"text\":\"Mic permission is required for using the SDK. To add the permission, please see the SDK project configuration document for the corresponding engine or platform.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"0_PMviucfIjJ0QN30uDke\",\"children\":[{\"id\":\"mJlWcw4uCOMXU3v-pLtjt\",\"children\":[{\"id\":\"SBYywJlvLERMyksjJNqHY\",\"children\":[{\"id\":\"_KkRbqIeRYLL4C-ZSJnT3\",\"children\":[{\"text\":\"4103\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"SdhvKbcVBQrmg6NYOC0sa\",\"children\":[{\"id\":\"roVMJcgr52u03jmCUiUid\",\"children\":[{\"id\":\"-ZY4iyDaQb1Nrq4XUdsMv\",\"children\":[{\"text\":\"The recording duration is too short.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"LBoniz9AGid5_eLQtg75K\",\"children\":[{\"id\":\"vVIXK2ODTURCf46YM4Vxp\",\"children\":[{\"id\":\"F763x4HHtq4R3UZ6Oh12y\",\"children\":[{\"text\":\"The recording duration should be in ms and longer than 1,000 ms.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"JFl3hJ31ST92xy4DNxdBL\",\"children\":[{\"id\":\"tCBikIi3j8gGcNz6cPAii\",\"children\":[{\"id\":\"87mmMYQiP8ueZQ6YEKK9u\",\"children\":[{\"id\":\"kgeFnqbQtsMxqTfv_DQ0h\",\"children\":[{\"text\":\"4104\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"YchYh8C7r9mU7237gWJg2\",\"children\":[{\"id\":\"VcSbRCzdMbznSQ4srmv0p\",\"children\":[{\"id\":\"I5GEjUj3iGH_Hfbfa_DjL\",\"children\":[{\"text\":\"No recording operation is started.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"NDdzaLr8B0u2oCw4hDALR\",\"children\":[{\"id\":\"8o6l6EfG7OrSxgS26MYsO\",\"children\":[{\"id\":\"Izac-x_g_IY-L4bKJmPuz\",\"children\":[{\"text\":\"Check whether the recording starting API has been called.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[16,29,55],\"widthMode\":\"percentage\"},{\"id\":\"QWQttfy0b0cn7_y1mYsUG\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code10\",\"type\":\"h4\"},{\"id\":\"HbNdIQERlG4kksHhmjpNU\",\"children\":[{\"id\":\"M2w9ZNzzsl31s0xaX3znV\",\"children\":[{\"text\":\"void TMGTestScene::OnEvent(ITMG_MAIN_EVENT_TYPE eventType,const char* data){\"}],\"type\":\"code-line\"},{\"id\":\"CONkEq_JZdIK11J2M1fQk\",\"children\":[{\"text\":\" switch (eventType) {\"}],\"type\":\"code-line\"},{\"id\":\"mWDPn4ts7lvCgiboqw-9J\",\"children\":[{\"text\":\" case ITMG_MAIN_EVENT_TYPE_ENTER_ROOM:\"}],\"type\":\"code-line\"},{\"id\":\"Lt9aPICIhk62OBMFMCOrN\",\"children\":[{\"text\":\" {\"}],\"type\":\"code-line\"},{\"id\":\"WkIMSY2GAxQSHzvsUvWRX\",\"children\":[{\"text\":\" // Process\"}],\"type\":\"code-line\"},{\"id\":\"b60w0L5kpCDwT--hGVdBF\",\"children\":[{\"text\":\" break;\"}],\"type\":\"code-line\"},{\"id\":\"xg63zMjQ97yYpbEAG4o53\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"ZJ0fCHtyAq3Qz7Ziih3AW\",\"children\":[{\"text\":\" ...\"}],\"type\":\"code-line\"},{\"id\":\"peRtOtX4K-eAd0T5Jn5MA\",\"children\":[{\"text\":\" case ITMG_MAIN_EVNET_TYPE_PTT_RECORD_COMPLETE:\"}],\"type\":\"code-line\"},{\"id\":\"7dyrkGxseykb6AfVccAXv\",\"children\":[{\"text\":\" {\"}],\"type\":\"code-line\"},{\"id\":\"p3u6QnavI7cZdvabHxafj\",\"children\":[{\"text\":\" // Process\"}],\"type\":\"code-line\"},{\"id\":\"oMP92kuGOF56SFrUrV2Bc\",\"children\":[{\"text\":\" break;\"}],\"type\":\"code-line\"},{\"id\":\"t1Ih1KOazafAg9zZMuHre\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"_0nmRsBNjnSX5I722J3pf\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"u3K8T-IZlFlvK445kxOfC\",\"children\":[{\"text\":\"}\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"gJIqhkIMMIWZGRU-Akean\",\"children\":[{\"text\":\"Pausing recording\"}],\"nodeId\":\"pausing-recording\",\"type\":\"h3\"},{\"id\":\"dI-JY8rMq9RWA_l1lgff0\",\"children\":[{\"text\":\"This API is used to pause recording. If you want to resume recording, please call the \"},{\"code\":1,\"text\":\"ResumeRecording\"},{\"text\":\" API.\"}],\"type\":\"p\"},{\"id\":\"K3QlM6mWZTEpWQ1lwtpzL\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype12\",\"type\":\"h4\"},{\"id\":\"8wKDt5U_TPHPiytc4JFfE\",\"children\":[{\"id\":\"M7eb9HgXKvHz6Qig1g_fG\",\"children\":[{\"text\":\"ITMGPTT virtual int PauseRecording()\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"G1sRjef4qkZ--9w3_oeE_\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code11\",\"type\":\"h4\"},{\"id\":\"DInQmdXjb00NL-nQn81e7\",\"children\":[{\"id\":\"f5c6To-bqAkPpc46WUaPs\",\"children\":[{\"text\":\"ITMGContextGetInstance()->GetPTT()->PauseRecording();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"qKzxZgqaRZQDO70NK5O62\",\"children\":[{\"text\":\"Resuming recording\"}],\"nodeId\":\"resuming-recording\",\"type\":\"h3\"},{\"id\":\"JLWaeJE-VmKEAzn7q9Vzf\",\"children\":[{\"text\":\"This API is used to resume recording.\"}],\"type\":\"p\"},{\"id\":\"qT-b-YEnUNB_-A6XOYzsD\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype13\",\"type\":\"h4\"},{\"id\":\"Ls4k7gHA4qpE8fBeeAouJ\",\"children\":[{\"id\":\"iVmcgWg3CQN3JZDQLlH6Y\",\"children\":[{\"text\":\"ITMGPTT virtual int ResumeRecording()\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"3aqOHA8WUiTKCzlssP6sN\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code12\",\"type\":\"h4\"},{\"id\":\"9Ovl7uc_VhhoyzPxy7qjU\",\"children\":[{\"id\":\"DWFVfTx6e2NfuFBJigwRP\",\"children\":[{\"text\":\"ITMGContextGetInstance()->GetPTT()->ResumeRecording();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"keSnw2l6JS-T9BQ_IkUgK\",\"children\":[{\"text\":\"Canceling recording\"}],\"nodeId\":\"canceling-recording\",\"type\":\"h3\"},{\"id\":\"2ghmnUGEJsGXXHp6W594F\",\"children\":[{\"text\":\"This API is used to cancel recording. \"},{\"b\":1,\"text\":\"There is no callback after cancellation\"},{\"text\":\".\"}],\"type\":\"p\"},{\"id\":\"p8JzQszCshlD6DQ4QS4p1\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype14\",\"type\":\"h4\"},{\"id\":\"o3KSOJ0dz5RwUAJ1gsZgW\",\"children\":[{\"id\":\"iUiJgGsKFvzv_CC-GQxto\",\"children\":[{\"text\":\"ITMGPTT virtual int CancelRecording()\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"33-Pa1_LpKrZZFEqjpXRr\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code13\",\"type\":\"h4\"},{\"id\":\"SBkXAI5OimqnuuqclMIQG\",\"children\":[{\"id\":\"5NaK7JQOB_ytGYFOvXiR0\",\"children\":[{\"text\":\"ITMGContextGetInstance()->GetPTT()->CancelRecording();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"sxFK5e9favATu2vkCwFBW\",\"children\":[{\"text\":\"Voice Message Upload, Download, and Playback\"}],\"nodeId\":\"voice-message-upload.2C-download.2C-and-playback\",\"type\":\"h2\"},{\"id\":\"7dZqxf2FR3xeeG_a7eUZu\",\"children\":[{\"id\":\"9-0wA79uDA8ad81Cx08Mr\",\"children\":[{\"id\":\"5WSMGT3b3uNANwicJUDV_\",\"children\":[{\"id\":\"ZVMdLqtLTSixclwO0hR7P\",\"children\":[{\"text\":\"API\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"WqnY6T3sDThzQMhfABCq2\",\"children\":[{\"id\":\"Ddwsagb3sj1PVspXAq_oA\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"ThV-0TUNTEfSyy_ojP62-\",\"children\":[{\"id\":\"i17nQCmPDloGWuVTEtNA4\",\"children\":[{\"id\":\"IfWOoWPiCcKtProfAYYwC\",\"children\":[{\"id\":\"yN5zWh4bXfvnn-yOj8oO1\",\"children\":[{\"text\":\"UploadRecordedFile\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"v5q6cKj07m5tMsM1Jsa3_\",\"children\":[{\"id\":\"O-tnSYDVZ1PR6hyQxBV8V\",\"children\":[{\"id\":\"BWyzRNSH7NorKtHZjPv4F\",\"children\":[{\"text\":\"Uploads the audio file\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"MFCGf7YLF_Gsn1S25hSIw\",\"children\":[{\"id\":\"5w3zpI977xIg7Q06HW8v8\",\"children\":[{\"id\":\"x42nqSlDV0NG0ocsiLR0I\",\"children\":[{\"id\":\"5D1QHrjwJ25mQemiKPCb1\",\"children\":[{\"text\":\"DownloadRecordedFile\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"J-EUXkyF90sQsxaK_Wv2O\",\"children\":[{\"id\":\"kZUHaT-ydD4-ZYvh-nbj5\",\"children\":[{\"id\":\"VGmUFMuHLTrMisKFgIQ-_\",\"children\":[{\"text\":\"Downloads the audio file\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"VUqC8ggnqjOsK9l83avR-\",\"children\":[{\"id\":\"erXG9Z3Jya_NGfLkIA_DG\",\"children\":[{\"id\":\"-cpDOiffhE-OeDgtSyQGb\",\"children\":[{\"id\":\"D0CaMrvsZjJwhEmLdE6v8\",\"children\":[{\"text\":\"PlayRecordedFile\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"W50wqNtnYB0jsV1LSTzWc\",\"children\":[{\"id\":\"7UE2_ULmT2bFScdER4w7v\",\"children\":[{\"id\":\"oylosNf-Vd5o2sQAKtCzo\",\"children\":[{\"text\":\"Plays back the audio file\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"Y0HXLiYAIj6AQBzO71g9C\",\"children\":[{\"id\":\"DDATeKoO6YQLVskA-sNqd\",\"children\":[{\"id\":\"zkhI0amXMo2KE33nl5fPL\",\"children\":[{\"id\":\"O0W4yS457NizUozljHjWK\",\"children\":[{\"text\":\"StopPlayFile\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"gDjxnpJ9IWk6HsntRvLT7\",\"children\":[{\"id\":\"PJg1IRuJLIvx-gEqQ6FQ3\",\"children\":[{\"id\":\"XrBPqOactqZYT_X49jz8V\",\"children\":[{\"text\":\"Stops playing back the audio file\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"OI-_3FQDz7XeExl2f3Dji\",\"children\":[{\"id\":\"1frqDqmmAh9ao_KcNemx2\",\"children\":[{\"id\":\"62GttVXb1VoAljg_FY0aP\",\"children\":[{\"id\":\"3b2g8JF_WhrGMIB8iq1GQ\",\"children\":[{\"text\":\"GetFileSize\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"QLa3VOSmRRKPJQqbErSi8\",\"children\":[{\"id\":\"KWP8zdNzVl3-uqOmCTMRe\",\"children\":[{\"id\":\"7Wf9h8fMDV9ggVWMJI-Mx\",\"children\":[{\"text\":\"Gets audio file size\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"Cj6sw1CAmKIfcSHDl3myd\",\"children\":[{\"id\":\"Vg-MYxGJjdzd4ftQQX5bq\",\"children\":[{\"id\":\"Gko_GAWAhw7GgzmUFGhSk\",\"children\":[{\"id\":\"pWzWU-OeizGXzoIFPBlcN\",\"children\":[{\"text\":\"GetVoiceFileDuration\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"lMB2digdlyD8gTxGstEqC\",\"children\":[{\"id\":\"kiwhlGGDUwFjjkhIAZT0u\",\"children\":[{\"id\":\"Oa7CX0i-t6QV2TygyGhgu\",\"children\":[{\"text\":\"Gets the audio file duration\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[43,57],\"widthMode\":\"percentage\"},{\"id\":\"3xzo1KE9cRxfWvpMt5D9C\",\"children\":[{\"text\":\"Uploading an audio file\"}],\"nodeId\":\"uploading-an-audio-file\",\"type\":\"h3\"},{\"id\":\"f4TwYnUjTsHQE6digwnsl\",\"children\":[{\"text\":\"This API is used to upload an audio file.\"}],\"type\":\"p\"},{\"id\":\"hP3lsR2KtOFS8xi_yMXTc\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype15\",\"type\":\"h4\"},{\"id\":\"uiQsJhYUVKdh1HpHOJ9Zm\",\"children\":[{\"id\":\"sEYE0GZKclklS4J2fDxVJ\",\"children\":[{\"text\":\"ITMGPTT virtual int UploadRecordedFile(const char* filePath)\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"ukKOzyvxgJVf1g0DtqKHn\",\"children\":[{\"id\":\"_pcoVEx1AP-kxPUZDFSIj\",\"children\":[{\"id\":\"sejd3QWm8qyk-YzEmpH_n\",\"children\":[{\"id\":\"wgt1ALKrqUGRT67o8WQi-\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"BuMKoLuAo1GsLLhzrlHeA\",\"children\":[{\"id\":\"Hj4YF1i058eDF4CdDr2PI\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"tLNENy7zY10s9S5oPUHP3\",\"children\":[{\"id\":\"ql71T_CCWhbEQ34ggy4Jw\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"uWoxcyDhtiO7qRUpHpnnC\",\"children\":[{\"id\":\"VP7tyopkJp6s7KilCwqUo\",\"children\":[{\"id\":\"YnKJFvFUVofdt7d6kaoBy\",\"children\":[{\"id\":\"x44IQ2MswKZ7q2M5Qb7gR\",\"children\":[{\"text\":\"filePath\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"mSMGOsuzFFf-l7Si19EQF\",\"children\":[{\"id\":\"Yr6YkIhWl3FvIJL0U9hJr\",\"children\":[{\"id\":\"TDThkiYMO9qMmksnafe_b\",\"children\":[{\"text\":\"const char*\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"WW8_6fjFub7wHgzBGMUN2\",\"children\":[{\"id\":\"Z6ggXbcQ_rMeyqGJAaprW\",\"children\":[{\"id\":\"MUBTAS-f34GAzUbloDcOp\",\"children\":[{\"text\":\"Path of uploaded audio file, which is a local path\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\"},{\"id\":\"rRZTxELrQMeASkkuxh7Eu\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code14\",\"type\":\"h4\"},{\"id\":\"qXhmqzPB8gihNnruhnUO5\",\"children\":[{\"id\":\"-p1beK-i_WbU2-bxn3ACe\",\"children\":[{\"text\":\"ITMGContextGetInstance()->GetPTT()->UploadRecordedFile(filePath);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"EB8QXrTffUGaI5S5MsRT4\",\"children\":[{\"text\":\"Callback for audio file upload completion\"}],\"nodeId\":\"callback-for-audio-file-upload-completion\",\"type\":\"h3\"},{\"id\":\"xDXJLcSU6rP4h1Lhfm2As\",\"children\":[{\"text\":\"After the audio file is uploaded, the event message \"},{\"code\":1,\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_UPLOAD_COMPLETE\"},{\"text\":\" will be returned, which will be identified in the \"},{\"code\":1,\"text\":\"OnEvent\"},{\"text\":\" function.\\nThe passed parameters include \"},{\"code\":1,\"text\":\"result\"},{\"text\":\", \"},{\"code\":1,\"text\":\"file_path\"},{\"text\":\", and \"},{\"code\":1,\"text\":\"file_id\"},{\"text\":\".\"}],\"type\":\"p\"},{\"id\":\"49ViRsB8Nous04kMTToP_\",\"children\":[{\"id\":\"MzrNwEbLKaue4TDz6de-f\",\"children\":[{\"id\":\"WWwtiRmuqQTb5C_P7bSug\",\"children\":[{\"id\":\"NejkaYy9-w3NPiM_Ppkh1\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"8Ib2YcAuuyIpVOvw_eBj0\",\"children\":[{\"id\":\"vxG6cYD_cnQkrX3wr-lEA\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"2-cLLH_kYPq5IObR9wbsw\",\"children\":[{\"id\":\"SWDUiA2-pKNMVQIsHv7Z5\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"siCAm1KyHjkuBE7sqJS_E\",\"children\":[{\"id\":\"knR5biBDT4ZQqtBx3NedO\",\"children\":[{\"id\":\"nsNA2nTJx55RxNJQl8xmQ\",\"children\":[{\"id\":\"1_vExRepnjfgo0glN_FHR\",\"children\":[{\"text\":\"result\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"aSKZWrdEMbLtShP65YVtI\",\"children\":[{\"id\":\"yMl_RUiSW41P0wvxMnXuG\",\"children\":[{\"id\":\"zAoAzWTTCbQkR-sdhRq9z\",\"children\":[{\"text\":\"int32\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"XHabor8lDJ2uiebwouiu5\",\"children\":[{\"id\":\"iCDX3V5Z-RtPshpZ15L-U\",\"children\":[{\"id\":\"EBCnYSMvthi7R3xNI4cWs\",\"children\":[{\"text\":\"0: recording is completed\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"Z97d6JYbuKSrZOrBc4BEr\",\"children\":[{\"id\":\"Var3zEy_XtMPN-SzanGoF\",\"children\":[{\"id\":\"gv0kpqcH--mglhDaMf3fT\",\"children\":[{\"id\":\"KtMDUNarNtC4emmQPkfxB\",\"children\":[{\"text\":\"filepath\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"rMCNcLdSyUoNOu90XrA8w\",\"children\":[{\"id\":\"Y4TLTxmgrgnZWlSSWxD3B\",\"children\":[{\"id\":\"fsyoRL3SRQdsRFNrHbfFN\",\"children\":[{\"text\":\"FString\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"N6oeQUhxXo6JRDUGgxYHl\",\"children\":[{\"id\":\"0u3d8C1ntcEyy8IOZ-5Wk\",\"children\":[{\"id\":\"H6lFiFejL-I2N9e_xErjW\",\"children\":[{\"text\":\"Path of stored recording file\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"8SlQjPxWmNgeBIGiC9kbK\",\"children\":[{\"id\":\"wEwfnxhLnBCFWwd0gt93X\",\"children\":[{\"id\":\"MjzPPjR0zvwbpMm0oPZOV\",\"children\":[{\"id\":\"mrgOs-_Y_Wjxmi61yOjI_\",\"children\":[{\"text\":\"fileid\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"4zbjXxVFPeyAk0yi77qdS\",\"children\":[{\"id\":\"RV_Bd3p3o_ttmYIhaK8g2\",\"children\":[{\"id\":\"CAYsh4Dui3hiEc4RwUw0g\",\"children\":[{\"text\":\"FString\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"WQYCcwlCHVJznAGbxwiWb\",\"children\":[{\"id\":\"uK0Z6kP5dFKKmTL8YU9l2\",\"children\":[{\"id\":\"ODQ29bhQffiitseJwhe7X\",\"children\":[{\"text\":\"File URL path\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[25,20,55],\"widthMode\":\"percentage\"},{\"id\":\"168XQ1gp3LKZyiiAte1OW\",\"children\":[{\"text\":\"Error codes\"}],\"nodeId\":\"error-codes3\",\"type\":\"h4\"},{\"id\":\"1y-LVLfTDPCKri0SUKvGH\",\"children\":[{\"id\":\"Pyd3b5_mDiQjBoK3bod6p\",\"children\":[{\"id\":\"7SJ7TIDS9_FAcNskSsSdO\",\"children\":[{\"id\":\"BhPpEwxZ_7NDZXU59EVdn\",\"children\":[{\"text\":\"Error Code Value\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"uUzckVdt70wXp6jFS50_s\",\"children\":[{\"id\":\"C7roei0ecMaba9EP0ELsU\",\"children\":[{\"text\":\"Cause\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"XWMBAehCe9E3zXpz028h8\",\"children\":[{\"id\":\"zYEqCvMqlHEcLxiFii25G\",\"children\":[{\"text\":\"Suggested Solution\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"vUM2YBstdWFbX2YQ1wltk\",\"children\":[{\"id\":\"GwfcPYk71BQnNIiG9DT1H\",\"children\":[{\"id\":\"m84qtjU7UmB_gZLMYWx5g\",\"children\":[{\"id\":\"KRNRFMNUR1zGEZhjywoWy\",\"children\":[{\"text\":\"8193\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Z4oK4J93xzS6prwSyYPJh\",\"children\":[{\"id\":\"Tkw2HbqQEIlUmnojYOsWN\",\"children\":[{\"id\":\"zz8zqL9UuQbNGpnRUa6jy\",\"children\":[{\"text\":\"An error occurred while accessing the file during upload.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"U8ox9mNtj9AFcWm0DCmZo\",\"children\":[{\"id\":\"R_-B18t4cPYIOm9cRJjZX\",\"children\":[{\"id\":\"8jfT_91r1A_6dHt1iG6K6\",\"children\":[{\"text\":\"Ensure the existence of the file and the validity of the file path.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"VGvKLfJcOPLCBBvpl9dBP\",\"children\":[{\"id\":\"4hu16wmTr6i685fqqGgLK\",\"children\":[{\"id\":\"YbXhOdediLmu1I-TfitSg\",\"children\":[{\"id\":\"PTUkTyMrSSBhZzfDyDOUI\",\"children\":[{\"text\":\"8194\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"_epq0peqbVsk7m2DzXZgi\",\"children\":[{\"id\":\"lxUrxN19it82KPF31xWyC\",\"children\":[{\"id\":\"cGvhaGOGsYrTjkLrHPyrK\",\"children\":[{\"text\":\"Signature verification failed.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"22tQAOU2jERXuLvFh5y7K\",\"children\":[{\"id\":\"Ro2gmIWqiWVWPUXHlSO4w\",\"children\":[{\"id\":\"z4F-uXAlkdfcKRtGNKa6z\",\"children\":[{\"text\":\"Check whether the authentication key is correct and whether the voice message and speech-to-text feature is initialized.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"1bYiGJLHXYfk4L0HcqtVM\",\"children\":[{\"id\":\"RyaBoijY_NQC1yCLi49Mn\",\"children\":[{\"id\":\"xeagdpZkwYIb9-Q__56wp\",\"children\":[{\"id\":\"AZBhkBeYc-jLfBdUB4t9F\",\"children\":[{\"text\":\"8195\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Z8lWtcjpaPjLGiBcwXuEZ\",\"children\":[{\"id\":\"8uRxGzJiURH6nUBiQRmfi\",\"children\":[{\"id\":\"GVkji04oPKZg12KuAbvdx\",\"children\":[{\"text\":\"A network error occurred.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"-5I9IPtD1S8rIWXtWzDwv\",\"children\":[{\"id\":\"1hYFEyZe980G2IsYXTTHZ\",\"children\":[{\"id\":\"Upqd0r77I2oH8RYTOSUvH\",\"children\":[{\"text\":\"Check whether the device can access the internet.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"jezV3iy0foF2I7XAkEEqY\",\"children\":[{\"id\":\"hayyxJYduuytCAdZh44z9\",\"children\":[{\"id\":\"YpRQVPikIDoyPkKJn9JoD\",\"children\":[{\"id\":\"d3DrF3ZK-cDobzBie9Ds7\",\"children\":[{\"text\":\"8196\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"fqfUwr9OfVty9xkYtYycf\",\"children\":[{\"id\":\"RmBpzI6gAG7Y9KSnrrzpV\",\"children\":[{\"id\":\"ZzlygKUs_Z2r7R6sTIAZi\",\"children\":[{\"text\":\"The network failed while getting the upload parameters.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"TA655QRWytNkGnfyce0N4\",\"children\":[{\"id\":\"FK8ssFaFFwpGBbdoBYuDz\",\"children\":[{\"id\":\"teLtrCeaVnitc7s8w5YVe\",\"children\":[{\"text\":\"Check whether the authentication is correct and whether the device can access the internet.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"4C5Awrq6m3rlwOqqlc_Nl\",\"children\":[{\"id\":\"TAVWaDafVMJ_u6m3QGxwN\",\"children\":[{\"id\":\"LCW45tdx1ucCX9-dmcII_\",\"children\":[{\"id\":\"ABfu73n3-z-RipMuCLN52\",\"children\":[{\"text\":\"8197\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"zW9p2qMkhELYLsj3aElFQ\",\"children\":[{\"id\":\"ifjJYy-X5tSOUSPe5QJwl\",\"children\":[{\"id\":\"ZonLkPwGwBkAjjUgyZ5F4\",\"children\":[{\"text\":\"The packet returned during the process of getting the upload parameters is empty.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"UJZsZPXzyM-ZkH_C5_yFK\",\"children\":[{\"id\":\"i_4EUS5Rp1-rHugyhJDb5\",\"children\":[{\"id\":\"KRuW4OvmD9uDSeAIh6KlB\",\"children\":[{\"text\":\"Check whether the authentication is correct and whether the device network can normally access the internet.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"j13kEccF1HbksxkfIjmn_\",\"children\":[{\"id\":\"1qpmjEmtQlJMSvhsY8wUB\",\"children\":[{\"id\":\"PFyS9oQocG12ul_EWj5dC\",\"children\":[{\"id\":\"w4Q0oTPWYH2bVFY_zshTC\",\"children\":[{\"text\":\"8198\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"19GdRR5Nn9YkJFze_yV5M\",\"children\":[{\"id\":\"_YWNl3k4jMS6LRgpMdac0\",\"children\":[{\"id\":\"jVTdIkfBH6NYrInIwluXf\",\"children\":[{\"text\":\"Failed to decode the packet returned during the process of getting the upload parameters.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"9an__utmL2ojgXDalCeNJ\",\"children\":[{\"id\":\"S244uoQwvjPrWde2bdGQj\",\"children\":[{\"id\":\"uT75M_rwiIWMPAYyol6l_\",\"children\":[{\"text\":\"Check whether the authentication is correct and whether the device can access the internet.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"EKpVQCyT31CBVOF-qGosl\",\"children\":[{\"id\":\"tsyBYixALcFFABRcLVAyu\",\"children\":[{\"id\":\"h488nOzoPhZuXSV0_BNS1\",\"children\":[{\"id\":\"GcDUaeQSMqtp-SO0FEXtB\",\"children\":[{\"text\":\"8200\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"M4dRly8iY9CUKMxQb4hRs\",\"children\":[{\"id\":\"UBxtx_ybcpIBvJOIUZghx\",\"children\":[{\"id\":\"mnLkf8XBbuHjQ2S-sa-hR\",\"children\":[{\"text\":\"No \"},{\"code\":1,\"text\":\"appinfo\"},{\"text\":\" is set.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"XEOx3yh9xLLINe7vYJJOy\",\"children\":[{\"id\":\"NJ2T1ul0kjz4k5984Fjga\",\"children\":[{\"id\":\"3O2TI3RJqmkFdU1klyjTK\",\"children\":[{\"text\":\"Check whether the \"},{\"code\":1,\"text\":\"apply\"},{\"text\":\" API is called or whether the input parameters are empty.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[16,34,50],\"widthMode\":\"percentage\"},{\"id\":\"oNg-pW_AsCPE5WUD3zxSk\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code15\",\"type\":\"h4\"},{\"id\":\"DGYONwAhLrTzq_JfHl-x1\",\"children\":[{\"id\":\"id5PRt6Y1oqj4RdUrQd0g\",\"children\":[{\"text\":\"void TMGTestScene::OnEvent(ITMG_MAIN_EVENT_TYPE eventType,const char* data){\"}],\"type\":\"code-line\"},{\"id\":\"o3f3RJhiyxfgCwSL9Ky38\",\"children\":[{\"text\":\" switch (eventType) {\"}],\"type\":\"code-line\"},{\"id\":\"cRHFsvqMp6VHCCerthlGw\",\"children\":[{\"text\":\" case ITMG_MAIN_EVENT_TYPE_ENTER_ROOM:\"}],\"type\":\"code-line\"},{\"id\":\"J3YNMImT5NnimIwoA0o6d\",\"children\":[{\"text\":\" {\"}],\"type\":\"code-line\"},{\"id\":\"2uleVCqeOEDocpOhpawRb\",\"children\":[{\"text\":\" // Process\"}],\"type\":\"code-line\"},{\"id\":\"4FN_aWCN0Jvb3a5slZ9ex\",\"children\":[{\"text\":\" break;\"}],\"type\":\"code-line\"},{\"id\":\"s6v1A3xXtjtXqlkYnYKFM\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"-2agoBHf36K_6creW2sR2\",\"children\":[{\"text\":\" ...\"}],\"type\":\"code-line\"},{\"id\":\"lbSS7TcJp8lgsN8_5Xqhj\",\"children\":[{\"text\":\" case ITMG_MAIN_EVNET_TYPE_PTT_UPLOAD_COMPLETE:\"}],\"type\":\"code-line\"},{\"id\":\"_RKiwWBPJ8rJ-Dp3ckYbO\",\"children\":[{\"text\":\" {\"}],\"type\":\"code-line\"},{\"id\":\"N3Vhnoe7eOLfuH23ONtAG\",\"children\":[{\"text\":\" // Process\"}],\"type\":\"code-line\"},{\"id\":\"LuS0oMnymc7sTPkSZSUMJ\",\"children\":[{\"text\":\" break;\"}],\"type\":\"code-line\"},{\"id\":\"6C5oQXxjOUoG9JeSdv5Bk\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"xhr4Q4TqlIctPeFgeGeRn\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"ZNHXy9iWQp2oXyX6uS1e9\",\"children\":[{\"text\":\"}\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"cW1WNuPHVZloVQZ59XQ7m\",\"children\":[{\"text\":\"Downloading the audio file\"}],\"nodeId\":\"downloading-the-audio-file\",\"type\":\"h3\"},{\"id\":\"X5DvLTwwkaA273tBxeLgw\",\"children\":[{\"text\":\"This API is used to download an audio file.\"}],\"type\":\"p\"},{\"id\":\"eYCYgadls8Wuj-X_bR_Q0\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype16\",\"type\":\"h4\"},{\"id\":\"skY2WuVQb2bka73Sby8_3\",\"children\":[{\"id\":\"Oxt6r5JSf3-PXnZuR2UrP\",\"children\":[{\"text\":\"ITMGPTT virtual int DownloadRecordedFile(const char* fileId, const char* filePath) \"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"N2yX7hywPmmDDls0s4iPC\",\"children\":[{\"id\":\"T91voNl0GzSJkHaFUyyeb\",\"children\":[{\"id\":\"EKQ_BwYjS3x2CVe5hyhOp\",\"children\":[{\"id\":\"a1x4Ajdt4WarB7gzJMClO\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"pslSbFx_jkjlIeY9TKyzh\",\"children\":[{\"id\":\"vv9Pcz9Qls9Wr-nEa_ppi\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Gy6a841oihCWnDYUWnQxh\",\"children\":[{\"id\":\"qY_USP6TvRG1T8GUmWBHW\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"E-AIC8wMN-Bf0mqMgJ9RP\",\"children\":[{\"id\":\"yzHaTu8l-lE8nfIAA6jdy\",\"children\":[{\"id\":\"MTtRsZsIUYMjawaYO0GOE\",\"children\":[{\"id\":\"zOIZ0qNo3ID_OycMJszmV\",\"children\":[{\"text\":\"fileId\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"aAYFvE9rb_STFM1f6VE0_\",\"children\":[{\"id\":\"8mHNEeG8zVm0iJc3prng3\",\"children\":[{\"id\":\"m_pPQD0qtITiyTAMOuNIX\",\"children\":[{\"text\":\"const char*\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ak_4euIiTArLyWNQzx8Ky\",\"children\":[{\"id\":\"yVG1mJ2NHR3cDQRnAfmmE\",\"children\":[{\"id\":\"I_ywStxEaK0KMFE1ZaMbI\",\"children\":[{\"text\":\"URL path of file\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"0P20XmRkh620rd5zk_t7Y\",\"children\":[{\"id\":\"AERO0rizlo-IAATZu-dpj\",\"children\":[{\"id\":\"aYsHtmH43K9zkp0I4Vbyh\",\"children\":[{\"id\":\"fjcVL7MpyOdk2kePTSQ1z\",\"children\":[{\"text\":\"filePath\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"UUFpCDNPg_gCci_EFrOaA\",\"children\":[{\"id\":\"_xeXj5xnOtWRvgtwW8Og4\",\"children\":[{\"id\":\"sh2E5HPr-uLFyZKAtdw2K\",\"children\":[{\"text\":\"const char*\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"qkESSVmjJSpj6xFVcaVQc\",\"children\":[{\"id\":\"QSmmDkzvN207aEybhZDOf\",\"children\":[{\"id\":\"Heu5isJADR7TS1L_8-Ihi\",\"children\":[{\"text\":\"Local path of saved file\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[25,27,48],\"widthMode\":\"percentage\"},{\"id\":\"QXrgEarm8H0m87-Ai4P31\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code16\",\"type\":\"h4\"},{\"id\":\"4c5KZT16x8myD6C-qy9hn\",\"children\":[{\"id\":\"Jwwfe1bcvhCAZNO3lPcO4\",\"children\":[{\"text\":\"ITMGContextGetInstance()->GetPTT()->DownloadRecordedFile(fileID,filePath);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"umSEOaHfJItrPArGLryWJ\",\"children\":[{\"text\":\"Callback for audio file download completion\"}],\"nodeId\":\"callback-for-audio-file-download-completion\",\"type\":\"h3\"},{\"id\":\"jBWfHsUtB42_J1moMoNiJ\",\"children\":[{\"text\":\"After the audio file is downloaded, the event message \"},{\"code\":1,\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_DOWNLOAD_COMPLETE\"},{\"text\":\" will be returned, which will be identified in the \"},{\"code\":1,\"text\":\"OnEvent\"},{\"text\":\" function.\\nThe passed parameters include \"},{\"code\":1,\"text\":\"result\"},{\"text\":\", \"},{\"code\":1,\"text\":\"file_path\"},{\"text\":\", and \"},{\"code\":1,\"text\":\"file_id\"},{\"text\":\".\"}],\"type\":\"p\"},{\"id\":\"mGAH-ALJ5cgcqR_ZqCIPl\",\"children\":[{\"id\":\"HRZV9LZjGi8d8dh3Ta9--\",\"children\":[{\"id\":\"uMkQIYjUdCHM8bGRLgegf\",\"children\":[{\"id\":\"gocG_YZgAX_2AcpKjlzgV\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"n_ls-9hU1ylPHGTW3HJzM\",\"children\":[{\"id\":\"AWk42cbL2FzZ_xZogUdfu\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"OzU2QvZ9gzYwOIxN6d02W\",\"children\":[{\"id\":\"azRjjUBBzKWvZY-kjCqL5\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"Dl4_DxYNcAa_iilMmROZ3\",\"children\":[{\"id\":\"LaJKFnXvibUh0aPkmCyMn\",\"children\":[{\"id\":\"6x4IqmCuBaZ4GQKiD4cnx\",\"children\":[{\"id\":\"Rr3WX1LM-AW5YqhInMyrF\",\"children\":[{\"text\":\"result\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"1ZwhM69CAqtuurhzVwteF\",\"children\":[{\"id\":\"TIiv3RXUhpxVyU56vr9oO\",\"children\":[{\"id\":\"JfmCxKb1EKrLtBDfzuOX7\",\"children\":[{\"text\":\"int32\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"CS2ZsPBFF_1dkTqbQbrMN\",\"children\":[{\"id\":\"9IfVEIERQd_GHMEx7E-wh\",\"children\":[{\"id\":\"1AQcPs6gfcKX5COIGXGlO\",\"children\":[{\"text\":\"0: recording is completed\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"Q9dSf4B_VWm-BSP7YgnLO\",\"children\":[{\"id\":\"TzZf83xdWZnGN0Ev4kxBE\",\"children\":[{\"id\":\"bf0OKjURcQHCL3EOgSLgZ\",\"children\":[{\"id\":\"c3cSAAL6lWo0S6vjCJX-D\",\"children\":[{\"text\":\"filepath\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"McOr2rH04STYexJfLJFgo\",\"children\":[{\"id\":\"ftrJacIH55wmQAe7qnIbg\",\"children\":[{\"id\":\"QP_xfZsf_Y7WnnKskzHbu\",\"children\":[{\"text\":\"FString\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"FXVc42jjhZmuM_5tOw4jZ\",\"children\":[{\"id\":\"XrwRKAZK29pzvQF2wX1QU\",\"children\":[{\"id\":\"G0JTkbbfU9_QLvAP5DosE\",\"children\":[{\"text\":\"Path of stored recording file\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"eJldeznHbn1tlmQhg7kRj\",\"children\":[{\"id\":\"uKAFAjl9JUND7OZ-ZdxcI\",\"children\":[{\"id\":\"7Xha-beEVqP02wfNK1wJi\",\"children\":[{\"id\":\"dBf9YFKRZj_XcaJh4VOmb\",\"children\":[{\"text\":\"fileid\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"astVImI-rWeU_9tJwAIHF\",\"children\":[{\"id\":\"s1QjeRMcDYuRm-IJeu_em\",\"children\":[{\"id\":\"9PQC5ZpXVkXuf7rjf8wI9\",\"children\":[{\"text\":\"FString\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"KWACQGEwIAmoY7YZDzbZk\",\"children\":[{\"id\":\"b4XoqakDq4AqwGNYz_4u7\",\"children\":[{\"id\":\"at4pX0ZISEYrsS-2ki_-k\",\"children\":[{\"text\":\"URL path of file, which will be retained on the server for 90 days\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[16,12,72],\"widthMode\":\"percentage\"},{\"id\":\"sYu2Pipi_Qk3N04m99-0H\",\"children\":[{\"text\":\"Error codes\"}],\"nodeId\":\"error-codes4\",\"type\":\"h4\"},{\"id\":\"AsGjK_LAkXPcQgCnkGbXm\",\"children\":[{\"id\":\"3mY7t3cZ170TQ5mpGlnvH\",\"children\":[{\"id\":\"UmiLHrjq6KOQYscAoqh02\",\"children\":[{\"id\":\"Xan6nmFleSPcGrWkO5JXn\",\"children\":[{\"text\":\"Error Code Value\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"cu6ciW9O6xGA6nPPHyGhV\",\"children\":[{\"id\":\"DlIeD2pmwBJnZtwwwMdHg\",\"children\":[{\"text\":\"Cause\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"EStkY32ySKp3pwF_GeNNW\",\"children\":[{\"id\":\"PLjvxga5Uu60dubNCgnqF\",\"children\":[{\"text\":\"Suggested Solution\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"NMSPeKgH9mmoNQ1P0ueX6\",\"children\":[{\"id\":\"000coa2OStTD4RVSMVbpo\",\"children\":[{\"id\":\"PDpug14txHWNdzislHHx4\",\"children\":[{\"id\":\"cggewrV3pBEheC7PcLobB\",\"children\":[{\"text\":\"12289\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"vhSuRNKy2P2dZusMTZ2M3\",\"children\":[{\"id\":\"-MRt0OC8_eXoddFO8ufFT\",\"children\":[{\"id\":\"D0l_lHImYfJsJgw3F4HVq\",\"children\":[{\"text\":\"An error occurred while accessing the file during download.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"PnvX0H9xElj2PLvAhGvhR\",\"children\":[{\"id\":\"Jj90rwCQFBrCfR3cu0E14\",\"children\":[{\"id\":\"3NOkPvj7wBIqzmOVPQpxz\",\"children\":[{\"text\":\"Check whether the file path is valid.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"2Jb9Z7qH5UicUYxL5JT7g\",\"children\":[{\"id\":\"i_o7X6Eecs02oCGAqk6Rr\",\"children\":[{\"id\":\"TtMEIhZCEWlui003FVZI6\",\"children\":[{\"id\":\"7RxcR-GayfJ7dF6hxzqpm\",\"children\":[{\"text\":\"12290\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ro_FluPoFIu6oVpQULmH8\",\"children\":[{\"id\":\"-k_54lmNBNflj0n8PD4KW\",\"children\":[{\"id\":\"JUMjVjuqnWs6wYqdMQO00\",\"children\":[{\"text\":\"Signature verification failed.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"MTTUtfJ0pBT0wkrE_ffn2\",\"children\":[{\"id\":\"MoByq6sM9j10a8SfbW0T9\",\"children\":[{\"id\":\"ojV2r4mjjtPh9BxVKbUOJ\",\"children\":[{\"text\":\"Check whether the authentication key is correct and whether the voice message and speech-to-text feature is initialized.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"fd7xGO3rC66FEzHt3ZA21\",\"children\":[{\"id\":\"uBRMzzRsx0A50_lGiXhZR\",\"children\":[{\"id\":\"GPkzF8FxFi49hhttI7Yh5\",\"children\":[{\"id\":\"JAl8ACFeoweEIQT0nQznA\",\"children\":[{\"text\":\"12291\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"zRHaiu_U5hmitJK-5YiEY\",\"children\":[{\"id\":\"KKJ1lSA7butMOQSIqrYbS\",\"children\":[{\"id\":\"9CSGPEs9UvbAKj5VJygUm\",\"children\":[{\"text\":\"Network storage system exception.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"P2PLl3vK-bbticJmF7TZA\",\"children\":[{\"id\":\"PaWoKmKoTeBF9lk6rFegB\",\"children\":[{\"id\":\"TRGkbsXkl-abDvpMlamu5\",\"children\":[{\"text\":\"The server failed to get the audio file. Check whether the API parameter \"},{\"code\":1,\"text\":\"fileid\"},{\"text\":\" is correct, whether the network is normal, and whether the file exists in COS.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"ZD9C458ajeqDeOzlaolIh\",\"children\":[{\"id\":\"IdwTtl3EtV5Sle2UpAJhr\",\"children\":[{\"id\":\"SHpVAX8FgeUoLoaIXylCe\",\"children\":[{\"id\":\"MH9Sc39B4cFaaOyLR_1up\",\"children\":[{\"text\":\"12292\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"bmmftKxfMMEb6-JDhIdDd\",\"children\":[{\"id\":\"CimvfwyfLSGSVS4D1W5Z5\",\"children\":[{\"id\":\"TmdGvLDme2kvdgrMUaBMB\",\"children\":[{\"text\":\"Server file system error.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"1T4ywCVcU26Q6brS2HCJg\",\"children\":[{\"id\":\"h_O8wkrkLZYmqgNFNTC7z\",\"children\":[{\"id\":\"gDbrjeHSBal-RxkdSjZj9\",\"children\":[{\"text\":\"Check whether the device can access the internet and whether the file exists on the server.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"EDMjEJRXLMhQlnlExghv7\",\"children\":[{\"id\":\"c-Y2KppofAPB1iwPS7nfH\",\"children\":[{\"id\":\"PLK4N0Cewrf_TTabb8uiP\",\"children\":[{\"id\":\"v3LdlAz11d51bcBfKHS2B\",\"children\":[{\"text\":\"12293\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Zo4Lpx5V2rnmPTkbqIq5U\",\"children\":[{\"id\":\"sRMELQYoh4d2amTxEXTnB\",\"children\":[{\"id\":\"RuPy7Fw4-mMp7B4ces2nR\",\"children\":[{\"text\":\"The HTTP network failed during the process of getting the download parameters.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"5G_yslam2D2_deIIlx-R2\",\"children\":[{\"id\":\"A93A_KYUkH0ReuPgJtDQi\",\"children\":[{\"id\":\"onVkwlbK58D4YI0u1dkX7\",\"children\":[{\"text\":\"Check whether the device can access the internet.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"4TJQPqT720mZhwDW9xpVt\",\"children\":[{\"id\":\"B3k8fgw5PT1_dB-Kmig6d\",\"children\":[{\"id\":\"VcNKNNheolH5212t8FqwY\",\"children\":[{\"id\":\"0RvbQ5nW6wIuKBzBOix7d\",\"children\":[{\"text\":\"12294\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"6qw6WbNgBNFdYN08M_pDH\",\"children\":[{\"id\":\"zoz4fSSf6ceqru4xTUhVn\",\"children\":[{\"id\":\"7as5jXSk_SEYI7mKv71wo\",\"children\":[{\"text\":\"The packet returned during the process of getting the download parameters is empty.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"8CdZwme1VNAMhpMt9RvP5\",\"children\":[{\"id\":\"SLFJs9d-GOAy1hMM1ZX76\",\"children\":[{\"id\":\"lE8mP-5OzRCRjR46a3lO-\",\"children\":[{\"text\":\"Check whether the device can access the internet.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"LEilrWaoHjU4FKn1xg3gQ\",\"children\":[{\"id\":\"IiUOk9n194oPu17kYINge\",\"children\":[{\"id\":\"WjfbXaiHzEqhx7oXohaTk\",\"children\":[{\"id\":\"rEuEYs99KVWH_WUBBDpz6\",\"children\":[{\"text\":\"12295\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"8R2677i1ARKUM3vWLpLrZ\",\"children\":[{\"id\":\"QvYBA3IhTwykhDHif7htR\",\"children\":[{\"id\":\"ma6dhhhTRbsx9wDTKQw6T\",\"children\":[{\"text\":\"Failed to decode the packet returned during the process of getting the download parameters.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"S2-l-5OC6k9XO2yqIBbBi\",\"children\":[{\"id\":\"ptLhQRQ0Qlf4dWaI9LKDs\",\"children\":[{\"id\":\"AYVChsPzMIuufXj-S8tPv\",\"children\":[{\"text\":\"Check whether the device can access the internet.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"F0qI6atXoQhJHyu_P1MTc\",\"children\":[{\"id\":\"y38Pbly-n5616WDia5wnF\",\"children\":[{\"id\":\"VZofGn1rQlzTahmRlhtVf\",\"children\":[{\"id\":\"s8AOxZ_6S4FCPV0yewIxY\",\"children\":[{\"text\":\"12297\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"yqsJWYF89gq9gY64qcw6u\",\"children\":[{\"id\":\"k0YsCrEtmHCUq_qwOFD4u\",\"children\":[{\"id\":\"4Y5Syt8KI04iWg7zbXpx7\",\"children\":[{\"text\":\"No \"},{\"code\":1,\"text\":\"appinfo\"},{\"text\":\" is set.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"JeTO0aGKXfVpVpGTEmpKk\",\"children\":[{\"id\":\"UeZQIgnupUkrNwcKlBePX\",\"children\":[{\"id\":\"6bLxr-Cj0_B0V3r6QxUZp\",\"children\":[{\"text\":\"Check whether the authentication key is correct and whether the voice message and speech-to-text feature is initialized.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[15,42,43],\"widthMode\":\"percentage\"},{\"id\":\"eNtFTMQQvuJJxNyKyH1QL\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code17\",\"type\":\"h4\"},{\"id\":\"WxQg4apqDxPibBZ9-f9Fs\",\"children\":[{\"id\":\"K5iy-ap2qXWGKuw0qQa2n\",\"children\":[{\"text\":\"void TMGTestScene::OnEvent(ITMG_MAIN_EVENT_TYPE eventType,const char* data){\"}],\"type\":\"code-line\"},{\"id\":\"Fo8ZR4BDnEjXhZfXK7pCZ\",\"children\":[{\"text\":\" switch (eventType) {\"}],\"type\":\"code-line\"},{\"id\":\"qF8N7QUa12oJuye-09Iqb\",\"children\":[{\"text\":\" case ITMG_MAIN_EVENT_TYPE_ENTER_ROOM:\"}],\"type\":\"code-line\"},{\"id\":\"WSVbE-Jn5n6bKk_dO0O83\",\"children\":[{\"text\":\" {\"}],\"type\":\"code-line\"},{\"id\":\"Fbxj_QYpu43eYDwBhgwi8\",\"children\":[{\"text\":\" // Process\"}],\"type\":\"code-line\"},{\"id\":\"yHMdPPsMdj8ZpBLKOSpIK\",\"children\":[{\"text\":\" break;\"}],\"type\":\"code-line\"},{\"id\":\"7-wGa0H4iqDdMOaahG1LO\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"orDe8s49CO39TxeS697DM\",\"children\":[{\"text\":\"Playing back audio\"}],\"nodeId\":\"playing-back-audio\",\"type\":\"h3\"},{\"id\":\"Ls5ES5oRKGnznUgyx2J5P\",\"children\":[{\"text\":\"This API is used to play back audio.\"}],\"type\":\"p\"},{\"id\":\"xjrxcXU3jzWUKm98HqKry\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype17\",\"type\":\"h4\"},{\"id\":\"nvw5amlUrPNG2OxQ6GZ1s\",\"children\":[{\"id\":\"BVTWStf2S_E_5sgIPNUTj\",\"children\":[{\"text\":\"ITMGPTT virtual int PlayRecordedFile(const char* filePath)\"}],\"type\":\"code-line\"},{\"id\":\"ebTSuZ-JMJF6NF_rSd9yC\",\"children\":[{\"text\":\"ITMGPTT virtual int PlayRecordedFile(const char* filePath, nt voiceType)\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"zBXFiby8GKCPTCAFM_ylM\",\"children\":[{\"id\":\"Klpa_nyDWxXfxM-eB8qIL\",\"children\":[{\"id\":\"x2sxBonrwoPvuPRXVKt7f\",\"children\":[{\"id\":\"t85tfMklklWLJmoylP0tx\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"hPtow5I4uOcWhOLrA6nXX\",\"children\":[{\"id\":\"igrGD6qI7MK12mJjJMHXe\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"OxrRly9bueGXc-Kdbmbou\",\"children\":[{\"id\":\"ZsS1YfiM2tUeaHgnl4bk6\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"nGUUeLzAmhr5BHvhhX5rs\",\"children\":[{\"id\":\"GQq-hYCm-ErytyV6pzAmf\",\"children\":[{\"id\":\"qk2WMRj-iIXtu5J52UL5S\",\"children\":[{\"id\":\"9je08zt6_ypAmt2HCSoKF\",\"children\":[{\"text\":\"filePath\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"q2xv1rIXAFrr04IIXOVl5\",\"children\":[{\"id\":\"9DkJfTvlv1ovHqD2grUic\",\"children\":[{\"id\":\"WMBLIbnY4yWgdlIFu9awi\",\"children\":[{\"text\":\"const char*\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"tGzgNfbRTIPWv2lk1K2Go\",\"children\":[{\"id\":\"QwKIxroS6jBbzioz5b-MV\",\"children\":[{\"id\":\"rX6X5SFVTheEQiJlOX04b\",\"children\":[{\"text\":\"Local audio file path\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"KNXKMFHO6Manwlu_EGD72\",\"children\":[{\"id\":\"jMqNeNQRM5q-Seg94wXPw\",\"children\":[{\"id\":\"07VSibo5-cSYHCqL1DDE4\",\"children\":[{\"id\":\"2Mk2c5s_ux7OldxpTnoRO\",\"children\":[{\"text\":\"voicetype\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"6HdmIu-Ow9uQDOS9lBEtW\",\"children\":[{\"id\":\"rUO-6dkpLwWNRy9BItFJr\",\"children\":[{\"id\":\"MeHKvIzWfs2N4l2pwJywi\",\"children\":[{\"text\":\"int\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"VLm5KS2uuW5yE5407pg8D\",\"children\":[{\"id\":\"-y4z4zY9Eo0RkLt6PdtS9\",\"children\":[{\"id\":\"Dkqh3xJzF8XJ7QoM0j2Yi\",\"children\":[{\"text\":\"Voice changer type. For more information, see \"},{\"id\":\"bA2SF8ptpLVoB99Yb2PkJ\",\"children\":[{\"text\":\"Voice Changing Effects\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://intl.cloud.tencent.com/document/product/607/44995\",\"props\":{\"type\":\"link\",\"url\":\"https://intl.cloud.tencent.com/document/product/607/44995\"},\"type\":\"ref\"},{\"text\":\".\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[14,15,71],\"widthMode\":\"percentage\"},{\"id\":\"KcWGeV_HJe7u0JnqfB6qR\",\"children\":[{\"text\":\"Error codes\"}],\"nodeId\":\"error-codes5\",\"type\":\"h4\"},{\"id\":\"TW2leLXZgrkdCfp54GeRJ\",\"children\":[{\"id\":\"YnOHbmRMSgLcIaQJHp_gr\",\"children\":[{\"id\":\"Jy2xCNOcXcWdyoCIO2zk0\",\"children\":[{\"id\":\"6MnCTfMmfCKsKCuEmNJtY\",\"children\":[{\"text\":\"Error Code Value\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"5p6pTwj6NCvnt8M6ep0Vz\",\"children\":[{\"id\":\"QSleoPTVkGdj7A0Fe9Hza\",\"children\":[{\"text\":\"Cause\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"EcovINj0WIXkASsrn4oKN\",\"children\":[{\"id\":\"yocZ6slnLFchvqunPrzT3\",\"children\":[{\"text\":\"Suggested Solution\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"KWH_Wk1NMI6EEqH4ivawM\",\"children\":[{\"id\":\"ZDmdT8rPo9P5nJYXm6SMt\",\"children\":[{\"id\":\"HkSwy6jU_HICeoJ5yB7Zt\",\"children\":[{\"id\":\"r1wb5eLQF6d7dQzmvgcyk\",\"children\":[{\"text\":\"20485\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"2ZCif4ywHUXlem4IRtQUd\",\"children\":[{\"id\":\"hYHXhHE_yBkzJ2EuX3ql7\",\"children\":[{\"id\":\"GKJxkVLE_OJscAU6_ky_e\",\"children\":[{\"text\":\"Playback is not started.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"8Tt-onsl3ukcSs5M0iCPK\",\"children\":[{\"id\":\"inhp4GLehJmYhb5-gMuBu\",\"children\":[{\"id\":\"36HKnwdU2WwmcMG43bKoR\",\"children\":[{\"text\":\"Ensure the existence of the file and the validity of the file path.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[19,24,57],\"widthMode\":\"percentage\"},{\"id\":\"EHUllFv3Tl24vOi6qE2z1\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code18\",\"type\":\"h4\"},{\"id\":\"fVpygTTvefdArGsyT7qCr\",\"children\":[{\"id\":\"qniAO7XCawXG7L0DAgvFr\",\"children\":[{\"text\":\"ITMGContextGetInstance()->GetPTT()->PlayRecordedFile(filePath);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"p0wXDSlVActo7IBz_Z2MA\",\"children\":[{\"text\":\"Callback for audio playback\"}],\"nodeId\":\"callback-for-audio-playback\",\"type\":\"h3\"},{\"id\":\"BQeIu1f0_zANTTRbenAq9\",\"children\":[{\"text\":\"After the audio is played back, the event message \"},{\"code\":1,\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_PLAY_COMPLETE\"},{\"text\":\" will be returned, which will be identified in the \"},{\"code\":1,\"text\":\"OnEvent\"},{\"text\":\" function.\\nThe passed parameter includes \"},{\"code\":1,\"text\":\"result\"},{\"text\":\" and \"},{\"code\":1,\"text\":\"file_path\"},{\"text\":\".\"}],\"type\":\"p\"},{\"id\":\"7kndJ_TDjky_RUlaP-EN1\",\"children\":[{\"id\":\"4x7kXSw3CEt068W2yt80S\",\"children\":[{\"id\":\"kBQZ-7vCxcI_K7rOjfXIc\",\"children\":[{\"id\":\"mfVf88D9Hw4U8hPfCxwL8\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"wRdWIpGqgB4Gw0EeCST4o\",\"children\":[{\"id\":\"A5sWXy7nJHoHwlCmmnVM4\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"0waAiYHQVTOl6HR51S-pO\",\"children\":[{\"id\":\"9ZEAI45QkkkW-qqVmU1Os\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"w9ftYT6uNVeq7qQTzFMT3\",\"children\":[{\"id\":\"M4-53pBIGHtCcc_F9mUl-\",\"children\":[{\"id\":\"_VVN0POSmBPyW_IzZ0snD\",\"children\":[{\"id\":\"pyiHwoM24amQIP7_DFDID\",\"children\":[{\"text\":\"code\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"YZFwLXOaqu7YqLcL5bTv1\",\"children\":[{\"id\":\"PFvUOWOs_um2WqLIrMYHG\",\"children\":[{\"id\":\"xNHXf6FNy9OMcDwkjN7tY\",\"children\":[{\"text\":\"int\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"f2_tGdtVbj_Cy-BZPPh_z\",\"children\":[{\"id\":\"_szpor6VWVk21_Y4sT_ZQ\",\"children\":[{\"id\":\"A3SWD-UklRnZyEKoxgN5Y\",\"children\":[{\"text\":\"0: playback is completed\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"I7uFE6Ixwsmz3Lkx9pDMb\",\"children\":[{\"id\":\"0DQg432fGsAuuS0xVkYsv\",\"children\":[{\"id\":\"o7c29D2NgHCsp9pw121s0\",\"children\":[{\"id\":\"zieCCxArGAzF6T-gqjqNL\",\"children\":[{\"text\":\"filepath\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"j4uLh0uPHAXL67LaJ-vVu\",\"children\":[{\"id\":\"A9DWZm6xo7scIVCXQn1s_\",\"children\":[{\"id\":\"wEJiA37iJ5Cw9OIaO7FbD\",\"children\":[{\"text\":\"FString\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"msfbccnNZPvkop03tKPcM\",\"children\":[{\"id\":\"-_3ZDQaapQ2__sSYnEuUF\",\"children\":[{\"id\":\"oKuEKf4unXFeT1xuPnYsE\",\"children\":[{\"text\":\"Path of stored recording file\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[25,20,55],\"widthMode\":\"percentage\"},{\"id\":\"zakmyRrR8jHwGkjpGDQAF\",\"children\":[{\"text\":\"Error codes\"}],\"nodeId\":\"error-codes6\",\"type\":\"h4\"},{\"id\":\"iJAtqEvqGQs5CE-BvK1FX\",\"children\":[{\"id\":\"J2vmA806lZkjXPsUgiJCl\",\"children\":[{\"id\":\"svyJMZkt5c7EfqPyonqnS\",\"children\":[{\"id\":\"gFK8c9ghBXgC-v0AQfm2r\",\"children\":[{\"text\":\"Error Code Value\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"DNtOZX80nyLz8C4NT6OSq\",\"children\":[{\"id\":\"gjfC3PrOOOX9Xwjaf0ztt\",\"children\":[{\"text\":\"Cause\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"n_J8kHcFopDyhOaBKoRjT\",\"children\":[{\"id\":\"tJSeH8s9GBROBXdkgTiNz\",\"children\":[{\"text\":\"Suggested Solution\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"50c-vLcHIiR96xg00Pj86\",\"children\":[{\"id\":\"PC1X9-IJuOuxnnYY89Tvk\",\"children\":[{\"id\":\"RWOhN2qrexp9-Lh3zQGPu\",\"children\":[{\"id\":\"w3NoFsXTjf0_rqrFwsYcd\",\"children\":[{\"text\":\"20481\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"KuPEVZ35yCAOvudrnbhVi\",\"children\":[{\"id\":\"PB6_mTiIPbK3x2QwdwiYh\",\"children\":[{\"id\":\"Ik9vQqXHS4-zLz53pR1eP\",\"children\":[{\"text\":\"Initialization error.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"vj2AvwL9w08SJTnZS7SBm\",\"children\":[{\"id\":\"sAQBe2uesuXudmdehVkn-\",\"children\":[{\"id\":\"lo5ZKTsSc0STVnWG_vwKO\",\"children\":[{\"text\":\"Check whether the device is being used, whether the permissions are normal, and whether the initialization is normal.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"50Px7RM0pyDCE3paXTF37\",\"children\":[{\"id\":\"3UeyJAWhnM3EY6AeoNAzA\",\"children\":[{\"id\":\"YtBh9u79V_0CcA3Ynyu4G\",\"children\":[{\"id\":\"cc2n7Q_RSPPpOsBwENdgE\",\"children\":[{\"text\":\"20482\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"AdeJz3Ol2QVuBdQ6w_t1m\",\"children\":[{\"id\":\"1BAlhr4YRFL3-UrhnTCg1\",\"children\":[{\"id\":\"06RhsoizgDtyKfkPq3DR6\",\"children\":[{\"text\":\"During playback, the client tried to interrupt and play back the next one but failed (which should succeed normally).\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"PYdnkG2YWHHFBaXO_i6XW\",\"children\":[{\"id\":\"yysKUGzj6sCqVoDWfg7Iv\",\"children\":[{\"id\":\"eZivyjcj1WKujDw1plsf5\",\"children\":[{\"text\":\"Check whether the code logic is correct.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"hetRsdyu7mwmH1rVCWZqj\",\"children\":[{\"id\":\"lSru9TsQ-_gxTPk5jVOJ3\",\"children\":[{\"id\":\"bWJuyn20BvbJMzE-ekEGn\",\"children\":[{\"id\":\"bFzY_EG1ASttBIUiC55cC\",\"children\":[{\"text\":\"20483\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"vEWcQ0N4wIAthEEOJG4DE\",\"children\":[{\"id\":\"R5dOi6QLghxAgACaSHfpA\",\"children\":[{\"id\":\"Tc44flFncFbvlaoL3aZ3Y\",\"children\":[{\"text\":\"Parameter is empty.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"sj5zRERPf8Q3GwatIK48s\",\"children\":[{\"id\":\"C4yICqzenHYTkMCi6EKX8\",\"children\":[{\"id\":\"4DJW3Fl-CG5ECpUPjVHcO\",\"children\":[{\"text\":\"Check whether the API parameters in the code are correct.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"9hsSvY5wKqEAm_3sH5fqn\",\"children\":[{\"id\":\"d1d2YS0djaZe-9g8alEyX\",\"children\":[{\"id\":\"zH0AnvsbvTusqVbDbKr2c\",\"children\":[{\"id\":\"fxgqufl_0iN6aalfXOZEw\",\"children\":[{\"text\":\"20484\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"8ZUB8TAfMD9k9dtaMehyD\",\"children\":[{\"id\":\"jBzl4-jMZZSlXt1rPMDC4\",\"children\":[{\"id\":\"7bAiSRVy5ybTjrPS60byg\",\"children\":[{\"text\":\"Internal error.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"rTbon3o79XPXyr2LHz4kN\",\"children\":[{\"id\":\"4GfS0kUXgbpA8GoE7gH1i\",\"children\":[{\"id\":\"Xgp-FQMwHOjtNEOuHzKVy\",\"children\":[{\"text\":\"An error occurred while initializing the player. This error code is generally caused by failure in decoding, and the error should be located with the aid of logs.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[15,42,43],\"widthMode\":\"percentage\"},{\"id\":\"_PsR4FmP_fRNY3c_cysYS\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code19\",\"type\":\"h4\"},{\"id\":\"LmrDXYUzItoInQTKptX9H\",\"children\":[{\"id\":\"KUUjPH6obh76t96N7LMVj\",\"children\":[{\"text\":\"void TMGTestScene::OnEvent(ITMG_MAIN_EVENT_TYPE eventType,const char* data){\"}],\"type\":\"code-line\"},{\"id\":\"R9LVvUsk9HtifJz5TEVT5\",\"children\":[{\"text\":\" switch (eventType) {\"}],\"type\":\"code-line\"},{\"id\":\"qpht3O9WGfq00vwXXBZQb\",\"children\":[{\"text\":\" ...\"}],\"type\":\"code-line\"},{\"id\":\"sh5RJIWWEHTGRGoiZbmIB\",\"children\":[{\"text\":\" else if (eventType == ITMG_MAIN_EVNET_TYPE_PTT_PLAY_COMPLETE) {\"}],\"type\":\"code-line\"},{\"id\":\"rzqI-A0kzHaGC64y7cdYN\",\"children\":[{\"text\":\" int32 result = JsonObject->GetIntegerField(TEXT(\\\"result\\\"));\"}],\"type\":\"code-line\"},{\"id\":\"6eyWkaU9slDlHP4aTS3wg\",\"children\":[{\"text\":\" FString filepath = JsonObject->GetStringField(TEXT(\\\"file_path\\\"));\"}],\"type\":\"code-line\"},{\"id\":\"x9Mv5BjF17EqlQ7iEP_Mc\",\"children\":[{\"text\":\" onPttPlayFileCompleted(result, filepath);\"}],\"type\":\"code-line\"},{\"id\":\"NH8bLQW0VVnNjYCOBnaLz\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"q_x2uVc3ZpUbqnwR2CBdB\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"mGBYOwwmIZHmqWBC71hw9\",\"children\":[{\"text\":\"}\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"68pjngdqo25NmG2GsWoO2\",\"children\":[{\"text\":\"Stopping audio playback\"}],\"nodeId\":\"stopping-audio-playback\",\"type\":\"h3\"},{\"id\":\"mRShGF5I4N5jG9O_Db3dl\",\"children\":[{\"text\":\"This API is used to stop audio playback. There will be a callback for playback completion when the playback stops.\"}],\"type\":\"p\"},{\"id\":\"JkHK2DWH7yT9tl7lV096w\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype18\",\"type\":\"h4\"},{\"id\":\"v7ED-LDx0d-JijUxVHtBp\",\"children\":[{\"id\":\"Mhvxzp4UDg_MUYOG0jR-N\",\"children\":[{\"text\":\"ITMGPTT virtual int StopPlayFile()\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"118zd8I17Qs5BOy_4PyCG\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code20\",\"type\":\"h4\"},{\"id\":\"1OiBG_KXrsv-WjdH4OwQe\",\"children\":[{\"id\":\"1SjWalUK5dutPZJnvXsaZ\",\"children\":[{\"text\":\"ITMGContextGetInstance()->GetPTT()->StopPlayFile();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"IuiTpKKJtlQU3BKrbfpTh\",\"children\":[{\"text\":\"Getting audio file size\"}],\"nodeId\":\"getting-audio-file-size\",\"type\":\"h3\"},{\"id\":\"bvj_-ALoR1utTaXJv0-He\",\"children\":[{\"text\":\"This API is used to get the size of an audio file.\"}],\"type\":\"p\"},{\"id\":\"jJEk_l--Y2aa1nDjas0Bp\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype19\",\"type\":\"h4\"},{\"id\":\"u8Fxx7k92bdTuUnwnkqwZ\",\"children\":[{\"id\":\"_UuyzOmOSr_vBee1Zbm2t\",\"children\":[{\"text\":\"ITMGPTT virtual int GetFileSize(const char* filePath)\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"qv_bojcuXMpukoKL-ScHD\",\"children\":[{\"id\":\"MhJh7U1pAflCjK5ktPdF0\",\"children\":[{\"id\":\"85lk5sWDTeNwtwGgukZ1G\",\"children\":[{\"id\":\"NRS-_9vqxDMOXlhpS0obb\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"HhwOupNzqSrMMdaBcyPXi\",\"children\":[{\"id\":\"lkXqv02XWs00LoU3nSeJa\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"XLxOn9Efu5NkJwGbYv8No\",\"children\":[{\"id\":\"G3ORUFjWvm06n8m7DoIYc\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"QE767A4SIhsdRmrAAzRoi\",\"children\":[{\"id\":\"bGxDIkQsjs2c67cDPHXof\",\"children\":[{\"id\":\"R9KxCJOMqkqUaWu8DcLwl\",\"children\":[{\"id\":\"58NY0Ib7c9pGp5CXF-LUR\",\"children\":[{\"text\":\"filePath\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"TnSJqPF-FCLDx_YKIGMTb\",\"children\":[{\"id\":\"mYHdMjKhE4NhdewLM60VV\",\"children\":[{\"id\":\"NvZwl0uXcdf-GLNiKs2F-\",\"children\":[{\"text\":\"const char*\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Lb1xhyZ3mqS-6dPTROm7W\",\"children\":[{\"id\":\"BELaHid4Z4x46SVMQVrRu\",\"children\":[{\"id\":\"t6WCZZ6jd-BLj38SBX2zy\",\"children\":[{\"text\":\"Path of audio file, which is a local path\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[20,21,59],\"widthMode\":\"percentage\"},{\"id\":\"1cdUkmN_9HO5Jlsv9TzOU\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code21\",\"type\":\"h4\"},{\"id\":\"N19OMgC71DeLzg4A41eHg\",\"children\":[{\"id\":\"cPpB6m7iZQbNfbYKnQY_m\",\"children\":[{\"text\":\"ITMGContextGetInstance()->GetPTT()->GetFileSize(filePath);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"uiCVynmrONuXZWSsnaTb4\",\"children\":[{\"text\":\"Getting audio file duration\"}],\"nodeId\":\"getting-audio-file-duration\",\"type\":\"h3\"},{\"id\":\"M3QYM0Pi6z5CxZkvZ1jQy\",\"children\":[{\"text\":\"This API is used to get the duration of an audio file in milliseconds.\"}],\"type\":\"p\"},{\"id\":\"gfq7ebvu4sPyvEZx9DN82\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype20\",\"type\":\"h4\"},{\"id\":\"NQnnK2E34i5iGZE7XykwL\",\"children\":[{\"id\":\"78fcuj-n8ZZbY5rdGBG5S\",\"children\":[{\"text\":\"ITMGPTT virtual int GetVoiceFileDuration(const char* filePath)\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"EUanyx984-L-3ydjLfEut\",\"children\":[{\"id\":\"4UXltI0AsgDe1lR32m_jb\",\"children\":[{\"id\":\"-TGmU5cz74f8GWlU0ewl6\",\"children\":[{\"id\":\"ATD-sOREpXV-kHMylgvGO\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"OPscKqmyYrBaONXCj07Fe\",\"children\":[{\"id\":\"QzDHdY95AU3trnMg2JDoZ\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"SzaKqObp4mip3klHGrPr5\",\"children\":[{\"id\":\"FrFvbBgMib-KC7K-eWfBi\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"mGTowXELd5vHKXjnSaKe1\",\"children\":[{\"id\":\"FUvELz2Rs7--eQSPmk-96\",\"children\":[{\"id\":\"AjKrAYb2DC_Gx73t_VDHb\",\"children\":[{\"id\":\"GkPZZhArC6kvErsInHtmt\",\"children\":[{\"text\":\"filePath\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"FmapxxX4LAJs1cydIXhhi\",\"children\":[{\"id\":\"WwQw1Bqitc32rRXRwHqqJ\",\"children\":[{\"id\":\"vGUQRc-dipH1Y-QfHgn_s\",\"children\":[{\"text\":\"const char*\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"3EtQVYGt6RcmRKERj0Bg4\",\"children\":[{\"id\":\"5-apZrKGC5mmpvq3aE7JB\",\"children\":[{\"id\":\"59W7cIHalL8jTl1T7MC-9\",\"children\":[{\"text\":\"Path of audio file, which is a local path\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[20,21,59],\"widthMode\":\"percentage\"},{\"id\":\"1F45lZyfZGpYKMFYbgHVw\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code22\",\"type\":\"h4\"},{\"id\":\"mZ9wj6ud4UPV0b18p_5cx\",\"children\":[{\"id\":\"7Dai8nahAKQOQHYBKwwgB\",\"children\":[{\"text\":\"ITMGContextGetInstance()->GetPTT()->GetVoiceFileDuration(filePath);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"cU9hY6nO23xrQqvB-5l-O\",\"children\":[{\"text\":\"Fast Recording-to-Text Conversion\"}],\"nodeId\":\"fast-recording-to-text-conversion\",\"type\":\"h2\"},{\"id\":\"7UNcPwutaD0BiEUSec7Gr\",\"children\":[{\"id\":\"hXW39aM4hmYjtQDCGGcdB\",\"children\":[{\"id\":\"YDdLT86GlR29S3xZmTSf0\",\"children\":[{\"id\":\"7_VwsEF8wPzo1UG2Xp0aK\",\"children\":[{\"text\":\"API\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"e2V-dYVYJcdW3nIUHWyA2\",\"children\":[{\"id\":\"EjVFggu_56hVn6Bv0GAEb\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"FRTjja3aBuig18BX29gT1\",\"children\":[{\"id\":\"XUBJISk6RYPYCPS2W2wnD\",\"children\":[{\"id\":\"iIcp9qMsYmNtosuqYEHEp\",\"children\":[{\"id\":\"ihU9qEEMxpf8d3HJ8qx81\",\"children\":[{\"text\":\"SpeechToText\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"9YUy3PoK3NV6WBK8TPzdH\",\"children\":[{\"id\":\"glvYt8KzYCPHS0ERkMniu\",\"children\":[{\"id\":\"GCCUUeX6HSVxgEMKW0HCU\",\"children\":[{\"text\":\"Converts speech to text\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[40,60],\"widthMode\":\"percentage\"},{\"id\":\"MMZZ4g1PwIrlRhzopMPqK\",\"children\":[{\"text\":\"Converting audio file to text\"}],\"nodeId\":\"converting-audio-file-to-text\",\"type\":\"h3\"},{\"id\":\"ZtJS8X93yeHCfYnfObTvh\",\"children\":[{\"text\":\"This API is used to convert a specified audio file to text.\"}],\"type\":\"p\"},{\"id\":\"uUFABUNXCwPlUERFM-rno\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype21\",\"type\":\"h4\"},{\"id\":\"7oE5xZeR2mEO5ipzLpaO5\",\"children\":[{\"id\":\"ptlkwrfeKk9YJZX4Y-Iy9\",\"children\":[{\"text\":\"ITMGPTT virtual void SpeechToText(const char* fileID)\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"JSF2iJUIlNg-9oaKJZS1t\",\"children\":[{\"id\":\"zxlmJXuv_rokmeWwr3vc3\",\"children\":[{\"id\":\"Fanwy5dH9eKKWJDQKo0Ru\",\"children\":[{\"id\":\"jvKsobjdLTNRt2Dr_fUbG\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"sKAQ8g87KzeXCfKn1Ro3J\",\"children\":[{\"id\":\"XkF2s9WoEJEqttA9Z3dU4\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"PNMbUdvy_QIf6uzc-8lAx\",\"children\":[{\"id\":\"gqSFeSjbKoSZ1Off-AOf9\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"Dgsjzk2EfvEb4hP44OKkM\",\"children\":[{\"id\":\"GzUJFfNOM8-lEiQ_OkJWY\",\"children\":[{\"id\":\"KpY4QHxZW3VQ-UR1zbC2p\",\"children\":[{\"id\":\"giJxynSVEaqaVbW3jQK4O\",\"children\":[{\"text\":\"fileID\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"X8uORAlRVR4xGTPkDbH77\",\"children\":[{\"id\":\"BwFJ62SwuAlNdIjr-w-wP\",\"children\":[{\"id\":\"XAniCz9l3jcjbA-U4N6_R\",\"children\":[{\"text\":\"const char*\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"LEa0TcLrRx7CWFrm8eWPX\",\"children\":[{\"id\":\"PjMqVS6Vpi4zi02x7S8CR\",\"children\":[{\"id\":\"Qhwz5_CU7zghb2MregztX\",\"children\":[{\"text\":\"Audio file URL\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[30,31,39],\"widthMode\":\"percentage\"},{\"id\":\"TNHLVIASFnBLzdzDftnRi\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code23\",\"type\":\"h4\"},{\"id\":\"ZSUkH8QAfGXcjs8KecloN\",\"children\":[{\"id\":\"e-aUWTprk33VNUoZzA8GF\",\"children\":[{\"text\":\"ITMGContextGetInstance()->GetPTT()->SpeechToText(fileID);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"injmeaLZB0yEvR2gDMvjB\",\"children\":[{\"text\":\"Translating audio file into text in specified language\"}],\"nodeId\":\"translating-audio-file-into-text-in-specified-language\",\"type\":\"h3\"},{\"id\":\"wX_Y6nUaI4XawnQO7FdVT\",\"children\":[{\"text\":\"This API can specify a language for recognition or translate the information recognized in speech into a specified language and return the translation.\"}],\"type\":\"p\"},{\"id\":\"wbZDjT1hblkVBUKOYmedA\",\"children\":[{\"id\":\"pQviG1QnT_giZAwTpV6MK\",\"children\":[{\"b\":1,\"color\":\"#04C8DC\",\"text\":\"Note: \",\"type\":\"text\"}],\"type\":\"p\"},{\"id\":\"O6w7Ma5rjevc-oTy_ojiS\",\"children\":[{\"text\":\"Translation incurs additional fees. For more information, see \"},{\"id\":\"4T37UHWomUoTQpTKPgV7s\",\"children\":[{\"text\":\"Purchase Guide\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://intl.cloud.tencent.com/document/product/607/50009\",\"props\":{\"type\":\"link\",\"url\":\"https://intl.cloud.tencent.com/document/product/607/50009\"},\"type\":\"ref\"},{\"text\":\".\"}],\"type\":\"p\"}],\"hintType\":\"alert\",\"type\":\"hint\"},{\"id\":\"ufc00fwJI7yEvtHAGh_XA\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype22\",\"type\":\"h4\"},{\"id\":\"RxV9dAjXm0kXyFWrHg3m4\",\"children\":[{\"id\":\"IsbXCp5E1uZGzQBB3EoqG\",\"children\":[{\"text\":\"ITMGPTT virtual int SpeechToText(const char* fileID,const char* speechLanguage)\"}],\"type\":\"code-line\"},{\"id\":\"pt-cROaEMslAZyCtAOXTl\",\"children\":[{\"text\":\"ITMGPTT virtual int SpeechToText(const char* fileID,const char* speechLanguage,const char* translateLanguage)\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"ffbSpwvyrmOuZp804WryD\",\"children\":[{\"id\":\"MFvxx-t2QTwrA5INTh0Uh\",\"children\":[{\"id\":\"gEHuv9ZHVfdnsSIcfqmxF\",\"children\":[{\"id\":\"rxAaB3O3tjnqeI5YUy4gk\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"dVzc5KWHAZoouFGNQihP_\",\"children\":[{\"id\":\"NsXDUiJ6JwJzOly7guie8\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"mclgPRVQq_FtwVgf2BSgA\",\"children\":[{\"id\":\"_JXGrcnRyZENpsoEhBnsZ\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"eteBAOVA3evOi6wf-uBHG\",\"children\":[{\"id\":\"gZieKkeJoZlgijJ-ahEP5\",\"children\":[{\"id\":\"Z14UDFaBkZk1_YjKqfefw\",\"children\":[{\"id\":\"LavbmJTuJlp5AoFxeCdi7\",\"children\":[{\"text\":\"fileID\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Va4pdGvhSGWWUoO5hVBhC\",\"children\":[{\"id\":\"8x6Pphy4DDWcM5FNZP3HE\",\"children\":[{\"id\":\"LciSRBdXnH-Sg0EgppxSc\",\"children\":[{\"text\":\"const char*\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"JoFzftDh9vZgjzrQuLEVk\",\"children\":[{\"id\":\"awAmLAEIp_d9QUPnRxc1X\",\"children\":[{\"id\":\"lSC5itPszeFLH2Ia8QpSD\",\"children\":[{\"text\":\"The URL of the audio file, which will be retained on the server for 90 days.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"4OPDfiIzeRVspxmQ2Acvs\",\"children\":[{\"id\":\"Zqt6z4ngk79wpPliwmLdr\",\"children\":[{\"id\":\"FrKx1RgI16S6Jd_0ItwV_\",\"children\":[{\"id\":\"T0uq-ULLwhHjP6jPwd4kz\",\"children\":[{\"text\":\"speechLanguage\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Nk5eEu61u66-xTl0GKvST\",\"children\":[{\"id\":\"RqL5ODjP4M-ncfVOl4Z6W\",\"children\":[{\"id\":\"7CSeP5i6dKs5OSo58UBG-\",\"children\":[{\"text\":\"const char*\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"q7k8-gqnB3h17Ug7eik71\",\"children\":[{\"id\":\"wcmyiqolPNt4AQXWCW-MM\",\"children\":[{\"id\":\"xsQmzqxt3N5nHtcl6tLhT\",\"children\":[{\"text\":\"The language in which the audio file is to be converted to text. For parameters, see \"},{\"id\":\"9BxoCBpKYPr_iY2KZeFqC\",\"children\":[{\"text\":\"Language Parameter Reference List\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://intl.cloud.tencent.com/document/product/607/30260\",\"props\":{\"type\":\"link\",\"url\":\"https://intl.cloud.tencent.com/document/product/607/30260\"},\"type\":\"ref\"},{\"text\":\".\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"PbJkUPcaR9zxrUYssMmxG\",\"children\":[{\"id\":\"VRkwi35jU6Q3y98ngZP75\",\"children\":[{\"id\":\"xj_n9WFHk2pg8blclRbox\",\"children\":[{\"id\":\"2eTr1_S7OXa_v4b3S027v\",\"children\":[{\"text\":\"translatelanguage\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"A7ps8LGBpEboEOKNhPxo0\",\"children\":[{\"id\":\"LBmi_DTly10kfK5BsCbUe\",\"children\":[{\"id\":\"z68q0EksYzxxjw_PGxwAI\",\"children\":[{\"text\":\"const char*\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"8JDHORAaI4xBcPxERryTn\",\"children\":[{\"id\":\"GepM2UXMG3I1QCnZjj42I\",\"children\":[{\"id\":\"EcIFptanlSmWSERbMoJka\",\"children\":[{\"text\":\"The language in which the audio file is to be translated to text. For parameters, see \"},{\"id\":\"BvVAiclXSkunQd2L7Vlw1\",\"children\":[{\"text\":\"Language Parameter Reference List\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://intl.cloud.tencent.com/document/product/607/30260\",\"props\":{\"type\":\"link\",\"url\":\"https://intl.cloud.tencent.com/document/product/607/30260\"},\"type\":\"ref\"},{\"text\":\".\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[17,14,69],\"widthMode\":\"percentage\"},{\"id\":\"_DZx0qmkcUSzwxK7Q4pgA\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code24\",\"type\":\"h4\"},{\"id\":\"XLjOvkak6UZ7mcDlSHC0H\",\"children\":[{\"id\":\"UpKIfvtUTGju0CDS_7fbr\",\"children\":[{\"text\":\"ITMGContextGetInstance()->GetPTT()->SpeechToText(filePath,\\\"cmn-Hans-CN\\\",\\\"cmn-Hans-CN\\\");\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"UBMDD8AbbM4oyBciV7nrb\",\"children\":[{\"text\":\"Callback for recognition\"}],\"nodeId\":\"callback-for-recognition\",\"type\":\"h3\"},{\"id\":\"bt3iMo3XWzfkTSvZ4FSZJ\",\"children\":[{\"text\":\"After the specified audio file is converted to text, the event message ITMG_MAIN_EVNET_TYPE_PTT_SPEECH2TEXT_COMPLETE will be returned, which will be identified in the \"},{\"code\":1,\"text\":\"OnEvent\"},{\"text\":\" function.\\nThe passed parameters include \"},{\"code\":1,\"text\":\"result\"},{\"text\":\", \"},{\"code\":1,\"text\":\"file_path\"},{\"text\":\" and \"},{\"code\":1,\"text\":\"text\"},{\"text\":\" (recognized text).\"}],\"type\":\"p\"},{\"id\":\"sTzPlKAhHOYewJFEGohqP\",\"children\":[{\"id\":\"JkLD7T9PU9b-PKETZQ2s5\",\"children\":[{\"id\":\"NT6b9Ug7iCNDsjE-UPkXc\",\"children\":[{\"id\":\"JfscTAE03YQM_W11VgQ-7\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"r8IwJt7oSlrOsSSufZgJ8\",\"children\":[{\"id\":\"5U3u-tPyLWMYtkX7WL1Sp\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"kbYfzpa6SDSiO9AUkZh2I\",\"children\":[{\"id\":\"5aEoBPP9_1p-wm2BCq0xp\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"-kxwuFfCz8YITGNFT546O\",\"children\":[{\"id\":\"Q7KKVJ1f0H1hQjvmkLZbc\",\"children\":[{\"id\":\"XMp35dNmM8oeHT9KlnCrE\",\"children\":[{\"id\":\"sweRdg7CNKA3wzmyjvHre\",\"children\":[{\"text\":\"result\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"vkV3RQh2Qil1JbUS3kKzt\",\"children\":[{\"id\":\"1kuZCWi6zwW-5aDPFa1Jk\",\"children\":[{\"id\":\"rbXB198Y0sF6v6G1ewAeW\",\"children\":[{\"text\":\"int32\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"RIv_CEmnBNkxE2uEbB2Db\",\"children\":[{\"id\":\"VXwBk6vzxtwKJ1czbomn1\",\"children\":[{\"id\":\"g3POni1VeWhLc4G6o3A58\",\"children\":[{\"text\":\"0: recording is completed\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"UFY6495NGAN5D5xE15lxv\",\"children\":[{\"id\":\"HaSiW9dueOcsGWjMHkHK6\",\"children\":[{\"id\":\"7xPE7t4PeFLO4Be7b_bvK\",\"children\":[{\"id\":\"1IRMtisNxsiVnsg3CdMuV\",\"children\":[{\"text\":\"fileid\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"FdjKKchQzK8Xelc1917fl\",\"children\":[{\"id\":\"NAoCAZF5gHqMBUo18w7RX\",\"children\":[{\"id\":\"L3OG_1yGAQUDmcCoNZa2Z\",\"children\":[{\"text\":\"FString\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"m6qphPmwEd2J4wmHs42DR\",\"children\":[{\"id\":\"hzayeansE_1ymZM8nkzzb\",\"children\":[{\"id\":\"SCymJXHDI-j3iVpDRvBUA\",\"children\":[{\"text\":\"URL of recording file, which will be retained on the server for 90 days\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"fMOi4tmrzp_m9oYLLKQgL\",\"children\":[{\"id\":\"B1YiHFfjUEMiMRs18IryG\",\"children\":[{\"id\":\"rDNzdlRfMYgS12_U6WY_O\",\"children\":[{\"id\":\"0eVjBqsVq_5WleqwRrb3C\",\"children\":[{\"text\":\"text\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ayvmT0-xE4GPjw2wOEZwq\",\"children\":[{\"id\":\"xoUzz7EmDoD1KDCueIrj4\",\"children\":[{\"id\":\"X3FlSUE-v8wiG0xJWkXqZ\",\"children\":[{\"text\":\"FString\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"kW8PfGNSIA7we-QEPX8a-\",\"children\":[{\"id\":\"tJLoqDIl1DlIAS3lQuzV4\",\"children\":[{\"id\":\"5FLSAfOKen1kMAtFFEA2L\",\"children\":[{\"text\":\"Converted text\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[15,12,73],\"widthMode\":\"percentage\"},{\"id\":\"5IkKXVDTCGlgi65QdGZqX\",\"children\":[{\"text\":\"Error codes\"}],\"nodeId\":\"error-codes7\",\"type\":\"h4\"},{\"id\":\"a_anal6_AFiAdE2Pi9lW0\",\"children\":[{\"id\":\"KF5gGvrbe8VH03bEXduli\",\"children\":[{\"id\":\"6VqD6vPhBp7fkyR487hP9\",\"children\":[{\"id\":\"qZNgUzUU4z537gbk-cPa-\",\"children\":[{\"text\":\"Error Code Value\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"9ceDGPMN96GRDqfQyCv27\",\"children\":[{\"id\":\"QPJk0dYpb4DTxYtDKq49F\",\"children\":[{\"text\":\"Cause\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"1IPFEH4UDzF_JRmw6cg51\",\"children\":[{\"id\":\"pEEhVIbOUD5UrlLMsk6f_\",\"children\":[{\"text\":\"Suggested Solution\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"pz8UBWQl5efoIwyVz7B86\",\"children\":[{\"id\":\"hF_fLxnUiM6kvTkMh7ETF\",\"children\":[{\"id\":\"9ZlgWJgaKpEbdFsbaNBau\",\"children\":[{\"id\":\"IsFFTP2rvYhVGYvnhu18q\",\"children\":[{\"text\":\"32769\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Iqld3W5pxvg46mC81LNPa\",\"children\":[{\"id\":\"vdrvqnBV5-1e2vMLdE96L\",\"children\":[{\"id\":\"ZLYIL3QaXvzDaVa198IDh\",\"children\":[{\"text\":\"An internal error occurred.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"tIBo3EcisEsGlw4-ksPJz\",\"children\":[{\"id\":\"fiZwQSKMfi7DE1MievLSz\",\"children\":[{\"id\":\"YGHoaj4VdYyYW1AB7gphR\",\"children\":[{\"text\":\"Analyze logs, get the actual error code returned from the backend to the client, and ask backend personnel for assistance.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"e30zsblS7Dm2lcEIfekJ8\",\"children\":[{\"id\":\"LarDLRLGYdcjgJx0J-CZS\",\"children\":[{\"id\":\"a0bfoJUsuAFpc1qd4yNW3\",\"children\":[{\"id\":\"0WL_FY4PZsqag_NBQuL-y\",\"children\":[{\"text\":\"32770\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"HIvTeBhORuxTfX5dLc7cE\",\"children\":[{\"id\":\"s9IMqD0HO8V0cYVDU0iON\",\"children\":[{\"id\":\"IJvzpog2CTm8vHV_Sr7jy\",\"children\":[{\"text\":\"Network failed.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"GV_eTQq2ggBn1GiLl-YrA\",\"children\":[{\"id\":\"fbFhri6VPqSGc6rK0i_Yj\",\"children\":[{\"id\":\"dFC2JJcApihqlPlLEyfSU\",\"children\":[{\"text\":\"Check whether the device can access the internet.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"xljMQCIVqKBBOYYr15srm\",\"children\":[{\"id\":\"_XyGB6EgZFgPVrgbzW0qs\",\"children\":[{\"id\":\"vaateJ6LltPtpEPDwa4s4\",\"children\":[{\"id\":\"UW_MfQavC96bqhBRC1ntb\",\"children\":[{\"text\":\"32772\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"0hL1XpwKL9I_vJ-onACZI\",\"children\":[{\"id\":\"UevmuyodtPGwW7xVQ3ri8\",\"children\":[{\"id\":\"BcgTiAH8VS4K0eM6cQRKb\",\"children\":[{\"text\":\"Failed to decode the returned packet.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"VBzcjZZTnWVND3ZKzRu4g\",\"children\":[{\"id\":\"anR0yYuqdhk1Pa_9XptrP\",\"children\":[{\"id\":\"WNEoq330-ZZ24tMDF7sCa\",\"children\":[{\"text\":\"Analyze logs, get the actual error code returned from the backend to the client, and ask backend personnel for assistance.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"65K_LLZAGXo2bwjB6D6Fv\",\"children\":[{\"id\":\"diQuy4EJPMEi4w_49uhLJ\",\"children\":[{\"id\":\"exS55vBBNhSbF3qcavG0s\",\"children\":[{\"id\":\"NGNRkwHTL12ccr6of9l_E\",\"children\":[{\"text\":\"32774\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"3o5xtZW-q0n9srcRpLzC4\",\"children\":[{\"id\":\"5cPdeDbIEk1yqxJEKjGnG\",\"children\":[{\"id\":\"jhfrptYm2ELcz8u9hP_JN\",\"children\":[{\"text\":\"No \"},{\"code\":1,\"text\":\"appinfo\"},{\"text\":\" is set.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"VFgJoATc8vWD69f7CxfMj\",\"children\":[{\"id\":\"_5h3hRP_NuzeNIcvyPmLm\",\"children\":[{\"id\":\"pyRxwVXNZ5LurhkjGkKJX\",\"children\":[{\"text\":\"Check whether the authentication key is correct and whether the voice messaging and speech-to-text feature is initialized.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"5lwdOtpgv0Zzl7AqioiMD\",\"children\":[{\"id\":\"KClvfAfFqLqo7l2VH7Nuq\",\"children\":[{\"id\":\"Yz_K6a4plm1XTPvtZXGlt\",\"children\":[{\"id\":\"XH4S5CRBDd-mSq2T3PXVp\",\"children\":[{\"text\":\"32776\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"X0C_FdvVtQaGyE01Rmbcr\",\"children\":[{\"id\":\"7ohQ2aQBZYR0VK7Z8v77K\",\"children\":[{\"id\":\"R4zq344wQhidQL3rDJRlS\",\"children\":[{\"code\":1,\"text\":\"authbuffer\"},{\"text\":\" check failed.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"-lLOIsEm58vsw4rJfKqYN\",\"children\":[{\"id\":\"TEiwq2PP712p_Xkp8EIrL\",\"children\":[{\"id\":\"Fa--OgyasNeBolaVyDR35\",\"children\":[{\"text\":\"Check whether \"},{\"code\":1,\"text\":\"authbuffer\"},{\"text\":\" is correct.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"7RYVbRCdVO3kJJDhzZ78f\",\"children\":[{\"id\":\"qAM-pyDowm5tx56XfRl7p\",\"children\":[{\"id\":\"6dj7wGBjWop5wivyLLVIK\",\"children\":[{\"id\":\"sfYhyADLNjXdtMoGe3Jkc\",\"children\":[{\"text\":\"32784\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"xf4SQBDndsYLld1_oolC_\",\"children\":[{\"id\":\"9W6sE4Vpe4PDBKG7McC8g\",\"children\":[{\"id\":\"W7dtIlvyhaRFCy2WoVs7O\",\"children\":[{\"text\":\"Incorrect speech-to-text conversion parameter.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"7fdypMqWP6QyUh2IHOnGa\",\"children\":[{\"id\":\"iItpq6vdjsCzPmDoca5Jx\",\"children\":[{\"id\":\"JCML123GbXTMgd0mzGMtd\",\"children\":[{\"text\":\"Check whether the API parameter \"},{\"code\":1,\"text\":\"fileid\"},{\"text\":\" in the code is empty.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"v1S7ai_oJePzziNHE58RT\",\"children\":[{\"id\":\"jDqMSdoW4_2mqhb-fqSRT\",\"children\":[{\"id\":\"hTvY3ESQvLOMeyBlPUZ8j\",\"children\":[{\"id\":\"HrZtvdADEQgJDJgtYcA-2\",\"children\":[{\"text\":\"32785\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"k3eqpncoShvROwdbrXw26\",\"children\":[{\"id\":\"poWtIx_BZhvcygJJXQ7x9\",\"children\":[{\"id\":\"rlC3YwjavR43vRikIKdQu\",\"children\":[{\"text\":\"Speech-to-text translation returned an error.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Lrj_p-K9DdVh7CLs5Uu33\",\"children\":[{\"id\":\"TqxG03tblevq4im8DNA85\",\"children\":[{\"id\":\"Tt8AOTUEaQanK3SixllwI\",\"children\":[{\"text\":\"Error with the backend of voice messaging and speech-to-text feature. Analyze logs, get the actual error code returned from the backend to the client, and ask backend personnel for assistance.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"Mt7hDO-85HiTofwFl8KX6\",\"children\":[{\"id\":\"9p-gGg1sWqfziTXgZH6gp\",\"children\":[{\"id\":\"P5WegAqFno7OJGe-xQKuR\",\"children\":[{\"id\":\"GTnVeTVmSEaIkW-ULZDuW\",\"children\":[{\"text\":\"32787\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"JTL0ArMFDuRpRuY5CMdrJ\",\"children\":[{\"id\":\"oICmmfn5Q4YJxMpRdh10b\",\"children\":[{\"id\":\"Tdl_vNdcB-CKG0YHla72q\",\"children\":[{\"text\":\"Speech-to-text conversion succeeded, but the text translation service was not activated.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"PjZLlBAO-GzzAlpRiZicj\",\"children\":[{\"id\":\"Z6WXBvbymW9AyGBUUORgm\",\"children\":[{\"id\":\"PVtLQ75sP0u4G40bMBqlU\",\"children\":[{\"text\":\"Activate the text translation service in the console.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"VuMR1Z6jplZMNuGTSRccO\",\"children\":[{\"id\":\"86GU2y2daUKENGMnKUR3X\",\"children\":[{\"id\":\"nSlw6lcm1879lyeJW55Gs\",\"children\":[{\"id\":\"J68QqQ4GQOTIczGkfPWwk\",\"children\":[{\"text\":\"32788\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"QuY8vYrYC0p1MvGPrZuqJ\",\"children\":[{\"id\":\"1c5A9OgXcw9AOe3OAvStv\",\"children\":[{\"id\":\"fLcVl-gDRO9NrKTs4dLLL\",\"children\":[{\"text\":\"Speech-to-text conversion succeeded, but the language parameter of the text translation service was invalid.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"PWjta9QKdgLQl4lWEktYm\",\"children\":[{\"id\":\"4bHUOIoOtUdq8y2_PueNy\",\"children\":[{\"id\":\"ItjNO7JhUgrLC15ky-3CT\",\"children\":[{\"text\":\"Check the parameter passed in.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[17,40,43],\"widthMode\":\"percentage\"},{\"id\":\"FhqyspdjhvuE2QXvtkOvQ\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code25\",\"type\":\"h4\"},{\"id\":\"ZYdriEkg37yShr9NnGy4u\",\"children\":[{\"id\":\"-ZurhdisW_5FhS8V_F-cu\",\"children\":[{\"text\":\"void TMGTestScene::OnEvent(ITMG_MAIN_EVENT_TYPE eventType,const char* data){\"}],\"type\":\"code-line\"},{\"id\":\"bFd2nDOF_QJPjhUB8cfl0\",\"children\":[{\"text\":\" switch (eventType) {\"}],\"type\":\"code-line\"},{\"id\":\"RteMp90eeNXdvWcmStXSH\",\"children\":[{\"text\":\" case ITMG_MAIN_EVENT_TYPE_ENTER_ROOM:\"}],\"type\":\"code-line\"},{\"id\":\"DCTf3jDuIXQK8t3SxSMQL\",\"children\":[{\"text\":\" {\"}],\"type\":\"code-line\"},{\"id\":\"qHdfUH1zoCIBkzyYypdEL\",\"children\":[{\"text\":\" // Process\"}],\"type\":\"code-line\"},{\"id\":\"dQIbMr0ppWfENQGC_4xKc\",\"children\":[{\"text\":\" break;\"}],\"type\":\"code-line\"},{\"id\":\"022R2_StCRuXJWeSUvckH\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"IUkRWkPqvy9cQnhNQC5x9\",\"children\":[{\"text\":\" ...\"}],\"type\":\"code-line\"},{\"id\":\"f6B0QnOnnP6pPH2O-drHl\",\"children\":[{\"text\":\" case ITMG_MAIN_EVNET_TYPE_PTT_SPEECH2TEXT_COMPLETE:\"}],\"type\":\"code-line\"},{\"id\":\"5ILF9H83OnoPef0KH3MRF\",\"children\":[{\"text\":\" {\"}],\"type\":\"code-line\"},{\"id\":\"zHwu19RaCNQVze_wTrRD0\",\"children\":[{\"text\":\" // Process\"}],\"type\":\"code-line\"},{\"id\":\"eqqe4QLke9bPVvwgSC9FF\",\"children\":[{\"text\":\" break;\"}],\"type\":\"code-line\"},{\"id\":\"eauUXSTKFT-pcsICcUoIy\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"eRddDpmOTptSh7f-R5wZ2\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"WWMMcsdr7Ts0LJmnqKPZ0\",\"children\":[{\"text\":\"}\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"cVGr89VMpZJTybSX-OGyb\",\"children\":[{\"text\":\"Voice Message Volume Level APIs\"}],\"nodeId\":\"voice-message-volume-level-apis\",\"type\":\"h2\"},{\"id\":\"c2PoZ1uUr_Gd4nI6vC-Tb\",\"children\":[{\"id\":\"HDUfYlUOZBYiNo5G8ezto\",\"children\":[{\"id\":\"AdtKn_pgMM-z_7D6BvL6A\",\"children\":[{\"id\":\"E25jGMGSL9C28jXJ31zoc\",\"children\":[{\"text\":\"API\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"_ppT0iLuz_K5Oxi-24dfG\",\"children\":[{\"id\":\"cErH_JRaRsrVXM-k6h5dw\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"TVR9h0uNxTd94JdG7dWRV\",\"children\":[{\"id\":\"Z6_Il8c2b7NWlFlmwq0-z\",\"children\":[{\"id\":\"phR2Ctx3AyyZyjcluDOBF\",\"children\":[{\"id\":\"MQ1ctakrVUOpAQ42RnWM_\",\"children\":[{\"text\":\"GetMicLevel\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"zqY8MADdUPJU9INjaq-TL\",\"children\":[{\"id\":\"QwVt9hKM5llSbbok-ca9H\",\"children\":[{\"id\":\"N08BdC_4fYbRKhKf2_-p9\",\"children\":[{\"text\":\"Gets real-time mic volume level\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"gK1C0C34UbQUeT2sCTR_v\",\"children\":[{\"id\":\"nInuP_HlpHkzP-v3lwFbL\",\"children\":[{\"id\":\"jfX1_Ip7a9o-nn3XH6teM\",\"children\":[{\"id\":\"gso_jDkTBpUfo5_AN0Yvv\",\"children\":[{\"text\":\"SetMicVolume\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"UIrzSa_Y99mx7b1QlRdqR\",\"children\":[{\"id\":\"zNnQqOmNbxmlqI5JVOlSy\",\"children\":[{\"id\":\"4AQvZESNsHpmdfqGYVQdu\",\"children\":[{\"text\":\"Sets recording volume level\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"FcdArOxogRROxBElIX6JD\",\"children\":[{\"id\":\"3K5gtH-FtVv5MG_ydcZJp\",\"children\":[{\"id\":\"L1VMXxeZ-M62GA7gUgv23\",\"children\":[{\"id\":\"ejozoCdwXU3QPBwd3iA6z\",\"children\":[{\"text\":\"GetMicVolume\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"2oGsg2WjrbQ68D9pqYcFl\",\"children\":[{\"id\":\"tcmeQaSbrt7RiVfrIDanO\",\"children\":[{\"id\":\"GZJ5lsFWdNtnt_YymFGXo\",\"children\":[{\"text\":\"Gets recording volume level\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"xxZyRzIESlpOevM9AZPTM\",\"children\":[{\"id\":\"HOzPeUW2-GiX63ka_GKhU\",\"children\":[{\"id\":\"oE6iESXZyHB-Q9W5GalfR\",\"children\":[{\"id\":\"LzMylG_toZFwTxrceYOga\",\"children\":[{\"text\":\"GetSpeakerLevel\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"CKgV0JJKSbrVgidmhFp3f\",\"children\":[{\"id\":\"hv1rzlVtJsaxBd5V8a4Lh\",\"children\":[{\"id\":\"SHo-SPJ_TPwyYX0s7xvhK\",\"children\":[{\"text\":\"Gets real-time speaker volume\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"mf1C28fmSXZITHxMDvCHJ\",\"children\":[{\"id\":\"9DbwVRGU2EtLg1VnXfAu-\",\"children\":[{\"id\":\"8Sdk-fzng85X-0XjE9WRW\",\"children\":[{\"id\":\"L-sSMrzbmGkhTjeIrJNrx\",\"children\":[{\"text\":\"SetSpeakerVolume\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"oo4Y1QPId_TlN9zWXrYP8\",\"children\":[{\"id\":\"3mXaCWKrw7rPHCCWVqn3y\",\"children\":[{\"id\":\"oDRroFMzAGqUqKYiid2Nu\",\"children\":[{\"text\":\"Sets playback volume level\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"u78Fz5vCgtdAU5rcNn3Cj\",\"children\":[{\"id\":\"uQ92CFRNa3E0qda3tSbCK\",\"children\":[{\"id\":\"9l5DbI9zbr-zF5rQ0kfeL\",\"children\":[{\"id\":\"5jPCYpSziT2sWKnj4uuih\",\"children\":[{\"text\":\"GetSpeakerVolume\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"h5GORFsHJIMNOrTSqkAsS\",\"children\":[{\"id\":\"_19p1oMkLWLuCV3wIwGPk\",\"children\":[{\"id\":\"j2L9cP3GwJWcIBDPHrCwA\",\"children\":[{\"text\":\"Gets playback volume level\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[40,60],\"widthMode\":\"percentage\"},{\"id\":\"ZBEV4v_FzPrmcGJa2FhPI\",\"children\":[{\"text\":\"Getting the real-time mic volume of voice message\"}],\"nodeId\":\"getting-the-real-time-mic-volume-of-voice-message\",\"type\":\"h3\"},{\"id\":\"eL82zLR0hM1KBHxJy_7vk\",\"children\":[{\"text\":\"This API is used to get the real-time mic volume. An int-type value will be returned. Value range: 0-200.\"}],\"type\":\"p\"},{\"id\":\"upWaYAJeSACCE3SyRCf8S\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype23\",\"type\":\"h4\"},{\"id\":\"bz2p_HdinGipSM3PVAvcQ\",\"children\":[{\"id\":\"Cm-cV54eVXeGtu9fxKOME\",\"children\":[{\"text\":\"ITMGPTT virtual int GetMicLevel()\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"FaW6PaQHFsta7um8NUZrT\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code26\",\"type\":\"h4\"},{\"id\":\"k5FpnWP8whfDzXz17etLW\",\"children\":[{\"id\":\"uWt7ea8pV5o5Q45M_jSv7\",\"children\":[{\"text\":\"ITMGContext.GetInstance(this).GetPTT().GetMicLevel();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"rVCXaLwl5b7ktP0VklLLh\",\"children\":[{\"text\":\"Setting the recording volume of voice message\"}],\"nodeId\":\"setting-the-recording-volume-of-voice-message\",\"type\":\"h3\"},{\"id\":\"0XlxlkbxNDbaDqKIFBhYr\",\"children\":[{\"text\":\"This API is used to set the recording volume of voice message. Value range: 0-200.\"}],\"type\":\"p\"},{\"id\":\"eLxvYl9zRQf2zoq26aSpk\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype24\",\"type\":\"h4\"},{\"id\":\"9SX7ZWly1xMpgpMb1zBF9\",\"children\":[{\"id\":\"N6a3oSK0ZjVQs8yS2-amn\",\"children\":[{\"text\":\"ITMGPTT virtual int SetMicVolume(int vol)\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"CidBT9Cu2H258heaAmhkx\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code27\",\"type\":\"h4\"},{\"id\":\"RfgnAV4IL3zTdGYk9bHjM\",\"children\":[{\"id\":\"8F10Y2Aq88Xvs5lA2KOEh\",\"children\":[{\"text\":\"ITMGContextGetInstance()->GetPTT()->SetMicVolume(100);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"7EAoOca2J83UNF7KZ0cc9\",\"children\":[{\"text\":\"Getting the recording volume of voice message\"}],\"nodeId\":\"getting-the-recording-volume-of-voice-message\",\"type\":\"h3\"},{\"id\":\"maeb2sDMz95XXZlCKDdhV\",\"children\":[{\"text\":\"This API is used to get the recording volume of voice message. An int-type value will be returned. Value range: 0-200.\"}],\"type\":\"p\"},{\"id\":\"1WoBAfdhmFdN9M-Q4_LhQ\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype25\",\"type\":\"h4\"},{\"id\":\"SxXPPVE68Q4rbZPaM2RIR\",\"children\":[{\"id\":\"t3J9GRtK53u5rqev_2jB-\",\"children\":[{\"text\":\"ITMGPTT virtual int GetMicVolume()\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"IPYBfiDe4Ita9ccFns2L4\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code28\",\"type\":\"h4\"},{\"id\":\"SozdyZZSPs8shqWN4AVPU\",\"children\":[{\"id\":\"zk48UUsLOUiW4Iav6Zfcs\",\"children\":[{\"text\":\"ITMGContextGetInstance()->GetPTT()->GetMicVolume();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"O_fjodR8sjRQXQuyzFHIO\",\"children\":[{\"text\":\"Getting the real-time speaker volume of voice message\"}],\"nodeId\":\"getting-the-real-time-speaker-volume-of-voice-message\",\"type\":\"h3\"},{\"id\":\"RI9FfLOcQkhcWxhQgUlSQ\",\"children\":[{\"text\":\"This API is used to get the real-time speaker volume. An int-type value will be returned. Value range: 0-200.\"}],\"type\":\"p\"},{\"id\":\"88Hqfa1-w7jDxwtRPuDzX\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype26\",\"type\":\"h4\"},{\"id\":\"zIgMLa0epixR6TSWLrzPt\",\"children\":[{\"id\":\"48NnY6qsyPYuRE-HXXwve\",\"children\":[{\"text\":\"ITMGPTT virtual int GetSpeakerLevel()\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"v26rPJJX7DfBmb3JXFr_K\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code29\",\"type\":\"h4\"},{\"id\":\"rHmP5aULUWGsmPxr0odAf\",\"children\":[{\"id\":\"HdKC1tDEN6bvjQgxnUnhw\",\"children\":[{\"text\":\"ITMGContextGetInstance()->GetPTT()->GetSpeakerLevel();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"fWC54fBp87fhQzxpKoj8v\",\"children\":[{\"text\":\"Setting the playback volume of voice message\"}],\"nodeId\":\"setting-the-playback-volume-of-voice-message\",\"type\":\"h3\"},{\"id\":\"3_0qoYm3gTEvn2B7pmQaA\",\"children\":[{\"text\":\"This API is used to set the playback volume of voice message. Value range: 0-200.\"}],\"type\":\"p\"},{\"id\":\"wTWzq0n1JU6aYiq2jrS-m\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype27\",\"type\":\"h4\"},{\"id\":\"7CrWATYWlYqT7il4QhF-q\",\"children\":[{\"id\":\"06TUjR74_GKCoXR4EJppa\",\"children\":[{\"text\":\"ITMGPTT virtual int SetSpeakerVolume(int vol)\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"cm0HTUZSru6vXJ37Tl8r0\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code30\",\"type\":\"h4\"},{\"id\":\"uRlFjgPfgbM9KnHsuqaMr\",\"children\":[{\"id\":\"lDi1Phn77pXxXo1Tp4gBx\",\"children\":[{\"text\":\"ITMGContextGetInstance()->GetPTT()->SetSpeakerVolume(100);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"XiOM3q7cDaUa5OwaDQ_zt\",\"children\":[{\"text\":\"Getting the playback volume of voice message\"}],\"nodeId\":\"getting-the-playback-volume-of-voice-message\",\"type\":\"h3\"},{\"id\":\"dFyiwkd5M01i8Z1fvZQrl\",\"children\":[{\"text\":\"This API is used to get the playback volume of voice message. An int-type value will be returned. Value range: 0-200.\"}],\"type\":\"p\"},{\"id\":\"irhTvnC3X5IGpIq4yuRLR\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype28\",\"type\":\"h4\"},{\"id\":\"2ccMImWr21PsaIHZdvp5N\",\"children\":[{\"id\":\"zctIc7d_BFy9u10bo0YmP\",\"children\":[{\"text\":\"ITMGPTT virtual int GetSpeakerVolume()\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"vJkmGmS1M5TflDY6NX6hj\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code31\",\"type\":\"h4\"},{\"id\":\"UdK-HGaZP8cCmhrK8ZCJk\",\"children\":[{\"id\":\"F6MCz33-M6M45IgH6_G5c\",\"children\":[{\"text\":\"ITMGContextGetInstance()->GetPTT()->GetSpeakerVolume();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"5OAjb5ymBFfDnwJqYxqor\",\"children\":[{\"text\":\"Advanced APIs\"}],\"nodeId\":\"advanced-apis\",\"type\":\"h2\"},{\"id\":\"h4j2o1bi-y_Dqqo7CfkOK\",\"children\":[{\"text\":\"Getting version number\"}],\"nodeId\":\"getting-version-number\",\"type\":\"h3\"},{\"id\":\"ym-fmnK8zUOnE0ysDqq91\",\"children\":[{\"text\":\"This API is used to get the SDK version number for SDK usage analysis.\"}],\"type\":\"p\"},{\"id\":\"Iu26Kf4BB-GCr1DxLtBm4\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype29\",\"type\":\"h4\"},{\"id\":\"epgQv_wxi9e4eMcgIjmXc\",\"children\":[{\"id\":\"-nPWGkbl6HQUEfFKmVfTM\",\"children\":[{\"text\":\"ITMGContext virtual const char* GetSDKVersion()\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"T7UOYR97uyINiOl32ncdE\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code32\",\"type\":\"h4\"},{\"id\":\"GKH25l_BFR7KRQuiiygyi\",\"children\":[{\"id\":\"IX6z5XegJZBy7nVEYEhyj\",\"children\":[{\"text\":\"ITMGContextGetInstance()->GetSDKVersion();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"lA4qle30ZNaAdQngupmID\",\"children\":[{\"text\":\"Setting log printing level\"}],\"nodeId\":\"setting-log-printing-level\",\"type\":\"h3\"},{\"id\":\"ncswjo6BYKjrucw-i0e3n\",\"children\":[{\"text\":\"This API is used to set the level of logs to be printed, and needs to be called before the initialization. It is recommended to keep the default level.\"}],\"type\":\"p\"},{\"id\":\"dpptrp0INirhu_GileK01\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype30\",\"type\":\"h4\"},{\"id\":\"y7GLJ3oJhLK0K7Ek_bIdB\",\"children\":[{\"id\":\"6mWMiGPiLFa0n9sujQsQj\",\"children\":[{\"text\":\"ITMGContext int SetLogLevel(ITMG_LOG_LEVEL levelWrite, ITMG_LOG_LEVEL levelPrint)\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"iTO1_rP8efbDNBG1-a4TB\",\"children\":[{\"text\":\"Parameter description\"}],\"nodeId\":\"parameter-description\",\"type\":\"h4\"},{\"id\":\"E6YnKcgoQYf_YdUQEi-Vb\",\"children\":[{\"id\":\"XG0piNibp22uiKQI243KJ\",\"children\":[{\"id\":\"wC1uKPX2U5tv68xY-M8SF\",\"children\":[{\"id\":\"lES7eK5d-kK4NHtKYQKcD\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"qcgS1m6QnA-bG1GzLL7zz\",\"children\":[{\"id\":\"YMSRTgoziA6VF9--mU9bf\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"iXjgRKS_1eO_ULC1bOhlg\",\"children\":[{\"id\":\"QwF-NORTmsLbq1wp61U5k\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"ABA4K73-qOLOCXJGTpFM7\",\"children\":[{\"id\":\"9J2F4u9T8FBNs5vwXOlzr\",\"children\":[{\"id\":\"yFkVVLi7woStpVnH5LgB-\",\"children\":[{\"id\":\"DE1ubdwWfrYuwZaOrPrKl\",\"children\":[{\"text\":\"levelWrite\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"_DzNkU9ic05Lddr34UQUI\",\"children\":[{\"id\":\"iNJYYqELqOae4KRTO6UP0\",\"children\":[{\"id\":\"13tvBd1xUjewBo6wTPOnC\",\"children\":[{\"text\":\"ITMG_LOG_LEVEL\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"SsswipwFo4Ortr7zQ6Ko-\",\"children\":[{\"id\":\"m7rK872ltEr5AmcTvAY4w\",\"children\":[{\"id\":\"PfcZLOfqiwjmlP9rhE-KN\",\"children\":[{\"text\":\"Sets the level of logs to be written. \"},{\"code\":1,\"text\":\"TMG_LOG_LEVEL_NONE\"},{\"text\":\" indicates not to write. Default value: TMG_LOG_LEVEL_INFO\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"zXEAaybC_I-nIidRHExfl\",\"children\":[{\"id\":\"rCJZFuO7j_r-h5NxyRiwt\",\"children\":[{\"id\":\"wH_MzpBS2dF4hR4HzbN9R\",\"children\":[{\"id\":\"82z5VzV5a67zvYYnmGc6G\",\"children\":[{\"text\":\"levelPrint\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"356RTWMW4usnp78Z2oAgE\",\"children\":[{\"id\":\"5ERrA_kvqXaeocpMRYRf2\",\"children\":[{\"id\":\"GY96XJZHJSxiOzTNB-8iF\",\"children\":[{\"text\":\"ITMG_LOG_LEVEL\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"TD_Dmz0v8pDzXhiwz1NAI\",\"children\":[{\"id\":\"Tx6OtCvnOCz1SdX0l5hAq\",\"children\":[{\"id\":\"pczcVUaPH0FCXOFu-duyM\",\"children\":[{\"text\":\"Sets the level of logs to be printed. \"},{\"code\":1,\"text\":\"TMG_LOG_LEVEL_NONE\"},{\"text\":\" indicates not to print. Default value: TMG_LOG_LEVEL_ERROR\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[12,18,70],\"widthMode\":\"percentage\"},{\"id\":\"f5zAwnA3A_cxxH_GCdE2C\",\"children\":[{\"code\":1,\"text\":\"ITMG_LOG_LEVEL\"},{\"text\":\" description:\"}],\"type\":\"p\"},{\"id\":\"MV1M8DD0EYMio6ckA-gJU\",\"children\":[{\"id\":\"Q7IuKyJutdFqKoQFBJKHr\",\"children\":[{\"id\":\"gI1BuYbcebtV0RMiZLeuD\",\"children\":[{\"id\":\"c-1TyCzY8qVwCPa-kYF-8\",\"children\":[{\"text\":\"ITMG_LOG_LEVEL\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"58KI5sCza43oweDpgxmep\",\"children\":[{\"id\":\"KpICg5kLscrqPtxnlklOy\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"O4658Aa-ThwREH-rBG05w\",\"children\":[{\"id\":\"LTCWrvFZhGyE_V10_Q0d0\",\"children\":[{\"id\":\"KGvC-EfYcgjSyjGBPNyBM\",\"children\":[{\"id\":\"V732Ka7jguD3RWJsgEvID\",\"children\":[{\"text\":\"TMG_LOG_LEVEL_NONE\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"el4d_69J4glDwKhwSmzAI\",\"children\":[{\"id\":\"gQr0RZI3ErXepQsHxEUea\",\"children\":[{\"id\":\"teatAqmzgIYoM3KxQGANG\",\"children\":[{\"text\":\"Does not print logs\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"P42H5MT_OcRUH_UA9w6qJ\",\"children\":[{\"id\":\"F_T6aHH-KWuWURuKSmwi5\",\"children\":[{\"id\":\"OUoSewWiuVysPIJYQrkRM\",\"children\":[{\"id\":\"7liNPdV7hCPF2cofvzIzk\",\"children\":[{\"text\":\"TMG_LOG_LEVEL_ERROR\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"J0PYKGIVtYp1-pXCiH22s\",\"children\":[{\"id\":\"GoEcTFKo7GS5K7YXW5TXO\",\"children\":[{\"id\":\"_9Gr7_tD9Ednp8Xn5L_E3\",\"children\":[{\"text\":\"Prints error logs (default)\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"VMYcwR7ToFbBXbLmvseC7\",\"children\":[{\"id\":\"c6cT4xoBF666KuE-Rl686\",\"children\":[{\"id\":\"tCoaacxQdCCMOHZZp2Jhi\",\"children\":[{\"id\":\"FX0SnyW53Sjl7SYY1g5H2\",\"children\":[{\"text\":\"TMG_LOG_LEVEL_INFO\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"hAfAJcIPzW_2h0aomTdcv\",\"children\":[{\"id\":\"l3BXbBpGTKBpAqQLQUdw5\",\"children\":[{\"id\":\"XtIUw51xV-S1INXTWuOvf\",\"children\":[{\"text\":\"Prints info logs\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"5UQqVBA0nFjRaG-5wM31A\",\"children\":[{\"id\":\"NRqjw_obFlEpEuTx5LIMB\",\"children\":[{\"id\":\"7CHI6W3x56PG0eje94vpe\",\"children\":[{\"id\":\"1vFeiKNAOK6X2RiqhXYhR\",\"children\":[{\"text\":\"TMG_LOG_LEVEL_DEBUG\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"-kI6BJGHKEN3GIb_LiCpc\",\"children\":[{\"id\":\"hQxiYWoe66NrA49zUtxUv\",\"children\":[{\"id\":\"GwXmCN2KG6ir1Wa8BPv8R\",\"children\":[{\"text\":\"Prints debug logs\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"GXzp76H0LKGWPnC2nIFXi\",\"children\":[{\"id\":\"Bz3BNNaDm-Yu6nSILPtu3\",\"children\":[{\"id\":\"WJ1F22aYA-GGAYUqg3qrS\",\"children\":[{\"id\":\"ua_11qACq0Zhv4J0vkJD5\",\"children\":[{\"text\":\"TMG_LOG_LEVEL_VERBOSE\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"VX-1PmsSQCI1Db8m0E1oa\",\"children\":[{\"id\":\"Z7lZrCGA8OJJINOWP0sNW\",\"children\":[{\"id\":\"m-EGA_S1fSlzAiILo2ay4\",\"children\":[{\"text\":\"Prints verbose logs\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[40,60],\"widthMode\":\"percentage\"},{\"id\":\"aJWOLzwuTgGSdw3Fpe3JF\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code33\",\"type\":\"h4\"},{\"id\":\"UFAZ4_eM19oYlLGexw28p\",\"children\":[{\"id\":\"w_udXKz3qnSWdKHgMBoDQ\",\"children\":[{\"text\":\"ITMGContextGetInstance()->SetLogLevel(TMG_LOG_LEVEL_INFO,TMG_LOG_LEVEL_INFO);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"v20u4L9vca0F2eYse_bRP\",\"children\":[{\"text\":\"Setting the log printing path\"}],\"nodeId\":\"setting-the-log-printing-path\",\"type\":\"h3\"},{\"id\":\"IVJb7541xG7l3A8vHq761\",\"children\":[{\"text\":\"This API is used to set the log printing path. The default path is as follows. It needs to be called before Init.\"}],\"type\":\"p\"},{\"id\":\"YISC3puxDpBEOFiqzI9qo\",\"children\":[{\"id\":\"biVpaQJTNcONM4gWwuEf3\",\"children\":[{\"id\":\"QHDUkONXQbaZKW4jKZXQS\",\"children\":[{\"id\":\"mjoHRl7tClAWHFpyhwk_T\",\"children\":[{\"text\":\"OS\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"KHDyTKBK7lWFEgpAlicIi\",\"children\":[{\"id\":\"Fc1HYOv_BdNlSsOFDomZO\",\"children\":[{\"text\":\"Path\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"_lO17gSMrotnOVVX8Gp3b\",\"children\":[{\"id\":\"9KVaKHq3ivXiFknRXtELN\",\"children\":[{\"id\":\"1TlJL3h-YrwjJVVimhVE3\",\"children\":[{\"id\":\"NNxXn3ocvDXGXfRoa0PYF\",\"children\":[{\"text\":\"Windows\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"6Ys4Cp66CB9lXMw5mfvd8\",\"children\":[{\"id\":\"0wTWKiCI2U4rR6vZ_VbcR\",\"children\":[{\"id\":\"Xe9a4gnQXnsUEokPyRZ-F\",\"children\":[{\"text\":\"%appdata%\\\\Tencent\\\\GME\\\\ProcessName\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"0KKKADq8L8ghxAkCFC06D\",\"children\":[{\"id\":\"X-WLrS9puIzPTXnTVxwqA\",\"children\":[{\"id\":\"QujB9MldEqy4kquTSoOxi\",\"children\":[{\"id\":\"Pc__U95kWNo8I88lXVDy9\",\"children\":[{\"text\":\"iOS\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"PwebY2aV2YNjjsh0i-8mq\",\"children\":[{\"id\":\"hb56vBz_87nsD4bBvyqqR\",\"children\":[{\"id\":\"AUmOLBQbOe4UTRyCUAKKm\",\"children\":[{\"text\":\"Application/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/Documents\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"tEmte2dFPGz91z9OVTJ45\",\"children\":[{\"id\":\"msc35dJARG5j-HqPs6AYp\",\"children\":[{\"id\":\"MItHZa2rONo5ddjVmZDZ0\",\"children\":[{\"id\":\"LySDurI7JurbjGMqdmowi\",\"children\":[{\"text\":\"Android\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"F9cNo-6YZieJIj5Bd7l7f\",\"children\":[{\"id\":\"3o9-l_8LsIPszc0eWqGIP\",\"children\":[{\"id\":\"O3VwBEI9_Y0gUVYYvG5t-\",\"children\":[{\"text\":\"/sdcard/Android/data/xxx.xxx.xxx/files\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"mqHDtGg-uWyrDz5V1d9Ay\",\"children\":[{\"id\":\"HurMkJgb-zaao733Ivgtf\",\"children\":[{\"id\":\"T2cmp9tqkHM1NNkdFZZem\",\"children\":[{\"id\":\"XoTkg--nClX4rgyNfnCnp\",\"children\":[{\"text\":\"Mac\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"i3mJ5HdgU5aeZhCbFaDNB\",\"children\":[{\"id\":\"w0nbqMSwrWRyxOtQPNiPs\",\"children\":[{\"id\":\"d4oytglzSEbwgTWMVQCFD\",\"children\":[{\"text\":\"/Users/username/Library/Containers/xxx.xxx.xxx/Data/Documents\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[16,84],\"widthMode\":\"percentage\"},{\"id\":\"BGC6sRWCfM1OTREEvaHeG\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype31\",\"type\":\"h4\"},{\"id\":\"GILxOmfklX6vZnPoXtaN2\",\"children\":[{\"id\":\"Qhu-Bc1aOEnfH9E5N7xML\",\"children\":[{\"text\":\"ITMGContext virtual int SetLogPath(const char* logDir) \"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"OxsiGIQbxzeisPO-i9biS\",\"children\":[{\"id\":\"oAtSEgbkxRoceiQ3Algni\",\"children\":[{\"id\":\"MtWFX7QO-f44yfq95ckZ9\",\"children\":[{\"id\":\"cq7p9NaJHWEbazUVA0UsZ\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"_r7rh47WuOaQHXs93Xc9T\",\"children\":[{\"id\":\"1g_u9Dy2Fqr7QjuCu1ldZ\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"NYBiszO9vUbvd-Kx7ByRO\",\"children\":[{\"id\":\"xwe8zjCWAxQZcuUroasMs\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"7mnf-Q2lZPLhlKSwhc1MU\",\"children\":[{\"id\":\"jIrORAOaOgckmSw-JjGm7\",\"children\":[{\"id\":\"3kmDLPUVx01OEOTae6kSJ\",\"children\":[{\"id\":\"pJ_TIeP3N0D4UJtM5gXLT\",\"children\":[{\"text\":\"logDir\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"q7V8xxGKeOh1RVk7aZQnz\",\"children\":[{\"id\":\"qqnd0DU2-v7K16xTFIbLM\",\"children\":[{\"id\":\"eW0M7_NblCmAGwZ01ShMp\",\"children\":[{\"text\":\"const char*\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"CKpxKlORHTdSkXUS1dODP\",\"children\":[{\"id\":\"9oQ3m_8Wqu6uICOmX1-aD\",\"children\":[{\"id\":\"k2s70wbd2Abadcf5lakO8\",\"children\":[{\"text\":\"Path\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[32,33,35],\"widthMode\":\"percentage\"},{\"id\":\"2RJjqtz4sXEN9RkV3E5R-\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code34\",\"type\":\"h4\"},{\"id\":\"qEVioii97vxdfCCStwC4U\",\"children\":[{\"id\":\"N13CGDQsET_NoJmKzD28l\",\"children\":[{\"text\":\"cosnt char* logDir = \\\"\\\"// Set a path by yourself\"}],\"type\":\"code-line\"},{\"id\":\"Y7Oee1bEhc6LQ4RL0I5G4\",\"children\":[{\"text\":\"ITMGContext* context = ITMGContextGetInstance();\"}],\"type\":\"code-line\"},{\"id\":\"cPZBGAdT0qYfB6U9AKnVh\",\"children\":[{\"text\":\"context->SetLogPath(logDir);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"3D82TkLKHjuQi_sdSfY1-\",\"children\":[{\"text\":\"Callback Messages\"}],\"nodeId\":\"callback-messages\",\"type\":\"h2\"},{\"type\":\"table\",\"rowHeader\":true,\"children\":[{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"Message\"}],\"id\":\"X1QakxZEdpTIkDcRO_W1x\"}],\"id\":\"lz21Jhw9IBDc0n4LbxwvR\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"Description\"}],\"id\":\"bKdBlnmPxLpV-5729keE_\"}],\"id\":\"hqWUQkwnrXfTOW7M7F-O4\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"Parameter\"}],\"id\":\"Ye2dmP9bqoSqyZUw63TyV\"}],\"id\":\"_sSwd4GSfeNnIAQ7KDb5_\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"Sample\"}],\"id\":\"Z43NrayC1r9WjhYjBNwWR\"}],\"id\":\"65p1jPHK7j95mTXPs9xp7\"}],\"id\":\"uBZELgNtbWrTgxwhe_oYT\"},{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_ENTER_ROOM\"}],\"id\":\"tu1rE0CnXQOx_M1ZDEVUo\"}],\"id\":\"L_OFXABHFgHe1yIKE3eqJ\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"A member entered the audio room\"}],\"id\":\"9IW8M7Q8At94IPdCJGzk3\"}],\"id\":\"-UwJSodUm29OR1rApTp4F\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"result; error_info\"}],\"id\":\"xtzAFbX0XtzAi6YG_WBcT\"}],\"id\":\"JZhJ-qV7CZhXPhhyXb0yK\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"{\\\"error_info\\\":\\\"\\\",\\\"result\\\":0}\"}],\"id\":\"GJbR-3MEDhx8dbkl8zyPP\"}],\"id\":\"7ZViYr3FumxBEH4erSIhw\"}],\"id\":\"4U0Uh_7Leh6hSha94BVzM\"},{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_EXIT_ROOM\"}],\"id\":\"A4GkmSCEyriynDcCAsCvn\"}],\"id\":\"UGGk9cWV-8LSYwXtUf2Z0\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"A member exited the audio room\"}],\"id\":\"bkSi0AHrjrzvxHjIxuod9\"}],\"id\":\"TX-A3TujzoT3UmVK75lxt\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"result; error_info\"}],\"id\":\"rGqLoC4cZXNCWdOSKJdqP\"}],\"id\":\"di5zeNYH0CUZYJhijYjwI\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"{\\\"error_info\\\":\\\"\\\",\\\"result\\\":0}\"}],\"id\":\"431iFw7-FB8ubBpaNAPjT\"}],\"id\":\"60-hUJixDCLVMIDoToMyz\"}],\"id\":\"nNKn4kmdToDjlWvqn71LR\"},{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_ROOM_DISCONNECT\"}],\"id\":\"JFBTeML69Uarxk6XdDv9Y\"}],\"id\":\"fejXRhDI3PZVWjvpxtF_Y\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"The room was disconnected for network or other reasons\"}],\"id\":\"NFvWxrIIKxRabXPUnmEqI\"}],\"id\":\"iXhbpHeuifZ-gEIikxQuC\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"result; error_info\"}],\"id\":\"GEpHZ9xTQTDY6SMd1DYEn\"}],\"id\":\"WfLFHNMh-kX2xSVW3KmBw\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"{\\\"error_info\\\":\\\"waiting timeout, please check your network\\\",\\\"result\\\":0}\"}],\"id\":\"rVKdxVJqp91vfM2maeQhI\"}],\"id\":\"3ES7zgqHM05IoT1A1drFh\"}],\"id\":\"iVviu3UcDyXP36uDHcDMD\"},{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"ITMG_MAIN_EVNET_TYPE_USER_UPDATE\"}],\"id\":\"6C9dpROz1u6eXAmG3Qh01\"}],\"id\":\"3L3pwGWrIVv8G524l52iz\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"Room members were updated\"}],\"id\":\"FIJeK3PnfLnxEmxlZlNEz\"}],\"id\":\"7-xDAzUaIo4iOuzQsz-37\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"user_list; event_id\"}],\"id\":\"fly0inqjC4hkThcKY6Aqq\"}],\"id\":\"JxQ5wUVxR6Z4pywjwPsDH\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"{\\\"event_id\\\":1,\\\"user_list\\\":[\\\"0\\\"]}\"}],\"id\":\"6D5la7BZxPxOhjl2Xtk6A\"}],\"id\":\"K8Si98moseu8M3pVBsecW\"}],\"id\":\"2vGVH-QXrvhFmnDunSFbS\"},{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_RECONNECT_START\"}],\"id\":\"McYB0lBrDtF0rN1OtnyKv\"}],\"id\":\"mAPs4K3PSXmdgmuES1b6f\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"The reconnection to the room started\"}],\"id\":\"Z8koxSuRQwv9tospR1V8b\"}],\"id\":\"G6FvOdTg6ZwuTe5RK4YiI\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"result; error_info\"}],\"id\":\"HUfb0NcgqAbhVrzuNl8oZ\"}],\"id\":\"Ig3LSA9_AdYFnrMlKj_Av\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"{\\\"error_info\\\":\\\"\\\",\\\"result\\\":0}\"}],\"id\":\"4086k1FD8k9xq0HXDOmww\"}],\"id\":\"KybaWq3kICubYbQFgTt17\"}],\"id\":\"21bGm26cR6BYkPX81wMrJ\"},{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_RECONNECT_SUCCESS\"}],\"id\":\"GE4AjNESc5JZZJLIIEg4l\"}],\"id\":\"pII0QsFeOPP8JVFQCAcLN\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"The reconnection to the room succeeded\"}],\"id\":\"yvMqs4Dh-BpXFZEHCxiBY\"}],\"id\":\"MxlVc_6RXuYCz7skLULJd\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"result; error_info\"}],\"id\":\"52D5ArsXIBgFQVhhy36bl\"}],\"id\":\"8uQhKggZCBP6G5gI8EQ9D\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"{\\\"error_info\\\":\\\"\\\",\\\"result\\\":0}\"}],\"id\":\"F29FEWKQ4WbDPgE7cDN9H\"}],\"id\":\"GygvTaXAnZgdkmhZnyZbY\"}],\"id\":\"pjCFeHN4wm3K54ug_9nFE\"},{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_SWITCH_ROOM\"}],\"id\":\"fY_3u4TvX27aMu4LaKSud\"}],\"id\":\"LWvlDlDxxIlx-YRTtNQ2q\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"The room was quickly switched\"}],\"id\":\"oWZUAz9c8bpjxFHP2qo48\"}],\"id\":\"VCgVl3uvo0FI4SWyApgfs\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"result; error_info\"}],\"id\":\"5t8gYx7JOrqtUQNuaGsW7\"}],\"id\":\"qrisyGtLKTA4QgZhN4RVJ\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"{\\\"error_info\\\":\\\"\\\",\\\"result\\\":0}\"}],\"id\":\"5sXu3VUluD540QB9KZ6iA\"}],\"id\":\"hk7KUXdWI-ibpRMDC-rh7\"}],\"id\":\"Pi54P7bApG4lvvavNwdgP\"},{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_CHANGE_ROOM_TYPE\"}],\"id\":\"dDwOZzY1am-mVDPHiKl3E\"}],\"id\":\"lupVUC6EqKj873A83YJo1\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"The room status was changed\"}],\"id\":\"bnHdHNsR0SGqsEebKwNNU\"}],\"id\":\"5eL9tdX0M9s59D8RW_4zz\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"result; error_info; sub_event_type; new_room_type\"}],\"id\":\"4DwZ48IRSU9Cn0M6jV1H4\"}],\"id\":\"ibZz1CDp4SLW6cNIPnMFl\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"{\\\"error_info\\\":\\\"\\\",\\\"new_room_type\\\":0,\\\"result\\\":0}\"}],\"id\":\"WN-FK_aSCEutxl7V_3NZJ\"}],\"id\":\"yYSROeW9pSkbvSIsEFgFW\"}],\"id\":\"C8scAucuGUg8jhaK8W8LU\"},{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_ROOM_SHARING_START\"}],\"id\":\"yssaLcT6px_auOi63Ld1c\"}],\"id\":\"xSW0hRgrrhb1vUDlm0gWE\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"Cross-room mic connect started\"}],\"id\":\"_eRWRbm7UqZ6nCU7SNkBM\"}],\"id\":\"QClw8DJuzv0YclTiCbB33\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"result;\"}],\"id\":\"9Q_FAvZ5dkVYpF1ip3JC-\"}],\"id\":\"yFkO-gsW-Mr6DdqSGGNEG\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"{\\\"result\\\":0}\"}],\"id\":\"F5xF2iKjHOsrCCr6j3GGk\"}],\"id\":\"qlo6F-R4GMtuq7w2URm4v\"}],\"id\":\"XVNnRnqDuCbBdVlpJUo3N\"},{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_ROOM_SHARING_STOP\"}],\"id\":\"wuqQvZ1SOqDhl3JmXKcg9\"}],\"id\":\"GAsbGd3ij3Zic61dUKc4K\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"Cross-room mic connect stopped\"}],\"id\":\"lWCL0JGyx7HHKCQQY1PFN\"}],\"id\":\"vKSEX1j3zNY9HA6qgGLW5\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"result;\"}],\"id\":\"VjcdMk8VTg9IiecSK_lrR\"}],\"id\":\"ItK8E5h7zGS9J0gU87Vv9\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"{\\\"result\\\":0}\"}],\"id\":\"5CGUWgHaYFr7AhhbKXXlu\"}],\"id\":\"cx63jbc4JUZbme_Zk5vCg\"}],\"id\":\"zHZ4ns-WkK2iVTtiLLmnR\"},{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_SPEAKER_DEFAULT_DEVICE_CHANGED\"}],\"id\":\"ZDopV_IzudeWNQq6DvNrm\"}],\"id\":\"XUlXnxAbJT_SWVW27GmvE\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"The default speaker device was changed\"}],\"id\":\"gdhM8e2NXfaKWwr7avx5Q\"}],\"id\":\"hdeTDBlem8E_P99C0oEzt\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"result; error_info\"}],\"id\":\"F8hiqq05fNDoR-r9ktd7r\"}],\"id\":\"CLrPV6r1SiDWERIv2QjlA\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"{\\\"deviceID\\\":\\\"{0.0.0.00000000}.{a4f1e8be-49fa-43e2-b8cf-dd00542b47ae}\\\",\\\"deviceName\\\":\\\"Speaker (Realtek High Definition Audio)\\\",\\\"error_info\\\":\\\"\\\",\\\"isNewDevice\\\":true,\\\"isUsedDevice\\\":false,\\\"result\\\":0}\"}],\"id\":\"2aGSSVAaY_M065aYUghQi\"}],\"id\":\"upp7_onw6zptCDJ8ACdSr\"}],\"id\":\"Fyqh7P-rRMZRkl7rut3XC\"},{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_SPEAKER_NEW_DEVICE\"}],\"id\":\"zju8VRo83y2sMSYeiXYdQ\"}],\"id\":\"qQ-Rb5Wa1KznNavxQJEtw\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"A new speaker device was added\"}],\"id\":\"N80GM9XcsxPSfJ2OkMFSh\"}],\"id\":\"zt1G3hKZzQvGUtnoDtI0f\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"result; error_info\"}],\"id\":\"2oG1FZFRyzN7K6-Zceb0A\"}],\"id\":\"3mehibGQl6OIekRy7FmsF\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"{\\\"deviceID\\\":\\\"{0.0.0.00000000}.{a4f1e8be-49fa-43e2-b8cf-dd00542b47ae}\\\",\\\"deviceName\\\":\\\"Speaker (Realtek High Definition Audio)\\\",\\\"error_info\\\":\\\"\\\",\\\"isNewDevice\\\":true,\\\"isUsedDevice\\\":false,\\\"result\\\":0}\"}],\"id\":\"IUIlqft7DLp6tlHYMnhHy\"}],\"id\":\"DM3uo41zSfwLLnScya-KH\"}],\"id\":\"C-j_XuB1rc-nVlvFSl00U\"},{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_SPEAKER_LOST_DEVICE\"}],\"id\":\"H6jw67Ag4fTnONWIMUry3\"}],\"id\":\"Ilcn8AbBctec4BPmLw7MG\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"A speaker device was lost\"}],\"id\":\"oWTfRq1ptmtuOALO89DB_\"}],\"id\":\"LMB4qOuHZ3TZghTa5GMMJ\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"result; error_info\"}],\"id\":\"_WI3i9ow2UJsGNpP8fUFv\"}],\"id\":\"qm5yJuwsB2yftDsu9GwA5\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"{\\\"deviceID\\\":\\\"{0.0.0.00000000}.{a4f1e8be-49fa-43e2-b8cf-dd00542b47ae}\\\",\\\"deviceName\\\":\\\"Speaker (Realtek High Definition Audio)\\\",\\\"error_info\\\":\\\"\\\",\\\"isNewDevice\\\":false,\\\"isUsedDevice\\\":false,\\\"result\\\":0}\"}],\"id\":\"_g25rsjUzQd6ItziAZMsI\"}],\"id\":\"b7-UtGJeynlUzY8Xjp-R2\"}],\"id\":\"zZ3arGtSMNMExEiz27LAR\"},{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_MIC_NEW_DEVICE\"}],\"id\":\"GxGdappZ9arWfdVoAMt8k\"}],\"id\":\"q-GQ6Kj3HNUhNPCPzslm8\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"A new mic device was added\"}],\"id\":\"eyo3dY5MSYNT__3mUf1EG\"}],\"id\":\"18QNPy-LcAQDthiP-CnGz\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"result; error_info\"}],\"id\":\"BQaPKjo2hktNAAR7frQQq\"}],\"id\":\"3GylxxYI124sKpAa_cGNH\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"{\\\"deviceID\\\":\\\"{0.0.1.00000000}.{5fdf1a5b-f42d-4ab2-890a-7e454093f229}\\\",\\\"deviceName\\\":\\\"Mic (Realtek High Definition Audio)\\\",\\\"error_info\\\":\\\"\\\",\\\"isNewDevice\\\":true,\\\"isUsedDevice\\\":true,\\\"result\\\":0}\"}],\"id\":\"dSyBry4D-EaPoIHxYr1tF\"}],\"id\":\"Tx1Zvtq18VR1LpYTHRQCE\"}],\"id\":\"eqGb56oCQXVU8NDsZBMtK\"},{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_MIC_LOST_DEVICE\"}],\"id\":\"yIsqaIepGSCJsnKAibvLD\"}],\"id\":\"f4Uye6MDMWwLt42y1Zcmd\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"A mic device was lost\"}],\"id\":\"UCyyrY3jqe-E-yFyaMRe2\"}],\"id\":\"3ia-eKpdv53BwslrQbldr\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"result; error_info\"}],\"id\":\"HuiqS9T2jb_i5c4V-Zb-r\"}],\"id\":\"GOUtBajx6AFEfpGGad3Gk\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"{\\\"deviceID\\\":\\\"{0.0.1.00000000}.{5fdf1a5b-f42d-4ab2-890a-7e454093f229}\\\",\\\"deviceName\\\":\\\"Mic (Realtek High Definition Audio)\\\",\\\"error_info\\\":\\\"\\\",\\\"isNewDevice\\\":false,\\\"isUsedDevice\\\":true,\\\"result\\\":0}\"}],\"id\":\"sS6VJnGB6zXnDXKYHI87v\"}],\"id\":\"o-dgVv6CUPviHegrAw1a2\"}],\"id\":\"TFqM5JjFW54Wj-4mEF1ZF\"},{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_MIC_DEFAULT_DEVICE_CHANGED\"}],\"id\":\"YkxSkmwkTD20lMwiJGA97\"}],\"id\":\"WAszkFyYYjZR1yBEN9Sg2\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"The default mic device was changed\"}],\"id\":\"CDIepu9tUlIOsZCMrZb0F\"}],\"id\":\"GMN2fMHorve5ygjfzewQd\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"result; error_info\"}],\"id\":\"S2TvA_Npzy3NLLPK7I-Xu\"}],\"id\":\"T7gNmAxxIqpiMpzuYADu7\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"{\\\"deviceID\\\":\\\"{0.0.1.00000000}.{5fdf1a5b-f42d-4ab2-890a-7e454093f229}\\\",\\\"deviceName\\\":\\\"Mic (Realtek High Definition Audio)\\\",\\\"error_info\\\":\\\"\\\",\\\"isNewDevice\\\":false,\\\"isUsedDevice\\\":true,\\\"result\\\":0}\"}],\"id\":\"eiIbw6LTEw_1OLkxr6amc\"}],\"id\":\"NaZ29BVCEFQFY4wFdSM19\"}],\"id\":\"n6ONRDcw3P9gWMI9QlywP\"},{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_CHANGE_ROOM_QUALITY\"}],\"id\":\"O43JZSR49hLxo_KgPqGfi\"}],\"id\":\"byEo7bhyNSbLm-RltXANF\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"The room quality changed\"}],\"id\":\"WNe6LnF6XWR7oyoxYaHut\"}],\"id\":\"deWjTgPVh9zffeeJaOTvh\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"weight; loss; delay\"}],\"id\":\"SHgs-soI2ZTjjD-a_nEJw\"}],\"id\":\"4okskGxNKVWcFE1lV4qrG\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"{\\\"weight\\\":5,\\\"loss\\\":0.1,\\\"delay\\\":1}\"}],\"id\":\"3FntuzkfgSepkJDw7kutc\"}],\"id\":\"QcRRFK2Tz7oWYKyvB5w9w\"}],\"id\":\"_qOopAMWouH9Ewbq3BOvz\"},{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_RECORD_COMPLETE\"}],\"id\":\"W9qrZc50S562VofJxCNpy\"}],\"id\":\"nXBCfJPe2bw-rTm-iDdxG\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"Voice message recording was completed\"}],\"id\":\"rJ_LLY5Zv9RYbggHE0Q2U\"}],\"id\":\"sRrdK24QyKiGgznI5vgcW\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"result; file_path\"}],\"id\":\"3SG6F9v0c0-xxpvX321SC\"}],\"id\":\"hya6MimZ-UxJ-cHBsf89d\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"{\\\"file_path\\\":\\\"\\\",\\\"result\\\":0}\"}],\"id\":\"U9EIbMU_s4unWQAf-OLsf\"}],\"id\":\"mMzwHK2yZ4Acj1TI2blWa\"}],\"id\":\"hhY3hKfBl21K6x0pQaATw\"},{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_UPLOAD_COMPLETE\"}],\"id\":\"CeiASy1k5gNqhAxMD2l6N\"}],\"id\":\"gMDclSW1ZMm1j4b8hMPmQ\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"Voice message upload was completed\"}],\"id\":\"Mx4HeFsbPm8UBynVOk-DZ\"}],\"id\":\"G-PzhlbeZ-ovcThoTeSYd\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"result; file_path;file_id\"}],\"id\":\"kJ3ejumitj-nE5UgtjnLg\"}],\"id\":\"xFN1yLGBp7fGwWG7u15yV\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"{\\\"file_id\\\":\\\"\\\",\\\"file_path\\\":\\\"\\\",\\\"result\\\":0}\"}],\"id\":\"Jx58DK0b_jcjJfNSfCRtw\"}],\"id\":\"ISduFVFBFHQ2p6OTlJTMs\"}],\"id\":\"yxsWAhCs2eRH7ETVE-p8Q\"},{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_DOWNLOAD_COMPLETE\"}],\"id\":\"JerI_GbztOKOYUiUWKX65\"}],\"id\":\"6-qOLGfasClBbJKh8elPb\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"Voice message download was completed\"}],\"id\":\"_Uv2SHghsEx8rcbWKHoZu\"}],\"id\":\"sl2UWXYdjKVigITyRVnss\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"result; file_path;file_id\"}],\"id\":\"RybtGzI2XC9tVKyJloc-R\"}],\"id\":\"EKYsdsd2mxugDQOa6eFh4\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"{\\\"file_id\\\":\\\"\\\",\\\"file_path\\\":\\\"\\\",\\\"result\\\":0}\"}],\"id\":\"XoqhAGyZBlMsL5XqsVODJ\"}],\"id\":\"BUHXErb687GnOHhH5TEea\"}],\"id\":\"BqV_oCI76HNHsJk3jofet\"},{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_PLAY_COMPLETE\"}],\"id\":\"zQF5x-wndDHZ9a10Gzk8X\"}],\"id\":\"pYQ1YZ6ig7NPU4oFLMxUU\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"Voice message playback was completed\"}],\"id\":\"hjp_z1mzBGM-XVbBomqq5\"}],\"id\":\"URCJ_VhgO4qnv7ghUY0KH\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"result; file_path\"}],\"id\":\"jkR5JISS1LgRfBDyt9Yda\"}],\"id\":\"KqdmCR7n7gaqEDaFquTn5\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"{\\\"file_path\\\":\\\"\\\",\\\"result\\\":0}\"}],\"id\":\"Xh9xggoO6NV_QtrqFv0LN\"}],\"id\":\"zWcKl_fwdkJDj_2eir1DO\"}],\"id\":\"HTPioaN3c1AdOePr0TjZ0\"},{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_SPEECH2TEXT_COMPLETE\"}],\"id\":\"ocnTJLm4NAcYj7xr6oovS\"}],\"id\":\"Vb7w4WMGn765VS4nM8GC7\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"Fast speech-to-text conversion was completed\"}],\"id\":\"oZlDJVYlvbkciv7QhLwx8\"}],\"id\":\"EQcdWwm8DyXi2iCbQHq7i\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"result; text;file_id\"}],\"id\":\"MBvmmXIVULVXBcw3JYcMW\"}],\"id\":\"VUnyVd0nPlihC5I4MrhEQ\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"{\\\"file_id\\\":\\\"\\\",\\\"text\\\":\\\"\\\",\\\"result\\\":0}\"}],\"id\":\"TJ5Vsp3k345Ay9pRPgon9\"}],\"id\":\"AwWL1Cn3idESP6eQQfhgi\"}],\"id\":\"GXVLWnawXxrWQzbsVPmL6\"},{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRECOGNITION_COMPLETE\"}],\"id\":\"9dOmExadnVEo7suTF45HO\"}],\"id\":\"oY3kLbl_wna0TXjIbNAY-\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"Streaming speech-to-text conversion was completed\"}],\"id\":\"g3bcBVsdLUrvMSXuB2uY_\"}],\"id\":\"6NUIrreqytOwTnH6NmRoz\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"result; file_path; text;file_id\"}],\"id\":\"tFbt1rWxWsQpS5fSGIoPs\"}],\"id\":\"5aiSnKFiXB_3UivKDih11\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"{\\\"file_id\\\":\\\"\\\",\\\"file_path\\\":\\\",\\\"text\\\":\\\"\\\",\\\"result\\\":0}\"}],\"id\":\"DBOEIjVhCpZcOQrJ_r32k\"}],\"id\":\"_5z_6dik9byhAHNmX_DSD\"}],\"id\":\"fcPhRHvnsmDnGFUUBF1-A\"},{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRECOGNITION_IS_RUNNING\"}],\"id\":\"GwARkjCGNv2ZmZtS_IRHx\"}],\"id\":\"qd_JGh-a-dxZt7lPouA-i\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"Streaming speech-to-text conversion is in progress\"}],\"id\":\"LqfDjZ0-YQIUjCZ6WF0Kf\"}],\"id\":\"w5Q3x09vkuc4GmcBNIpBI\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"result; file_path; text;file_id\"}],\"id\":\"ge4rqBL9xWtBMj3vq2nzp\"}],\"id\":\"rM1jup_TcJItMqysQwvY0\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"{\\\"file_id\\\":\\\"\\\",\\\"file_path\\\":\\\",\\\"text\\\":\\\"\\\",\\\"result\\\":0}\"}],\"id\":\"rtdCY09_MtbP6Ffqs7G2S\"}],\"id\":\"6r00bPsyKYL6I8Tow5qxf\"}],\"id\":\"0kJQFSjDsY_RJ9u1ZdOlB\"},{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_TEXT2SPEECH_COMPLETE\"}],\"id\":\"OB7aB5RC05I0fCevOuW8w\"}],\"id\":\"lPN-dS7PsaVdP7FKAU-Pz\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"Text-to-speech conversion was completed\"}],\"id\":\"J95MuIEd3LPLqudjHQkzG\"}],\"id\":\"wQ3x-QopZeDZv0ciVCV9k\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"result; text;file_id\"}],\"id\":\"wGInMHYou0mV7lL6RxTZw\"}],\"id\":\"RzG0sXo-bGOKbNKPnzG61\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"{\\\"file_id\\\":\\\"\\\",\\\"text\\\":\\\"\\\",\\\"result\\\":0}\"}],\"id\":\"yCqoKBL4NR-TOjiGl9aMz\"}],\"id\":\"IDX3hUP2-dXljdjdQrGW-\"}],\"id\":\"5WfhGUkAFHp3tYWu-nXSm\"},{\"type\":\"row\",\"children\":[{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_TRANSLATE_TEXT_COMPLETE\"}],\"id\":\"PCIz0yBm0qPMhBxHdxoDo\"}],\"id\":\"lxrRaJXjZM9MpiULNaMfM\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"Text translation was completed\"}],\"id\":\"fzlHD8wFSuI2QupotldDY\"}],\"id\":\"m86E_odzXwOgbUjEtM2P0\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"result; text;file_id\"}],\"id\":\"vT5DsHyCY5q7tvA_vJJfo\"}],\"id\":\"mez3Aa3dg2wQrTJwhC7md\"},{\"type\":\"cell\",\"children\":[{\"type\":\"p\",\"children\":[{\"text\":\"{\\\"file_id\\\":\\\"\\\",\\\"text\\\":\\\"\\\",\\\"result\\\":0}\"}],\"id\":\"L2EFq6Wy9YpeFNci4-Udb\"}],\"id\":\"LcLGrgFeoqvCR-DV8mqVf\"}],\"id\":\"7IyyTjgjZu4uVvotMXXeD\"}],\"id\":\"1IS-vbqakGk-B7oUd_YRc\",\"widths\":[21,20,19,40],\"widthMode\":\"percentage\"},{\"type\":\"p\",\"children\":[{\"text\":\"\"}],\"id\":\"PZjfW9TyUXUviC4lTldGO\"}]"}},"53817":{"categoryId":607,"weight":90,"type":"page","extension":"","pid":53816,"id":53817,"lang":"en","title":"Integrating SDK","pdfUrl":"","docType":"default","children":[],"firstReleaseTime":"2023-03-23 22:23:31","recentReleaseTime":"2023-03-23 22:23:31","content":{"title":"Integrating SDK","body":"
This document describes how to configure a Flutter project for the GME APIs for Flutter.

Supported Platforms

The GME SDK for Flutter supports iOS and Android platforms.

Importing the SDK

Step 1. Download the GME SDK for Flutter

Download the SDK file in SDK Download Guide, which contains the GME plugin. Decompress the SDK file to a local directory.

Step 2. Add dependencies of the GME plugin to the Flutter project

Add GME dependencies to the pubspec.yaml file in your Flutter project. Note that the path parameter is the path where the SDK file is decompressed to.
dependencies:
flutter:
sdk: flutter
gme:
path: ../
After saving the pubspec.yaml file, run the flutter pub get command on the CLI to make the GME plugin in the project take effect (if the Flutter plugin is configured in your IDE, this command will be executed automatically once the file is saved).
flutter pub get

Modifying the iOS Project

1. In Terminal, go to the iOS project directory of your Flutter project and run pod install.
2. In the Xcode project, configure the following GME dependent library files (you can skip this step if such dependencies already exist in your project):

\"\"


3. The GME SDK for iOS requires the following permissions:
Required background modes: Allows running in the background (optional).
Microphone Usage Description: Allows access to microphone.

Modifying the Android Project

1. As GME requires permissions such as call permission and uses the permission management plugin flutter permission-handler, you need to modify the project as follows to use the SDK for Android 31 or later (skip this step if the SDK is already in the project):

\"\"


2. Add the project permissions to the Flutter project file android/app/src/AndroidManifest.xml (skip this step if such permissions have been added):
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />

","recentReleaseTime":"2024-01-18 15:15:48","slate":"[{\"id\":\"HbOJifF6FYZtAPHAWHJkp\",\"children\":[{\"text\":\"This document describes how to configure a Flutter project for the GME APIs for Flutter.\"}],\"type\":\"p\"},{\"id\":\"2JlEDkd2eF79BL9nEaU78\",\"children\":[{\"text\":\"Supported Platforms\"}],\"nodeId\":\"supported-platforms\",\"type\":\"h2\"},{\"id\":\"cmNhSJvOrWQdzsgKxsW0g\",\"children\":[{\"text\":\"The GME SDK for Flutter supports iOS and Android platforms.\"}],\"type\":\"p\"},{\"id\":\"grX1DJFUnyMKhrFh3eXSo\",\"children\":[{\"text\":\"Importing the SDK\"}],\"nodeId\":\"importing-the-sdk\",\"type\":\"h2\"},{\"id\":\"qAg7DBo1AnT4PoRt9_c1A\",\"children\":[{\"text\":\"Step 1. Download the GME SDK for Flutter\"}],\"nodeId\":\"step-1.-download-the-gme-sdk-for-flutter\",\"type\":\"h3\"},{\"id\":\"HRpKCYMyFnC2Wh1r4njLb\",\"children\":[{\"text\":\"Download the SDK file in \"},{\"id\":\"lYBo8WtYxdGDLvCFmfZjs\",\"children\":[{\"text\":\"SDK Download Guide\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://intl.cloud.tencent.com/document/product/607/18521\",\"props\":{\"type\":\"link\",\"url\":\"https://intl.cloud.tencent.com/document/product/607/18521\"},\"type\":\"ref\"},{\"text\":\", which contains the GME plugin. Decompress the SDK file to a local directory.\"}],\"type\":\"p\"},{\"id\":\"fiEIRivqxvq6zMr61TEZ5\",\"children\":[{\"text\":\"Step 2. Add dependencies of the GME plugin to the Flutter project\"}],\"nodeId\":\"step-2.-add-dependencies-of-the-gme-plugin-to-the-flutter-project\",\"type\":\"h3\"},{\"id\":\"KYQlCzgnS_rIW7kTpvVbq\",\"children\":[{\"text\":\"Add GME dependencies to the \"},{\"code\":1,\"text\":\"pubspec.yaml\"},{\"text\":\" file in your Flutter project. Note that the \"},{\"code\":1,\"text\":\"path\"},{\"text\":\" parameter is the path where the SDK file is decompressed to.\"}],\"type\":\"p\"},{\"id\":\"WtyBMdWTpI1p1oX_MGnHX\",\"children\":[{\"id\":\"buKuJGd6Mq6rY1JHLLy6_\",\"children\":[{\"text\":\"dependencies:\"}],\"type\":\"code-line\"},{\"id\":\"ESM0OqAK3mAUt_3G-9-BH\",\"children\":[{\"text\":\" flutter:\"}],\"type\":\"code-line\"},{\"id\":\"psZ4LBwzRCjyHjaNaAdYk\",\"children\":[{\"text\":\" sdk: flutter\"}],\"type\":\"code-line\"},{\"id\":\"QHlKQ2vz_C9dj-JDW23vb\",\"children\":[{\"text\":\" gme:\"}],\"type\":\"code-line\"},{\"id\":\"GdiABciPYGHbGsmh2iYy9\",\"children\":[{\"text\":\" path: ../\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"M5aZ3UUgiv18MRToGFHxz\",\"children\":[{\"text\":\"After saving the \"},{\"code\":1,\"text\":\"pubspec.yaml\"},{\"text\":\" file, run the \"},{\"code\":1,\"text\":\"flutter pub get\"},{\"text\":\" command on the CLI to make the GME plugin in the project take effect (if the Flutter plugin is configured in your IDE, this command will be executed automatically once the file is saved).\"}],\"type\":\"p\"},{\"id\":\"UTvQ34iW-PNdeRfx-yH4E\",\"children\":[{\"id\":\"3BQZVuvSkWygwOCmm6hvA\",\"children\":[{\"text\":\"flutter pub get\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"StaDSWatNfvk8FDUmpjIv\",\"children\":[{\"text\":\"Modifying the iOS Project\"}],\"nodeId\":\"modifying-the-ios-project\",\"type\":\"h2\"},{\"id\":\"bJbRZ6bfGhG5pdbs1rnNa\",\"children\":[{\"text\":\"In Terminal, go to the iOS project directory of your Flutter project and run \"},{\"code\":1,\"text\":\"pod install\"},{\"text\":\".\"}],\"start\":true,\"type\":\"oli\"},{\"id\":\"GyFi5Y8QEBqY6ut8kxIMn\",\"children\":[{\"text\":\"In the Xcode project, configure the following GME dependent library files (you can skip this step if such dependencies already exist in your project):\"}],\"start\":false,\"type\":\"oli\"},{\"id\":\"YS9Uezqxk1R0VZvxGawvf\",\"type\":\"p\",\"children\":[{\"text\":\"\"},{\"id\":\"uaQX2W_vZOjLH5yezOE6T\",\"alt\":\"\",\"children\":[{\"text\":\"\"}],\"inline\":true,\"type\":\"image\",\"url\":\"https://cloudcache.intl.tencent-cloud.com/cms/backend-cms/fa8cf27ab34d11eeae9a525400c26da5.png\",\"naturalSize\":[2408,908],\"size\":[901,339]},{\"text\":\"\"}],\"indent\":1},{\"id\":\"gQcgYp06GNIvsWiFQTDNH\",\"children\":[{\"text\":\"The GME SDK for iOS requires the following permissions:\"}],\"start\":false,\"type\":\"oli\"},{\"id\":\"eVuvbBB4yUAjouI0Nhbp4\",\"children\":[{\"text\":\"Required background modes: Allows running in the background (optional).\"}],\"start\":false,\"type\":\"uli\",\"indent\":1},{\"id\":\"D5-MPlkzF1R3RhMc9vEAg\",\"children\":[{\"text\":\"Microphone Usage Description: Allows access to microphone.\"}],\"start\":false,\"type\":\"uli\",\"indent\":1},{\"id\":\"RDymoTdhEBZAVATZGHHOr\",\"children\":[{\"text\":\"Modifying the Android Project\"}],\"nodeId\":\"modifying-the-android-project\",\"type\":\"h2\"},{\"id\":\"JwkuxYcN1CoxIhhPXFAa_\",\"children\":[{\"text\":\"As GME requires permissions such as call permission and uses the permission management plugin \"},{\"code\":1,\"text\":\"flutter permission-handler\"},{\"text\":\", you need to modify the project as follows to use the SDK for Android 31 or later (skip this step if the SDK is already in the project):\"}],\"start\":true,\"type\":\"oli\"},{\"type\":\"p\",\"children\":[{\"text\":\"\"},{\"id\":\"3iOgCs7YbN2dSxi4DDsE9\",\"alt\":\"\",\"children\":[{\"text\":\"\"}],\"inline\":true,\"type\":\"image\",\"url\":\"https://cloudcache.intl.tencent-cloud.com/cms/backend-cms/fa90336bb34d11eeb2a1525400170219.png\",\"naturalSize\":[1642,998],\"size\":[802,487]},{\"text\":\"\"}],\"id\":\"OEofz-OATrk4xGi3mNS_Z\",\"indent\":1},{\"id\":\"hLzKf6d3PH39oPEZOlDXt\",\"children\":[{\"text\":\"Add the project permissions to the Flutter project file \"},{\"code\":1,\"text\":\"android/app/src/AndroidManifest.xml\"},{\"text\":\" (skip this step if such permissions have been added):\"}],\"start\":false,\"type\":\"oli\"},{\"id\":\"8uAoTWmrhPAtI-zWgdff-\",\"children\":[{\"id\":\"lTHbMDq3CE05AY3qUWGNF\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"},{\"id\":\"XhOBQEhmAhZ6v7r67-7vN\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"},{\"id\":\"fYVR_UFWrsLcqy-hQS8QH\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"},{\"id\":\"SX7IQd_eRzaP1syGhBN0o\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"},{\"id\":\"6PSOAz6dUhH8Eqm6kInMN\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"indent\":1,\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"type\":\"p\",\"children\":[{\"text\":\"\"}],\"id\":\"trkskxEJzjD89LE4UFE9L\"}]"}},"53818":{"categoryId":607,"weight":80,"type":"page","extension":"","pid":53816,"id":53818,"lang":"en","title":"Real-time Voice","pdfUrl":"","docType":"default","children":[],"firstReleaseTime":"2023-03-23 22:23:31","recentReleaseTime":"2023-03-23 22:23:31","content":{"title":"Real-time Voice","body":"
This document describes how to integrate with and debug GME client APIs for the real-time voice chat feature for Flutter.

Key Considerations for Using GME

GME provides the real-time voice chat service, voice messaging and speech-to-text services, which all depend on core APIs such as Init and Poll.

Notes

You have created a GME application and obtained the SDK AppID and key. For more information, see Activating Services.
You have activated GME real-time voice chat, voice messaging and speech-to-text services. For more information, see Activating Services.
Configure your project before using GME; otherwise, the SDK will not take effect.
After a GME API is called successfully, GmeError.AV_OK will be returned with the value being 0.
GME APIs should be called in the same thread.
The Poll API should be called periodically for GME to trigger event callbacks.
For detailed error codes, see Error Codes.

Integrating the SDK

Directions

Key processes involved in SDK integration are as follows:

\"\"



Core APIs

API
Description
Init
Initializes GME.
Poll
Triggers the event callback.
Pause
Pauses the system.
Resume
Resumes the system.
Uninit
Uninitializes GME.

Importing the GME module

import 'package:gme/gme.dart';
import 'package:gme/gmeType.dart';

Getting an instance

To use the voice chat feature, get the GmeSDK object first.
ITMGContext context = ITMGContext.GetInstance();

Initializing the SDK

You need to initialize the SDK through the Init API before you can use the real-time voice, voice message, and speech-to-text services. The Init API must be called in the same thread as other APIs. We recommend you call all APIs in the main thread.

API prototype

//class ITMGContext
Future<int> InitSDK(String appID, String openID)
Parameter
Type
Description
sdkAppId
string
`AppID` provided in the GME console, which can be obtained as instructed in Activating Services.
openID
string
`openID` can only be in `int64` type, which is passed in after being converted to a string. You can customize its rules, and it must be unique in the application. To pass in `openID` as a string, submit a ticket for application.

Returned values

Returned Value
Description
GmeError.AV_OK= 0
SDK initialized successfully.
AV_ERR_SDK_NOT_FULL_UPDATE=7015
Solution: Check whether the SDK file is complete. We recommend that you delete it and then import the SDK again.
Note:
Notes on 7015 error code
The 7015 error code is identified by MD5. If this error is reported during integration, check the integrity and version of the SDK file as prompted.
The returned value AV_ERR_SDK_NOT_FULL_UPDATE is only a reminder but will not cause an initialization failure.
Due to the third-party enhancement, the Unity packaging mechanism, and other factors, the MD5 value of the library file will be affected, resulting in misjudgment. Therefore, ignore this error in the logic for official releases, and avoid displaying it on the UI.

Sample code

string SDKAPPID3RD = "14000xxxxx";
string openId="10001";
int res = await ITMGContext.GetInstance().InitSDK(SDKAPPID3RD, openId);

if (ret != GmeError.AV_OK)
{
print("Init SDK Error");
return;
}

Setting callbacks

The API class uses the Delegate method to send callback notifications to the application. Register the callback function to the SDK for receiving callback messages before room entry.

Function prototype and sample code

Register the callback function to the SDK for receiving callback messages before room entry.
// When initializing the SDK
ITMGContext.GetInstance().SetEvent(handleEventMsg);
// Callback method
void handleEventMsg(int eventType, String data) async {
// enterRoom event
print("AddDelegate3" + eventType.toString());
switch (eventType) {
case ITMG_MAIN_EVENT_TYPE.ITMG_MAIN_EVENT_TYPE_ENTER_ROOM:
{
// Callback of room entry\t
}
break;
case ITMG_MAIN_EVENT_TYPE.ITMG_MAIN_EVENT_TYPE_CHANGE_ROOM_TYPE:
{
// Callback of room switch
}
break;
}
}

Triggering event callback

You need to periodically call the Poll API to trigger event callbacks. The Poll API is GME's message pump and should be called periodically for GME to trigger event callbacks; otherwise, the entire SDK service will run abnormally. For more information, see the EnginePollHelper file in SDK Download Guide.
Note:
Call the Poll API periodically
The Poll API must be called periodically and in the main thread to avoid abnormal API callbacks.

API prototype

Future<void> Poll();

Sample code

Future<void> pollTimer() async {_pollTimer = Timer.periodic(Duration(milliseconds: 100), (Timer timer) {
ITMGContext.GetInstance().Poll();
});
}

Pausing the system

When a Pause event occurs in the system, the engine should also be notified for pause. For example, when the application switches to the background (OnApplicationPause, isPause=True), and you do not need the background to play back the audio in the room, please call Pause API to pause the GME service.

API prototype

Future<int> Pause()

Resuming the system

When a Resume event occurs in the system, the engine should also be notified for resumption. The Resume API only supports resuming voice chat.

API prototype

Future<int> Resume()

Uninitializing SDK

This API is used to uninitialize the SDK. If the game business account is bound to openid, switching game account requires uninitializing GME and then using the new openid to initialize again.

API prototype

Future<int> Uninit()

Voice Chat Room APIs

You should initialize and call the SDK to enter a room before voice chat can start.\nIf you have any questions when using the service, see Sound and Audio.

\"\"


API
Description
GenAuthBuffer
Calculates the local authentication key.
EnterRoom
Enters a room.
ExitRoom
Exits a room.
IsRoomEntered
Determines whether room entry is successful.

Local authentication key calculation

Generate AuthBuffer for encryption and authentication of relevant features. For release in the production environment, use the backend deployment key as detailed in Authentication Key.

API prototype

Future<Uint8List> GenAuthBuffer(String appID, String roomID, String openID, String key)
Parameter
Type
Description
appID
string
`AppID` from the Tencent Cloud console
roomID
string
Room ID, which can contain up to 127 characters.
openID
string
User ID, which is the same as `openID` during initialization.
key
string
Permission key from the Tencent Cloud console.

Sample code

Uint8List userSig = await ITMGContext.GetInstance().GenAuthBuffer(_editAppID.text, _editRoomID.text, _editOpenID.text, _editKey.text);
int res = await ITMGContext.GetInstance().EnterRoom(_editRoomID.text, 1, userSig);

Entering a room

This API is used to enter a room with the generated authentication information. The mic and speaker are not enabled by default after room entry.
Note:
If the room entry callback result is 0, the room entry is successful. If 0 is returned from the EnterRoom API, it doesn't necessarily mean that the room entry is successful.
The audio type of the room is determined by the first user entering the room. After that, if a member in the room changes the room type, it will take effect for all members there. For example, if the first user entering the room uses the smooth sound quality, and the second user entering the room uses the HD sound quality, the room audio type of the second user will change to the smooth sound quality. Only after a member in the room calls the ChangeRoomType API will the audio type of the room be changed.

API prototype

Future<int> EnterRoom(String roomID, int roomType, Uint8List authBuffer)
Parameter
Type
Description
roomId
string
Room ID, which can contain up to 127 characters.
roomType
ITMGRoomType
Room type. We recommend that you select `ITMG_ROOM_TYPE_FLUENCY` for games. For more information on room audio types, see Sound Quality.
appKey
Uint8List
Authentication key

Sample code

int res = await ITMGContext.GetInstance().EnterRoom(_editRoomID.text, 1, authBuffer);

Callback for room entry

After the user enters the room, the ITMG_MAIN_EVENT_TYPE_ENTER_ROOM event type will be called back to notify the room entry result, which can be listened on for processing. A successful callback means that the room entry is successful, and the billing starts.

Sample code

// Listen on an event:
void handleEventMsg(int eventType, String data) async {
switch (eventType) {
case ITMG_MAIN_EVENT_TYPE_ENTER_ROOM:
{
// The process after room entry
}
}
}
ITMGContext.GetInstance().SetEvent(handleEventMsg);

Data details

Message
Data
Sample
ITMG_MAIN_EVENT_TYPE_ENTER_ROOM
result; error_info
{"error_info":"","result":0}
ITMG_MAIN_EVENT_TYPE_ROOM_DISCONNECT
result; error_info
{"error_info":"waiting timeout, please check your network","result":0}
If the network is disconnected, there will be a disconnection callback notification ITMG_MAIN_EVENT_TYPE.ITMG_MAIN_EVENT_TYPE_ROOM_DISCONNECT. At this time, the SDK will automatically reconnect, and the callback is ITMG_MAIN_EVENT_TYPE_RECONNECT_START. When the reconnection is successful, there will be a callback ITMG_MAIN_EVENT_TYPE_RECONNECT_SUCCESS.

Error codes

Error Code
Cause and Solution
7006
Authentication failed. Possible causes: - The `AppID` does not exist or is incorrect.- An error occurred while authenticating the `authbuff`.- Authentication expired.- The `OpenId` does not meet the specification.
7007
The user was already in another room.
1001
The user was already in the process of entering a room but repeated this operation. We recommend that you not call the room entering API until the room entry callback is returned.
1003
The user was already in the room and called the room entering API again.
1101
Make sure that the SDK is initialized, `OpenId` complies with the rules, the APIs are called in the same thread, and the `Poll` API is called normally.

Exiting a room

This API is used to exit the current room. It is an async API. The returned value AV_OK indicates a successful async delivery. If there is a scenario in the application where room entry is performed immediately after room exit, you don't need to wait for the RoomExitComplete callback notification from the ExitRoom API; instead, you can directly call the EnterRoom API.

API prototype

Future<int> ExitRoom()

Sample code

ITMGContext.GetInstance().ExitRoom();

Callback for room exit

After the user exits a room, a callback will be returned with the message being ITMG_MAIN_EVENT_TYPE_EXIT_ROOM. The sample code is shown below:

Sample code

void handleEventMsg(int eventType, String data) async{
switch (eventType) {
case ITMG_MAIN_EVENT_TYPE_EXIT_ROOM:
{
// The process after room exit
break;
}
}
}
ITMGContext.GetInstance().SetEvent(handleEventMsg);

Determining whether user has entered room

This API is used to determine whether the user has entered a room. A value in bool type will be returned. Do not call this API during room entry.

API prototype

Future<bool> IsRoomEntered()

Sample code

bool res = await ITMGContext.GetInstance().IsRoomEntered();

Room Status Maintenance

APIs in this section are used to display speaking members and members entering or exiting the room and mute a member in the room at the business layer.

\"\"


API/Notification
Description
ITMG_MAIN_EVNET_TYPE_USER_UPDATE
The member status changed.
AddAudioBlackList
Mutes a member in the room.
RemoveAudioBlackList
Unmutes a user.
IsOpenIdInAudioBlackList
Queries whether the user of the specified `openid` is muted.

Notification events of member room entry and speaking status

This event is used to get speaking users in the room and display the users on the UI, and to send a notification when someone enters or exits the room.
A notification for this event will be sent only when the status changes. To get the member status in real time, cache the notification when it is received at the business layer. The event message ITMG_MAIN_EVNET_TYPE_USER_UPDATE containing event_id, count, and openIdList will be returned, which will be identified in the OnEvent notification.
Notifications of the EVENT_ID_ENDPOINT_NO_AUDIO audio event will be sent only when the threshold is exceeded, that is, other members in the room can receive the notification that the local user stops speaking only after the local client captures no voice for two seconds.
The audio event returns only the member speaking status but not the specific volume level. If you need the specific volume levels of members in the room, you can use the GetVolumeById API.
event_id
Description
Maintenance
EVENT_ID_ENDPOINT_ENTER
Return the `openid` of the member entering the room.
Member list
EVENT_ID_ENDPOINT_EXIT
Return the `openid` of the member exiting the room.
Member list
EVENT_ID_ENDPOINT_HAS_AUDIO
Return the `openid` of the member sending audio packets in the room. This event can be used to determine whether a user is speaking and display the voiceprint effect.
Chat member list
EVENT_ID_ENDPOINT_NO_AUDIO
Return the `openid` of the member stopping sending audio packets in the room.
Chat member list

Sample code

void handleEventMsg(int eventType, String data) async {
if (eventType == ITMG_MAIN_EVENT_TYPE_ENTER_ROOM)
{
// Process
switch (eventID)
{
case EVENT_ID_ENDPOINT_ENTER:
// A member enters the room
break;
case EVENT_ID_ENDPOINT_EXIT:
// A member exits the room
break;
case EVENT_ID_ENDPOINT_HAS_AUDIO:
// A member sends audio packets
break;
case EVENT_ID_ENDPOINT_NO_AUDIO:
// A member stops sending audio packets
break;

default:
break;
}
break;
}
}

Muting a member in the room

This API is used to add an ID to the audio data blocklist. This operation blocks audio from someone and only applies to the local device without affecting other devices. The returned value 0 indicates that the call is successful. Assume that users A, B, and C are all speaking using their mic in a room:
If A blocks C, A can only hear B;
If B blocks neither A nor C, B can hear both of them;
If C blocks neither A nor B, C can hear both of them.
This API is suitable for scenarios where a user is muted in a room.

API prototype

Future<int> AddAudioBlackList(String openID)
Parameter
Type
Description
openID
string
`openid` of the user to be blocked

Sample code

res = await ITMGContext.GetInstance().GetAudioCtrl().AddAudioBlackList(_editRoomManagerID.text);

Unmuting

This API is used to remove an ID from the audio data blocklist. A returned value of 0 indicates the call is successful.

API prototype

Future<int> RemoveAudioBlackList(String openID)
Parameter
Type
Description
openId
string
ID to be unblocked

Sample code

res = await ITMGContext.GetInstance().GetAudioCtrl().RemoveAudioBlackList(_editRoomManagerID.text);

Voice Chat Capturing APIs

The voice chat APIs can only be called after SDK initialization and room entry.
When the user clicks the button of enabling/disabling the mic or speaker on the UI, we recommend you call the EnableMic or EnableSpeaker API.
To enable the user to press the mic button on the UI to speak and release it to stop speaking, we recommend you call EnableAudioCaptureDevice once during room entry and call EnableAudioSend to enable the user to speak while pressing the button.
API
Description
EnableMic
Enables/Disables the mic.
GetMicState
Gets the mic status.
EnableAudioCaptureDevice
Enables/Disables the capturing device.
IsAudioCaptureDeviceEnabled
Gets the capturing device status.
EnableAudioSend
Enables/Disables audio upstreaming.
IsAudioSendEnabled
Gets the audio upstreaming status.
GetMicLevel
Gets the real-time mic volume level.
GetSendStreamLevel
Gets the real-time audio upstreaming volume level.
SetMicVolume
Sets the mic volume level.
GetMicVolume
Gets the mic volume level.

Enabling or disabling mic

This API is used to enable/disable the mic. The mic and speaker are not enabled by default after room entry. EnableMic = EnableAudioCaptureDevice + EnableAudioSend

API prototype

Future<int> EnableMic(bool enable)
Parameter
Type
Description
isEnabled
bool
To enable the mic, set this parameter to true; otherwise, set it to false.

Sample code

// Turn on mic
int res = await ITMGContext.GetInstance().GetAudioCtrl().EnableMic(true);

Getting the mic status

This API is used to get the mic status. The returned value 0 indicates that the mic is off, while 1 is on.

API prototype

Future<int> GetMicState()

Sample code

int micState = await ITMGContext.GetInstance().GetAudioCtrl().GetMicState();

Enabling or disabling capturing device

This API is used to enable/disable a capturing device. The device is not enabled by default after room entry.
This API can only be called after room entry. The device will be disabled automatically after room exit.
Operations such as permission application and volume type adjustment will generally be performed when a capturing device is enabled on a mobile device.

API prototype

Future<int> EnableAudioCaptureDevice(bool enable)
Parameter
Type
Description
enable
bool
To enable the capturing device, set this parameter to true, otherwise, set it to false.

Sample code

// Enable capturing device
int res = await ITMGContext.GetInstance().GetAudioCtrl().EnableAudioCaptureDevice(true);

Getting the capturing device status

This API is used to get the status of a capturing device.

API prototype

Future<bool> IsAudioCaptureDeviceEnabled()

Sample code

bool res = await ITMGContext.GetInstance().GetAudioCtrl().IsAudioCaptureDeviceEnabled();

Enabling or disabling audio upstreaming

This API is used to enable/disable audio upstreaming. If a capturing device is already enabled, it will send captured audio data; otherwise, it will remain mute. For more information on how to enable/disable the capturing device, see the EnableAudioCaptureDevice API.

API prototype

Future<int> EnableAudioSend(bool enable)
Parameter
Type
Description
isEnabled
bool
To enable audio upstreaming, set this parameter to true; otherwise, set it to false.

Sample code

int res = await ITMGContext.GetInstance().GetAudioCtrl().EnableAudioSend(isCheck);

Getting audio upstreaming status

This API is used to get the status of audio upstreaming.

API prototype

Future<bool> IsAudioSendEnabled()

Sample code

bool IsAudioSend = await ITMGContext.GetInstance().GetAudioCtrl().IsAudioSendEnabled();

Getting the real-time mic volume

This API is used to get the real-time mic volume level. A number-type value in the range of 0–100 will be returned. We recommend that you call this API once every 20 ms.

API prototype

Future<int> GetMicLevel()

Sample code

int res = await ITMGContext.GetInstance().GetAudioCtrl().GetMicLevel();

Getting the real-time audio upstreaming volume

This API is used to get the local real-time audio upstreaming volume level. A number-type value in the range of 0–100 will be returned.

API prototype

Future<int> GetSendStreamLevel()

Sample code

int res = await ITMGContext.GetInstance().GetAudioCtrl().GetSendStreamLevel();

Setting the mic software volume

This API is used to set the mic volume level. The corresponding parameter is volume, which is equivalent to attenuating or gaining the captured sound.

API prototype

Future<int> SetMicVolume(int volume)
Parameter
Type
Description
volume
number
Value range: 0–200. Default value: `100`. `0` indicates that the audio is mute, while `100` indicates that the volume level remains unchanged.

Sample code

int volume = 100;
int res = await ITMGContext.GetInstance().GetAudioCtrl().SetMicVolume(volume);

Getting the mic software volume

This API is used to get the mic volume level. A number-type value will be returned. 101 indicates that the SetMicVolume API has not been called.

API prototype

Future<int> GetMicVolume()

Sample code

int res = await ITMGContext.GetInstance().GetAudioCtrl().GetMicVolume();

Voice Chat Playback APIs

API
Description
EnableSpeaker
Enables/Disables the speaker.
GetSpeakerState
Gets the speaker status.
EnableAudioPlayDevice
Enables/Disables the playback device.
IsAudioPlayDeviceEnabled
Gets the playback device status.
EnableAudioRecv
Enables/Disables audio downstreaming.
IsAudioRecvEnabled
Gets the audio downstreaming status.
GetSpeakerLevel
Gets the real-time speaker volume level.
GetRecvStreamLevel
Gets the real-time downstreaming audio levels of other members in the room.
SetSpeakerVolume
Sets the speaker volume level.
GetSpeakerVolume
Gets the speaker volume level.

Enabling or disabling speaker

This API is used to enable/disable the speaker. EnableSpeaker = EnableAudioPlayDevice + EnableAudioRecv

API prototype

Future<int> EnableSpeaker(bool enable)
Parameter
Type
Description
bEnable
bool
To disable the speaker, set this parameter to `false`; otherwise, set it to `true`.

Sample code

// Turn on the speaker
await ITMGContext.GetInstance().GetAudioCtrl().EnableSpeaker(isCheck);

Getting the speaker status

This API is used to get the speaker status. 0 indicates that the speaker is off, and 1 is on.

API prototype

Future<int> GetSpeakerState()

Sample code

int spkState = await ITMGContext.GetInstance().GetAudioCtrl().GetSpeakerState();

Enabling or disabling playback device

This API is used to enable/disable a playback device.

API prototype

Future<int> EnableAudioPlayDevice(bool enable)
Parameter
Type
Description
enable
bool
To disable the playback device, set this parameter to `false`; otherwise, set it to `true`.

Sample code

int res = await ITMGContext.GetInstance().GetAudioCtrl().EnableAudioPlayDevice(isCheck);

Getting the playback device status

This API is used to get the status of a playback device.

API prototype

Future<bool> IsAudioPlayDeviceEnabled()

Sample code

bool res = await ITMGContext.GetInstance().GetAudioCtrl().IsAudioPlayDeviceEnabled();

Enabling or disabling audio downstreaming

This API is used to enable/disable audio downstreaming. If a playback device is already enabled, it will play back audio data from other members in the room; otherwise, it will remain mute. For more information on how to enable/disable the playback device, see the EnableAudioPlayDevice API.

API prototype

Future<int> EnableAudioRecv(bool enable)
Parameter
Type
Description
isEnabled
bool
To enable audio downstreaming, set this parameter to `true`; otherwise, set it to `false`.

Sample code

int res = await ITMGContext.GetInstance().GetAudioCtrl().EnableAudioRecv(isCheck);

Getting audio downstreaming status

This API is used to get the status of audio downstreaming.

API prototype

Future<bool> IsAudioRecvEnabled()

Sample code

bool res = await ITMGContext.GetInstance().GetAudioCtrl().IsAudioRecvEnabled();

Getting the real-time speaker volume

This API is used to get the real-time speaker volume level. A number-type value will be returned to indicate the volume level. We recommend that you call this API once every 20 ms.

API prototype

Future<int> GetSpeakerLevel()

Sample code

bool res = await ITMGContext.GetInstance().GetAudioCtrl().GetSpeakerLevel();

Getting the real-time downstreaming audio levels of other members in room

This API is used to get the real-time audio downstreaming volume of other members in the room. A number-type value will be returned. Value range: 0–200.

API prototype

Future<int> GetRecvStreamLevel(String openID)
Parameter
Type
Description
openId
string
`openId` of another member in the room

Sample code

int res = await ITMGContext.GetInstance().GetAudioCtrl().GetRecvStreamLevel(_editRoomManagerID.text);

Dynamically setting the volume of a member of the room

This API is used to set the volume of a member in the room. It takes effect only on the local.

API prototype

Future<int> SetSpeakerVolumeByOpenID(String openId, int volume)
Parameter
Type
Description
openId
string
`OpenID` of the target user
volume
number
Percentage. Recommended value range: 0-200. Default value: `100`.

Sample code

int res = await ITMGContext.GetInstance().GetAudioCtrl().SetSpeakerVolumeByOpenID(_editRoomManagerID.text, 100);

Getting volume percentage

This API is used to get the volume level set by SetSpeakerVolumeByOpenID.

API prototype

Future<int> GetSpeakerVolumeByOpenID(String openId)
Parameter
Type
Description
openId
string
`OpenID` of the target user

Returned values

API returns volume percentage set by OpenID, where 100 is by default.

Sample code

int res = await ITMGContext.GetInstance().GetAudioCtrl().GetSpeakerVolumeByOpenID(_editRoomManagerID.text);

Setting the speaker volume

This API is used to set the speaker volume.

API prototype

Future<int> SetSpeakerVolume(int volume)
Parameter
Type
Description
volume
number
Volume level. Value range: 0-200. Default value: `100`. `0` indicates that the audio is mute, while `100` indicates that the volume level remains unchanged.

Sample code

int volume = value.toInt();
int res = await ITMGContext.GetInstance().GetAudioCtrl().SetSpeakerVolume(volume);

Getting the speaker volume

This API is used to get the speaker volume. A number-type value will be returned to indicate the volume. 101 indicates that the SetSpeakerVolume API has not been called.\n"Level" indicates the real-time volume, and "Volume" the speaker volume. The final volume = Level * Volume%. For example, if the "Level" is 100 and "Volume" is 60, the final volume is "60".

API prototype

Future<int> GetSpeakerVolume()

Sample code

int res = await ITMGContext.GetInstance().GetAudioCtrl().GetSpeakerVolume();

Advanced APIs

Enabling in-ear monitoring

This API is used to enable in-ear monitoring. You need to call EnableLoopBack+EnableSpeaker before you can hear your own voice.

API prototype

Future<int> EnableLoopBack(bool enable)
Parameter
Type
Description
enable
bool
Specifies whether to enable.

Sample code

int res = await ITMGContext.GetInstance().GetAudioCtrl().EnableLoopBack(true);

Getting user's room audio type

This API is used to get a user's room audio type. The returned value is the room audio type. Value 0 indicates that an error occurred while getting the user's room audio type. For room audio types, see the EnterRoom API.

API prototype

Future<int> GetRoomType()

Sample code

int curType = await ITMGContext.GetInstance().GetRoom().GetRoomType();

Changing the room type

This API is used to modify a user's room audio type. For the result, see the callback event. The event type is ITMG_MAIN_EVENT_TYPE_CHANGE_ROOM_TYPE. The audio type of the room is determined by the first user to enter the room. After that, if a member in the room changes the room type, it will take effect for all members there.

API prototype

Future<int> ChangeRoomType(int roomType)
Parameter
Type
Description
roomtype
number
Room type to be switched to. For room audio types, see the `EnterRoom` API.

Sample code

int res = await ITMGContext.GetInstance().GetRoom().ChangeRoomType(1);

Callback event

After the room type is set, the event message ITMG_MAIN_EVENT_TYPE_CHANGE_ROOM_TYPE will be returned in the callback. The returned parameters include result, error_info, and new_room_type. The new_room_type represents the following information. The event message will be identified in the OnEvent function.
Event Subtype
Parameter
Description
ITMG_ROOM_CHANGE_EVENT_ENTERROOM
1
Indicates that the existing audio type is inconsistent with and changed to that of the entered room.
ITMG_ROOM_CHANGE_EVENT_START
2
Indicates that a user is already in the room and the audio type starts changing (e.g., calling the `ChangeRoomType` API to change the audio type).
ITMG_ROOM_CHANGE_EVENT_COMPLETE
3
Indicates that a user is already in the room and the audio type has been changed.
ITMG_ROOM_CHANGE_EVENT_REQUEST
4
Indicates that a room member calls the `ChangeRoomType` API to request a change of room audio type.

Sample code

case ITMG_MAIN_EVENT_TYPE.ITMG_MAIN_EVENT_TYPE_CHANGE_ROOM_TYPE:
{
// Process room type events
}
break;

The monitoring event of room call quality

This is the quality monitoring event used to listen on the network quality. If your network conditions are poor, the business layer will ask you to switch the network through the UI. This event is triggered once every two seconds after room entry, and its message is ITMG_MAIN_EVENT_TYPE_CHANGE_ROOM_QUALITY. The returned parameters include weight, loss, and delay, which are as detailed below:
Parameter
Type
Description
weight
number
Value range: 1–50. `50` indicates excellent sound quality, `1` indicates very poor (barely usable) sound quality, and `0` represents an initial meaningless value. Generally, if the value is below 30, you can remind users that the network is poor and recommend them to switch the network.
loss
var
Upstream packet loss rate
delay
number
Voice chat delay in ms

Getting version number

This API is used to get the SDK version number for analysis.

API prototype

Future<String> GetSDKVersion()

Sample code

_sdkVersions = await ITMGContext.GetInstance().GetSDKVersion();

Setting the application name and version

This API is used to set the application name and version.

API prototype

Future<void> SetAppVersion(String appVersion)

Parameter description

Parameter
Type
Description
appVersion
string
Application name and version

Sample code

await ITMGContext.GetInstance().SetAppVersion("gme V2.0.0");

Setting log printing level

This API is used to set the level of logs to be printed, and needs to be called before the initialization. It is recommended to keep the default level.

API prototype

Future<int> SetLogLevel(int levelWrite, int levelPrint)

Parameter description

Parameter
Type
Description
level
number
Sets the log level. `TMG_LOG_LEVEL_NONE` indicates not to log. Default value: `TMG_LOG_LEVEL_INFO`.
level description:
level
Description
TMG_LOG_LEVEL_NONE
Does not print logs
TMG_LOG_LEVEL_ERROR
Prints error logs (default)
TMG_LOG_LEVEL_INFO
Prints info logs
TMG_LOG_LEVEL_DEBUG
Prints debug logs
TMG_LOG_LEVEL_VERBOSE
Prints verbose logs

Sample code

ITMGContext.GetInstance().SetLogLevel(ITMG_LOG_LEVEL.TMG_LOG_LEVEL_ERROR, ITMG_LOG_LEVEL.TMG_LOG_LEVEL_ERROR);

Setting the log printing path

This API is used to set the log printing path. The default path is as follows. It needs to be called before Init.

API prototype

Future<int> SetLogPath(String logDir)
Parameter
Type
Description
logPath
string
Path

Sample code

String curPath = ""// Set a path by yourself
ITMGContext.GetInstance().SetLogPath(curPath);

Getting the diagnostic messages

This API is used to get information on the quality of real-time audio/video calls, which is mainly used to view real-time call quality and troubleshoot and can be ignored on the business side.

API prototype

Future<String> GetQualityTips()

Sample code

String curQualityTips = await ITMGContext.GetInstance().GetRoom().GetQualityTips();

Callback message

Message
Description
Data
Sample
ITMG_MAIN_EVENT_TYPE_ENTER_ROOM
A member entered the audio room.
result; error_info
{"error_info":"","result":0}
ITMG_MAIN_EVENT_TYPE_EXIT_ROOM
A member exited the audio room.
result; error_info
{"error_info":"","result":0}
ITMG_MAIN_EVENT_TYPE_ROOM_DISCONNECT
The room was disconnected for network or other reasons.
result; error_info
{"error_info":"waiting timeout, please check your network","result":0}
ITMG_MAIN_EVNET_TYPE_USER_UPDATE
Room members were updated.
user_list; event_id
{"event_id":1,"user_list":["0"]}
ITMG_MAIN_EVENT_TYPE_RECONNECT_START
The reconnection to the room started.
result; error_info
{"error_info":"","result":0}
ITMG_MAIN_EVENT_TYPE_RECONNECT_SUCCESS
The reconnection to the room succeeded.
result; error_info
{"error_info":"","result":0}
ITMG_MAIN_EVENT_TYPE_SWITCH_ROOM
The room was quickly switched.
result; error_info
{"error_info":"","result":0}
ITMG_MAIN_EVENT_TYPE_CHANGE_ROOM_TYPE
The room status was changed.
result; error_info; sub_event_type; new_room_type
{"error_info":"","new_room_type":0,"result":0}
ITMG_MAIN_EVENT_TYPE_ROOM_SHARING_START
Cross-room mic connect started.
result;
{"result":0}
ITMG_MAIN_EVENT_TYPE_ROOM_SHARING_STOP
Cross-room mic connect stopped.
result;
{"result":0}
ITMG_MAIN_EVENT_TYPE_SPEAKER_DEFAULT_DEVICE_CHANGED
The default speaker device was changed.
result; error_info
{"deviceID":"{0.0.0.00000000}.{a4f1e8be-49fa-43e2-b8cf-dd00542b47ae}","deviceName":"Speaker (Realtek High Definition Audio)","error_info":"","isNewDevice":true,"isUsedDevice":false,"result":0}
ITMG_MAIN_EVENT_TYPE_SPEAKER_NEW_DEVICE
A new speaker device was added.
result; error_info
{"deviceID":"{0.0.0.00000000}.{a4f1e8be-49fa-43e2-b8cf-dd00542b47ae}","deviceName":"Speaker (Realtek High Definition Audio)","error_info":"","isNewDevice":true,"isUsedDevice":false,"result":0}
ITMG_MAIN_EVENT_TYPE_SPEAKER_LOST_DEVICE
A speaker device was lost.
result; error_info
{"deviceID":"{0.0.0.00000000}.{a4f1e8be-49fa-43e2-b8cf-dd00542b47ae}","deviceName":"Speaker (Realtek High Definition Audio)","error_info":"","isNewDevice":false,"isUsedDevice":false,"result":0}
ITMG_MAIN_EVENT_TYPE_MIC_NEW_DEVICE
A new mic device was added.
result; error_info
{"deviceID":"{0.0.1.00000000}.{5fdf1a5b-f42d-4ab2-890a-7e454093f229}","deviceName":"Mic (Realtek High Definition Audio)","error_info":"","isNewDevice":true,"isUsedDevice":true,"result":0}
ITMG_MAIN_EVENT_TYPE_MIC_LOST_DEVICE
A mic device was lost.
result; error_info
{"deviceID":"{0.0.1.00000000}.{5fdf1a5b-f42d-4ab2-890a-7e454093f229}","deviceName":"Mic (Realtek High Definition Audio)","error_info":"","isNewDevice":false,"isUsedDevice":true,"result":0}
ITMG_MAIN_EVENT_TYPE_MIC_DEFAULT_DEVICE_CHANGED
The default mic device was changed.
result; error_info
{"deviceID":"{0.0.1.00000000}.{5fdf1a5b-f42d-4ab2-890a-7e454093f229}","deviceName":"Mic (Realtek High Definition Audio)","error_info":"","isNewDevice":false,"isUsedDevice":true,"result":0}
ITMG_MAIN_EVENT_TYPE_CHANGE_ROOM_QUALITY
The room quality changed.
weight; loss; delay
{"weight":5,"loss":0.1,"delay":1}
ITMG_MAIN_EVNET_TYPE_PTT_RECORD_COMPLETE
Voice message recording was completed.
result; file_path
{"file_path":"","result":0}
ITMG_MAIN_EVNET_TYPE_PTT_UPLOAD_COMPLETE
Voice message upload was completed.
result; file_path;file_id
{"file_id":"","file_path":"","result":0}
ITMG_MAIN_EVNET_TYPE_PTT_DOWNLOAD_COMPLETE
Voice message download was completed.
result; file_path;file_id
{"file_id":"","file_path":"","result":0}
ITMG_MAIN_EVNET_TYPE_PTT_PLAY_COMPLETE
Voice message playback was completed.
result; file_path
{"file_path":"","result":0}
ITMG_MAIN_EVNET_TYPE_PTT_SPEECH2TEXT_COMPLETE
Fast speech-to-text conversion was completed.
result; text;file_id
{"file_id":"","text":"","result":0}
ITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRECOGNITION_COMPLETE
Streaming speech-to-text conversion was completed.
result; file_path; text;file_id
{{"file_id":"","file_path":","text":"","result":0}}
ITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRECOGNITION_IS_RUNNING
Streaming speech-to-text conversion is in progress.
result; file_path; text;file_id
{{"file_id":"","file_path":","text":"","result":0}}
ITMG_MAIN_EVNET_TYPE_PTT_TEXT2SPEECH_COMPLETE
Text-to-speech conversion was completed.
result; text;file_id
{{"file_id":"","text":"","result":0}}
ITMG_MAIN_EVNET_TYPE_PTT_TRANSLATE_TEXT_COMPLETE
Text translation was completed.
result; text;file_id
{{"file_id":"","text":"","result":0}}

","recentReleaseTime":"2025-08-27 09:50:59","slate":"[{\"id\":\"xXQ6bsW4S6i5CV-kEMB6m\",\"children\":[{\"text\":\"This document describes how to integrate with and debug GME client APIs for the real-time voice chat feature for Flutter.\"}],\"type\":\"p\"},{\"id\":\"9tNZsjOkq8QGUvuWFw0o2\",\"children\":[{\"text\":\"Key Considerations for Using GME\"}],\"nodeId\":\"key-considerations-for-using-gme\",\"type\":\"h2\"},{\"id\":\"nyKFhqJ2Yiov5cZ8H-HAE\",\"children\":[{\"text\":\"GME provides the real-time voice chat service, voice messaging and speech-to-text services, which all depend on core APIs such as \"},{\"code\":1,\"text\":\"Init\"},{\"text\":\" and \"},{\"code\":1,\"text\":\"Poll\"},{\"text\":\".\"}],\"type\":\"p\"},{\"id\":\"r4hu5flB1lcn_vwS1kETB\",\"children\":[{\"text\":\"Notes\"}],\"nodeId\":\"notes\",\"type\":\"h4\"},{\"id\":\"4QblBTj94Kd7xepfTrFh3\",\"children\":[{\"text\":\"You have created a GME application and obtained the SDK \"},{\"code\":1,\"text\":\"AppID\"},{\"text\":\" and key. For more information, see \"},{\"id\":\"OeSk--CS843JZq2mlkeh5\",\"children\":[{\"text\":\"Activating Services\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://www.tencentcloud.com/document/product/607/10782\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/10782\"},\"type\":\"ref\"},{\"text\":\".\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"Kf6mBUTpZkgkDJ2BrBV7c\",\"children\":[{\"text\":\"You have activated \"},{\"b\":1,\"text\":\"GME real-time voice chat, voice messaging and speech-to-text services\"},{\"text\":\". For more information, see \"},{\"id\":\"kBHmFpH_Bhnl3IBpZ3rYR\",\"children\":[{\"text\":\"Activating Services\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://www.tencentcloud.com/document/product/607/10782\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/10782\"},\"type\":\"ref\"},{\"text\":\".\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"NDQ3Z5hAkTdb8iy0Je4VF\",\"children\":[{\"text\":\"Configure your project before using GME; otherwise, the SDK will not take effect.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"s5RMAFnFX-LX1QxmJAS4V\",\"children\":[{\"text\":\"After a GME API is called successfully, \"},{\"code\":1,\"text\":\"GmeError.AV_OK\"},{\"text\":\" will be returned with the value being \"},{\"code\":1,\"text\":\"0\"},{\"text\":\".\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"vQjT2uSB7QVVe17LLhUu5\",\"children\":[{\"text\":\"GME APIs should be called in the same thread.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"niqTFJ4h6AcyrfmWMuOU4\",\"children\":[{\"text\":\"The \"},{\"code\":1,\"text\":\"Poll\"},{\"text\":\" API should be called periodically for GME to trigger event callbacks.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"lu5rR8UU4mNW8C84NXTbj\",\"children\":[{\"text\":\"For detailed error codes, see \"},{\"id\":\"BtKsjXaxIvFSzrmX1qOcG\",\"children\":[{\"text\":\"Error Codes\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://intl.cloud.tencent.com/document/product/607/33223\",\"props\":{\"type\":\"link\",\"url\":\"https://intl.cloud.tencent.com/document/product/607/33223\"},\"type\":\"ref\"},{\"text\":\".\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"K_LIKzzo55ru7cFsMYO_i\",\"children\":[{\"text\":\"Integrating the SDK\"}],\"nodeId\":\"integrating-the-sdk\",\"type\":\"h2\"},{\"id\":\"-wY95bcGpNvblios8CPPE\",\"children\":[{\"text\":\"Directions\"}],\"nodeId\":\"directions\",\"type\":\"h3\"},{\"id\":\"8sK5u78hx9VBvcQj07l8X\",\"children\":[{\"text\":\"Key processes involved in SDK integration are as follows:\"}],\"type\":\"p\"},{\"type\":\"p\",\"children\":[{\"text\":\"\"},{\"id\":\"XQ8lF4BTgdcAnrbfpCnx8\",\"alt\":\"\",\"children\":[{\"text\":\"\"}],\"inline\":true,\"type\":\"image\",\"url\":\"https://cloudcache.intl.tencent-cloud.com/cms/backend-cms/17ac6650b34e11ee9939525400461a83.jpeg\",\"naturalSize\":[1560,1030],\"size\":[802,529]},{\"text\":\"\"}],\"id\":\"tqcvhaRcUunyAFufIi5hs\"},{\"id\":\"ZEVToLiqQm07VzJ7lQqvS\",\"children\":[{\"id\":\"yB7Wbxa9egar6c6ePov4y\",\"children\":[{\"text\":\"Initialize GME\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://www.tencentcloud.com/document/product/607/53818\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/53818\"},\"type\":\"ref\"},{\"text\":\".\"}],\"start\":true,\"type\":\"oli\"},{\"id\":\"7beP9atqMUoIoPLFS4Pvl\",\"children\":[{\"id\":\"yZJgw3rle93AOpLiGTfvy\",\"children\":[{\"text\":\"Call \"},{\"code\":1,\"text\":\"Poll\"},{\"text\":\" periodically to trigger event callbacks\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://www.tencentcloud.com/document/product/607/53818\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/53818\"},\"type\":\"ref\"},{\"text\":\".\"}],\"start\":false,\"type\":\"oli\"},{\"id\":\"E-SMhuJAZcRHuXoFwBRdo\",\"children\":[{\"id\":\"MVlarOJg2XkRcIghYRsmH\",\"children\":[{\"text\":\"Enter a voice chat room\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://www.tencentcloud.com/document/product/607/53818\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/53818\"},\"type\":\"ref\"},{\"text\":\".\"}],\"start\":false,\"type\":\"oli\"},{\"id\":\"AEUJizwNzVF59qr25mP7M\",\"children\":[{\"id\":\"ii4mlucV65xWzNId0E_K-\",\"children\":[{\"text\":\"Turn on the mic\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://www.tencentcloud.com/document/product/607/53818\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/53818\"},\"type\":\"ref\"},{\"text\":\".\"}],\"start\":false,\"type\":\"oli\"},{\"id\":\"0fHKRXKGoy3AKiwKZuk7b\",\"children\":[{\"id\":\"hprBCnwHX-jS4ihta_U-3\",\"children\":[{\"text\":\"Turn on the speaker\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://www.tencentcloud.com/document/product/607/53818\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/53818\"},\"type\":\"ref\"},{\"text\":\".\"}],\"start\":false,\"type\":\"oli\"},{\"id\":\"4-QB5IteBw4FK7o3Dc8d7\",\"children\":[{\"id\":\"rimaARXyL8-_Zq5C4_J_-\",\"children\":[{\"text\":\"Exit the voice chat room\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://www.tencentcloud.com/document/product/607/53818\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/53818\"},\"type\":\"ref\"},{\"text\":\".\"}],\"start\":false,\"type\":\"oli\"},{\"id\":\"PQhAJohkmqzcnUEH02MHt\",\"children\":[{\"id\":\"_P0zB6ZUmzZYc9KViARo7\",\"children\":[{\"text\":\"Uninitialize GME\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://www.tencentcloud.com/document/product/607/53818\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/53818\"},\"type\":\"ref\"},{\"text\":\".\"}],\"start\":false,\"type\":\"oli\"},{\"id\":\"KPyiK2V-uTmvKP2wFdJv3\",\"children\":[{\"text\":\"Core APIs\"}],\"nodeId\":\"core-apis\",\"type\":\"h2\"},{\"id\":\"9UH7Fz_z260aIT93sbIbu\",\"children\":[{\"id\":\"ylb9iS50F-5as4TuypkxN\",\"children\":[{\"id\":\"eBnZl7Ul7xa7ffoog5omi\",\"children\":[{\"id\":\"OqNoZIP16vW5AW1HUMkK2\",\"children\":[{\"text\":\"API\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"J_HmmQqON25QKaJ-bgTt4\",\"children\":[{\"id\":\"yzeqPAkvxmCtMOL6WWChH\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"qku7JqD2BAkjZWcBYbJra\",\"children\":[{\"id\":\"spA6OC3I02tjncannRq7a\",\"children\":[{\"id\":\"CVnAuo-3BVQ8MpNFWOVCl\",\"children\":[{\"text\":\"Init\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"yblFiayLCv_2zda3-Mk2z\",\"children\":[{\"id\":\"flIx84xLq2rcQcuhKvPkF\",\"children\":[{\"text\":\"Initializes GME.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"92Sjr8Liz5PXAHAAtPWpf\",\"children\":[{\"id\":\"Ebs3bdqaYnvTmlW5R7hxm\",\"children\":[{\"id\":\"qEsxxoljYrIeAei8T0309\",\"children\":[{\"text\":\"Poll\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"UGbJ3bKKjPHyGKMvKdEPt\",\"children\":[{\"id\":\"2IVxvBYNsKs55vev1ZkoY\",\"children\":[{\"text\":\"Triggers the event callback.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"7dZtopDD0UzqRHtvGtpTx\",\"children\":[{\"id\":\"mP7lZl_GldXLEn5DiMI_-\",\"children\":[{\"id\":\"JlRXgYagzL_BcpjpAqjLk\",\"children\":[{\"text\":\"Pause\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"clz3x3ObQwfW_Ep7YeTOB\",\"children\":[{\"id\":\"0laBFKJFIqN4Um4x2NuNg\",\"children\":[{\"text\":\"Pauses the system.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"zFwHd-kT5_KnwlyvXfrSx\",\"children\":[{\"id\":\"Hvk_3FqCskwqczrcMbxWR\",\"children\":[{\"id\":\"EoWQ5f5Sv4sVfHoFQh_-9\",\"children\":[{\"text\":\"Resume\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"TEGreg5-ImU5FWeW45512\",\"children\":[{\"id\":\"p1rpKgfnwFBCREcRVIaRn\",\"children\":[{\"text\":\"Resumes the system.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"RIcsYIcAEGCttE641yvaU\",\"children\":[{\"id\":\"0Q6hdofgCP55wi0Ut_BwH\",\"children\":[{\"id\":\"rdI1N_--RBTAYnN3lgwKw\",\"children\":[{\"text\":\"Uninit\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"-Ew0GMz2xS0UwN1LhxpbA\",\"children\":[{\"id\":\"2HQ8XVur_glcc2iDXVLNx\",\"children\":[{\"text\":\"Uninitializes GME.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"rowHeader\":true,\"type\":\"table\",\"widths\":[38,62],\"widthMode\":\"percentage\"},{\"id\":\"jfD1Pr7C4O3htY86zzDVp\",\"children\":[{\"text\":\"Importing the GME module\"}],\"nodeId\":\"importing-the-gme-module\",\"type\":\"h3\"},{\"id\":\"cLcudcL3dcNj2USFPGRmP\",\"children\":[{\"id\":\"ynirBC0J5shd-dKuJYNvG\",\"children\":[{\"text\":\"import 'package:gme/gme.dart';\"}],\"type\":\"code-line\"},{\"id\":\"7CjSVM01EmNlrQsUBf5gt\",\"children\":[{\"text\":\"import 'package:gme/gmeType.dart';\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"Hvkp_y8BtZI-9eseQPYSm\",\"children\":[{\"text\":\"Getting an instance\"}],\"nodeId\":\"getting-an-instance\",\"type\":\"h3\"},{\"id\":\"Owe8v13hYjBcm9cQr5Daw\",\"children\":[{\"text\":\"To use the voice chat feature, get the \"},{\"code\":1,\"text\":\"GmeSDK\"},{\"text\":\" object first.\"}],\"type\":\"p\"},{\"id\":\"8Q70btghrzSE3hGOaadFp\",\"children\":[{\"id\":\"spBF2b41gFLmzpuxSCpqk\",\"children\":[{\"text\":\"ITMGContext context = ITMGContext.GetInstance();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"30sRdiw3jiUrtnqlGsFjT\",\"children\":[{\"text\":\"Initializing the SDK\"}],\"nodeId\":\"initializing-the-sdk\",\"type\":\"h3\"},{\"id\":\"8iFOHf7NbPc3I3TvBbn4K\",\"children\":[{\"b\":1,\"text\":\"You need to initialize the SDK through the \"},{\"b\":1,\"code\":1,\"text\":\"Init\"},{\"b\":1,\"text\":\" API\"},{\"text\":\" before you can use the real-time voice, voice message, and speech-to-text services. The \"},{\"code\":1,\"text\":\"Init\"},{\"text\":\" API must be called in the same thread as other APIs. We recommend you call all APIs in the main thread.\"}],\"type\":\"p\"},{\"id\":\"EFqhosdMnHpPeh4lLd58R\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype\",\"type\":\"h4\"},{\"id\":\"3DilN4C2LoGcCl8MBILJE\",\"children\":[{\"id\":\"dvAPI_rji9TrSYuAy9ENM\",\"children\":[{\"text\":\"//class ITMGContext\"}],\"type\":\"code-line\"},{\"id\":\"k-W3TrWi_4ZfwAkO9_Tey\",\"children\":[{\"text\":\"Future InitSDK(String appID, String openID)\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"HZy_99qKzSN8cQQjWgFLM\",\"children\":[{\"id\":\"Ol0PqqnZ1QRx6LpV_vmle\",\"children\":[{\"id\":\"bp8K2ByuNbyC6irrj37gx\",\"children\":[{\"id\":\"pFB4-EjlgQtlkCVg7CHnr\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"27-2W_2igX0X-NDucX9gl\",\"children\":[{\"id\":\"ikOqIypEV3kv4jqraPrW8\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"-SX7K7H5XoTTCA1zRikyD\",\"children\":[{\"id\":\"ewXHqjzRU_O-g75vct9QS\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"L5T9pc3ssjNj5dlS4TmLG\",\"children\":[{\"id\":\"Vyp-e04TDgAj1sKDy8_9k\",\"children\":[{\"id\":\"j_a1O_4qYMAtx6CT8Se32\",\"children\":[{\"text\":\"sdkAppId\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"wuXmAd8Y3oT6AW08i6PCP\",\"children\":[{\"id\":\"QlZNRoGGppZsB-rbVF45B\",\"children\":[{\"text\":\"string\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"2BpPlnlIJ2Yv-72_dXO3-\",\"children\":[{\"id\":\"4LNWquCX1EIEJ0lvio5td\",\"children\":[{\"text\":\"`AppID` provided in the \"},{\"id\":\"BXZymVPGEZo2R8y_0lB0g\",\"children\":[{\"text\":\"GME console\"}],\"linkTarget\":\"self\",\"props\":{\"type\":\"link\",\"url\":\"https://console.tencentcloud.com/gamegme\"},\"type\":\"ref\"},{\"text\":\", which can be obtained as instructed in \"},{\"id\":\"IZ51Idws2dh9VZO6UhGpB\",\"children\":[{\"text\":\"Activating Services\"}],\"linkTarget\":\"self\",\"props\":{\"type\":\"link\",\"url\":\"https://intl.cloud.tencent.com/document/product/607/10782#.E9.87.8D.E7.82.B9.E5.8F.82.E6.95.B0\"},\"type\":\"ref\"},{\"text\":\".\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"zKg3BARuBhr6_QD5qMAKl\",\"children\":[{\"id\":\"xU2xZ3y25xQ76cYR1XHYd\",\"children\":[{\"id\":\"bUgo2nIdP2w0qpYWq19Lk\",\"children\":[{\"text\":\"openID\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"2M8t7On1E-efjSAje6fbm\",\"children\":[{\"id\":\"SPXlxewZwir23nhim6Sr8\",\"children\":[{\"text\":\"string\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"7CoKcojUIWaCQVJ7RAFQy\",\"children\":[{\"id\":\"EkyhspGDVwx64rm7wjsMh\",\"children\":[{\"text\":\"`openID` can only be in `int64` type, which is passed in after being converted to a string. You can customize its rules, and it must be unique in the application. To pass in `openID` as a string, \"},{\"id\":\"thpVtSSIM16Q58B3ZrlFa\",\"children\":[{\"text\":\"submit a ticket\"}],\"linkTarget\":\"self\",\"props\":{\"type\":\"link\",\"url\":\"https://console.tencentcloud.com/workorder/category?level1_id=438&level2_id=445&source=0&data_title=%E6%B8%B8%E6%88%8F%E5%A4%9A%E5%AA%92%E4%BD%93%E5%BC%95%E6%93%8EGME&step=1\"},\"type\":\"ref\"},{\"text\":\" for application.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"rowHeader\":true,\"type\":\"table\",\"widths\":[18,14,68],\"widthMode\":\"percentage\"},{\"id\":\"lFinPQG0bQ7bqAEIucQC0\",\"children\":[{\"text\":\"Returned values\"}],\"nodeId\":\"returned-values\",\"type\":\"h4\"},{\"id\":\"THL7crcq-g7h9d-l2Vw2s\",\"children\":[{\"id\":\"ghj3ufktAZE73NrQF_RcH\",\"children\":[{\"id\":\"nalesQO-rmwQeZ0qjCIhP\",\"children\":[{\"id\":\"1GCQWveiSgmWpiC6Nrqxz\",\"children\":[{\"text\":\"Returned Value\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"RsnVtW7nQgLa58JFOyNux\",\"children\":[{\"id\":\"PTe6tOzdzIw1GqzlZ4RPC\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"XDta4DSbXCH3VgZUl5RwW\",\"children\":[{\"id\":\"lo8vt4ck8cT4Ypj3J2Wcg\",\"children\":[{\"id\":\"hDe785AXO6NruWIJXsuzH\",\"children\":[{\"text\":\"GmeError.AV_OK= 0\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"mNs-jGrv0fmE3BWvkDJBq\",\"children\":[{\"id\":\"3xaMPkHLtZBKv6j9N5vKC\",\"children\":[{\"text\":\"SDK initialized successfully.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"lyHyeDKBPkUa5KeSudmjL\",\"children\":[{\"id\":\"U_ccqZcJFFzYwodTjZnsK\",\"children\":[{\"id\":\"w-80AngHJTz_Lx42gRazw\",\"children\":[{\"text\":\"AV_ERR_SDK_NOT_FULL_UPDATE=7015\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"X4BppeH2VOBGAaK6zTBHo\",\"children\":[{\"id\":\"vFlRO0a2nh4bodTBF_gkl\",\"children\":[{\"text\":\"Solution: Check whether the SDK file is complete. We recommend that you delete it and then import the SDK again.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"rowHeader\":true,\"type\":\"table\",\"widths\":[42,58],\"widthMode\":\"percentage\"},{\"id\":\"JPszJxOef1hxleEdFRsv1\",\"children\":[{\"id\":\"jxm2OJj3dd8IBXpMQT-DF\",\"children\":[{\"b\":1,\"color\":\"#04C8DC\",\"text\":\"Note: \",\"type\":\"text\"}],\"type\":\"p\"},{\"id\":\"S3V8w-zH3UFnYb9oSDHt4\",\"children\":[{\"b\":1,\"text\":\"Notes on 7015 error code\"}],\"type\":\"p\"},{\"id\":\"2Fe-gD9R1Jv6fa2IsCY3t\",\"children\":[{\"text\":\"The 7015 error code is identified by MD5. If this error is reported during integration, check the integrity and version of the SDK file as prompted.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"sWZNJib5LuEZkS9U25tO2\",\"children\":[{\"text\":\"The returned value \"},{\"code\":1,\"text\":\"AV_ERR_SDK_NOT_FULL_UPDATE\"},{\"text\":\" is \"},{\"b\":1,\"text\":\"only a reminder\"},{\"text\":\" but will not cause an initialization failure.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"kXjnfebCHTGzeecUL7gc6\",\"children\":[{\"text\":\"Due to the third-party enhancement, the Unity packaging mechanism, and other factors, the MD5 value of the library file will be affected, resulting in misjudgment. Therefore, \"},{\"b\":1,\"text\":\"ignore this error in the logic for official releases\"},{\"text\":\", and avoid displaying it on the UI.\"}],\"start\":false,\"type\":\"uli\"}],\"hintType\":\"alert\",\"type\":\"hint\"},{\"id\":\"ZqB77namwFs0HweNJfbHA\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code\",\"type\":\"h4\"},{\"id\":\"Kdo-09WXGzV0tsmWXdAdT\",\"children\":[{\"id\":\"0Z28fSrdVS3QGCtOXkoHa\",\"children\":[{\"text\":\"string SDKAPPID3RD = \\\"14000xxxxx\\\";\"}],\"type\":\"code-line\"},{\"id\":\"G_n2mVKACrybKA9zrS_Pt\",\"children\":[{\"text\":\"string openId=\\\"10001\\\";\"}],\"type\":\"code-line\"},{\"id\":\"osjbIyqzGVDGFnR-AXnzu\",\"children\":[{\"text\":\"int res = await ITMGContext.GetInstance().InitSDK(SDKAPPID3RD, openId);\"}],\"type\":\"code-line\"},{\"id\":\"_D-s6uqJ4W76uGeAG4fmR\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"},{\"id\":\"ZBY8r6od7hvzgdxTvpx0I\",\"children\":[{\"text\":\"if (ret != GmeError.AV_OK)\"}],\"type\":\"code-line\"},{\"id\":\"Xez0QL_OUG2RZXp9wFOWj\",\"children\":[{\"text\":\"{\"}],\"type\":\"code-line\"},{\"id\":\"LhpXvVEP5CleoPeywudLy\",\"children\":[{\"text\":\" print(\\\"Init SDK Error\\\");\"}],\"type\":\"code-line\"},{\"id\":\"jndLff2-j2RLVuPGHLqLt\",\"children\":[{\"text\":\" return;\"}],\"type\":\"code-line\"},{\"id\":\"V8-RSMSylxQeuPBwb2RSL\",\"children\":[{\"text\":\"}\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"ilyz5f4fhNbO3CUcuDwwa\",\"children\":[{\"text\":\"Setting callbacks\"}],\"nodeId\":\"setting-callbacks\",\"type\":\"h3\"},{\"id\":\"4n8VmeCoGZvKiJIAmkNxw\",\"children\":[{\"text\":\"The API class uses the \"},{\"code\":1,\"text\":\"Delegate\"},{\"text\":\" method to send callback notifications to the application. Register the callback function to the SDK for receiving callback messages before room entry.\"}],\"type\":\"p\"},{\"id\":\"ukOz3PPs5czTHYw0Pj_vl\",\"children\":[{\"text\":\"Function prototype and sample code\"}],\"nodeId\":\"function-prototype-and-sample-code\",\"type\":\"h4\"},{\"id\":\"46wyVpQJlzgIkDk288hNo\",\"children\":[{\"text\":\"Register the callback function to the SDK for receiving callback messages before room entry.\"}],\"type\":\"p\"},{\"id\":\"qQwLVfrk232VYxgzjVAdL\",\"children\":[{\"id\":\"pdyWtjdufzWRd40H8SCDK\",\"children\":[{\"text\":\"// When initializing the SDK\"}],\"type\":\"code-line\"},{\"id\":\"M5x5usAOM45jtMdVE6c8q\",\"children\":[{\"text\":\"ITMGContext.GetInstance().SetEvent(handleEventMsg);\"}],\"type\":\"code-line\"},{\"id\":\"o50YvVYdWkCzVJAG8iXgS\",\"children\":[{\"text\":\"// Callback method\"}],\"type\":\"code-line\"},{\"id\":\"uc2AHbOgIO3x7Xal8SS3f\",\"children\":[{\"text\":\"void handleEventMsg(int eventType, String data) async {\"}],\"type\":\"code-line\"},{\"id\":\"ztDL7uAueH-jPWfDq1Foq\",\"children\":[{\"text\":\" // enterRoom event\"}],\"type\":\"code-line\"},{\"id\":\"lpg1_wJFXV_2B6_-iWFjP\",\"children\":[{\"text\":\" print(\\\"AddDelegate3\\\" + eventType.toString());\"}],\"type\":\"code-line\"},{\"id\":\"pAjFbta7EJno__4q0qbtT\",\"children\":[{\"text\":\" switch (eventType) {\"}],\"type\":\"code-line\"},{\"id\":\"1UK55DNc3mfsUGKeU88Zw\",\"children\":[{\"text\":\" case ITMG_MAIN_EVENT_TYPE.ITMG_MAIN_EVENT_TYPE_ENTER_ROOM:\"}],\"type\":\"code-line\"},{\"id\":\"k_hFD-kyjfRkqKDMooOaW\",\"children\":[{\"text\":\" {\"}],\"type\":\"code-line\"},{\"id\":\"H-icxER72Fw4706fqj2VF\",\"children\":[{\"text\":\" // Callback of room entry\\t\"}],\"type\":\"code-line\"},{\"id\":\"syaJxtQyZBQlklBZ4HBeT\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"8FQlKXLUJV9-gjX4KUSUh\",\"children\":[{\"text\":\" break;\"}],\"type\":\"code-line\"},{\"id\":\"S10ubFVlz_aFg7yxArlDj\",\"children\":[{\"text\":\" case ITMG_MAIN_EVENT_TYPE.ITMG_MAIN_EVENT_TYPE_CHANGE_ROOM_TYPE:\"}],\"type\":\"code-line\"},{\"id\":\"ZicMhaSvDFtipuCbf4VI6\",\"children\":[{\"text\":\" {\"}],\"type\":\"code-line\"},{\"id\":\"6NDAX3fU33tY__fizjdLq\",\"children\":[{\"text\":\" // Callback of room switch\"}],\"type\":\"code-line\"},{\"id\":\"6tA5OO1rskeD9nt5JuGqf\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"b8ZWbxRaQc-HD8Ejoymak\",\"children\":[{\"text\":\" break;\"}],\"type\":\"code-line\"},{\"id\":\"Yc_u1Zyj5tDn8DTLGzBUQ\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"3apzvoDrDH0IZ82JsvMpe\",\"children\":[{\"text\":\"}\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"o2ucedByQL2SjuuMOUf5M\",\"children\":[{\"text\":\"Triggering event callback\"}],\"nodeId\":\"triggering-event-callback\",\"type\":\"h3\"},{\"id\":\"EQNOO3JdMyNfbSWGJc3be\",\"children\":[{\"text\":\"You need to periodically call the \"},{\"code\":1,\"text\":\"Poll\"},{\"text\":\" API to trigger event callbacks. The \"},{\"code\":1,\"text\":\"Poll\"},{\"text\":\" API is GME's message pump and should be called periodically for GME to trigger event callbacks; otherwise, the entire SDK service will run abnormally. For more information, see the \"},{\"code\":1,\"text\":\"EnginePollHelper\"},{\"text\":\" file in \"},{\"id\":\"5Pd01ngVPgHMyoGvVBX_2\",\"children\":[{\"text\":\"SDK Download Guide\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://intl.cloud.tencent.com/document/product/607/18521\",\"props\":{\"type\":\"link\",\"url\":\"https://intl.cloud.tencent.com/document/product/607/18521\"},\"type\":\"ref\"},{\"text\":\".\"}],\"type\":\"p\"},{\"id\":\"46a4uh7VX4Y0FDYcW2JH0\",\"children\":[{\"id\":\"yqYSxVSB1swg0FKCcYViC\",\"children\":[{\"b\":1,\"color\":\"inherit\",\"text\":\"Note: \",\"type\":\"text\"}],\"type\":\"p\"},{\"id\":\"tDhiL1wL1hHpIYwvLLTnL\",\"children\":[{\"b\":1,\"text\":\"Call the \"},{\"b\":1,\"code\":1,\"text\":\"Poll\"},{\"b\":1,\"text\":\" API periodically\"}],\"type\":\"p\"},{\"id\":\"SH-Nn_8W1O7PsCuZDtdrV\",\"children\":[{\"text\":\"The \"},{\"code\":1,\"text\":\"Poll\"},{\"text\":\" API must be called periodically and in the main thread to avoid abnormal API callbacks.\"}],\"type\":\"p\"}],\"hintType\":\"info\",\"type\":\"hint\"},{\"id\":\"dhEAxYtAAXpwjljgNH7Td\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype2\",\"type\":\"h4\"},{\"id\":\"jScC9e-eOgA527kwaNOzl\",\"children\":[{\"id\":\"-54Xr5asJ1s_-N3NceRZd\",\"children\":[{\"text\":\"Future Poll();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"ELYW7ReRlUpYsIxNQBfhG\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code2\",\"type\":\"h4\"},{\"id\":\"pieOz_vDsTPPMbLA_hGrt\",\"children\":[{\"id\":\"Ju20FOr9OatuFcZg8_kN2\",\"children\":[{\"text\":\" Future pollTimer() async {_pollTimer = Timer.periodic(Duration(milliseconds: 100), (Timer timer) {\"}],\"type\":\"code-line\"},{\"id\":\"0xIcMGwNc1q-yyhmhxDoO\",\"children\":[{\"text\":\" ITMGContext.GetInstance().Poll();\"}],\"type\":\"code-line\"},{\"id\":\"o0HfykdRZF-1Se8dQAhNn\",\"children\":[{\"text\":\" });\"}],\"type\":\"code-line\"},{\"id\":\"cVed3Xd_mOqcKv-K9ZkD9\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"MLsS1Rcs4T8jP0aWH3CDK\",\"children\":[{\"text\":\"Pausing the system\"}],\"nodeId\":\"pausing-the-system\",\"type\":\"h3\"},{\"id\":\"be7qfKuwe3hKn4DZo4ktd\",\"children\":[{\"text\":\"When a \"},{\"code\":1,\"text\":\"Pause\"},{\"text\":\" event occurs in the system, the engine should also be notified for pause. For example, when the application switches to the background (OnApplicationPause, isPause=True), and you do not need the background to play back the audio in the room, please call \"},{\"code\":1,\"text\":\"Pause\"},{\"text\":\" API to pause the GME service.\"}],\"type\":\"p\"},{\"id\":\"sKvJBSnPhtVvFJqRMzFa2\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype3\",\"type\":\"h4\"},{\"id\":\"wwOctQAe9-brMgkTDwCNa\",\"children\":[{\"id\":\"qWIrzEKXwsAPbX0UW2zt_\",\"children\":[{\"text\":\"Future Pause()\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"a0fZPW2YxlFR0bdK-dT9q\",\"children\":[{\"text\":\"Resuming the system\"}],\"nodeId\":\"resuming-the-system\",\"type\":\"h3\"},{\"id\":\"UtTJ-jJO8YzgUruwoJtcW\",\"children\":[{\"text\":\"When a \"},{\"code\":1,\"text\":\"Resume\"},{\"text\":\" event occurs in the system, the engine should also be notified for resumption. The \"},{\"code\":1,\"text\":\"Resume\"},{\"text\":\" API only supports resuming voice chat.\"}],\"type\":\"p\"},{\"id\":\"dJNzYcFZ-qM5_PlwSv7RJ\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype4\",\"type\":\"h4\"},{\"id\":\"3oFamBX4Ml5HxqhffRusJ\",\"children\":[{\"id\":\"49Gw9RjjTzJFyYppwN99b\",\"children\":[{\"text\":\"Future Resume()\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"sXDvHKSPxwzoptWrJlqHq\",\"children\":[{\"text\":\"Uninitializing SDK\"}],\"nodeId\":\"uninitializing-sdk\",\"type\":\"h3\"},{\"id\":\"bbLUqF6Z6gFWPBGq2vOqH\",\"children\":[{\"text\":\"This API is used to uninitialize the SDK. \"},{\"b\":1,\"text\":\"If the game business account is bound to \"},{\"b\":1,\"code\":1,\"text\":\"openid\"},{\"b\":1,\"text\":\", switching game account requires uninitializing GME and then using the new \"},{\"b\":1,\"code\":1,\"text\":\"openid\"},{\"b\":1,\"text\":\" to initialize again.\"}],\"type\":\"p\"},{\"id\":\"4WSMiCG59J4Dc1_5REK4r\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype5\",\"type\":\"h4\"},{\"id\":\"-_-f_-J52mCWgm6E5plkl\",\"children\":[{\"id\":\"g3310i5eEEXc48B7wB4Ht\",\"children\":[{\"text\":\"Future Uninit()\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"yzYFIv93ouVYNHcmiiSkX\",\"children\":[{\"text\":\"Voice Chat Room APIs\"}],\"nodeId\":\"voice-chat-room-apis\",\"type\":\"h2\"},{\"id\":\"jQkd3qoyWJXT2lNU7IA3h\",\"children\":[{\"text\":\"You should initialize and call the SDK to enter a room before voice chat can start.\\nIf you have any questions when using the service, see \"},{\"id\":\"mdDeOu1wBoMSmxosPIzmF\",\"children\":[{\"text\":\"Sound and Audio\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://intl.cloud.tencent.com/document/product/607/39524\",\"props\":{\"type\":\"link\",\"url\":\"https://intl.cloud.tencent.com/document/product/607/39524\"},\"type\":\"ref\"},{\"text\":\".\"}],\"type\":\"p\"},{\"type\":\"p\",\"children\":[{\"text\":\"\"},{\"id\":\"0UlPCRjYHtjEftFDpv7z6\",\"alt\":\"\",\"children\":[{\"text\":\"\"}],\"inline\":true,\"type\":\"image\",\"url\":\"https://cloudcache.intl.tencent-cloud.com/cms/backend-cms/17ac2919b34e11ee9fd6525400bb593a.jpeg\",\"naturalSize\":[1556,1264],\"size\":[800,649]},{\"text\":\"\"}],\"id\":\"54qMJuKfQaeWxyIZr4s-I\"},{\"id\":\"kmdSZUl0-HEfS89voupTj\",\"children\":[{\"id\":\"Nu8d2AGgP566hfudb5ho5\",\"children\":[{\"id\":\"Bgm4j50DEB-Sm3m-2IfFb\",\"children\":[{\"id\":\"fJrA7aMBW0_DseqDfDZGp\",\"children\":[{\"text\":\"API\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"jxeebwJjkHtNgkhMrClti\",\"children\":[{\"id\":\"IusbdRwgxJ8Plo_qN6ifn\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"PfG7yOt5iHm1HvfpDkf-O\",\"children\":[{\"id\":\"eo05Gk6FnXDMp5fCUblWl\",\"children\":[{\"id\":\"Dhvba4pBiwWgh7nby0dpV\",\"children\":[{\"text\":\"GenAuthBuffer\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"321IGqMz43c4I75W1yzu4\",\"children\":[{\"id\":\"bGSMq4j5TdVxrKuF3JPUE\",\"children\":[{\"text\":\"Calculates the local authentication key.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"xto2JtQKNILI1J72ErNgN\",\"children\":[{\"id\":\"YVhVfy_DcZnVkekrBX0eD\",\"children\":[{\"id\":\"HF09_VhhOvynhByHpJx5O\",\"children\":[{\"text\":\"EnterRoom\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"xK8YgKAwT6Vl6ZgJc_Sok\",\"children\":[{\"id\":\"kkFtHOdatwAZERcXk9d1G\",\"children\":[{\"text\":\"Enters a room.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"W0hXA5HncamnrkQ41GYm0\",\"children\":[{\"id\":\"THB_kZ6m2KIPKMikJLcwy\",\"children\":[{\"id\":\"dUO9LYQEPPw1fo3P6kMnJ\",\"children\":[{\"text\":\"ExitRoom\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"7_c4aJyu7RxHFAvWrVWGT\",\"children\":[{\"id\":\"HHZ9JIoz8qLrp4UxTebi9\",\"children\":[{\"text\":\"Exits a room.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"O1Nhv_TEr22oDKuvq33xe\",\"children\":[{\"id\":\"bkrpgpbbPQ-6LHcTsJdp4\",\"children\":[{\"id\":\"bwjSGO1RfUuUM5VK2wqYm\",\"children\":[{\"text\":\"IsRoomEntered\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"_q2SzptSvadtJH3rsScrW\",\"children\":[{\"id\":\"eqVsiYPdy4H_T1ytnEXn0\",\"children\":[{\"text\":\"Determines whether room entry is successful.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"rowHeader\":true,\"type\":\"table\",\"widths\":[38,62],\"widthMode\":\"percentage\"},{\"id\":\"fS9_QnEO2jNtSGqXO8VXY\",\"children\":[{\"text\":\"Local authentication key calculation\"}],\"nodeId\":\"local-authentication-key-calculation\",\"type\":\"h3\"},{\"id\":\"7LOygpcvBwkxU45ayRcOb\",\"children\":[{\"text\":\"Generate \"},{\"code\":1,\"text\":\"AuthBuffer\"},{\"text\":\" for encryption and authentication of relevant features. For release in the production environment, use the backend deployment key as detailed in \"},{\"id\":\"L33ocpsT-BOH6KXqz2ek-\",\"children\":[{\"text\":\"Authentication Key\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://www.tencentcloud.com/document/product/607/12218\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/12218\"},\"type\":\"ref\"},{\"text\":\". \"}],\"type\":\"p\"},{\"id\":\"JAiLMPHeDdw5pm_WhBPZW\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype6\",\"type\":\"h4\"},{\"id\":\"ApNy7ajmnnlLTgaHx3ba1\",\"children\":[{\"id\":\"0of1v85zA-8I0vkavcawM\",\"children\":[{\"text\":\"Future GenAuthBuffer(String appID, String roomID, String openID, String key)\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"BolCyN8R9wPnBhFou2hB5\",\"children\":[{\"id\":\"PzE_qnhw31FXbujH-m8ud\",\"children\":[{\"id\":\"zG2VxefcvyZ-oFvINv1g8\",\"children\":[{\"id\":\"S_P9M6FZMmFrii0XcSo26\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"wg6ulzVsK9hXiQgg_2TTb\",\"children\":[{\"id\":\"vKoezpE3cWyZHEZIf6S8S\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"zUCNBJ9xdT7gWl6eXS7jU\",\"children\":[{\"id\":\"fwyncv0rdVooCGnftVehu\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"PGg18dnk7bJz6PfVQTbMk\",\"children\":[{\"id\":\"6EVD5IpidY5_V1o2GbAOg\",\"children\":[{\"id\":\"5u5MngleijfIGa8HYcX9y\",\"children\":[{\"text\":\"appID\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"jMzQCSwt-jI0anTHCfTB-\",\"children\":[{\"id\":\"Y069XlhU0Es2ifkzHjjdp\",\"children\":[{\"text\":\"string\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"et4ov9SboCqTD6CKuUFok\",\"children\":[{\"id\":\"wHBJbkjaHLXFgEPEWY0-K\",\"children\":[{\"text\":\"`AppID` from the Tencent Cloud console\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"ITaKMnD8UwqGI0EbHMr68\",\"children\":[{\"id\":\"scuyjSLY2ijFwTsC9shqn\",\"children\":[{\"id\":\"OXGF5fmNOFDeZ12yooAOQ\",\"children\":[{\"text\":\"roomID\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"mwtvJsXll31eQsoA4SXWl\",\"children\":[{\"id\":\"awzcusiPxfctRFxL0hJu9\",\"children\":[{\"text\":\"string\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"3iHsYHF8MBY0Q_D8qd5ws\",\"children\":[{\"id\":\"450lC2T5mn8-om46bI5nG\",\"children\":[{\"text\":\"Room ID, which can contain up to 127 characters.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"Y0UoUooi37ycL2EUMTKzn\",\"children\":[{\"id\":\"XFsYVzNOI4qKgQU-0be0-\",\"children\":[{\"id\":\"Q_cww8uTIJ72xJq-uGsV7\",\"children\":[{\"text\":\"openID\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Qvh6Ffmw0WN5GeDfL_4N2\",\"children\":[{\"id\":\"ptwbyutfOQUIWl0SKQ8Td\",\"children\":[{\"text\":\"string\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"oEy3ruLByHUGAS09LBUp_\",\"children\":[{\"id\":\"FMpseNssZYt7RPRN5qWYH\",\"children\":[{\"text\":\"User ID, which is the same as `openID` during initialization.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"CdP7jfm0kDmJCuHJ9DWtt\",\"children\":[{\"id\":\"c2E7QlcZMqtA2hvzk3epT\",\"children\":[{\"id\":\"aOz8FNmwt3JH32zmuorzK\",\"children\":[{\"text\":\"key\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"q0ITAiCVL5GR9q4t8My3r\",\"children\":[{\"id\":\"G7Vv3CNdi58sKcFVcw0wS\",\"children\":[{\"text\":\"string\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Sj-1Jmo8naqh7C2isLAmP\",\"children\":[{\"id\":\"ELR5MsKl6aLYuFgRjtSBk\",\"children\":[{\"text\":\"Permission key from the Tencent Cloud \"},{\"id\":\"xjEKvOxjZr9FVdGzzNnyw\",\"children\":[{\"text\":\"console\"}],\"linkTarget\":\"self\",\"props\":{\"type\":\"link\",\"url\":\"https://console.tencentcloud.com/gamegme\"},\"type\":\"ref\"},{\"text\":\".\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"rowHeader\":true,\"type\":\"table\",\"widths\":[17,19,64],\"widthMode\":\"percentage\"},{\"id\":\"UJPHKHpym63YUWj3pq81U\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code3\",\"type\":\"h4\"},{\"id\":\"e5aijES1N4IN7DatA_BWO\",\"children\":[{\"id\":\"022UT8uhZSHixnI8TNtmS\",\"children\":[{\"text\":\" Uint8List userSig = await ITMGContext.GetInstance().GenAuthBuffer(_editAppID.text, _editRoomID.text, _editOpenID.text, _editKey.text);\"}],\"type\":\"code-line\"},{\"id\":\"FHlGmaOOHVNxiQpEFtDB3\",\"children\":[{\"text\":\" int res = await ITMGContext.GetInstance().EnterRoom(_editRoomID.text, 1, userSig);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"xEpUZAq8aJbb_0cRNbt0g\",\"children\":[{\"text\":\"Entering a room\"}],\"nodeId\":\"entering-a-room\",\"type\":\"h3\"},{\"id\":\"kjI-Oc01QvJUUOjiK-xDl\",\"children\":[{\"text\":\"This API is used to enter a room with the generated authentication information. The mic and speaker are not enabled by default after room entry.\"}],\"type\":\"p\"},{\"id\":\"Qgfu3x4iM315GW9lIoYbl\",\"children\":[{\"id\":\"jsIVA2vGs_Jw20mm1-u8w\",\"children\":[{\"b\":1,\"color\":\"#04C8DC\",\"text\":\"Note: \",\"type\":\"text\"}],\"type\":\"p\"},{\"id\":\"FjUtc04MkaS9Y-YS81bqa\",\"children\":[{\"text\":\"If the room entry callback result is \"},{\"code\":1,\"text\":\"0\"},{\"text\":\", the room entry is successful. If \"},{\"code\":1,\"text\":\"0\"},{\"text\":\" is returned from the \"},{\"code\":1,\"text\":\"EnterRoom\"},{\"text\":\" API, it doesn't necessarily mean that the room entry is successful.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"hvpp-3EWc8ibIqWNwFbza\",\"children\":[{\"text\":\"The audio type of the room is determined by the first user entering the room. After that, if a member in the room changes the room type, it will take effect for all members there. For example, if the first user entering the room uses the smooth sound quality, and the second user entering the room uses the HD sound quality, the room audio type of the second user will change to the smooth sound quality. Only after a member in the room calls the \"},{\"code\":1,\"text\":\"ChangeRoomType\"},{\"text\":\" API will the audio type of the room be changed.\"}],\"start\":false,\"type\":\"uli\"}],\"hintType\":\"alert\",\"type\":\"hint\"},{\"id\":\"Ha2qpIlQy0mRLi3JTGgmy\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype7\",\"type\":\"h4\"},{\"id\":\"KTEbbETV6PxhAzD5ag8FF\",\"children\":[{\"id\":\"QkeZPyh7iGsHhx7I_JATR\",\"children\":[{\"text\":\"Future EnterRoom(String roomID, int roomType, Uint8List authBuffer)\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"DNp6QXoVg9x5AogRrHqJy\",\"children\":[{\"id\":\"hLHARbLCberxWoeAZGAbI\",\"children\":[{\"id\":\"95oH7TYHrcO0FgVnsQvI5\",\"children\":[{\"id\":\"lhk7GsH9CDfMLXIuRBhT9\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"US5GxMQrwHUq7kPB2YBvd\",\"children\":[{\"id\":\"Y-lz1sh9EtmaiXDSjbT0F\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"aENXi4VfV7JrTEEXn3mo3\",\"children\":[{\"id\":\"de8rkN8sdfpyXHYBV-F1t\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"SX9Blzj8AJh1bMqaR5-LD\",\"children\":[{\"id\":\"hgDqfEX68TyDz2giRHWrO\",\"children\":[{\"id\":\"3LREQp1wYrTLEq-3jY0DE\",\"children\":[{\"text\":\"roomId\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"IdC2fjG1nz3Wk-OG4yK41\",\"children\":[{\"id\":\"uAJYGEPP2prCnhohNQBCE\",\"children\":[{\"text\":\"string\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"bV1osfvBNHeOlNwk8RYw2\",\"children\":[{\"id\":\"6dLnKQkjbui5WRCT3bcaF\",\"children\":[{\"text\":\"Room ID, which can contain up to 127 characters.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"ivikjFjRsoYDmvfgGySDM\",\"children\":[{\"id\":\"ZeUaMd4g-M3Kr0Ct_XIKV\",\"children\":[{\"id\":\"pm1gwuhhZonBhZeQVKC61\",\"children\":[{\"text\":\"roomType\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"2vHscyRYhnCVwCP8Csc31\",\"children\":[{\"id\":\"DchKqvYh0Cp6UJR5dFktA\",\"children\":[{\"text\":\"ITMGRoomType\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"OCJjXgS7JwGJ68h_TB4-U\",\"children\":[{\"id\":\"UTnKrtUKEha2NQQjPS5AM\",\"children\":[{\"text\":\"Room type. We recommend that you select `ITMG_ROOM_TYPE_FLUENCY` for games. For more information on room audio types, see \"},{\"id\":\"uYGwmyBIrLwzhn3yro7Ym\",\"children\":[{\"text\":\"Sound Quality\"}],\"linkTarget\":\"self\",\"props\":{\"type\":\"link\",\"url\":\"https://intl.cloud.tencent.com/document/product/607/18522\"},\"type\":\"ref\"},{\"text\":\".\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"XRqIBQebOi5_vfipvgPjZ\",\"children\":[{\"id\":\"uvnGtz-lKkVfCzG55mi_F\",\"children\":[{\"id\":\"20IbxnhWrtsFbhYTM5045\",\"children\":[{\"text\":\"appKey\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"jyLQcfrQUE0zT3lA1FSZX\",\"children\":[{\"id\":\"XkBIyrSeBp8YxzTUzOcL6\",\"children\":[{\"text\":\"Uint8List\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ORoUpQBcisCWE0cxaKQVr\",\"children\":[{\"id\":\"GrUkjI6ENGVAR3HvEj6KA\",\"children\":[{\"text\":\"Authentication key\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"rowHeader\":true,\"type\":\"table\",\"widths\":[13,19,68],\"widthMode\":\"percentage\"},{\"id\":\"eoguXQQlr2YQXdKw99bcO\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code4\",\"type\":\"h4\"},{\"id\":\"jf2AB-wxvNrJjm3Bnhiap\",\"children\":[{\"id\":\"L9eY57wh2MqYtprN-7tJr\",\"children\":[{\"text\":\"int res = await ITMGContext.GetInstance().EnterRoom(_editRoomID.text, 1, authBuffer);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"kL5c442oRwmKHT75_NzQk\",\"children\":[{\"text\":\"Callback for room entry\"}],\"nodeId\":\"callback-for-room-entry\",\"type\":\"h3\"},{\"id\":\"9zmnBySCLwbFvuDEtNd2o\",\"children\":[{\"text\":\"After the user enters the room, the \"},{\"code\":1,\"text\":\"ITMG_MAIN_EVENT_TYPE_ENTER_ROOM\"},{\"text\":\" event type will be called back to notify the room entry result, which can be listened on for processing. A successful callback means that the room entry is successful, and the billing \"},{\"b\":1,\"text\":\"starts\"},{\"text\":\".\"}],\"type\":\"p\"},{\"id\":\"nGhRB-_HdKD-EWwMu3cAs\",\"children\":[{\"id\":\"Cprjz853yUcLbO5MlnBfE\",\"children\":[{\"b\":1,\"color\":\"#04C8DC\",\"text\":\"Note: \",\"type\":\"text\"}],\"type\":\"p\"},{\"id\":\"tY5OdcxHol6CAulx-Niek\",\"children\":[{\"b\":1,\"text\":\"Billing references:\"}],\"type\":\"p\"},{\"id\":\"B4gVS77M3tt8_E0DFXHK8\",\"children\":[{\"id\":\"jwxYZJs_SA7URJWh3RQp6\",\"children\":[{\"text\":\"Purchase Guide\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://intl.cloud.tencent.com/document/product/607/50009\",\"props\":{\"type\":\"link\",\"url\":\"https://intl.cloud.tencent.com/document/product/607/50009\"},\"type\":\"ref\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"7CmGpjvno2mEaPLRc1vBc\",\"children\":[{\"id\":\"1fp17cDwtO_GYT6fPyHCK\",\"children\":[{\"text\":\"Billing\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://intl.cloud.tencent.com/document/product/607/30255\",\"props\":{\"type\":\"link\",\"url\":\"https://intl.cloud.tencent.com/document/product/607/30255\"},\"type\":\"ref\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"zcujSMP8jGo9xp6JchHeA\",\"children\":[{\"text\":\"\"},{\"type\":\"ref\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/30255#.E4.BD.BF.E7.94.A8.E5.AE.9E.E6.97.B6.E8.AF.AD.E9.9F.B3.E5.90.8E.EF.BC.8C.E5.A6.82.E6.9E.9C.E5.AE.A2.E6.88.B7.E7.AB.AF.E6.8E.89.E7.BA.BF.E4.BA.86.EF.BC.8C.E6.98.AF.E5.90.A6.E8.BF.98.E4.BC.9A.E7.BB.A7.E7.BB.AD.E8.AE.A1.E8.B4.B9.EF.BC.9F\"},\"children\":[{\"text\":\"Will the billing continue if the client is disconnected from the server when using the voice chat?\"}],\"id\":\"GUUgmf1UKPoWjs0UgDtBj\"},{\"text\":\"\"}],\"start\":false,\"type\":\"uli\"}],\"hintType\":\"alert\",\"type\":\"hint\"},{\"id\":\"XmtHcPBq5t7pHBzpQLBn_\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code5\",\"type\":\"h4\"},{\"id\":\"z62jifKdyS5BXJOb89N_I\",\"children\":[{\"id\":\"TgcjJEl4iF4BLxd4KsXkU\",\"children\":[{\"text\":\"// Listen on an event:\"}],\"type\":\"code-line\"},{\"id\":\"6HIbQWFd1HCCr5c4XmxA2\",\"children\":[{\"text\":\"void handleEventMsg(int eventType, String data) async {\"}],\"type\":\"code-line\"},{\"id\":\"mt3RcNyiyPCDc7kX71zZn\",\"children\":[{\"text\":\" switch (eventType) {\"}],\"type\":\"code-line\"},{\"id\":\"IWVNf-JORJHqb-zedJZ_p\",\"children\":[{\"text\":\" case ITMG_MAIN_EVENT_TYPE_ENTER_ROOM:\"}],\"type\":\"code-line\"},{\"id\":\"fMODEJdXY_0MMz7iVi08t\",\"children\":[{\"text\":\" {\"}],\"type\":\"code-line\"},{\"id\":\"dBLSbu-S4FgW0PBaPzK30\",\"children\":[{\"text\":\" // The process after room entry\"}],\"type\":\"code-line\"},{\"id\":\"z0rt5fqpF-LPdnmLeJs1M\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"4G9YV7ehgyQMb5iKRncQa\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"pemZ8TsHAO0oLuQvJDBsW\",\"children\":[{\"text\":\"}\"}],\"type\":\"code-line\"},{\"id\":\"JDg_2TnwMeku1yOMzasIf\",\"children\":[{\"text\":\"ITMGContext.GetInstance().SetEvent(handleEventMsg);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"q00nGIrAph74-egEQ_RLy\",\"children\":[{\"text\":\"Data details\"}],\"nodeId\":\"data-details\",\"type\":\"h4\"},{\"id\":\"lWX2Xvuwje9vBYPIYm9Gn\",\"children\":[{\"id\":\"HOzbliiNEv9jDEFMtpObH\",\"children\":[{\"id\":\"3ZkM1R3mmxJYrP8t3I9_C\",\"children\":[{\"id\":\"YmYZIayBNSvjETwDyiZff\",\"children\":[{\"text\":\"Message\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"vanCR_IfKdKh-yict8r5C\",\"children\":[{\"id\":\"_zIEB3Wpen6Hm6Zif6ejn\",\"children\":[{\"text\":\"Data\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"BrYi2_UWUXA33-Ar5pf3p\",\"children\":[{\"id\":\"c6qlCWNLPGeUnOFedEHwt\",\"children\":[{\"text\":\"Sample\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"o-7JkGEV_hfd-4mT-L8bD\",\"children\":[{\"id\":\"zI7t_HO5S1HR6W2tiWpbT\",\"children\":[{\"id\":\"FvXoV75QycfZAAoxqWzh5\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_ENTER_ROOM\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"qYpYOtMLFabXPAq1kUXwy\",\"children\":[{\"id\":\"45PMHjxXzvTshW4MSYt3x\",\"children\":[{\"text\":\"result; error_info\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"RB04HMj9Tlgi2CXP7hz8J\",\"children\":[{\"id\":\"pMkXBk6U_sKuJ3OysGNTU\",\"children\":[{\"text\":\"{\\\"error_info\\\":\\\"\\\",\\\"result\\\":0}\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"R_BFeSwIkILd4DnHuztF5\",\"children\":[{\"id\":\"aOyo7a9NeHOXFC8KqmXem\",\"children\":[{\"id\":\"zcGZyal5Bi7CiNownaFkZ\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_ROOM_DISCONNECT\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"2NGW0RNOp7m4mfXoja0vV\",\"children\":[{\"id\":\"Hff9J46Fbzp7XPZvajnQf\",\"children\":[{\"text\":\"result; error_info\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"e-mILnvYbAamAWURGZnN5\",\"children\":[{\"id\":\"fwR6mS2Jc7_Rfligwaxfu\",\"children\":[{\"text\":\"{\\\"error_info\\\":\\\"waiting timeout, please check your network\\\",\\\"result\\\":0}\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"rowHeader\":true,\"type\":\"table\",\"widths\":[33.33,18,48.67],\"widthMode\":\"percentage\"},{\"id\":\"_VbiGqOa-_xlsy2Ra7yXB\",\"children\":[{\"text\":\"If the network is disconnected, there will be a disconnection callback notification \"},{\"code\":1,\"text\":\"ITMG_MAIN_EVENT_TYPE.ITMG_MAIN_EVENT_TYPE_ROOM_DISCONNECT\"},{\"text\":\". At this time, the SDK will automatically reconnect, and the callback is \"},{\"code\":1,\"text\":\"ITMG_MAIN_EVENT_TYPE_RECONNECT_START\"},{\"text\":\". When the reconnection is successful, there will be a callback \"},{\"code\":1,\"text\":\"ITMG_MAIN_EVENT_TYPE_RECONNECT_SUCCESS\"},{\"text\":\".\"}],\"type\":\"p\"},{\"id\":\"zYbpo7xpwPw3c5cD5yzK6\",\"children\":[{\"text\":\"Error codes\"}],\"nodeId\":\"error-codes\",\"type\":\"h4\"},{\"id\":\"DpDg0fvDYcxrgAhfpnols\",\"children\":[{\"id\":\"Qs_0jKag_k_7m2_jQhvrW\",\"children\":[{\"id\":\"S0PEwkw9VEv3t_c7vlzHE\",\"children\":[{\"id\":\"MCWn-8oDXrqhHQcysvVP3\",\"children\":[{\"text\":\"Error Code\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"X4n3Wsg28ZA4mwns2otGI\",\"children\":[{\"id\":\"uCbVdiqS_B6690-isNzt3\",\"children\":[{\"text\":\"Cause and Solution\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"-yv9_9106f9Ntbc6pMvgm\",\"children\":[{\"id\":\"ubCcUqZJxTJndA9hHhAI7\",\"children\":[{\"id\":\"-N1ly2_Bs3iC8VJlHHbld\",\"children\":[{\"text\":\"7006\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"m_BQh-4DKUam4q1EdnrvO\",\"children\":[{\"id\":\"pb6-nfJ13l0OPzbag0mKY\",\"children\":[{\"text\":\"Authentication failed. Possible causes: - The `AppID` does not exist or is incorrect.- An error occurred while authenticating the `authbuff`.- Authentication expired.- The `OpenId` does not meet the specification.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"-4shOkMVDse920rLBzyns\",\"children\":[{\"id\":\"xoXV-0hx3nuVRce8jncHD\",\"children\":[{\"id\":\"VN5HvREe7DOEhSUKHYmVF\",\"children\":[{\"text\":\"7007\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"64gP4YFx0LXYVWU8peyXw\",\"children\":[{\"id\":\"PpIGukdBjIcjXdFLftxF0\",\"children\":[{\"text\":\"The user was already in another room.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"8iTboSG1EuYs34QMvEt5e\",\"children\":[{\"id\":\"kM7qKBFibPOtTMwha9cWZ\",\"children\":[{\"id\":\"as4Hn5DztrsVpapkoNRz0\",\"children\":[{\"text\":\"1001\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"BXBh9kIalj_Vm72cGHQ1-\",\"children\":[{\"id\":\"45VCBZ_YG93IBCIJhAXQy\",\"children\":[{\"text\":\"The user was already in the process of entering a room but repeated this operation. We recommend that you not call the room entering API until the room entry callback is returned.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"jQXCA8ONOrwn3_kpsvxnl\",\"children\":[{\"id\":\"10UGqWotgZURbUP-KSbQJ\",\"children\":[{\"id\":\"MAgQpGOQTFI7baMQAFDyc\",\"children\":[{\"text\":\"1003\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"VsHF-OiJR0cxoEJ2Rangj\",\"children\":[{\"id\":\"T0LVo0_GrCQVan4MAgeyi\",\"children\":[{\"text\":\"The user was already in the room and called the room entering API again.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"6rRK-v1OySD-s_tAff6oE\",\"children\":[{\"id\":\"_ngEtvIigIt46x4ers2MF\",\"children\":[{\"id\":\"wdLnABfa3YBWXrreTr3Qp\",\"children\":[{\"text\":\"1101\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"9y17Ru4vfZV2e_kH4hH_v\",\"children\":[{\"id\":\"TgKQQDG_5z1oqjrmCZ-ut\",\"children\":[{\"text\":\"Make sure that the SDK is initialized, `OpenId` complies with the rules, the APIs are called in the same thread, and the `Poll` API is called normally.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"rowHeader\":true,\"type\":\"table\",\"widths\":[15,85],\"widthMode\":\"percentage\"},{\"id\":\"q3dU7DsiEeqjYRPH_Bt3W\",\"children\":[{\"text\":\"Exiting a room\"}],\"nodeId\":\"exiting-a-room\",\"type\":\"h3\"},{\"id\":\"i2LvlipxzpEDBwJAN6fMs\",\"children\":[{\"text\":\"This API is used to exit the current room. It is an async API. The returned value \"},{\"code\":1,\"text\":\"AV_OK\"},{\"text\":\" indicates a successful async delivery. If there is a scenario in the application where room entry is performed immediately after room exit, you don't need to wait for the \"},{\"code\":1,\"text\":\"RoomExitComplete\"},{\"text\":\" callback notification from the \"},{\"code\":1,\"text\":\"ExitRoom\"},{\"text\":\" API; instead, you can directly call the \"},{\"code\":1,\"text\":\"EnterRoom\"},{\"text\":\" API.\"}],\"type\":\"p\"},{\"id\":\"GQXIvV8vxqTlvwB7SuFgX\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype8\",\"type\":\"h4\"},{\"id\":\"ZlrYIcrYzFxwH1nmeg3z_\",\"children\":[{\"id\":\"eVP0Pdn5nk8CnY7S27u-p\",\"children\":[{\"text\":\"Future ExitRoom()\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"2H3j74y5yVOFvxiJsH0M5\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code6\",\"type\":\"h4\"},{\"id\":\"dxGvPfLaiQx5lVibSkvFP\",\"children\":[{\"id\":\"Id5QucoknPGE3J11g6CMz\",\"children\":[{\"text\":\"ITMGContext.GetInstance().ExitRoom();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"zM2oQLeG_dNpYO8Xgp4EZ\",\"children\":[{\"text\":\"Callback for room exit\"}],\"nodeId\":\"callback-for-room-exit\",\"type\":\"h4\"},{\"id\":\"U2pZVCoWH3VhHVWQ4sxpF\",\"children\":[{\"text\":\"After the user exits a room, a callback will be returned with the message being \"},{\"code\":1,\"text\":\"ITMG_MAIN_EVENT_TYPE_EXIT_ROOM\"},{\"text\":\". The sample code is shown below:\"}],\"type\":\"p\"},{\"id\":\"oCYvrMZ-lzJigzOiOPHIL\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code7\",\"type\":\"h4\"},{\"id\":\"gGHPVslWDHUZIw15-8XLR\",\"children\":[{\"id\":\"SPsQOgkU12oWGG71ZLgzk\",\"children\":[{\"text\":\"void handleEventMsg(int eventType, String data) async{\"}],\"type\":\"code-line\"},{\"id\":\"hkzG8cEOrVNIy1PvgTh5A\",\"children\":[{\"text\":\" switch (eventType) {\"}],\"type\":\"code-line\"},{\"id\":\"eXCOc-H3B26IPkPwPAnji\",\"children\":[{\"text\":\" case ITMG_MAIN_EVENT_TYPE_EXIT_ROOM:\"}],\"type\":\"code-line\"},{\"id\":\"LK_kfbpCA1Idmr2kCrEbe\",\"children\":[{\"text\":\" {\"}],\"type\":\"code-line\"},{\"id\":\"CuZ5jHF3QaodiJv6bykMN\",\"children\":[{\"text\":\" // The process after room exit\"}],\"type\":\"code-line\"},{\"id\":\"H3tIMPndUA1a0xzof36of\",\"children\":[{\"text\":\" break;\"}],\"type\":\"code-line\"},{\"id\":\"zJCU-9m3kZADsKD2bZNlr\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"gD-V4-U4CFrnyF3SskNVY\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"0bUt0lJI0H6pqmn3PP2RY\",\"children\":[{\"text\":\"}\"}],\"type\":\"code-line\"},{\"id\":\"mRaiZqmM_yRXReViLfSpu\",\"children\":[{\"text\":\"ITMGContext.GetInstance().SetEvent(handleEventMsg);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"T92x7Ccc6kf3SGJc4f8_p\",\"children\":[{\"text\":\"Determining whether user has entered room\"}],\"nodeId\":\"determining-whether-user-has-entered-room\",\"type\":\"h3\"},{\"id\":\"ATVu5czJP8zdw2eTrcFO_\",\"children\":[{\"text\":\"This API is used to determine whether the user has entered a room. A value in bool type will be returned. Do not call this API during room entry.\"}],\"type\":\"p\"},{\"id\":\"VtvJq3ACBfpB7JuDK5TjW\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype9\",\"type\":\"h4\"},{\"id\":\"oeSHVWSAdPhW_3Y6XUE7C\",\"children\":[{\"id\":\"nQwPQOSrz0xTZzOD5PaJ_\",\"children\":[{\"text\":\"Future IsRoomEntered()\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"K5dNh_G3Nlr2o0_YJBSJS\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code8\",\"type\":\"h4\"},{\"id\":\"FR9kgi_Mt7GxdktqRKX6-\",\"children\":[{\"id\":\"XPnoQq8oiI6TVGvzAmxcl\",\"children\":[{\"text\":\"bool res = await ITMGContext.GetInstance().IsRoomEntered();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"8-s6obCV4yTh0T_3hiA4M\",\"children\":[{\"text\":\"Room Status Maintenance\"}],\"nodeId\":\"room-status-maintenance\",\"type\":\"h2\"},{\"id\":\"zYi1MT3lNibg43T_d3FJt\",\"children\":[{\"text\":\"APIs in this section are used to display speaking members and members entering or exiting the room and mute a member in the room at the business layer.\"}],\"type\":\"p\"},{\"type\":\"p\",\"children\":[{\"text\":\"\"},{\"id\":\"KxJyGkx3UyFVEB_GMtwTh\",\"alt\":\"\",\"children\":[{\"text\":\"\"}],\"inline\":true,\"type\":\"image\",\"url\":\"https://cloudcache.intl.tencent-cloud.com/cms/backend-cms/17ad5228b34e11ee9fd6525400bb593a.png\",\"naturalSize\":[521,410],\"size\":[521,410]},{\"text\":\"\"}],\"id\":\"D-L5jA-c310WzGjDLMto8\"},{\"id\":\"6meRTliTm9UkTiUIfYR2W\",\"children\":[{\"id\":\"aS4OBtns40zTYFK33MJ8K\",\"children\":[{\"id\":\"fxyxC94v26Emva9rsPMJG\",\"children\":[{\"id\":\"bSoUzXgExQZ9qKJZFEj0q\",\"children\":[{\"text\":\"API/Notification\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"D_JjChenlSavBDzMoYlrT\",\"children\":[{\"id\":\"xZsahC51LPQkT90qrKnDZ\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"S7bxB9ooxvHykSvczZUZk\",\"children\":[{\"id\":\"mZHbBQk1QzVJGBNKqRTuv\",\"children\":[{\"id\":\"_kM7hT_PTaUJI2jLAQGKK\",\"children\":[{\"text\":\"ITMG_MAIN_EVNET_TYPE_USER_UPDATE\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"6ag1t46nB5dmsDAF--Lf8\",\"children\":[{\"id\":\"PeEPC1sYMylujCwKnBf8u\",\"children\":[{\"text\":\"The member status changed.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"OsfHKrSLCw5s7YJ8uedOq\",\"children\":[{\"id\":\"QGVF3rtnNFzALAvc8Iwf4\",\"children\":[{\"id\":\"JticB-Icc_J4x_pMUYX4X\",\"children\":[{\"text\":\"AddAudioBlackList\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"_oT4vHNr4p9yBE28Ga4im\",\"children\":[{\"id\":\"s1vl1n6UTQGs7mLJECSk-\",\"children\":[{\"text\":\"Mutes a member in the room.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"--4lnERzoUsq_eLbcs6jH\",\"children\":[{\"id\":\"vEL-ikcgVpgZVSJx_49sl\",\"children\":[{\"id\":\"eAj6_qYY9BDV_bfXip_XM\",\"children\":[{\"text\":\"RemoveAudioBlackList\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"X03w1c1JUjqawSb2lsD8k\",\"children\":[{\"id\":\"RuJsA0hMjRWD9_maHm5Ih\",\"children\":[{\"text\":\"Unmutes a user.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"BxUu7JkbV79Ygnvb0w-cw\",\"children\":[{\"id\":\"q6tPTF016NMUrRlNedlSO\",\"children\":[{\"id\":\"0MVMBEJIxJhG9OpfyduM7\",\"children\":[{\"text\":\"IsOpenIdInAudioBlackList\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"yy6XxUa8cpU_OZuPolszq\",\"children\":[{\"id\":\"pVFtWIv0jFzjiutrtD1uY\",\"children\":[{\"text\":\"Queries whether the user of the specified `openid` is muted.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"rowHeader\":true,\"type\":\"table\",\"widths\":[43,57],\"widthMode\":\"percentage\"},{\"id\":\"V9sGnfrJ306uXFbOSu-an\",\"children\":[{\"text\":\"Notification events of member room entry and speaking status\"}],\"nodeId\":\"notification-events-of-member-room-entry-and-speaking-status\",\"type\":\"h3\"},{\"id\":\"y_2X5ipImnjlL0mVxFtRm\",\"children\":[{\"text\":\"This event is used to get speaking users in the room and display the users on the UI, and to send a notification when someone enters or exits the room.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"BZu91QA1DKd-r0Z5gcaER\",\"children\":[{\"text\":\"A notification for this event will be sent only when the status changes. To get the member status in real time, cache the notification when it is received at the business layer. The event message \"},{\"code\":1,\"text\":\"ITMG_MAIN_EVNET_TYPE_USER_UPDATE\"},{\"text\":\" containing \"},{\"code\":1,\"text\":\"event_id\"},{\"text\":\", \"},{\"code\":1,\"text\":\"count\"},{\"text\":\", and \"},{\"code\":1,\"text\":\"openIdList\"},{\"text\":\" will be returned, which will be identified in the \"},{\"code\":1,\"text\":\"OnEvent\"},{\"text\":\" notification.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"MhKnyyBA63ZYUsBRwipOk\",\"children\":[{\"text\":\"Notifications of the \"},{\"code\":1,\"text\":\"EVENT_ID_ENDPOINT_NO_AUDIO\"},{\"text\":\" audio event will be sent only when the threshold is exceeded, that is, other members in the room can receive the notification that the local user stops speaking only after the local client captures no voice for two seconds.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"h1reiT-6oH3CpbKFdQTpf\",\"children\":[{\"text\":\"The audio event returns only the member speaking status but not the specific volume level. If you need the specific volume levels of members in the room, you can use the \"},{\"code\":1,\"text\":\"GetVolumeById\"},{\"text\":\" API.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"_chYG7f_QSka4vGG_tLC3\",\"children\":[{\"id\":\"5eXr9tOqwJz7vNLulU5xi\",\"children\":[{\"id\":\"420ILX1u49e-29tWqL6x2\",\"children\":[{\"id\":\"YzxS_HWSy9xMnBfPvAlXY\",\"children\":[{\"text\":\"event_id\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"hJR_OMll4nLXFhxjziGoe\",\"children\":[{\"id\":\"0RA_IW7B7-gP1_gqKE1zu\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"GdFXMtFbhAB54TnZpDS0O\",\"children\":[{\"id\":\"vZxqrpCywgeHnJqlL2Ki8\",\"children\":[{\"text\":\"Maintenance\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"I7PiLGVDsDtmLQbkqNDkw\",\"children\":[{\"id\":\"_Naa9xYScbesnc9k2xUUv\",\"children\":[{\"id\":\"Fv-LRI5Fvkcf3sQMForUM\",\"children\":[{\"text\":\"EVENT_ID_ENDPOINT_ENTER\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"frjTrP2w7i5k10VEG274T\",\"children\":[{\"id\":\"8dfNBDpkFIVgk1URmvQVB\",\"children\":[{\"text\":\"Return the `openid` of the member entering the room.\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"VlHXR2UVSXJjN38GrhxDG\",\"children\":[{\"id\":\"xyzoaoZScvLoFCEaP7ATB\",\"children\":[{\"text\":\"Member list\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"CHzpRhNsS5MwR9EFJ4SM-\",\"children\":[{\"id\":\"RwwAhgK7E9GSiUgYrtl65\",\"children\":[{\"id\":\"G6gWQp4gN_UfWphzlgzXg\",\"children\":[{\"text\":\"EVENT_ID_ENDPOINT_EXIT\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ARHKMJTc0N3V8QJqMxudq\",\"children\":[{\"id\":\"E3UE23PS8GL69DbpWZEWZ\",\"children\":[{\"text\":\"Return the `openid` of the member exiting the room.\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"oLB3B__CFVnrij9gSI9x5\",\"children\":[{\"id\":\"uQxHwkvoCW2O_WgBuGHMz\",\"children\":[{\"text\":\"Member list\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"fLQJ82Q-OL1A_glPiMWSu\",\"children\":[{\"id\":\"AemYpjQNOiUkuO_FoklMG\",\"children\":[{\"id\":\"_fQkGR7TNPRcYk6lhgSt5\",\"children\":[{\"text\":\"EVENT_ID_ENDPOINT_HAS_AUDIO\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"US0EzgZbh8igXfmaTXjVH\",\"children\":[{\"id\":\"oRDyP6eC22A00NprnPW6o\",\"children\":[{\"text\":\"Return the `openid` of the member sending audio packets in the room. This event can be used to determine whether a user is speaking and display the voiceprint effect.\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"zDrh0rbwEV2y3y4NrPg2B\",\"children\":[{\"id\":\"q_qrHcU-NAzpwvsxSCvLd\",\"children\":[{\"text\":\"Chat member list\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"8ygEXDPxSJPLy1lnQkERa\",\"children\":[{\"id\":\"woNL6_lc81PCs7dgA4g3M\",\"children\":[{\"id\":\"4FKauCnYzoA3M60HsQPSH\",\"children\":[{\"text\":\"EVENT_ID_ENDPOINT_NO_AUDIO\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"aGeB9mlyy7hQKle0LWY8I\",\"children\":[{\"id\":\"kUrEurg6EOTn8F4SCj7Za\",\"children\":[{\"text\":\"Return the `openid` of the member stopping sending audio packets in the room.\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"4dsJ6Wm4NKRKrE_-WUJ4M\",\"children\":[{\"id\":\"f_pfSM5p0_ETNl5zKqM5l\",\"children\":[{\"text\":\"Chat member list\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"rowHeader\":true,\"type\":\"table\",\"widths\":[29,48,23],\"widthMode\":\"percentage\"},{\"id\":\"Ikvs3dsMP6t0BDS87eTZx\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code9\",\"type\":\"h4\"},{\"id\":\"CzaycBwYMus2lB4y6huin\",\"children\":[{\"id\":\"s4m6nqOanDTbkzPBMJsqd\",\"children\":[{\"text\":\"void handleEventMsg(int eventType, String data) async {\"}],\"type\":\"code-line\"},{\"id\":\"B98Y6Wg20zGLOAR6q6b2Y\",\"children\":[{\"text\":\" if (eventType == ITMG_MAIN_EVENT_TYPE_ENTER_ROOM)\"}],\"type\":\"code-line\"},{\"id\":\"i3W78M4l_SkmNnmS3PDDG\",\"children\":[{\"text\":\" {\"}],\"type\":\"code-line\"},{\"id\":\"9_SSqwmuaQTF3utkf08Pg\",\"children\":[{\"text\":\" // Process\"}],\"type\":\"code-line\"},{\"id\":\"EofANypbW1BZ71hkxXi31\",\"children\":[{\"text\":\" switch (eventID)\"}],\"type\":\"code-line\"},{\"id\":\"Xlfqtp5xB6L4G2DWAqhwS\",\"children\":[{\"text\":\" {\"}],\"type\":\"code-line\"},{\"id\":\"T-tNowoAwXpI-3M-2WDM8\",\"children\":[{\"text\":\" case EVENT_ID_ENDPOINT_ENTER:\"}],\"type\":\"code-line\"},{\"id\":\"YUsaI-ib7pvg-5pMDHmyF\",\"children\":[{\"text\":\" // A member enters the room\"}],\"type\":\"code-line\"},{\"id\":\"ZywIV_bKmBEVeyiIz03qM\",\"children\":[{\"text\":\" break;\"}],\"type\":\"code-line\"},{\"id\":\"Jd9tYdxEHCRsuog5UuBP1\",\"children\":[{\"text\":\" case EVENT_ID_ENDPOINT_EXIT:\"}],\"type\":\"code-line\"},{\"id\":\"IUPTNceS6qq90_OV-6gqE\",\"children\":[{\"text\":\" // A member exits the room\"}],\"type\":\"code-line\"},{\"id\":\"WWFuGGM2B-LwswWiu8j1V\",\"children\":[{\"text\":\" break;\"}],\"type\":\"code-line\"},{\"id\":\"KfZ5FwymGLUA7nWeG5wtO\",\"children\":[{\"text\":\" case EVENT_ID_ENDPOINT_HAS_AUDIO:\"}],\"type\":\"code-line\"},{\"id\":\"bprFJMcijkZO8onie6Xc3\",\"children\":[{\"text\":\" // A member sends audio packets\"}],\"type\":\"code-line\"},{\"id\":\"4qi6KTHBlwtjFOhlMOB7J\",\"children\":[{\"text\":\" break;\"}],\"type\":\"code-line\"},{\"id\":\"GX6P3T1f8GbzUmH1xnGmi\",\"children\":[{\"text\":\" case EVENT_ID_ENDPOINT_NO_AUDIO:\"}],\"type\":\"code-line\"},{\"id\":\"OWwTN_4Kl_EuVBWp9Kvdj\",\"children\":[{\"text\":\" // A member stops sending audio packets\"}],\"type\":\"code-line\"},{\"id\":\"9b3pIfi3lriG7HZLmm_Tf\",\"children\":[{\"text\":\" break;\"}],\"type\":\"code-line\"},{\"id\":\"Vew_t9MgVxG2ddG9_XYC1\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"},{\"id\":\"GndDZCTKNaaTX9NbOSOHk\",\"children\":[{\"text\":\" default:\"}],\"type\":\"code-line\"},{\"id\":\"xUhBTlJqUzTMPAd7PQhtk\",\"children\":[{\"text\":\" break;\"}],\"type\":\"code-line\"},{\"id\":\"Ev9a7d5NeqKXBie3YgarF\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"DH31VzYDuEstPhieepd2_\",\"children\":[{\"text\":\" break;\"}],\"type\":\"code-line\"},{\"id\":\"Qw5e28CivlRUUbYb76nZ_\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"3vJL1JhjjsUCZtLWw7LhU\",\"children\":[{\"text\":\"}\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"1kuZ95nQM-wAiy2P5egkt\",\"children\":[{\"text\":\"Muting a member in the room\"}],\"nodeId\":\"muting-a-member-in-the-room\",\"type\":\"h3\"},{\"id\":\"VaZGRmeuYOAk_f3pyygNy\",\"children\":[{\"text\":\"This API is used to add an ID to the audio data blocklist. This operation blocks audio from someone and only applies to the local device without affecting other devices. The returned value \"},{\"code\":1,\"text\":\"0\"},{\"text\":\" indicates that the call is successful. Assume that users A, B, and C are all speaking using their mic in a room: \"}],\"type\":\"p\"},{\"id\":\"sehAqZEj3Z712qK_T-dpx\",\"children\":[{\"text\":\"If A blocks C, A can only hear B;\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"oyI50Y2lDITEbgnDg_82l\",\"children\":[{\"text\":\"If B blocks neither A nor C, B can hear both of them;\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"FcKWtw84PekoiYksAm_IZ\",\"children\":[{\"text\":\"If C blocks neither A nor B, C can hear both of them.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"xTQjeAbNzdVpcr5Q4muol\",\"children\":[{\"text\":\" This API is suitable for scenarios where a user is muted in a room.\"}],\"indent\":1,\"type\":\"p\"},{\"id\":\"1UHOJsrGnt4vqbtMTY-JL\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype10\",\"type\":\"h4\"},{\"id\":\"Wjn-w76z9UrnEr-fyFND6\",\"children\":[{\"id\":\"CXiy270ioNPjaUhPJY4do\",\"children\":[{\"text\":\"Future AddAudioBlackList(String openID) \"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"6eKBixiJEwgOw1nIPoM0l\",\"children\":[{\"id\":\"uao60Ef0UPsKbh36btc7-\",\"children\":[{\"id\":\"KKr8s6yFFC7Jh9k_DXPbC\",\"children\":[{\"id\":\"K-1acl1SMQWxKQvxdhsFJ\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"S4CnskUTs9ESFb9qP528v\",\"children\":[{\"id\":\"ct4mKkblmawBaa-C5AHX3\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"U5Ghb1DN1YOzqBe5STLcE\",\"children\":[{\"id\":\"FnwVDL6XFmA9ja8dD1J5L\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"vdAPx_zkeUxinhM03auS8\",\"children\":[{\"id\":\"triqN03aX519L-Ic5V8wZ\",\"children\":[{\"id\":\"3CA98Zxkxj5QfoSQCV_P9\",\"children\":[{\"text\":\"openID\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"l2JKiWZjcWGocchaycQyQ\",\"children\":[{\"id\":\"rowGNEAhveot1cz2oHI5_\",\"children\":[{\"text\":\"string\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"25AGa-Kz4MuiBEPGT6aLQ\",\"children\":[{\"id\":\"ByIFJAlxUu5Bl00bjXnNI\",\"children\":[{\"text\":\"`openid` of the user to be blocked\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"rowHeader\":true,\"type\":\"table\",\"widths\":[33.33,33.33,33.34],\"widthMode\":\"percentage\"},{\"id\":\"RiacLtYbp2xTtvhi9LRRE\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code10\",\"type\":\"h4\"},{\"id\":\"WLevNrti822Q6qStLFSzM\",\"children\":[{\"id\":\"XNJZX_3R1wKjOs7aQtEWX\",\"children\":[{\"text\":\"res = await ITMGContext.GetInstance().GetAudioCtrl().AddAudioBlackList(_editRoomManagerID.text);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"TLz7SIzLqliGOPi5XASBn\",\"children\":[{\"text\":\"Unmuting\"}],\"nodeId\":\"unmuting\",\"type\":\"h3\"},{\"id\":\"ARsx_LRLiIEw4iN2BtuvS\",\"children\":[{\"text\":\"This API is used to remove an ID from the audio data blocklist. A returned value of 0 indicates the call is successful.\"}],\"type\":\"p\"},{\"id\":\"1Du6kL0vdHPapJM7mN6-n\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype11\",\"type\":\"h4\"},{\"id\":\"JaU2pzV1wxPD4_9ZqPI_y\",\"children\":[{\"id\":\"60Z7Xkkt5ZzIayYlE9de-\",\"children\":[{\"text\":\"Future RemoveAudioBlackList(String openID)\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"Bqnt1FFybz8rdmK05LbOf\",\"children\":[{\"id\":\"1JKg6f8GUP0JKdfNVpPSH\",\"children\":[{\"id\":\"vHO00T_GCKXV4u_-l2JzH\",\"children\":[{\"id\":\"eyHkRRdG38lS25PtFrIO0\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"5vy-8r5rBDnIecFmLdPGz\",\"children\":[{\"id\":\"GZPgAZQWUZACO4Achjc5v\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"NTS09FBoETn2rMVzOPnlT\",\"children\":[{\"id\":\"H0ozw14fd-gy9FczaSxrK\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"CveCqtZKw9ldWz-6sO1O_\",\"children\":[{\"id\":\"FdUmdeuMveL2QsvexhSnK\",\"children\":[{\"id\":\"qWCaPlSAdASGgllP8zpQ_\",\"children\":[{\"text\":\"openId\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"1g4IqZFN5iUDlJDp1rdXb\",\"children\":[{\"id\":\"htjbr9Ln5ZnA4PGsgItbN\",\"children\":[{\"text\":\"string\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"1gGZvRXQWtDgTzUBO9dXt\",\"children\":[{\"id\":\"m_WJHrk87GZsiYqEKMEhT\",\"children\":[{\"text\":\"ID to be unblocked\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"rowHeader\":true,\"type\":\"table\",\"widths\":[33.33,33.33,33.34],\"widthMode\":\"percentage\"},{\"id\":\"PvGdatNelfWVhBwBIobE_\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code11\",\"type\":\"h4\"},{\"id\":\"myUBmZ7Uo1sUIsw-sanF0\",\"children\":[{\"id\":\"4i5ltsgaSz0xeHlPWRfPa\",\"children\":[{\"text\":\"res = await ITMGContext.GetInstance().GetAudioCtrl().RemoveAudioBlackList(_editRoomManagerID.text);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"7TSYUR6MtIlMvHL8Xyzhr\",\"children\":[{\"text\":\"Voice Chat Capturing APIs\"}],\"nodeId\":\"voice-chat-capturing-apis\",\"type\":\"h2\"},{\"id\":\"YxyMiHDn2_3POheUU0tLk\",\"children\":[{\"text\":\"The voice chat APIs can only be called after SDK initialization and room entry.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"_fQmvRYcoYPZG6ib7oS3W\",\"children\":[{\"text\":\"When the user clicks the button of enabling/disabling the mic or speaker on the UI, we recommend you call the \"},{\"code\":1,\"text\":\"EnableMic\"},{\"text\":\" or \"},{\"code\":1,\"text\":\"EnableSpeaker\"},{\"text\":\" API.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"N-rkC8z1U1Yc6PPgv9-zm\",\"children\":[{\"text\":\"To enable the user to press the mic button on the UI to speak and release it to stop speaking, we recommend you call \"},{\"code\":1,\"text\":\"EnableAudioCaptureDevice\"},{\"text\":\" once during room entry and call \"},{\"code\":1,\"text\":\"EnableAudioSend\"},{\"text\":\" to enable the user to speak while pressing the button.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"CTCid4tkxzt69ubilD7HK\",\"children\":[{\"id\":\"Rltlk_QAgRZ12MZQ1xHa3\",\"children\":[{\"id\":\"HmcIJ2y4bES8C6pCJHR7V\",\"children\":[{\"id\":\"_Wul2V7dNssfOJQwLTu1A\",\"children\":[{\"text\":\"API\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"bYrZMww6DleC1VyK9raB5\",\"children\":[{\"id\":\"kwvwwEOyMva9_8HS1pZZW\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"MYfM3UyEWfkZz_nfZylfW\",\"children\":[{\"id\":\"bQ6xfhPNj6pE6GFyAwnAA\",\"children\":[{\"id\":\"Dt72KfN1ZKdm0STLjS1JE\",\"children\":[{\"text\":\"EnableMic\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"eS4g5tHUqkAqiRAyMcwHS\",\"children\":[{\"id\":\"-FWrl1yXBQRagAyG73a0-\",\"children\":[{\"text\":\"Enables/Disables the mic.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"RxKYEor3JctfPzcKSyUHk\",\"children\":[{\"id\":\"ydeW6pm2ViD37FG7hptXY\",\"children\":[{\"id\":\"TjM2jWjyHwOwgvccOj2X4\",\"children\":[{\"text\":\"GetMicState\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"KUwccK2F8luQjpnt58fxk\",\"children\":[{\"id\":\"hy-ZG2AEgK-MoSMIgjjcJ\",\"children\":[{\"text\":\"Gets the mic status.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"FUFDlrvCVnsBKNH4w3TI6\",\"children\":[{\"id\":\"NKma14t9vQ7ggMTxd8N99\",\"children\":[{\"id\":\"mis6UT5uGP78kPGNfIAXO\",\"children\":[{\"text\":\"EnableAudioCaptureDevice\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"BT-eFZoKXnwqfJsjjcJ1U\",\"children\":[{\"id\":\"KTPti6B_mAFVk4beLK7WX\",\"children\":[{\"text\":\"Enables/Disables the capturing device.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"Dz3OiZovdZEozkrNNCf_d\",\"children\":[{\"id\":\"cjn8qAr1onJLjvUWvZIIf\",\"children\":[{\"id\":\"KfNdZka0HmL0s8FeeOAOA\",\"children\":[{\"text\":\"IsAudioCaptureDeviceEnabled\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"YyyZSt9Fnktflwi8sETWh\",\"children\":[{\"id\":\"pqtQZMg3bQWQg21wd_v15\",\"children\":[{\"text\":\"Gets the capturing device status.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"riaZ5thh_9Ax7LZgIegtE\",\"children\":[{\"id\":\"uslFUw8Uy4hvG2l0mVoJm\",\"children\":[{\"id\":\"mwqtENk-U9tBgdyaIkL8c\",\"children\":[{\"text\":\"EnableAudioSend\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"LIW8hIkhdXjF7fyAOvvh_\",\"children\":[{\"id\":\"2Ph-ed6bBb76Cjygjg3MY\",\"children\":[{\"text\":\"Enables/Disables audio upstreaming.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"Z1k9wsfT3do1VIVtWZQDd\",\"children\":[{\"id\":\"vBfVEiFLKX2OCR78TZieI\",\"children\":[{\"id\":\"nnxE3rzojWXSgOftH5Oz1\",\"children\":[{\"text\":\"IsAudioSendEnabled\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"iHPz1OqGGnT0_B9U77gG2\",\"children\":[{\"id\":\"7ka_66Kc2OeQSy3flx00W\",\"children\":[{\"text\":\"Gets the audio upstreaming status.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"6B9ctqo6_K5FnL-Y6h5y6\",\"children\":[{\"id\":\"gPhZJRjVWIaw_VQb3iK-o\",\"children\":[{\"id\":\"XlRiCR02a7pnRXNaDV57I\",\"children\":[{\"text\":\"GetMicLevel\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"4jZuKaDiHj-v04gOPbZ46\",\"children\":[{\"id\":\"OQ4BUgmZMZoxmotujWULo\",\"children\":[{\"text\":\"Gets the real-time mic volume level.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"g07koUv6WHDcleHbImM-w\",\"children\":[{\"id\":\"0HOx07QzhNKLXdJ7NBbYy\",\"children\":[{\"id\":\"ZDS8zny7Xioz1GCf5insh\",\"children\":[{\"text\":\"GetSendStreamLevel\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"hL8gguk4vHG5Wxf4nhfYU\",\"children\":[{\"id\":\"Z7WSTN7km4UyGF2ZvbHCt\",\"children\":[{\"text\":\"Gets the real-time audio upstreaming volume level.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"0QPWhvO0xSvVhBhuswgRI\",\"children\":[{\"id\":\"NBrcC17MPpkCO-aKpHVvu\",\"children\":[{\"id\":\"8Y3QbV_Zwugo1sCm8wy4g\",\"children\":[{\"text\":\"SetMicVolume\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Ig5E2XBpbgLZGPspO6m7c\",\"children\":[{\"id\":\"sIPxtvXld1gkkPBa9Pydz\",\"children\":[{\"text\":\"Sets the mic volume level.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"M15fpX5Uk3XVUbVQOclnB\",\"children\":[{\"id\":\"4obB_U6RAcs_uHr2ah-JX\",\"children\":[{\"id\":\"La20l4xkKUVvy-QQ_AHVZ\",\"children\":[{\"text\":\"GetMicVolume\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"mOr1WWS8HWLK_3wb_lZFb\",\"children\":[{\"id\":\"zb23ggrgr7ECD4G69fxNL\",\"children\":[{\"text\":\"Gets the mic volume level.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"rowHeader\":true,\"type\":\"table\",\"widths\":[50,50],\"widthMode\":\"percentage\"},{\"id\":\"mbUFS8OY1pOCnwsiwuakz\",\"children\":[{\"text\":\"Enabling or disabling mic\"}],\"nodeId\":\"enabling-or-disabling-mic\",\"type\":\"h3\"},{\"id\":\"gcqofIyxUFeZh9r_cRvPc\",\"children\":[{\"text\":\"This API is used to enable/disable the mic. The mic and speaker are not enabled by default after room entry. \"},{\"b\":1,\"text\":\"EnableMic = EnableAudioCaptureDevice + EnableAudioSend\"}],\"type\":\"p\"},{\"id\":\"Cn9F5dYAKEqJuxa0KaLTe\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype12\",\"type\":\"h4\"},{\"id\":\"7rKwGwQYC0xRBQX4MdWZQ\",\"children\":[{\"id\":\"WjwkMpwMz3cWAWJohDnqu\",\"children\":[{\"text\":\"Future EnableMic(bool enable)\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"2nqQoA0zSyPczjO9Yg5ph\",\"children\":[{\"id\":\"yvWShVg8L7Ely7xLVGjQi\",\"children\":[{\"id\":\"J0Q7Gui1XAdXBXIThMOmx\",\"children\":[{\"id\":\"BCSOj0YqzCEUDbr2TemYv\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"udXI1sIVaXYISOP8Yu2Fq\",\"children\":[{\"id\":\"AbhXqlSUOGLE1iKQBXVem\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Q1u_twJyp655r_rZoAZWs\",\"children\":[{\"id\":\"hmqUf95yFdZSqVpN74PRi\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"Qqbnhov28nENgbg4S4keu\",\"children\":[{\"id\":\"C0kCnf2MU3FnmWmK2s-dE\",\"children\":[{\"id\":\"cxOgKZFMMcQwi_u_4wXJk\",\"children\":[{\"text\":\"isEnabled\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"7XBXDlkT0azuvjixj1LB8\",\"children\":[{\"id\":\"LBtgj2e_suRkKS4flu6u7\",\"children\":[{\"text\":\"bool\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"SZBJk1Wejm7am0WPsIjYI\",\"children\":[{\"id\":\"hunzXMu33VUR6CfPiGwPk\",\"children\":[{\"text\":\"To enable the mic, set this parameter to \"},{\"text\":\"true\",\"code\":1},{\"text\":\"; otherwise, set it to \"},{\"text\":\"false\",\"code\":1},{\"text\":\".\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"rowHeader\":true,\"type\":\"table\",\"widths\":[18,27,55],\"widthMode\":\"percentage\"},{\"id\":\"EzpfPmza63mpYMMV6AcuI\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code12\",\"type\":\"h4\"},{\"id\":\"H7COvgdcFwQNijiS22DKg\",\"children\":[{\"id\":\"rT8UqnjGiPKITawQlDf3m\",\"children\":[{\"text\":\"// Turn on mic\"}],\"type\":\"code-line\"},{\"id\":\"vBHizg03yQkQO2BagRK1y\",\"children\":[{\"text\":\"int res = await ITMGContext.GetInstance().GetAudioCtrl().EnableMic(true);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"rrHU9ISE2YFUNPGvxDUZI\",\"children\":[{\"text\":\"Getting the mic status\"}],\"nodeId\":\"getting-the-mic-status\",\"type\":\"h3\"},{\"id\":\"puIGQDOKhI3uA5EvfY0sH\",\"children\":[{\"text\":\"This API is used to get the mic status. The returned value 0 indicates that the mic is off, while 1 is on.\"}],\"type\":\"p\"},{\"id\":\"DE1hCqaUjfnQybkH88BpS\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype13\",\"type\":\"h4\"},{\"id\":\"eeTvbXlz9VnzV0ereuRK_\",\"children\":[{\"id\":\"pYSG_azxKL2ifczHxrfWW\",\"children\":[{\"text\":\"Future GetMicState()\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"L2-wCC_RFmq1lrZTrm230\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code13\",\"type\":\"h4\"},{\"id\":\"5qq3cf2l40PFghQJe7vMz\",\"children\":[{\"id\":\"1tcsHj64Lhqc-eJvvNr5V\",\"children\":[{\"text\":\"int micState = await ITMGContext.GetInstance().GetAudioCtrl().GetMicState();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"t_JZLcHFHmFDAzxFQKOtz\",\"children\":[{\"text\":\"Enabling or disabling capturing device\"}],\"nodeId\":\"enabling-or-disabling-capturing-device\",\"type\":\"h3\"},{\"id\":\"KcUZXSyM-LjNBGVGdlFyo\",\"children\":[{\"text\":\"This API is used to enable/disable a capturing device. The device is not enabled by default after room entry.\"}],\"type\":\"p\"},{\"id\":\"UzoAKeK5AF-Z3z8C2-C3n\",\"children\":[{\"text\":\"This API can only be called after room entry. The device will be disabled automatically after room exit.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"y_9oXprlBhcnszMrUccIY\",\"children\":[{\"text\":\"Operations such as permission application and volume type adjustment will generally be performed when a capturing device is enabled on a mobile device.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"lgYiWZu0vEV0L-iCiVypx\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype14\",\"type\":\"h4\"},{\"id\":\"xXghBMPswVUraaIqtkng7\",\"children\":[{\"id\":\"GAlDEvk5GD8mRBLIWuBh1\",\"children\":[{\"text\":\"Future EnableAudioCaptureDevice(bool enable)\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"Y1axWp0b5mZPnyzccUJOs\",\"children\":[{\"id\":\"NSSsOmjFI8aMFgFHdWA0q\",\"children\":[{\"id\":\"wdB51ZcUE0bKIzBhQaH8r\",\"children\":[{\"id\":\"ZCgs_dRVrNwpR2xs59l2E\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"IMGmQGyQZE246rHm-9vDz\",\"children\":[{\"id\":\"TrcJZsEzYkeAMxGUI0IXi\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"zLFYqk1NQt_KsAejqdoAC\",\"children\":[{\"id\":\"hnw3fBC-tKKWEM_CZNz-E\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"JroHUxoUZ9iUBMU9Mkxel\",\"children\":[{\"id\":\"7qrTHO5C_jRj6el7AQbf3\",\"children\":[{\"id\":\"CRNc9nlMs1g6P4J4GiVci\",\"children\":[{\"text\":\"enable\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"zXsTKLVlmOUWqXxyN_43z\",\"children\":[{\"id\":\"5wIti2kZ0RdYVNQ0hub9D\",\"children\":[{\"text\":\"bool\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"n2gaKavXkugkD6q-TUPc9\",\"children\":[{\"id\":\"Cb8zPSzsfe9Ono2R2xxq2\",\"children\":[{\"text\":\"To enable the capturing device, set this parameter to \"},{\"text\":\"true\",\"code\":1},{\"text\":\", otherwise, set it to \"},{\"text\":\"false\",\"code\":1},{\"text\":\".\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"rowHeader\":true,\"type\":\"table\",\"widths\":[15,14,71],\"widthMode\":\"percentage\"},{\"id\":\"6GSPFC8MUGs1UQhMiJh7n\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code14\",\"type\":\"h4\"},{\"id\":\"g_Fu5FSFnDICIK7eWp13v\",\"children\":[{\"id\":\"z3ByFgiKU39ewQ61Wk3W3\",\"children\":[{\"text\":\"// Enable capturing device\"}],\"type\":\"code-line\"},{\"id\":\"TH62bmf9fdwgOggw5QgIG\",\"children\":[{\"text\":\"int res = await ITMGContext.GetInstance().GetAudioCtrl().EnableAudioCaptureDevice(true);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"NC_Dldl1bizpfLF6Dhxls\",\"children\":[{\"text\":\"Getting the capturing device status\"}],\"nodeId\":\"getting-the-capturing-device-status\",\"type\":\"h3\"},{\"id\":\"h7sJ2awahoeLl9f7hkLgb\",\"children\":[{\"text\":\"This API is used to get the status of a capturing device.\"}],\"type\":\"p\"},{\"id\":\"2Yuwsv6SGaBnI4kluwAht\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype15\",\"type\":\"h4\"},{\"id\":\"M7wwsahSnqv8Pp0P0tZxH\",\"children\":[{\"id\":\"ctRHeQGzfHdUqGa27DArK\",\"children\":[{\"text\":\"Future IsAudioCaptureDeviceEnabled()\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"wGDvUDpCmcV_h-qr4EmRh\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code15\",\"type\":\"h4\"},{\"id\":\"kqFpULONpENKXmy52qMLA\",\"children\":[{\"id\":\"w38peTfItbv3aRvInmh9Q\",\"children\":[{\"text\":\"bool res = await ITMGContext.GetInstance().GetAudioCtrl().IsAudioCaptureDeviceEnabled();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"DiyVNMwg_Zos6RUL35a3V\",\"children\":[{\"text\":\"Enabling or disabling audio upstreaming\"}],\"nodeId\":\"enabling-or-disabling-audio-upstreaming\",\"type\":\"h3\"},{\"id\":\"VWHnmm0MWRxQbffgjoS_1\",\"children\":[{\"text\":\"This API is used to enable/disable audio upstreaming. If a capturing device is already enabled, it will send captured audio data; otherwise, it will remain mute. For more information on how to enable/disable the capturing device, see the \"},{\"code\":1,\"text\":\"EnableAudioCaptureDevice\"},{\"text\":\" API.\"}],\"type\":\"p\"},{\"id\":\"mGjtgeF53ODzR98g6kjtF\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype16\",\"type\":\"h4\"},{\"id\":\"8wIIMFN84zbFTBF9gf4Rv\",\"children\":[{\"id\":\"pE7ksQhu-pKlIrjBmO-G8\",\"children\":[{\"text\":\"Future EnableAudioSend(bool enable)\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"EjsnOp8LRFxXzsMMB9gL9\",\"children\":[{\"id\":\"j06AS1-A0KCWDxHQYyqeP\",\"children\":[{\"id\":\"1vdF8FpVbQhWixj7_sZq5\",\"children\":[{\"id\":\"-L9Oh_YfiWM2_vvCTyix-\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Moh8ATQ7bfXSaZWzFL7qe\",\"children\":[{\"id\":\"96IJSM9ioKVKbrzMJFFAP\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"yjV4NrEYEo3MRWD8jokfS\",\"children\":[{\"id\":\"iHWdVUjYd3fL7KHdjSEsO\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"vqxfZEaohpARENeoPCTte\",\"children\":[{\"id\":\"fEpbMsKS2IDPO5zjss3fu\",\"children\":[{\"id\":\"nNLVA-8kgXNEbFzpjyRfN\",\"children\":[{\"text\":\"isEnabled\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ICmW5a5VOfSExr3ZUT6fC\",\"children\":[{\"id\":\"QDAsgfYWmUCq1Muql1BXw\",\"children\":[{\"text\":\"bool\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"LMBiNxLSSIZrQWHq08hJ5\",\"children\":[{\"id\":\"XjmCSlx-3nWQnEJDwJ6Pb\",\"children\":[{\"text\":\"To enable audio upstreaming, set this parameter to \"},{\"text\":\"true\",\"code\":1},{\"text\":\"; otherwise, set it to \"},{\"text\":\"false\",\"code\":1},{\"text\":\".\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"rowHeader\":true,\"type\":\"table\",\"widths\":[16,12,72],\"widthMode\":\"percentage\"},{\"id\":\"kOWtHB1P4EQka_g7ohUQI\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code16\",\"type\":\"h4\"},{\"id\":\"ZjTgSLk1KVw5GyQrtgRWG\",\"children\":[{\"id\":\"yMwpRHoDYOwud209pj7Le\",\"children\":[{\"text\":\"int res = await ITMGContext.GetInstance().GetAudioCtrl().EnableAudioSend(isCheck);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"47SrOsXbn5wapzjsIEacb\",\"children\":[{\"text\":\"Getting audio upstreaming status\"}],\"nodeId\":\"getting-audio-upstreaming-status\",\"type\":\"h3\"},{\"id\":\"t8D6PGTfkRc5Y2UEOAGIg\",\"children\":[{\"text\":\"This API is used to get the status of audio upstreaming.\"}],\"type\":\"p\"},{\"id\":\"Bhz_gdgvOxiVQXUowesM4\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype17\",\"type\":\"h4\"},{\"id\":\"Wo693Q2j4KmYxmIyY-W2p\",\"children\":[{\"id\":\"blTHm34ohHHhumLc35fyC\",\"children\":[{\"text\":\"Future IsAudioSendEnabled() \"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"_QI7Ocui6CsC2sj-iDasf\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code17\",\"type\":\"h4\"},{\"id\":\"btIf7s3JeH33rLDW3xZrl\",\"children\":[{\"id\":\"MIauzz2n1psSGdMXn4Pb1\",\"children\":[{\"text\":\"bool IsAudioSend = await ITMGContext.GetInstance().GetAudioCtrl().IsAudioSendEnabled();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"QoiIkUp698X9bdG5VisYd\",\"children\":[{\"text\":\"Getting the real-time mic volume\"}],\"nodeId\":\"getting-the-real-time-mic-volume\",\"type\":\"h3\"},{\"id\":\"BTTsI7NRk3UicGON4CqGK\",\"children\":[{\"text\":\"This API is used to get the real-time mic volume level. A number-type value in the range of 0–100 will be returned. We recommend that you call this API once every 20 ms.\"}],\"type\":\"p\"},{\"id\":\"NFn8Az0AQMCHO_ewhJZYW\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype18\",\"type\":\"h4\"},{\"id\":\"opeSDhetsiKw1S6c7BPIW\",\"children\":[{\"id\":\"ulU9WHWdDZamKwLYclAmT\",\"children\":[{\"text\":\"Future GetMicLevel()\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"H2pKoiQ-lszGAjC8OLYR8\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code18\",\"type\":\"h4\"},{\"id\":\"YvRyWcVcs2P-8Z9CQ69tx\",\"children\":[{\"id\":\"VMqOvWU2bAvYjueo0wNJH\",\"children\":[{\"text\":\"int res = await ITMGContext.GetInstance().GetAudioCtrl().GetMicLevel();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"VHs6EdiTN--QdAMt0VnX4\",\"children\":[{\"text\":\"Getting the real-time audio upstreaming volume\"}],\"nodeId\":\"getting-the-real-time-audio-upstreaming-volume\",\"type\":\"h3\"},{\"id\":\"JeIyWym969fCF_segDRCv\",\"children\":[{\"text\":\"This API is used to get the local real-time audio upstreaming volume level. A number-type value in the range of 0–100 will be returned.\"}],\"type\":\"p\"},{\"id\":\"t1AVcK_H036d-zVgwUc1K\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype19\",\"type\":\"h4\"},{\"id\":\"h3HHWspngOAfan6i02naK\",\"children\":[{\"id\":\"HM6SErzJSoInxce_b9m3y\",\"children\":[{\"text\":\"Future GetSendStreamLevel()\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"HLW_koFnYjvVIzf8oFM-z\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code19\",\"type\":\"h4\"},{\"id\":\"gIwCCkqkavC90NsXf2w3d\",\"children\":[{\"id\":\"EV7TI2BJPFfytop-j5_2T\",\"children\":[{\"text\":\"int res = await ITMGContext.GetInstance().GetAudioCtrl().GetSendStreamLevel();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"XYK9WwgWkFLnpwC8xxELJ\",\"children\":[{\"text\":\"Setting the mic software volume\"}],\"nodeId\":\"setting-the-mic-software-volume\",\"type\":\"h3\"},{\"id\":\"NVmn0xRIXgLnE1xGFFE0S\",\"children\":[{\"text\":\"This API is used to set the mic volume level. The corresponding parameter is \"},{\"code\":1,\"text\":\"volume\"},{\"text\":\", which is equivalent to attenuating or gaining the captured sound.\"}],\"type\":\"p\"},{\"id\":\"nQoNudA4DgayiTCXXNZew\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype20\",\"type\":\"h4\"},{\"id\":\"ixoZwGxx0ZLFh7qhnCN06\",\"children\":[{\"id\":\"MRvKIHPRWM4vmzxPwUr43\",\"children\":[{\"text\":\" Future SetMicVolume(int volume)\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"rZVDt0OUuVkcjqw8yafZE\",\"children\":[{\"id\":\"D7FpsFyN96mzDmjpSMNpE\",\"children\":[{\"id\":\"RATn2MGyHaUHjD-QpzN2Y\",\"children\":[{\"id\":\"mB60WQt3lMkOISdQQTew7\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"T-sOHmYyV0TLL6hVQVBP0\",\"children\":[{\"id\":\"39nKWm5sYWO3lQLLyh-BK\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"3pr3fKvWGZnefQiIl4ZUd\",\"children\":[{\"id\":\"ytyoe_Z28HBCxG5j2C23O\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"uV070CgZ6TEudt3lVY_eV\",\"children\":[{\"id\":\"StqcczXNB20nRLy2kZh4Z\",\"children\":[{\"id\":\"iXuRT9nMfSUDk5lFp3FLy\",\"children\":[{\"text\":\"volume\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"zmyzb4m1fgtflxmnVF8Q1\",\"children\":[{\"id\":\"chqG6XOg0FmA9hmMz_b8e\",\"children\":[{\"text\":\"number\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Z1RK32326Xd-MqUivocOw\",\"children\":[{\"id\":\"hlXcY9jBawXUG6TQ8e1WA\",\"children\":[{\"text\":\"Value range: 0–200. Default value: `100`. `0` indicates that the audio is mute, while `100` indicates that the volume level remains unchanged.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"rowHeader\":true,\"type\":\"table\",\"widths\":[14,14,72],\"widthMode\":\"percentage\"},{\"id\":\"eIthOX8JUn1Wi_kMquSuX\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code20\",\"type\":\"h4\"},{\"id\":\"H17UxUvKkt6a9zVPvuY6d\",\"children\":[{\"id\":\"rJ8EkwjTEL6d1Dzq72Ooj\",\"children\":[{\"text\":\"int volume = 100;\"}],\"type\":\"code-line\"},{\"id\":\"aI-HEkaCC5axX_nyp2VMH\",\"children\":[{\"text\":\"int res = await ITMGContext.GetInstance().GetAudioCtrl().SetMicVolume(volume);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"5T0J1wlIzzmt71dX_kFRu\",\"children\":[{\"text\":\"Getting the mic software volume\"}],\"nodeId\":\"getting-the-mic-software-volume\",\"type\":\"h3\"},{\"id\":\"XCRp5yk-IlIcI_XLmd2Hs\",\"children\":[{\"text\":\"This API is used to get the mic volume level. A number-type value will be returned. \"},{\"code\":1,\"text\":\"101\"},{\"text\":\" indicates that the \"},{\"code\":1,\"text\":\"SetMicVolume\"},{\"text\":\" API has not been called.\"}],\"type\":\"p\"},{\"id\":\"pw2jlHmPHEIbRZZimpCS6\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype21\",\"type\":\"h4\"},{\"id\":\"UMQJMBRAO_rwCD5BK1CeY\",\"children\":[{\"id\":\"lavaz_ZafwfgYF2AZz3wr\",\"children\":[{\"text\":\"Future GetMicVolume()\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"oM-rtYKlezU20OTMgQ3mE\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code21\",\"type\":\"h4\"},{\"id\":\"jsSUJ_icvapiW5sIdQjwY\",\"children\":[{\"id\":\"p5bPkDlatrbmjt6tDe_my\",\"children\":[{\"text\":\"int res = await ITMGContext.GetInstance().GetAudioCtrl().GetMicVolume();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"HIWrqlLW9A21Acky8pj9Q\",\"children\":[{\"text\":\"Voice Chat Playback APIs\"}],\"nodeId\":\"voice-chat-playback-apis\",\"type\":\"h2\"},{\"id\":\"3abVVXasAnn54b5MRdWTo\",\"children\":[{\"id\":\"ytCetELMbzRCmfzSnGJDd\",\"children\":[{\"id\":\"OKuzb4QkbKtjxqOC8hFT-\",\"children\":[{\"id\":\"zkhH42tvlL-5wwPTO5Lh-\",\"children\":[{\"text\":\"API\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"5eKL2I4tN_9d3Z1mUjr8X\",\"children\":[{\"id\":\"GMoQaYlBSTvjehqZyZjLX\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"fT-dhwdWhk3J8CU5AfwRO\",\"children\":[{\"id\":\"uDRfIyeoJm86U2SmAFFPQ\",\"children\":[{\"id\":\"6ndPS7CaexUqdTUC97_eH\",\"children\":[{\"text\":\"EnableSpeaker\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"poLZz2cfG9aG8q5SICxGz\",\"children\":[{\"id\":\"-QK8Ge8XXt5scag8vkQEP\",\"children\":[{\"text\":\"Enables/Disables the speaker.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"bhe7_e85YT_J4lcpukXCQ\",\"children\":[{\"id\":\"ACsfz5_ZwFgYIrdGeL_5t\",\"children\":[{\"id\":\"RBhwxy_sJyhV0GD-Lle9X\",\"children\":[{\"text\":\"GetSpeakerState\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"465HD00u2vNkZG6C6Xhdy\",\"children\":[{\"id\":\"OE4AnQBjFSZniBWxhj6xw\",\"children\":[{\"text\":\"Gets the speaker status.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"uJ7jATG-jhWHP6fdS5Apa\",\"children\":[{\"id\":\"0AtOE02ZqG7zRWndh2HRa\",\"children\":[{\"id\":\"Av6cGt3Cn8bHaNlUOopOn\",\"children\":[{\"text\":\"EnableAudioPlayDevice\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"DTUU-5RGoTyOO_LEDPI7B\",\"children\":[{\"id\":\"rYR7HQgkvSO5y-RppPc6m\",\"children\":[{\"text\":\"Enables/Disables the playback device.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"eu6padrT_hqN5kCI4Zgc1\",\"children\":[{\"id\":\"FM5tgM9VNQoBhPFSTXfpS\",\"children\":[{\"id\":\"UXYHNQRIHfgxlWgTtifBB\",\"children\":[{\"text\":\"IsAudioPlayDeviceEnabled\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"rnRCQ2UBAkFU3GaGAyfNb\",\"children\":[{\"id\":\"h9NwEMMUQqngYb2b3ooVD\",\"children\":[{\"text\":\"Gets the playback device status.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"rgr7SFKKEMEqovkCtByb0\",\"children\":[{\"id\":\"ju6fINMZgxq6ZxYqrrZYJ\",\"children\":[{\"id\":\"EHe2Qwzz2nPey-pp8-2Hm\",\"children\":[{\"text\":\"EnableAudioRecv\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"s3xkG1FISYgBU9-IHrCMj\",\"children\":[{\"id\":\"iX0CO23mqYjUkDh-kncQ9\",\"children\":[{\"text\":\"Enables/Disables audio downstreaming.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"j4RPUiePbR1NAi1jVxBXU\",\"children\":[{\"id\":\"VoI3NWVP0Gc6DMFG4ZBiz\",\"children\":[{\"id\":\"KP9eYx4X5zJHgPAXpramd\",\"children\":[{\"text\":\"IsAudioRecvEnabled\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"iAYZSO8IkBgGoChMhKXV6\",\"children\":[{\"id\":\"5Fe4QIzNMng4fTy4mUHkM\",\"children\":[{\"text\":\"Gets the audio downstreaming status.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"slQDoM8-0HXXyYsGJl8md\",\"children\":[{\"id\":\"umAg-fX7qkWt1wMXQyW3o\",\"children\":[{\"id\":\"vkRROEnEoTUQMdv1c-AWE\",\"children\":[{\"text\":\"GetSpeakerLevel\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"PkjwyYkmt5FXUu1hfi61i\",\"children\":[{\"id\":\"1KwSlhmb6_3-AbA1HH-Mp\",\"children\":[{\"text\":\"Gets the real-time speaker volume level.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"CJ3KljosxLkagE5pCt8D_\",\"children\":[{\"id\":\"V7iLkioG__o8P6kep2-7d\",\"children\":[{\"id\":\"c-oc4Oyc2GCI-ukaXij2N\",\"children\":[{\"text\":\"GetRecvStreamLevel\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"h-ANt7EgTU-pQQenhYw0p\",\"children\":[{\"id\":\"N-gQHSURx_K24x8x6yoWA\",\"children\":[{\"text\":\"Gets the real-time downstreaming audio levels of other members in the room.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"DzEy27z4nEfKpetkVSyGA\",\"children\":[{\"id\":\"tbH1Zk6S3m5NNudYhiS55\",\"children\":[{\"id\":\"qauVEr53xFc4VR-GLnIcx\",\"children\":[{\"text\":\"SetSpeakerVolume\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"InPsn4pkA8KLQ_LsNpBcA\",\"children\":[{\"id\":\"7rrnW1_vZ0PEX1hHBY2n6\",\"children\":[{\"text\":\"Sets the speaker volume level.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"i47Q6xhLuv5uKbvQIVUAh\",\"children\":[{\"id\":\"u8AuFQkVDCKrAiMCEnBwv\",\"children\":[{\"id\":\"Nobk8kt8hO0zeRNPF8BHW\",\"children\":[{\"text\":\"GetSpeakerVolume\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"lEaE8C7fzQ5b3lawrNgqf\",\"children\":[{\"id\":\"fyzkFKDccRnPKgrrRQsfx\",\"children\":[{\"text\":\"Gets the speaker volume level.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"rowHeader\":true,\"type\":\"table\",\"widths\":[32,68],\"widthMode\":\"percentage\"},{\"id\":\"c8IJWxB4UBxouyeVShV8m\",\"children\":[{\"text\":\"Enabling or disabling speaker\"}],\"nodeId\":\"enabling-or-disabling-speaker\",\"type\":\"h3\"},{\"id\":\"fGAFZtR1O7C-Adeag9WCb\",\"children\":[{\"text\":\"This API is used to enable/disable the speaker. \"},{\"b\":1,\"text\":\"EnableSpeaker = EnableAudioPlayDevice + EnableAudioRecv\"}],\"type\":\"p\"},{\"id\":\"78DOoL8FymVFNdO9u4k4O\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype22\",\"type\":\"h4\"},{\"id\":\"eljvD055tVZu32FhHAv2r\",\"children\":[{\"id\":\"EKLhlAIJJyxtfHbeg4iZm\",\"children\":[{\"text\":\"Future EnableSpeaker(bool enable)\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"4teJbGyuhDzWS3VqbV8X8\",\"children\":[{\"id\":\"RxVzo30ZJCogoeg9FevQz\",\"children\":[{\"id\":\"ondU22ZqNEt-4SbGh3b-J\",\"children\":[{\"id\":\"v-X8qXOZE0pB9lkp19hyB\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"NMSEqvl3fj24uCMazxFFB\",\"children\":[{\"id\":\"Xn1K7IrMdGrQmz_8QsAJX\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Yo7EaQXbN8cjh6Bl4KYMR\",\"children\":[{\"id\":\"x-JXHUHQ21Mu4TSzr9V76\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"qi-TbTTTzBILrwnbYVQTS\",\"children\":[{\"id\":\"fuR9Vu0QQCyQFecZfzaaz\",\"children\":[{\"id\":\"SCGxaAW9q3oavumKpSGNT\",\"children\":[{\"text\":\"bEnable\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"1mssuQcV-Xk5NWkA68YE6\",\"children\":[{\"id\":\"otD1_Sz8Cw2IkUwuTmkFc\",\"children\":[{\"text\":\"bool\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"FXQVvtLorHIhO0Fb5AL_n\",\"children\":[{\"id\":\"G2PKAJ6E6o_1s9HxhdEqE\",\"children\":[{\"text\":\"To disable the speaker, set this parameter to `false`; otherwise, set it to `true`.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"rowHeader\":true,\"type\":\"table\",\"widths\":[16,15,69],\"widthMode\":\"percentage\"},{\"id\":\"IbaKtezPMb7-vGkJQ_hcv\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code22\",\"type\":\"h4\"},{\"id\":\"aOSJia4bCoZIzEWb2T0jy\",\"children\":[{\"id\":\"zsUEb04BhvPcXwslirEAh\",\"children\":[{\"text\":\"// Turn on the speaker\"}],\"type\":\"code-line\"},{\"id\":\"X1ZCG7k7OHOz20FVZ80L8\",\"children\":[{\"text\":\"await ITMGContext.GetInstance().GetAudioCtrl().EnableSpeaker(isCheck);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"ESriT5g-xklsGmwgRVGAl\",\"children\":[{\"text\":\"Getting the speaker status\"}],\"nodeId\":\"getting-the-speaker-status\",\"type\":\"h3\"},{\"id\":\"_MuMUnhdXndAVvACqF19S\",\"children\":[{\"text\":\"This API is used to get the speaker status. 0 indicates that the speaker is off, and 1 is on.\"}],\"type\":\"p\"},{\"id\":\"e-NL5ZFFd-yx0C1P3rUAy\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype23\",\"type\":\"h4\"},{\"id\":\"lKwP6h1ZYAonLLDMROnXc\",\"children\":[{\"id\":\"UfnkkziQqAzKjClrKLcc7\",\"children\":[{\"text\":\"Future GetSpeakerState() \"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"-gOsSVf8aMHci_GB70ddZ\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code23\",\"type\":\"h4\"},{\"id\":\"Z6JVqh0EeJqgG61hGb4Gr\",\"children\":[{\"id\":\"neqgYDW_hTbr6okP-2i1R\",\"children\":[{\"text\":\"int spkState = await ITMGContext.GetInstance().GetAudioCtrl().GetSpeakerState();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"t-1n8T6yb0B3M4uGWVlKS\",\"children\":[{\"text\":\"Enabling or disabling playback device\"}],\"nodeId\":\"enabling-or-disabling-playback-device\",\"type\":\"h3\"},{\"id\":\"HSXK_ZkcS-AKO2P4Z7fgn\",\"children\":[{\"text\":\"This API is used to enable/disable a playback device.\"}],\"type\":\"p\"},{\"id\":\"XZsE7SXz0gor_XcDFJ4eq\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype24\",\"type\":\"h4\"},{\"id\":\"RmcZRfNZPcA4u3CQLUvj6\",\"children\":[{\"id\":\"wQvI0UYHpNoEkgmy-k2qp\",\"children\":[{\"text\":\"Future EnableAudioPlayDevice(bool enable) \"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"UrZJX51yPWc4nH4ZTwWsX\",\"children\":[{\"id\":\"vnnXDUkfVzVCUF_kIhcDj\",\"children\":[{\"id\":\"RUeW8s-vUBQkp0kY4MScG\",\"children\":[{\"id\":\"Qw0PLpaMshuY97SonkaFz\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ZxpUkoshf0zIULSkFH4G7\",\"children\":[{\"id\":\"DCHaKDZV6h5q3kTPR6IWV\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ESHZ2ost-8-QDJfkrldUf\",\"children\":[{\"id\":\"3jNP87WY54ZPCI-o6nCUX\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"Nn9kubNVxy7sMrC-7CW0r\",\"children\":[{\"id\":\"2YMCZN2ILnrN7Me_GZip6\",\"children\":[{\"id\":\"HFR6iU3NkWBNVKlxi7He9\",\"children\":[{\"text\":\"enable\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"vGtr5u4-bWokdyrAGd18W\",\"children\":[{\"id\":\"YixmZy64M0GvGffYjRFlb\",\"children\":[{\"text\":\"bool\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"0Z--sovBZe2sjM752Q7FQ\",\"children\":[{\"id\":\"FKFc3pU_vE8gOYBAHXmSm\",\"children\":[{\"text\":\"To disable the playback device, set this parameter to `false`; otherwise, set it to `true`.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"rowHeader\":true,\"type\":\"table\",\"widths\":[14,18,68],\"widthMode\":\"percentage\"},{\"id\":\"S5VBEaKVcJHxtjX5s7fZc\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code24\",\"type\":\"h4\"},{\"id\":\"a7bMmNVfXvMe2WX5w5EnC\",\"children\":[{\"id\":\"amSqVIkIwtrFfuk8tqPMI\",\"children\":[{\"text\":\"int res = await ITMGContext.GetInstance().GetAudioCtrl().EnableAudioPlayDevice(isCheck);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"wvC5cxaeaZ8Ql0v0tKg7_\",\"children\":[{\"text\":\"Getting the playback device status\"}],\"nodeId\":\"getting-the-playback-device-status\",\"type\":\"h3\"},{\"id\":\"Ov3meorRLX-GzpStcFAZk\",\"children\":[{\"text\":\"This API is used to get the status of a playback device.\"}],\"type\":\"p\"},{\"id\":\"a6jG1MwjgywjpuFbSKYs1\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype25\",\"type\":\"h4\"},{\"id\":\"AMultytZGL4Okk7M69_jd\",\"children\":[{\"id\":\"hONvfGFGY3zIdZovne7dQ\",\"children\":[{\"text\":\"Future IsAudioPlayDeviceEnabled()\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"sx5Z8hTyyZezyLSXOUovZ\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code25\",\"type\":\"h4\"},{\"id\":\"tQPO6cJoEm8aPzKiJQrP0\",\"children\":[{\"id\":\"aiWhhAXs5dFG9xc1UumaQ\",\"children\":[{\"text\":\"bool res = await ITMGContext.GetInstance().GetAudioCtrl().IsAudioPlayDeviceEnabled();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"Cb8nD5nlJIM1iIxBswaT3\",\"children\":[{\"text\":\"Enabling or disabling audio downstreaming\"}],\"nodeId\":\"enabling-or-disabling-audio-downstreaming\",\"type\":\"h3\"},{\"id\":\"kENyknyV_aqQ7bfmlkTJl\",\"children\":[{\"text\":\"This API is used to enable/disable audio downstreaming. If a playback device is already enabled, it will play back audio data from other members in the room; otherwise, it will remain mute. For more information on how to enable/disable the playback device, see the \"},{\"code\":1,\"text\":\"EnableAudioPlayDevice\"},{\"text\":\" API.\"}],\"type\":\"p\"},{\"id\":\"ZksDY8ly-lNHKv24bNkxn\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype26\",\"type\":\"h4\"},{\"id\":\"o6M6Fz4A8NyXR67D5_44N\",\"children\":[{\"id\":\"Ymd8e7_w6muICDL74nQUo\",\"children\":[{\"text\":\"Future EnableAudioRecv(bool enable)\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"Z6-xC2soInL_N9QYKgm9c\",\"children\":[{\"id\":\"pQxJ7BrTttXvUM_aKFzs3\",\"children\":[{\"id\":\"3isk8aJNQRRyImjB3UCZr\",\"children\":[{\"id\":\"U8DrR6CNlJwXyBs8KgRsM\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Ih1lwFeKHAx-Mpwqsi55e\",\"children\":[{\"id\":\"BsPRlvP7N6wKydVhorOoA\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"t1aloMKwmeVbpOdM5dfjJ\",\"children\":[{\"id\":\"SGPp9ACPuA2uis1Il9Ek9\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"53GLZg8UA9ISKD0iXQ9Hx\",\"children\":[{\"id\":\"ht5b8Ct-2YdUiTCV8W-aJ\",\"children\":[{\"id\":\"b0XhtJod8IP-dEMJhEIl-\",\"children\":[{\"text\":\"isEnabled\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"dR8vVtOLsC64y6o2SxqLr\",\"children\":[{\"id\":\"wevBEcNYMucgVAwRcNgWp\",\"children\":[{\"text\":\"bool\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"booQ2Cw0YVeQYBAKqXqBv\",\"children\":[{\"id\":\"Phc_ZdDX7zk5GY87XOsVs\",\"children\":[{\"text\":\"To enable audio downstreaming, set this parameter to `true`; otherwise, set it to `false`.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"rowHeader\":true,\"type\":\"table\",\"widths\":[15,16,69],\"widthMode\":\"percentage\"},{\"id\":\"iKcjXCLtsCfNMgTdBo26-\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code26\",\"type\":\"h4\"},{\"id\":\"hwOCVn-91xhRexdBtwap4\",\"children\":[{\"id\":\"jigcoKemtylZfzpunRCct\",\"children\":[{\"text\":\"int res = await ITMGContext.GetInstance().GetAudioCtrl().EnableAudioRecv(isCheck);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"4ykbY_xFfwhF9dXAWOQ2g\",\"children\":[{\"text\":\"Getting audio downstreaming status\"}],\"nodeId\":\"getting-audio-downstreaming-status\",\"type\":\"h3\"},{\"id\":\"4kKvRq-1IKro7VuhVbIf9\",\"children\":[{\"text\":\"This API is used to get the status of audio downstreaming.\"}],\"type\":\"p\"},{\"id\":\"KsSW27fhcZIQ8v7ZzvgoQ\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype27\",\"type\":\"h4\"},{\"id\":\"zjBkkOO8mUaMS3FIxrpbt\",\"children\":[{\"id\":\"3U9Gu42icSs67QPEsQi-j\",\"children\":[{\"text\":\"Future IsAudioRecvEnabled() \"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"q7HbqEYnMyp8eHqNoRUyI\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code27\",\"type\":\"h4\"},{\"id\":\"IYa6Ye8b_VspFGHnk3K3_\",\"children\":[{\"id\":\"oHf4pHJoCjzLB_UrVW-AY\",\"children\":[{\"text\":\"bool res = await ITMGContext.GetInstance().GetAudioCtrl().IsAudioRecvEnabled();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"9BKVRYlNjhUAE-MTNih6K\",\"children\":[{\"text\":\"Getting the real-time speaker volume\"}],\"nodeId\":\"getting-the-real-time-speaker-volume\",\"type\":\"h3\"},{\"id\":\"2YL0y6Yyrwo81DX-q9AEN\",\"children\":[{\"text\":\"This API is used to get the real-time speaker volume level. A number-type value will be returned to indicate the volume level. We recommend that you call this API once every 20 ms.\"}],\"type\":\"p\"},{\"id\":\"CizbdfZprcz8r9mWW5TnX\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype28\",\"type\":\"h4\"},{\"id\":\"0-qpEsAo-UUhS5mAsHNSY\",\"children\":[{\"id\":\"F_w-9-Hr0i6ODRDdcIbN0\",\"children\":[{\"text\":\"Future GetSpeakerLevel()\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"QGrOK0_u8DLE5gXmDFwbu\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code28\",\"type\":\"h4\"},{\"id\":\"e6hXkWnVhBRdNR3XkTAih\",\"children\":[{\"id\":\"Nv5LXWsX5apJiqB9mX0YN\",\"children\":[{\"text\":\"bool res = await ITMGContext.GetInstance().GetAudioCtrl().GetSpeakerLevel();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"xUprhcpxDXKbp0fP_9x5a\",\"children\":[{\"text\":\"Getting the real-time downstreaming audio levels of other members in room\"}],\"nodeId\":\"getting-the-real-time-downstreaming-audio-levels-of-other-members-in-room\",\"type\":\"h3\"},{\"id\":\"tFBEiKk8yst8JLUcZltJm\",\"children\":[{\"text\":\"This API is used to get the real-time audio downstreaming volume of other members in the room. A number-type value will be returned. Value range: 0–200.\"}],\"type\":\"p\"},{\"id\":\"dcfWkv9W6cTfpKHslkLYE\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype29\",\"type\":\"h4\"},{\"id\":\"qVwmcry1wNJQg57fgLTqJ\",\"children\":[{\"id\":\"roCyJlOd0n0nnS2CZ0sNu\",\"children\":[{\"text\":\"Future GetRecvStreamLevel(String openID)\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"fhLMGmmPt1W-A6aSdOjpF\",\"children\":[{\"id\":\"JL-Aoj3kHyDzIfwTS12Th\",\"children\":[{\"id\":\"FvsOsGVtg9EgN_MOooadE\",\"children\":[{\"id\":\"mG5bmLKCgCl-d1SMOield\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ThlOnJKDyLY2NVqN0I8_B\",\"children\":[{\"id\":\"LPJ-hqTUp6c3M4Uzc79W8\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"0XcjcDenCdVj-TaXD7Ims\",\"children\":[{\"id\":\"THrF2oXFCcpU2hJiAqqWY\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"v7f6J2vYYpUmnDepBT3Sj\",\"children\":[{\"id\":\"8_KOPiVnXV3Ui52nA1qIG\",\"children\":[{\"id\":\"yeKPQGA-ny9lBaeLFeZmZ\",\"children\":[{\"text\":\"openId\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"3DdlSlT_FscSJN5WyFCkR\",\"children\":[{\"id\":\"vmSy_ej7mXKANyTHuVV4f\",\"children\":[{\"text\":\"string\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"4rpvA8EmqxpL4BqtjhZUe\",\"children\":[{\"id\":\"bTUaP8vB7fgXxooUypi9k\",\"children\":[{\"text\":\"`openId` of another member in the room\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"rowHeader\":true,\"type\":\"table\",\"widths\":[15,32,53],\"widthMode\":\"percentage\"},{\"id\":\"iaXpix21cJSHcs_ZhE0jQ\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code29\",\"type\":\"h4\"},{\"id\":\"wrLXM8qrk5uvHJFY_-2MY\",\"children\":[{\"id\":\"RO3PGmDFyXNAkvylbpFiI\",\"children\":[{\"text\":\"int res = await ITMGContext.GetInstance().GetAudioCtrl().GetRecvStreamLevel(_editRoomManagerID.text);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"039DwyjWwwxVjGh7mKRd8\",\"children\":[{\"text\":\"Dynamically setting the volume of a member of the room\"}],\"nodeId\":\"dynamically-setting-the-volume-of-a-member-of-the-room\",\"type\":\"h3\"},{\"id\":\"5PtEaJAV5mb2TcVYV1cJm\",\"children\":[{\"text\":\"This API is used to set the volume of a member in the room. It takes effect only on the local.\"}],\"type\":\"p\"},{\"id\":\"RQnOpAcebNlG45z5488SN\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype30\",\"type\":\"h4\"},{\"id\":\"U86xNZYOGhl3hLH69Ocr8\",\"children\":[{\"id\":\"zv9aJuz3eNR4zV0NtGq7M\",\"children\":[{\"text\":\"Future SetSpeakerVolumeByOpenID(String openId, int volume)\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"7UEypvnxLLXDrkMdFO3aE\",\"children\":[{\"id\":\"6xWwtVln4xlrfWUWsVlpz\",\"children\":[{\"id\":\"_SY2bg82imeKnSYlbDNWM\",\"children\":[{\"id\":\"uNQLui8VsP5QCObZ7hBX5\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"eBTDaq5bYEIquSiIQYBLF\",\"children\":[{\"id\":\"1JRs22A9sTy-6kCUqD0YB\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"JwaxNfGN7nzb-j9RhmJGP\",\"children\":[{\"id\":\"Q0inES1-oqAPzuzYmgzGs\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"mpBvZ-QVZFoiBYwoW8xLn\",\"children\":[{\"id\":\"WP9Iv3ZThbuayYqd3KhII\",\"children\":[{\"id\":\"nhntu0zn0hZeqINy6tCdN\",\"children\":[{\"text\":\"openId\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"d2kBckjh7c7pmbT_efTs8\",\"children\":[{\"id\":\"yTUx2AoS4GG0MoUhn1DMb\",\"children\":[{\"text\":\"string\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"4YXk8H0GT8YcipKRpZfYe\",\"children\":[{\"id\":\"m2dNzFRuXiWQwZKwjn6ls\",\"children\":[{\"text\":\"`OpenID` of the target user\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"hr-EMBpIXNPA5D0gBpaIT\",\"children\":[{\"id\":\"QFLhZqNWUwctIfbiafoe8\",\"children\":[{\"id\":\"xoZMT-0GMJDnh4TvrLOnX\",\"children\":[{\"text\":\"volume\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"LtC6BXeq6NMWwdlCH7J1X\",\"children\":[{\"id\":\"9cZmzJ3KoA8_1mCBIkmUP\",\"children\":[{\"text\":\"number\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"2XDqDKaGFtWP0ybIcd0RX\",\"children\":[{\"id\":\"PBRY-zK2yXcHuvpha784C\",\"children\":[{\"text\":\"Percentage. Recommended value range: 0-200. Default value: `100`.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"rowHeader\":true,\"type\":\"table\",\"widths\":[15,19,66],\"widthMode\":\"percentage\"},{\"id\":\"XlMmDC-d27kXopBGls_za\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code30\",\"type\":\"h4\"},{\"id\":\"fQ32ivuiWj5Md7_LoO0nU\",\"children\":[{\"id\":\"TK3h_bo0EiL-Qrd-q2U63\",\"children\":[{\"text\":\"int res = await ITMGContext.GetInstance().GetAudioCtrl().SetSpeakerVolumeByOpenID(_editRoomManagerID.text, 100);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"uYQ2iHWlKd-inxAqEwCkW\",\"children\":[{\"text\":\"Getting volume percentage\"}],\"nodeId\":\"getting-volume-percentage\",\"type\":\"h3\"},{\"id\":\"JxNKJ0IwbfgIvVSL9IcwW\",\"children\":[{\"text\":\"This API is used to get the volume level set by \"},{\"code\":1,\"text\":\"SetSpeakerVolumeByOpenID\"},{\"text\":\".\"}],\"type\":\"p\"},{\"id\":\"POKEfugqXA7swKDR00DOa\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype31\",\"type\":\"h4\"},{\"id\":\"H_luq7OstiSPMumjLElF7\",\"children\":[{\"id\":\"06p8yOTBaZZeLxHKD-Oww\",\"children\":[{\"text\":\"Future GetSpeakerVolumeByOpenID(String openId)\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"x3Mmnb609iiuWpr3V0HNb\",\"children\":[{\"id\":\"aYPiI7d2KQ9YOduypGJzt\",\"children\":[{\"id\":\"ppQRsez6vhfccg0UQ6u5n\",\"children\":[{\"id\":\"geM7ru5FwwFWZZ3RrnwNk\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"dM7etxS7kyU1w_jUuN4ap\",\"children\":[{\"id\":\"g3mO7L5bKu8zuTc-3_Q18\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"F-ADxyrJNho3-2MTXA08x\",\"children\":[{\"id\":\"-SjbcYYMohSAHFOnG-f7f\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"txm1kaOzKxtzT1cwcGCf4\",\"children\":[{\"id\":\"p6Y6AIic2PT9uO9AtbsYn\",\"children\":[{\"id\":\"3r8jYn3xZZYStUp9yLz-q\",\"children\":[{\"text\":\"openId\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"k101BLFkqWy3kE_9PHjqQ\",\"children\":[{\"id\":\"XWyTlxsbIu1ybZ8sqZUrU\",\"children\":[{\"text\":\"string\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"oJMUbK-4Ry0-8xBXjHewx\",\"children\":[{\"id\":\"KSIz12hNxdJR80FetJJ_p\",\"children\":[{\"text\":\"`OpenID` of the target user\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"rowHeader\":true,\"type\":\"table\",\"widths\":[18,22,60],\"widthMode\":\"percentage\"},{\"id\":\"_dSbyzOB5T7Wmn80Z1qFc\",\"children\":[{\"text\":\"Returned values\"}],\"nodeId\":\"returned-values2\",\"type\":\"h4\"},{\"id\":\"csiF0PlDCtsJ2jFUBKSuW\",\"children\":[{\"text\":\"API returns volume percentage set by OpenID, where 100 is by default.\"}],\"type\":\"p\"},{\"id\":\"FNXwvnz25Ep5M1KPaNTxz\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code31\",\"type\":\"h4\"},{\"id\":\"7ghuQUfaX7YF3HdMNFyJ7\",\"children\":[{\"id\":\"hTZKfTAhhFHLCHGL9jdqi\",\"children\":[{\"text\":\"int res = await ITMGContext.GetInstance().GetAudioCtrl().GetSpeakerVolumeByOpenID(_editRoomManagerID.text);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"_izRW_M7bc6Ki3vf96IFH\",\"children\":[{\"text\":\"Setting the speaker volume\"}],\"nodeId\":\"setting-the-speaker-volume\",\"type\":\"h3\"},{\"id\":\"JU_AoWOSXdJ8KEk8erRqI\",\"children\":[{\"text\":\"This API is used to set the speaker volume.\"}],\"type\":\"p\"},{\"id\":\"yZ7DCFC9h7F3qlnFROHNU\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype32\",\"type\":\"h4\"},{\"id\":\"EqCNRiGeVKsh7shUJeyaD\",\"children\":[{\"id\":\"Ae6OvDBWJEMJMRP5-71OP\",\"children\":[{\"text\":\"Future SetSpeakerVolume(int volume)\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"LTR2jewKZYOikxiX4cyeM\",\"children\":[{\"id\":\"6kZocWjJ4EbUAHh0NSfVG\",\"children\":[{\"id\":\"xEgPpE6raLFpRq9uRTPdU\",\"children\":[{\"id\":\"PdSIQPAdAMN9xuyJ8qcYS\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"p7eaabauH4_GaXZWtBN0w\",\"children\":[{\"id\":\"CFsDILbbawHjupsAPwGkp\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"iXjJ2bCCg_SVqbCk3jj3S\",\"children\":[{\"id\":\"RBwL-LTTuPutXpwB2f88K\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"v3LQefuvgAbI88BgdTNqu\",\"children\":[{\"id\":\"NnOF-YrRv51crSoblyYI3\",\"children\":[{\"id\":\"rbXGFPgdEyyLkyqcD1nF-\",\"children\":[{\"text\":\"volume\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"1tqGzR1lD7GhuS2FYrP76\",\"children\":[{\"id\":\"LOlBOi_vWo7u3aNmaLzTU\",\"children\":[{\"text\":\"number\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"gxRhdZfnINY7uEvdZjEDI\",\"children\":[{\"id\":\"7lY_VAVQcJLU1hoQiE60B\",\"children\":[{\"text\":\"Volume level. Value range: 0-200. Default value: `100`. `0` indicates that the audio is mute, while `100` indicates that the volume level remains unchanged.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"rowHeader\":true,\"type\":\"table\",\"widths\":[14,14,72],\"widthMode\":\"percentage\"},{\"id\":\"O6dZLphK25xgdqoCNGhXb\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code32\",\"type\":\"h4\"},{\"id\":\"5mbaQ2rXiYkGSVZArOVyh\",\"children\":[{\"id\":\"7xlj9c6iC9JXUpmJW9aAo\",\"children\":[{\"text\":\"int volume = value.toInt();\"}],\"type\":\"code-line\"},{\"id\":\"qtPFkCrnycEvd5AgmGFvs\",\"children\":[{\"text\":\"int res = await ITMGContext.GetInstance().GetAudioCtrl().SetSpeakerVolume(volume);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"f4w_U6fiokGLWQC6Ca2cs\",\"children\":[{\"text\":\"Getting the speaker volume\"}],\"nodeId\":\"getting-the-speaker-volume\",\"type\":\"h3\"},{\"id\":\"Fk2hiJ49O1qR4jGTnR624\",\"children\":[{\"text\":\"This API is used to get the speaker volume. A number-type value will be returned to indicate the volume. \"},{\"code\":1,\"text\":\"101\"},{\"text\":\" indicates that the \"},{\"code\":1,\"text\":\"SetSpeakerVolume\"},{\"text\":\" API has not been called.\\n\\\"Level\\\" indicates the real-time volume, and \\\"Volume\\\" the speaker volume. The final volume = Level * Volume%. For example, if the \\\"Level\\\" is 100 and \\\"Volume\\\" is 60, the final volume is \\\"60\\\".\"}],\"type\":\"p\"},{\"id\":\"qhOIiyTTxrz0KOERwxpas\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype33\",\"type\":\"h4\"},{\"id\":\"S2j8IAsY4B-3lq1RNxLqA\",\"children\":[{\"id\":\"t2A9GUsAeatfLYTl82EjQ\",\"children\":[{\"text\":\"Future GetSpeakerVolume() \"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"tzONZP7av1CEteQMMMHcv\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code33\",\"type\":\"h4\"},{\"id\":\"tOwowSAAifQ9uS7AfvWWY\",\"children\":[{\"id\":\"Hyo5qtSc9omStN7h-_d-K\",\"children\":[{\"text\":\"int res = await ITMGContext.GetInstance().GetAudioCtrl().GetSpeakerVolume();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"pQVMGe7rgqLnLDcc0RNKs\",\"children\":[{\"text\":\"Advanced APIs\"}],\"nodeId\":\"advanced-apis\",\"type\":\"h2\"},{\"id\":\"fycEZ1p2Pmw8w9imHD18V\",\"children\":[{\"text\":\"Enabling in-ear monitoring\"}],\"nodeId\":\"enabling-in-ear-monitoring\",\"type\":\"h3\"},{\"id\":\"eVXcGUPvV54u00PSWCfqQ\",\"children\":[{\"text\":\"This API is used to enable in-ear monitoring. You need to call \"},{\"code\":1,\"text\":\"EnableLoopBack+EnableSpeaker\"},{\"text\":\" before you can hear your own voice.\"}],\"type\":\"p\"},{\"id\":\"UVP_Edco7WQChxati3X3x\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype34\",\"type\":\"h4\"},{\"id\":\"3fBDdPdJE1No6j-VZ-6z3\",\"children\":[{\"id\":\"9K3RNWTD7ythi3x8qPdv7\",\"children\":[{\"text\":\"Future EnableLoopBack(bool enable)\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"cCOJFUcDsAqOckKEy53of\",\"children\":[{\"id\":\"YYEmd8K-2gu2C8hloqL6d\",\"children\":[{\"id\":\"bdBTMvPTD4Z-JrWQYPMWJ\",\"children\":[{\"id\":\"0kiOxrY59kNIMSkCHZplk\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"xG6aCY_g5-KEsDmTDZKN5\",\"children\":[{\"id\":\"galrUvu3ITSwuHSxCBjeq\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ArbiUxEgdCoE2YH0U6WSL\",\"children\":[{\"id\":\"gP3Jy7D4C3Eec1qWizxdd\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"N6HY3ioqKKc25F9kO7O7I\",\"children\":[{\"id\":\"DfrlZ-zzOP4XEXCrDT23q\",\"children\":[{\"id\":\"WehUUZELksH7SuKCl2uDi\",\"children\":[{\"text\":\"enable\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"tOFpz7xll_SR4B2zlZ704\",\"children\":[{\"id\":\"JRX0F618gXZDtN-12rZFQ\",\"children\":[{\"text\":\"bool\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"UDi10KC3YbKWm3tnKrn21\",\"children\":[{\"id\":\"1rh_1eObyKfQq-fY2RRnE\",\"children\":[{\"text\":\"Specifies whether to enable.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"rowHeader\":true,\"type\":\"table\",\"widths\":[28,25.33,46.67],\"widthMode\":\"percentage\"},{\"id\":\"dAQIU-oq8MKdoDTOLlIjt\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code34\",\"type\":\"h4\"},{\"id\":\"2Uyqc27IIsBeY1u_f8I_D\",\"children\":[{\"id\":\"lUYjLK_YRVD2YYBjRyVW1\",\"children\":[{\"text\":\"int res = await ITMGContext.GetInstance().GetAudioCtrl().EnableLoopBack(true);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"Y-m5-Oz8F2svYMtsu6_eg\",\"children\":[{\"text\":\"Getting user's room audio type\"}],\"nodeId\":\"getting-user's-room-audio-type\",\"type\":\"h3\"},{\"id\":\"KOZ3g7z5c9IsTvFk4U2kO\",\"children\":[{\"text\":\"This API is used to get a user's room audio type. The returned value is the room audio type. Value 0 indicates that an error occurred while getting the user's room audio type. For room audio types, see the \"},{\"code\":1,\"text\":\"EnterRoom\"},{\"text\":\" API.\"}],\"type\":\"p\"},{\"id\":\"nxqn6pQSTEFwNFqYiDUzD\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype35\",\"type\":\"h4\"},{\"id\":\"g5uKPALRfFD-dhrwK8uTT\",\"children\":[{\"id\":\"uKyPem8jaDAu8dtodcped\",\"children\":[{\"text\":\"Future GetRoomType()\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"3XRFkkF8uFMJTyofwddbj\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code35\",\"type\":\"h4\"},{\"id\":\"rBktxLi54NV4kykVM1mOj\",\"children\":[{\"id\":\"ixT7X4mBxRFwgS9ZqvcDP\",\"children\":[{\"text\":\"int curType = await ITMGContext.GetInstance().GetRoom().GetRoomType();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"0a1__oLEinAoLiqggY_3b\",\"children\":[{\"text\":\"Changing the room type\"}],\"nodeId\":\"changing-the-room-type\",\"type\":\"h3\"},{\"id\":\"Z04tTa7hLN7lG2MPqpBBI\",\"children\":[{\"text\":\"This API is used to modify a user's room audio type. For the result, see the callback event. The event type is \"},{\"code\":1,\"text\":\"ITMG_MAIN_EVENT_TYPE_CHANGE_ROOM_TYPE\"},{\"text\":\". The audio type of the room is determined by the first user to enter the room. After that, if a member in the room changes the room type, it will take effect for all members there.\"}],\"type\":\"p\"},{\"id\":\"piDx4iEhF116XJFpXDio6\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype36\",\"type\":\"h4\"},{\"id\":\"NCLScbLXOSVcw4jTHPRr6\",\"children\":[{\"id\":\"TtKBY8gvE9fbLskASsCaC\",\"children\":[{\"text\":\"Future ChangeRoomType(int roomType)\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"sn65rkCI3kTORDycFPSaz\",\"children\":[{\"id\":\"ssNTtVpzdpkaJZvdMq6--\",\"children\":[{\"id\":\"0reA9PckXXX078pTTn9cO\",\"children\":[{\"id\":\"Xj1NFOYHg3P41qn7mxwxQ\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ardVEkfoMuImRnCLC46LA\",\"children\":[{\"id\":\"o2NHy39CRPuJb79i8pDAP\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"0GiKMGBnQgi9yvIYK7ECs\",\"children\":[{\"id\":\"XFcuxWG-Zr5pg8cWaBf7e\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"14lkyDKrkAmkp2oSqicLX\",\"children\":[{\"id\":\"e_okxqSIZKG_YG8DZRnVc\",\"children\":[{\"id\":\"go0cc3okFmANqGLgM6gbf\",\"children\":[{\"text\":\"roomtype\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"9_2fSxsGW-Xt7zUPm_8pZ\",\"children\":[{\"id\":\"7s6g7ghwmyC4S-eiE1Jhs\",\"children\":[{\"text\":\"number\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ybpGJWB1KI6BVWY0zzXfm\",\"children\":[{\"id\":\"FLJ3ziKRLSRFsirVHEX4f\",\"children\":[{\"text\":\"Room type to be switched to. For room audio types, see the `EnterRoom` API.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"rowHeader\":true,\"type\":\"table\",\"widths\":[19,17,64],\"widthMode\":\"percentage\"},{\"id\":\"hj89EVB4DCczAMuIpx_ZS\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code36\",\"type\":\"h4\"},{\"id\":\"OglGLwMtInhvy9MCYgfv5\",\"children\":[{\"id\":\"9AE3z5KxSbIAVjQkb-N4S\",\"children\":[{\"text\":\"int res = await ITMGContext.GetInstance().GetRoom().ChangeRoomType(1);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"M1KUr8nbG1-FQDCbXe8HK\",\"children\":[{\"text\":\"Callback event\"}],\"nodeId\":\"callback-event\",\"type\":\"h4\"},{\"id\":\"UERFFFuHaIQVdCdK4WRvj\",\"children\":[{\"text\":\"After the room type is set, the event message \"},{\"code\":1,\"text\":\"ITMG_MAIN_EVENT_TYPE_CHANGE_ROOM_TYPE\"},{\"text\":\" will be returned in the callback. The returned parameters include \"},{\"code\":1,\"text\":\"result\"},{\"text\":\", \"},{\"code\":1,\"text\":\"error_info\"},{\"text\":\", and \"},{\"code\":1,\"text\":\"new_room_type\"},{\"text\":\". The \"},{\"code\":1,\"text\":\"new_room_type\"},{\"text\":\" represents the following information. The event message will be identified in the \"},{\"code\":1,\"text\":\"OnEvent\"},{\"text\":\" function.\"}],\"type\":\"p\"},{\"id\":\"Kaf1UgswNJu_APvQwIdRo\",\"children\":[{\"id\":\"jInfyv7uoNX7cfEPaU7xm\",\"children\":[{\"id\":\"wj0BhBbe51aC4G_w-TxvK\",\"children\":[{\"id\":\"knitD74eqNzFP_2C9PYVE\",\"children\":[{\"text\":\"Event Subtype\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"uMyZmV9BYxI-aLRQjOpbA\",\"children\":[{\"id\":\"e4OdU2UEKhrQUuiFRG9NL\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"NWOAHsLuFlqqTYObX8e36\",\"children\":[{\"id\":\"NynJfD33AQtoS6HQMDDit\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"Q1oOenLyx3Ba8mLvc_HpP\",\"children\":[{\"id\":\"QbSGHCmDf2Bays5Yn1ofF\",\"children\":[{\"id\":\"LEV5fZZTROLS6rDbJOr-k\",\"children\":[{\"text\":\"ITMG_ROOM_CHANGE_EVENT_ENTERROOM\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"YzfoSvK4bPdDFEvWDt8-K\",\"children\":[{\"id\":\"Yd4s0RKDi7UU8ADvaTPxD\",\"children\":[{\"text\":\"1\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"RQ5awx4bfLChY00465-ex\",\"children\":[{\"id\":\"FtxNPlvhymCIDCMwa9stZ\",\"children\":[{\"text\":\"Indicates that the existing audio type is inconsistent with and changed to that of the entered room.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"h89vQ-1bZLhpBPG5Gsv32\",\"children\":[{\"id\":\"3Fx-G1xPI3akvtet4xs3s\",\"children\":[{\"id\":\"xYDMIaagqp489qqrvUkXQ\",\"children\":[{\"text\":\"ITMG_ROOM_CHANGE_EVENT_START\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"UKXFiR_y_PYwYkKJYUYsf\",\"children\":[{\"id\":\"UUVcf--GebXCpKAK7mFnc\",\"children\":[{\"text\":\"2\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ZA5VO0fAjS245fK5zzH_9\",\"children\":[{\"id\":\"_0eUGJkL9OxnskWu6angl\",\"children\":[{\"text\":\"Indicates that a user is already in the room and the audio type starts changing (e.g., calling the `ChangeRoomType` API to change the audio type).\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"e0AYeb91SP5E6VJiREXnN\",\"children\":[{\"id\":\"qizhztJDT8D7eTNO5avkP\",\"children\":[{\"id\":\"dU_TLcYnqxBKDvL6X6OSu\",\"children\":[{\"text\":\"ITMG_ROOM_CHANGE_EVENT_COMPLETE\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"yz2sKTpE_HZdpg1f_HdCt\",\"children\":[{\"id\":\"Ths4jrbLC-CZS5XPoZV15\",\"children\":[{\"text\":\"3\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"2ntmr3L2BlIzcmg7qiGkV\",\"children\":[{\"id\":\"1j9FYBcxWuYUxrzPz75QA\",\"children\":[{\"text\":\"Indicates that a user is already in the room and the audio type has been changed.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"EIh4Cp84r99_EkLldVitu\",\"children\":[{\"id\":\"MxaKFdgiY9ETrHxu8bGEz\",\"children\":[{\"id\":\"MColK704qdegll1HUjKMf\",\"children\":[{\"text\":\"ITMG_ROOM_CHANGE_EVENT_REQUEST\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"NyCcaXYL_9pTasrmBPGJ3\",\"children\":[{\"id\":\"559kHM9dizJD3NHBxdv5w\",\"children\":[{\"text\":\"4\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"qBKmKFy57e1BaOQDBRMWR\",\"children\":[{\"id\":\"LHH9_tLvv5kcdhiLLhlm7\",\"children\":[{\"text\":\"Indicates that a room member calls the `ChangeRoomType` API to request a change of room audio type.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"rowHeader\":true,\"type\":\"table\",\"widths\":[38,11,51],\"widthMode\":\"percentage\"},{\"id\":\"tX1zu4Emaj8ewIY4FMUJn\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code37\",\"type\":\"h4\"},{\"id\":\"FGzhx5nnQGtlMntpz3M9l\",\"children\":[{\"id\":\"_8Eda-FtHN27CzIeZM5AP\",\"children\":[{\"text\":\"case ITMG_MAIN_EVENT_TYPE.ITMG_MAIN_EVENT_TYPE_CHANGE_ROOM_TYPE:\"}],\"type\":\"code-line\"},{\"id\":\"R-N0-hWmXAcVxq8ZR8Gwr\",\"children\":[{\"text\":\" {\"}],\"type\":\"code-line\"},{\"id\":\"FCbMZ2Oo08yWRxs12VZzd\",\"children\":[{\"text\":\" // Process room type events\"}],\"type\":\"code-line\"},{\"id\":\"XLbqFOrmjNn9jDfbh6So0\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"QccxOSCVztPj-qgKEp17T\",\"children\":[{\"text\":\" break;\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"67s3aOUqL0Lz9ScmKW77t\",\"children\":[{\"text\":\"The monitoring event of room call quality\"}],\"nodeId\":\"the-monitoring-event-of-room-call-quality\",\"type\":\"h3\"},{\"id\":\"xnoGw6ZrGu9zJ0vqChmIS\",\"children\":[{\"text\":\"This is the quality monitoring event used to listen on the network quality. If your network conditions are poor, the business layer will ask you to switch the network through the UI. This event is triggered once every two seconds after room entry, and its message is \"},{\"code\":1,\"text\":\"ITMG_MAIN_EVENT_TYPE_CHANGE_ROOM_QUALITY\"},{\"text\":\". The returned parameters include \"},{\"code\":1,\"text\":\"weight\"},{\"text\":\", \"},{\"code\":1,\"text\":\"loss\"},{\"text\":\", and \"},{\"code\":1,\"text\":\"delay\"},{\"text\":\", which are as detailed below:\"}],\"type\":\"p\"},{\"id\":\"_neT8nlLtKTRCzQ26AcGV\",\"children\":[{\"id\":\"qjNxIJgBfmI50JJaShHgV\",\"children\":[{\"id\":\"oqky24RTp037etodniALf\",\"children\":[{\"id\":\"UpqPlsh7RcfdCV-YbD81X\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"vvWLdWBk5YjB78gTALlcI\",\"children\":[{\"id\":\"RcTTrojVX6tqS1wstbhXt\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"phHZReTTZbXKKLyqasHrx\",\"children\":[{\"id\":\"Rh7yeXQf_vLt9xfiy_lX-\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"l0L7HUEqk5DFzy6hwGCP-\",\"children\":[{\"id\":\"dUmw-bVd_NWhYUGZm1FWT\",\"children\":[{\"id\":\"W7KLmA6ev_QytvzduGIb1\",\"children\":[{\"text\":\"weight\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Or_AIaOf64MJd6_x3-TuW\",\"children\":[{\"id\":\"A5TSpuTqthViBkiVRGrEv\",\"children\":[{\"text\":\"number\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"rfwsWPc20J7xSqw5Wd05P\",\"children\":[{\"id\":\"SpPbhHtoXKLAc-TeF0t-5\",\"children\":[{\"text\":\"Value range: 1–50. `50` indicates excellent sound quality, `1` indicates very poor (barely usable) sound quality, and `0` represents an initial meaningless value. Generally, if the value is below 30, you can remind users that the network is poor and recommend them to switch the network.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"xbyVMwy_qDacU5E63TpiE\",\"children\":[{\"id\":\"FiosbRQ_jPiqrLhQqwv6I\",\"children\":[{\"id\":\"IA1F_9twYxaMWh-g4Bf3X\",\"children\":[{\"text\":\"loss\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"9gCehWZV1zbNw3WMGJABw\",\"children\":[{\"id\":\"MDSI9dxL1L3B9jwjMi-Bf\",\"children\":[{\"text\":\"var\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"GPHtX2yw6nTxQG4JiknJl\",\"children\":[{\"id\":\"lk0Wgsw_wCf-Qzap4nGUo\",\"children\":[{\"text\":\"Upstream packet loss rate\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"UXRwGy5llk6D71J_v60Ad\",\"children\":[{\"id\":\"c4Tj7JPsX0QJWazc7IYwy\",\"children\":[{\"id\":\"hlWVXz8S2ZbOPafywZBkV\",\"children\":[{\"text\":\"delay\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ksej66viPay0S7-WE2-sl\",\"children\":[{\"id\":\"WQdCIfssIel2Wim_PpXPz\",\"children\":[{\"text\":\"number\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"27UA6awIrMypQi7HKftER\",\"children\":[{\"id\":\"xSqKetg8RrTxxp9BRLlNL\",\"children\":[{\"text\":\"Voice chat delay in ms\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"rowHeader\":true,\"type\":\"table\",\"widths\":[13,14,73],\"widthMode\":\"percentage\"},{\"id\":\"6KR_hNviMpOYriWj-ZW4W\",\"children\":[{\"text\":\"Getting version number\"}],\"nodeId\":\"getting-version-number\",\"type\":\"h3\"},{\"id\":\"m8acgBpiJm5x6Q01osjQH\",\"children\":[{\"text\":\"This API is used to get the SDK version number for analysis.\"}],\"type\":\"p\"},{\"id\":\"5o2vQnZmhvOa3SgVA3eTT\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype37\",\"type\":\"h4\"},{\"id\":\"1FqyizcQCqVBT7mY1wE1E\",\"children\":[{\"id\":\"LfifsXmIzQdPfZk5MVXmR\",\"children\":[{\"text\":\"Future GetSDKVersion()\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"QUInii-j4sCLQf0iULhWl\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code38\",\"type\":\"h4\"},{\"id\":\"8moRdFaDci9QhXOshHw8Y\",\"children\":[{\"id\":\"JZJ4HERhHZHqyQCD6odqA\",\"children\":[{\"text\":\"_sdkVersions = await ITMGContext.GetInstance().GetSDKVersion();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"eIjLf8oBzU0YvwQYHpHvh\",\"children\":[{\"text\":\"Setting the application name and version\"}],\"nodeId\":\"setting-the-application-name-and-version\",\"type\":\"h3\"},{\"id\":\"P6SlJtKIsL-3ZClRzHMHC\",\"children\":[{\"text\":\"This API is used to set the application name and version.\"}],\"type\":\"p\"},{\"id\":\"NRZRf1n_yT1qvy5EtmtAG\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype38\",\"type\":\"h4\"},{\"id\":\"g11J3laRyjytOlO-kdb7N\",\"children\":[{\"id\":\"QznrIrc0yjDUBNdqTein4\",\"children\":[{\"text\":\"Future SetAppVersion(String appVersion)\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"LhA10lU-hZ38qWRteK6Jf\",\"children\":[{\"text\":\"Parameter description\"}],\"nodeId\":\"parameter-description\",\"type\":\"h4\"},{\"id\":\"059q_KfVmDS7FKDla4n2i\",\"children\":[{\"id\":\"uBXEJGisnWaUgj7t05y_8\",\"children\":[{\"id\":\"xUf3b4Ln7R37mOQuwU1Wh\",\"children\":[{\"id\":\"j6v5a9ZeB_wDPIBcEJceu\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Zll_T-LFzK1H5UdeGFn6h\",\"children\":[{\"id\":\"Lhc9z4P-T-rHjC_g-kzG1\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"2dzBFvMY91WpOGjvOWmu3\",\"children\":[{\"id\":\"ryILP68hhaVbRL51Pj2be\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"7b3vL2fpONoAZZ4z5pbod\",\"children\":[{\"id\":\"_wYCwOuJKVrZ3tqr-KVMb\",\"children\":[{\"id\":\"uC1WRdBZLeipQt177gugf\",\"children\":[{\"text\":\"appVersion\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"-l5uCmNEPt0CMGA_jFHm1\",\"children\":[{\"id\":\"z__slbBVggMCeHCz9xN-Z\",\"children\":[{\"text\":\"string\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"vE4ilecukFH4rz2Hh_kVa\",\"children\":[{\"id\":\"FqN8OXD-XruzGTeI_jKWH\",\"children\":[{\"text\":\"Application name and version\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"rowHeader\":true,\"type\":\"table\",\"widths\":[33.33,33.33,33.34],\"widthMode\":\"percentage\"},{\"id\":\"KMpXQ3CJAHyyp6sEGBYLX\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code39\",\"type\":\"h4\"},{\"id\":\"oLAb9MPEtaMYZ8pDR5qzD\",\"children\":[{\"id\":\"_pj51uKO0J-Sg5l0P_23y\",\"children\":[{\"text\":\"await ITMGContext.GetInstance().SetAppVersion(\\\"gme V2.0.0\\\");\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"JbNwGvNsBDTKDy7-K66Ec\",\"children\":[{\"text\":\"Setting log printing level\"}],\"nodeId\":\"setting-log-printing-level\",\"type\":\"h3\"},{\"id\":\"Ct8LrZ5bO2UVv9AWZzG-q\",\"children\":[{\"text\":\"This API is used to set the level of logs to be printed, and needs to be called before the initialization. It is recommended to keep the default level.\"}],\"type\":\"p\"},{\"id\":\"PApCe5j4NPI9AiMB4w2p4\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype39\",\"type\":\"h4\"},{\"id\":\"LVqrQaq9h5o1JXYBOcnK6\",\"children\":[{\"id\":\"ate_En7VFYKDXtoo7OTC6\",\"children\":[{\"text\":\"Future SetLogLevel(int levelWrite, int levelPrint)\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"FqFOyzOgx2vb1qjTLQ7Yw\",\"children\":[{\"text\":\"Parameter description\"}],\"nodeId\":\"parameter-description2\",\"type\":\"h4\"},{\"id\":\"a7WnZLakY0HHmB5r9pg-0\",\"children\":[{\"id\":\"cVemSxla3MPRa-TZ4hqJM\",\"children\":[{\"id\":\"rkhDl41UmVCiCXTgCzloG\",\"children\":[{\"id\":\"hqWWXboGKKbErrPUz97SE\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"BxZcLWc0hKY2W92ljsiwl\",\"children\":[{\"id\":\"-ce8NTXLm4dzSomOv5IyE\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"bWajSOPhEWZU2j2N7DBGP\",\"children\":[{\"id\":\"Ed5DevVZhGfBg9vQjJ1XN\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"bfO_XfG6e5I6k90KqTUWY\",\"children\":[{\"id\":\"wHfutjlMqCNX3kBTVomaa\",\"children\":[{\"id\":\"lbYhvoaqIdyKbFdpQc_9T\",\"children\":[{\"text\":\"level\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"vXq5_LZTj0BJvSHg_th-7\",\"children\":[{\"id\":\"dr-BHAqTCOYdtYo297McG\",\"children\":[{\"text\":\"number\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"V_orM1Bz-NJUrN77RjfSw\",\"children\":[{\"id\":\"XHfjJEjIAtUcrDRaI4BXF\",\"children\":[{\"text\":\"Sets the log level. `TMG_LOG_LEVEL_NONE` indicates not to log. Default value: `TMG_LOG_LEVEL_INFO`.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"rowHeader\":true,\"type\":\"table\",\"widths\":[16,14,70],\"widthMode\":\"percentage\"},{\"id\":\"XeAmuiMgNrD0Ux1x4h14q\",\"children\":[{\"code\":1,\"text\":\"level\"},{\"text\":\" description:\"}],\"type\":\"p\"},{\"id\":\"HqdMS76NVjD2sYqY5aXog\",\"children\":[{\"id\":\"uiuuL-IfIM4y_eeWdrD5X\",\"children\":[{\"id\":\"N_k8XdFzARLfgpB9fOUJ0\",\"children\":[{\"id\":\"I9dwsEJs4To9ekaf4tnLQ\",\"children\":[{\"text\":\"level\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"BCJ62Tl_TMLPw-ykalu25\",\"children\":[{\"id\":\"CZyg3ruhS9vFbv8N55ToK\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"4Np5mmoN7FAi1jTZnM4c0\",\"children\":[{\"id\":\"0Xmk4KVXZApXmpAzIA7-I\",\"children\":[{\"id\":\"oHKQss7D-FPQpKNye_Io9\",\"children\":[{\"text\":\"TMG_LOG_LEVEL_NONE\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"H2xJfUNiVlTfngmecRfJD\",\"children\":[{\"id\":\"a-ubo-3wcqhLXcMdIqCFW\",\"children\":[{\"text\":\"Does not print logs\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"hMVU04cdIMjB_tYaF44sa\",\"children\":[{\"id\":\"HE-SJpjLv5x89mESzzwbL\",\"children\":[{\"id\":\"SwQ2w1Ztfpbb7bNVwSQlW\",\"children\":[{\"text\":\"TMG_LOG_LEVEL_ERROR\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ip7wCm33jZEZiC69qcvrg\",\"children\":[{\"id\":\"ymJ8mR_tdO7tYxlG0Luqt\",\"children\":[{\"text\":\"Prints error logs (default)\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"APY_QsyW15I8RD5igk9xj\",\"children\":[{\"id\":\"9DzJxRgAPKFyJgE04d0an\",\"children\":[{\"id\":\"mg1EBO_32JAADnQXqoIuM\",\"children\":[{\"text\":\"TMG_LOG_LEVEL_INFO\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"_N2W29NgtOVWeTqjf3PjT\",\"children\":[{\"id\":\"aiHSaPNmWhV8qu5cd-EJy\",\"children\":[{\"text\":\"Prints info logs\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"ya5Qeappa4fNahMFnuLB8\",\"children\":[{\"id\":\"JsBUzR84M6pDsjCo3u1ia\",\"children\":[{\"id\":\"raCxXCyQdalvyxpNPTSE8\",\"children\":[{\"text\":\"TMG_LOG_LEVEL_DEBUG\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"XGrqrHs6vYNuQoIKnRv2F\",\"children\":[{\"id\":\"hJgI1HRSFrJRx9Hrc0IM2\",\"children\":[{\"text\":\"Prints debug logs\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"3_23e1cd_S09l4J_avHDG\",\"children\":[{\"id\":\"Izh86A9PrTm2EJdsIA3JL\",\"children\":[{\"id\":\"wkg32zRxhSNHGqcU4svtU\",\"children\":[{\"text\":\"TMG_LOG_LEVEL_VERBOSE\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"7sQm25sbISSjZqYgN_Fa1\",\"children\":[{\"id\":\"4hAtAX2g4sxxoRhqLRtDp\",\"children\":[{\"text\":\"Prints verbose logs\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"rowHeader\":true,\"type\":\"table\",\"widths\":[50,50],\"widthMode\":\"percentage\"},{\"id\":\"6jVI9ei69GGChsPxYVYOU\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code40\",\"type\":\"h4\"},{\"id\":\"cX0FIwSbMvTSEWNm4AFkV\",\"children\":[{\"id\":\"-MGpvw8NIjvFUdVyeVkVp\",\"children\":[{\"text\":\"ITMGContext.GetInstance().SetLogLevel(ITMG_LOG_LEVEL.TMG_LOG_LEVEL_ERROR, ITMG_LOG_LEVEL.TMG_LOG_LEVEL_ERROR);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"abJ-7spzi33T8mPoDQ3qh\",\"children\":[{\"text\":\"Setting the log printing path\"}],\"nodeId\":\"setting-the-log-printing-path\",\"type\":\"h3\"},{\"id\":\"DFYNxsPdY7MxYE29087ew\",\"children\":[{\"text\":\"This API is used to set the log printing path. The default path is as follows. It needs to be called before Init.\"}],\"type\":\"p\"},{\"id\":\"DO4b0BQ0I4s9s9uwy9JGn\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype40\",\"type\":\"h4\"},{\"id\":\"96tF1qLnr7ZUaBSFgfVKS\",\"children\":[{\"id\":\"zql_NPD0vYSYc4XY3IlF3\",\"children\":[{\"text\":\"Future SetLogPath(String logDir)\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"2PF03lj7CNeDFjvZZIQ4p\",\"children\":[{\"id\":\"5MzLxrF7vfK9veoSjguYo\",\"children\":[{\"id\":\"9MpUPZjzbgKg7njDcto3f\",\"children\":[{\"id\":\"haZAQu3cP8QXHoWi9FAzA\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"iFKhHk2MTBpmemPzxxnT-\",\"children\":[{\"id\":\"LUvNIiFPSIXH8TXiyjOQf\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"LqTyeMEH3dRp2f0H6K5tz\",\"children\":[{\"id\":\"piTlsxEmZJMG86oQLmdsd\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"liq8qtkzOxb4GtHKN0QN5\",\"children\":[{\"id\":\"u1wnxqQxTB-QksCl4NHuO\",\"children\":[{\"id\":\"a75KzMr8kpBwESne6f9L_\",\"children\":[{\"text\":\"logPath\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"jtU7LIPyPA9NxoIXlXh1u\",\"children\":[{\"id\":\"Xh8jaqkGnellS_dbd4vdz\",\"children\":[{\"text\":\"string\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"RIUjfadxbQ8hx2WkGDZ5q\",\"children\":[{\"id\":\"fjI3mbXeVDbypoLQN3A9h\",\"children\":[{\"text\":\"Path\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"rowHeader\":true,\"type\":\"table\",\"widths\":[33.33,33.33,33.34],\"widthMode\":\"percentage\"},{\"id\":\"mQ3YC23ESKEd2AJOZzfjD\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code41\",\"type\":\"h4\"},{\"id\":\"EymLcxSeGXwovrmU1O7Eh\",\"children\":[{\"id\":\"TfrSI9CIrqCRvlujjd9Xj\",\"children\":[{\"text\":\"String curPath = \\\"\\\"// Set a path by yourself\"}],\"type\":\"code-line\"},{\"id\":\"-Aytz22s9PCuK3ydZr9-F\",\"children\":[{\"text\":\"ITMGContext.GetInstance().SetLogPath(curPath);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"2rAqmonfXzl8R7-ed0lEe\",\"children\":[{\"text\":\"Getting the diagnostic messages\"}],\"nodeId\":\"getting-the-diagnostic-messages\",\"type\":\"h3\"},{\"id\":\"G2_nw44cqq_A6zAKp9WDj\",\"children\":[{\"text\":\"This API is used to get information on the quality of real-time audio/video calls, which is mainly used to view real-time call quality and troubleshoot and can be ignored on the business side.\"}],\"type\":\"p\"},{\"id\":\"XHTy2AzBb9a370TmQP6Hg\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype41\",\"type\":\"h4\"},{\"id\":\"zL9IzdlHuCk4OSZLzLQ_I\",\"children\":[{\"id\":\"bYP2O_m1dulkeT6G_w_Si\",\"children\":[{\"text\":\"Future GetQualityTips()\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"JwuO67oV8QjTPdjn48ChQ\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code42\",\"type\":\"h4\"},{\"id\":\"Fego-Xi65J9OGi0Xfn2sK\",\"children\":[{\"id\":\"oBIUG9vSUXHByKlLsLb1f\",\"children\":[{\"text\":\"String curQualityTips = await ITMGContext.GetInstance().GetRoom().GetQualityTips();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"9BgwwkdKaf3n-43JEDWUA\",\"children\":[{\"text\":\"Callback message\"}],\"nodeId\":\"callback-message\",\"type\":\"h3\"},{\"id\":\"-5VxdOdRA9rQq1jq4i8nN\",\"children\":[{\"id\":\"CKcjU8KW91AmlIlqt8EGZ\",\"children\":[{\"id\":\"pRi357EyCSHMB93D1Tkga\",\"children\":[{\"id\":\"fGxtY5SMVLtdV1pSI6d6R\",\"children\":[{\"text\":\"Message\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"bf1nd7hcUeMQ3CJH_RuY2\",\"children\":[{\"id\":\"cZ6tbEkNRoVSzT2YG_wlr\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"4r19gWDzI52FLwQ2QHCGK\",\"children\":[{\"id\":\"fF2ZmUetruZcqioOnFFBj\",\"children\":[{\"text\":\"Data\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"0Dj9Ju-vS0aPOAZhIH7cW\",\"children\":[{\"id\":\"btdke4DPJXLYDWPZz3lk7\",\"children\":[{\"text\":\"Sample\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"C9gFLO18dPhBssztndv2c\",\"children\":[{\"id\":\"9K7b37hkq2QelhqvqLHW1\",\"children\":[{\"id\":\"t-A5hQe_nxpX21D-KfsKx\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_ENTER_ROOM\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"RyTTLOHfJ6TpHEP5dmQdN\",\"children\":[{\"id\":\"5_o5ACQMFR09-XdXooIu9\",\"children\":[{\"text\":\"A member entered the audio room.\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"lTthV0rUtUgpRAknWbU1t\",\"children\":[{\"id\":\"eriNc8GEgebljDEtS9mAg\",\"children\":[{\"text\":\"result; error_info\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Vpbay720YGmMmSuKC55tX\",\"children\":[{\"id\":\"7yMjHqxyBt_cwZFEAPuGk\",\"children\":[{\"text\":\"{\\\"error_info\\\":\\\"\\\",\\\"result\\\":0}\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"SmgAQe50agmaTLTX3rIq-\",\"children\":[{\"id\":\"5ehwN6_ZMf_hwS6J2_SSN\",\"children\":[{\"id\":\"DIcYtFCjuyy4oVcarph8j\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_EXIT_ROOM\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"7hw-DhDhiqK-jwYpqMIYt\",\"children\":[{\"id\":\"LBJUs1v7S2Uzry1oKGAQs\",\"children\":[{\"text\":\"A member exited the audio room.\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"yvbUjcPb16o9FTlxP3cX0\",\"children\":[{\"id\":\"X1msg9fZOqDZP5VkZ88J1\",\"children\":[{\"text\":\"result; error_info\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"5RvZKncf-ZxPa8bT_JE3c\",\"children\":[{\"id\":\"PV0Acl53YbJ7NwhJqhWX_\",\"children\":[{\"text\":\"{\\\"error_info\\\":\\\"\\\",\\\"result\\\":0}\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"ZcAZpGMl8CEYzykNOftkD\",\"children\":[{\"id\":\"BDHr-AQ_dc9f1vCAY2NzJ\",\"children\":[{\"id\":\"9k3q1DysQGLT99GX0dO_8\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_ROOM_DISCONNECT\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"P99MoJZL6MEVbzxlXZpuI\",\"children\":[{\"id\":\"sRvDxQcLB3ZT1osX9Z30C\",\"children\":[{\"text\":\"The room was disconnected for network or other reasons.\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"68uBGhlVeai2cWP1K1rMc\",\"children\":[{\"id\":\"11H98pGKEve9_sXLGpw5P\",\"children\":[{\"text\":\"result; error_info\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"_UrEnSEL1K56Rjx3xNHeE\",\"children\":[{\"id\":\"lb_fS5b3JTnV4ShvlPUbo\",\"children\":[{\"text\":\"{\\\"error_info\\\":\\\"waiting timeout, please check your network\\\",\\\"result\\\":0}\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"Kl1jlkn1r4C1kG3X2QBmF\",\"children\":[{\"id\":\"zW-kVSJkl43AKDggplAkS\",\"children\":[{\"id\":\"wbmdgzWNaoqpPV85JGQ_l\",\"children\":[{\"text\":\"ITMG_MAIN_EVNET_TYPE_USER_UPDATE\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"NG07XBfKvAAIeP11jTfpt\",\"children\":[{\"id\":\"gWl3HpsZAoEUhVQWWyUn8\",\"children\":[{\"text\":\"Room members were updated.\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"LwLWZP1xDEo9OaZloO0B6\",\"children\":[{\"id\":\"5d_2P3nW0cEuhPjP853Pp\",\"children\":[{\"text\":\"user_list; event_id\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"bKYWPdqx56UcUJmy61nKo\",\"children\":[{\"id\":\"fJIRWTfMKTdLrFp32qUqv\",\"children\":[{\"text\":\"{\\\"event_id\\\":1,\\\"user_list\\\":[\\\"0\\\"]}\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"WW6qKrS6hns6pYUSw4j8X\",\"children\":[{\"id\":\"v9bW0_czAnKyN9aH6xhax\",\"children\":[{\"id\":\"qmrkPrEwmiUQ-qgzd05sC\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_RECONNECT_START\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"B0TTdIOy9Ja8ybqoPWeNR\",\"children\":[{\"id\":\"qy4OZINXqABUuQBGD5y_s\",\"children\":[{\"text\":\"The reconnection to the room started.\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"fgzDAPyVKm8iQEzdrUtgN\",\"children\":[{\"id\":\"5FopZqFfgi6Ka0GGYMe-h\",\"children\":[{\"text\":\"result; error_info\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"5mqU0a6vVEPYdJaCb_Gpj\",\"children\":[{\"id\":\"e7hB4Rqi1DvNvl2BL-uWC\",\"children\":[{\"text\":\"{\\\"error_info\\\":\\\"\\\",\\\"result\\\":0}\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"zaAZtuFcOIEanm5CVIKyx\",\"children\":[{\"id\":\"GzlQva6Kp3oHi1oqOkKAl\",\"children\":[{\"id\":\"7TbeDiV145FhUV7fLQaIt\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_RECONNECT_SUCCESS\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"gZigOMOHP5OUty5LuLm0-\",\"children\":[{\"id\":\"xkgxpHF9B00vHzUoVkxgB\",\"children\":[{\"text\":\"The reconnection to the room succeeded.\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"D3bC1xVWSQslCXFg_bxjC\",\"children\":[{\"id\":\"zqa48pGpD2aHqQVMrXTQF\",\"children\":[{\"text\":\"result; error_info\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"XXbIf5xXgNPS4cTGSaOb9\",\"children\":[{\"id\":\"Gy256arGj4YCPfaCc58XM\",\"children\":[{\"text\":\"{\\\"error_info\\\":\\\"\\\",\\\"result\\\":0}\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"TCI482Nw_42kMTJV0Gg9A\",\"children\":[{\"id\":\"SwJuIHjxef30GD0RDFVBk\",\"children\":[{\"id\":\"AyisAoy1tbhHR09JF_Tly\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_SWITCH_ROOM\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"-4DYXdu4L7aj8I6h_0e4X\",\"children\":[{\"id\":\"0hhW8QG0QBWTlWSDd3ZX8\",\"children\":[{\"text\":\"The room was quickly switched.\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"so9PbDKjDrm51Tkh_LImp\",\"children\":[{\"id\":\"h3NpP82V3l0Cklu1Q6TLp\",\"children\":[{\"text\":\"result; error_info\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"1OkNDOydYnK8vW37E9JgB\",\"children\":[{\"id\":\"dsF8CAQU0w1iMVoz2Eive\",\"children\":[{\"text\":\"{\\\"error_info\\\":\\\"\\\",\\\"result\\\":0}\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"i2ZHO5fhai2b-ObUBYWAE\",\"children\":[{\"id\":\"WMrIgIwg4_9Mee12m53jW\",\"children\":[{\"id\":\"Fnno9wEAryzeipkkFdD8e\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_CHANGE_ROOM_TYPE\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"UDjv3G8XTbqZigkuUfOwk\",\"children\":[{\"id\":\"e8QudE9DJLmWDTEn_-1bj\",\"children\":[{\"text\":\"The room status was changed.\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"btSJieX7NloMV7791KaBc\",\"children\":[{\"id\":\"tNsmPlSP6jEYlCHJesmxW\",\"children\":[{\"text\":\"result; error_info; sub_event_type; new_room_type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ZYzAPKHGxDZWMqXdfh3va\",\"children\":[{\"id\":\"asmPPN6EuIoUfDTHpFeJe\",\"children\":[{\"text\":\"{\\\"error_info\\\":\\\"\\\",\\\"new_room_type\\\":0,\\\"result\\\":0}\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"dHCXEe9nFNSo8uvuwPEvg\",\"children\":[{\"id\":\"PedpWUx0C9hpXLcCvMlaA\",\"children\":[{\"id\":\"CsfijPEz6HPFMLHB2JxyD\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_ROOM_SHARING_START\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"HiFLaapfQGW7OyJ0hoaA8\",\"children\":[{\"id\":\"7QzdXciofoiXTAOrDjVId\",\"children\":[{\"text\":\"Cross-room mic connect started.\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"K0_7Fsoq6L81IYhZDqx22\",\"children\":[{\"id\":\"myv2cKzTkl97WvLaAlXbn\",\"children\":[{\"text\":\"result;\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"WOb5sO907XXbPRCI3mnnE\",\"children\":[{\"id\":\"A50AzBVZTCpnbEYP4in02\",\"children\":[{\"text\":\"{\\\"result\\\":0}\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"4pZYnZYoxkGMc7F1Hkzel\",\"children\":[{\"id\":\"1PEmwifpUg1lZYMXlQple\",\"children\":[{\"id\":\"iLP6CWjw0utS-TzpAN9i1\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_ROOM_SHARING_STOP\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"DmWWVGm3bRIDOS-zeNQ0M\",\"children\":[{\"id\":\"JvTM1nVdvk-ZpTgvhBPKj\",\"children\":[{\"text\":\"Cross-room mic connect stopped.\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"zSSHijncrqU04kMgeztOL\",\"children\":[{\"id\":\"-Xkr6hTxz-AFz0nHd4A_K\",\"children\":[{\"text\":\"result;\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"6Iue0zHjteIaEqNDGfJEG\",\"children\":[{\"id\":\"v182zGDfHZsu-PQyen64X\",\"children\":[{\"text\":\"{\\\"result\\\":0}\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"NUDibB08Bv9s7mpSxoMXA\",\"children\":[{\"id\":\"UZpI3ED6vfd96BCWnBoKR\",\"children\":[{\"id\":\"cVC6w4_RyqQdDxx28XOx2\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_SPEAKER_DEFAULT_DEVICE_CHANGED\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"2RcTPmYk3YIWxX7ZUJRVA\",\"children\":[{\"id\":\"cL3ZKm96EJ2heV-B6mOoM\",\"children\":[{\"text\":\"The default speaker device was changed.\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"2PG_OneQ95aAkV2K61tqy\",\"children\":[{\"id\":\"3k4HFcHt4441tSY-0iMpy\",\"children\":[{\"text\":\"result; error_info\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ngVPjkTa6INm4MNq61N5N\",\"children\":[{\"id\":\"wvc2Q4WyJHKn8VEdMkJ0X\",\"children\":[{\"text\":\"{\\\"deviceID\\\":\\\"{0.0.0.00000000}.{a4f1e8be-49fa-43e2-b8cf-dd00542b47ae}\\\",\\\"deviceName\\\":\\\"Speaker (Realtek High Definition Audio)\\\",\\\"error_info\\\":\\\"\\\",\\\"isNewDevice\\\":true,\\\"isUsedDevice\\\":false,\\\"result\\\":0}\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"V4tmPw789XmdzoKDVxNtR\",\"children\":[{\"id\":\"wjUZ9seV9tadC8RCEEWaQ\",\"children\":[{\"id\":\"ha7Z6HbSEqfCZp6VinA2K\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_SPEAKER_NEW_DEVICE\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"cJh9ChGq1sbJgDG8Xw6mW\",\"children\":[{\"id\":\"bKP23vSwAGa403hJsrz44\",\"children\":[{\"text\":\"A new speaker device was added.\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"duqffKctWvpiz1TMO49LC\",\"children\":[{\"id\":\"bPYbr_nBBEUrpwFiWpuI1\",\"children\":[{\"text\":\"result; error_info\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"KMgViRzp2hWbRjbAkkrkf\",\"children\":[{\"id\":\"31N6Dz2EcvRw8AgU1jFjm\",\"children\":[{\"text\":\"{\\\"deviceID\\\":\\\"{0.0.0.00000000}.{a4f1e8be-49fa-43e2-b8cf-dd00542b47ae}\\\",\\\"deviceName\\\":\\\"Speaker (Realtek High Definition Audio)\\\",\\\"error_info\\\":\\\"\\\",\\\"isNewDevice\\\":true,\\\"isUsedDevice\\\":false,\\\"result\\\":0}\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"K2URhuiwKV7cZ7TIYJz_t\",\"children\":[{\"id\":\"NE4TK-jwvL339W_dQapGF\",\"children\":[{\"id\":\"e1L9Qc1FOLjVM85t6O8oP\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_SPEAKER_LOST_DEVICE\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"euRWV_Cp6998SpTHfWWKg\",\"children\":[{\"id\":\"k2JdVx-D0c8ZQwQtuFt8v\",\"children\":[{\"text\":\"A speaker device was lost.\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"v9O5xpcb4QZPQ_QzgGm5U\",\"children\":[{\"id\":\"TxtIJOublCVe7Jv1PqgXj\",\"children\":[{\"text\":\"result; error_info\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"BKkUr_JSFIlbW2Vck72V3\",\"children\":[{\"id\":\"FQDkdxgOecVIV6msUpa6i\",\"children\":[{\"text\":\"{\\\"deviceID\\\":\\\"{0.0.0.00000000}.{a4f1e8be-49fa-43e2-b8cf-dd00542b47ae}\\\",\\\"deviceName\\\":\\\"Speaker (Realtek High Definition Audio)\\\",\\\"error_info\\\":\\\"\\\",\\\"isNewDevice\\\":false,\\\"isUsedDevice\\\":false,\\\"result\\\":0}\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"P2WfG6sWffzFc0lYf9xXe\",\"children\":[{\"id\":\"hwcdj2D3hUWOu50YCXWl5\",\"children\":[{\"id\":\"sGw_MTLs8fJ87X0doAU0a\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_MIC_NEW_DEVICE\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"X0JWBvyJ_OPfbWEA4agN6\",\"children\":[{\"id\":\"BwRs3YKJ_wnIfSd7B9q8I\",\"children\":[{\"text\":\"A new mic device was added.\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Phs7QREDN5H3D4rx30nnk\",\"children\":[{\"id\":\"NuXdvOoVFHhzxpajHbha6\",\"children\":[{\"text\":\"result; error_info\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"6e38QW6TiNIfzBWrX1iA5\",\"children\":[{\"id\":\"cXPAIaKFQIeLqR-WjzJL0\",\"children\":[{\"text\":\"{\\\"deviceID\\\":\\\"{0.0.1.00000000}.{5fdf1a5b-f42d-4ab2-890a-7e454093f229}\\\",\\\"deviceName\\\":\\\"Mic (Realtek High Definition Audio)\\\",\\\"error_info\\\":\\\"\\\",\\\"isNewDevice\\\":true,\\\"isUsedDevice\\\":true,\\\"result\\\":0}\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"_WGq7C5KtGAR_B5yo-869\",\"children\":[{\"id\":\"7ycn7GDaSkvuVFwJ2mMrd\",\"children\":[{\"id\":\"6Ba-QtHqrsZhmagimmDqb\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_MIC_LOST_DEVICE\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"k99JbCnYIxZ_Urg2JWSqW\",\"children\":[{\"id\":\"GllqZEkr4O5dBLYbmWLof\",\"children\":[{\"text\":\"A mic device was lost.\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"l3yyS7tvpVkDjm499qER_\",\"children\":[{\"id\":\"tSyXuM7tY3GWqZAET3Tfx\",\"children\":[{\"text\":\"result; error_info\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"RE9NRY6j-oYbc6JQOTftB\",\"children\":[{\"id\":\"RGx-YAp85_ujQ-OUlDRRE\",\"children\":[{\"text\":\"{\\\"deviceID\\\":\\\"{0.0.1.00000000}.{5fdf1a5b-f42d-4ab2-890a-7e454093f229}\\\",\\\"deviceName\\\":\\\"Mic (Realtek High Definition Audio)\\\",\\\"error_info\\\":\\\"\\\",\\\"isNewDevice\\\":false,\\\"isUsedDevice\\\":true,\\\"result\\\":0}\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"w1Lrm07oVohuo0c5W7eBH\",\"children\":[{\"id\":\"EnvvtIrKDjbXb6CoXZdvv\",\"children\":[{\"id\":\"hNpo37IvLksSxY8Vo5CkB\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_MIC_DEFAULT_DEVICE_CHANGED\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"r8MM975O5ephdbHV18utC\",\"children\":[{\"id\":\"RpRGFHXdVT3o6TfRYCJ8q\",\"children\":[{\"text\":\"The default mic device was changed.\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"_RCbTjezD713tUsVZVeci\",\"children\":[{\"id\":\"H16r96Glrwv8QaNH-Vihu\",\"children\":[{\"text\":\"result; error_info\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ToA4uCCGdxHanim_fbj8Z\",\"children\":[{\"id\":\"fRQLGW2cmJqggY4CQ2I3s\",\"children\":[{\"text\":\"{\\\"deviceID\\\":\\\"{0.0.1.00000000}.{5fdf1a5b-f42d-4ab2-890a-7e454093f229}\\\",\\\"deviceName\\\":\\\"Mic (Realtek High Definition Audio)\\\",\\\"error_info\\\":\\\"\\\",\\\"isNewDevice\\\":false,\\\"isUsedDevice\\\":true,\\\"result\\\":0}\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"R3O228dUTJiFW-ihtudYE\",\"children\":[{\"id\":\"25DdEbVbWw9tQbXF1mOgX\",\"children\":[{\"id\":\"jynnfKrxqLngCOYxft7n9\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_CHANGE_ROOM_QUALITY\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"jv2xZVRvtN_sSFurQw1h0\",\"children\":[{\"id\":\"8JHyiQbSG8qiJlMAWizbb\",\"children\":[{\"text\":\"The room quality changed.\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"zpz20UkCZjZLw85nvRN7T\",\"children\":[{\"id\":\"ffbwbg9pyNIU0lbg-60Zo\",\"children\":[{\"text\":\"weight; loss; delay\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"arNofd2U9STwys27t9wkX\",\"children\":[{\"id\":\"dKKY71fd5QnXmH1yqOOpc\",\"children\":[{\"text\":\"{\\\"weight\\\":5,\\\"loss\\\":0.1,\\\"delay\\\":1}\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"TPbxwB8Oi4bhGX57VX_T5\",\"children\":[{\"id\":\"WgFcA8JB30nY9rfxTvfml\",\"children\":[{\"id\":\"SYik1K6eeZFRuuksQ1CTe\",\"children\":[{\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_RECORD_COMPLETE\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"S9LRt0aOy-aVgetq7gsKt\",\"children\":[{\"id\":\"hjR5UKfmMUWPFk5yKdOlr\",\"children\":[{\"text\":\"Voice message recording was completed.\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"E-JVddeJ0WirQuVKRZMRG\",\"children\":[{\"id\":\"-Hpvn0nNaNSTuDPsPVcQp\",\"children\":[{\"text\":\"result; file_path\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"OabQ52AJxTNBHkDVTB5wd\",\"children\":[{\"id\":\"ffBPg1olCgHNfmcKZlTyC\",\"children\":[{\"text\":\"{\\\"file_path\\\":\\\"\\\",\\\"result\\\":0}\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"aQ6ra8D4dEojNzL0KZtzR\",\"children\":[{\"id\":\"eX0faviAmg96p-_EXTlHJ\",\"children\":[{\"id\":\"qkWqBpXlLVM3rrhuMR8wj\",\"children\":[{\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_UPLOAD_COMPLETE\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ZFSJ6DRef7vdkTC2NcJ0u\",\"children\":[{\"id\":\"SwLXU00RcMoKz5I9JMS3c\",\"children\":[{\"text\":\"Voice message upload was completed.\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"_L8_8ulM-Lpf1oiRsBoZ9\",\"children\":[{\"id\":\"HlZViHcxjLKZz_AWO8Zxs\",\"children\":[{\"text\":\"result; file_path;file_id\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"sVbE2fsN_sC1g3zReM93X\",\"children\":[{\"id\":\"zVnxu0aclB7b6U8KZWjjt\",\"children\":[{\"text\":\"{\\\"file_id\\\":\\\"\\\",\\\"file_path\\\":\\\"\\\",\\\"result\\\":0}\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"FCgYCrmO9jwiZLn5D7aER\",\"children\":[{\"id\":\"Row457cKtHIND52d74Nqx\",\"children\":[{\"id\":\"0EsRI3XV4gg0neqq85thQ\",\"children\":[{\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_DOWNLOAD_COMPLETE\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"u6LJJXj7BkjqC6isb_rzJ\",\"children\":[{\"id\":\"Vzp2TRlISQhZzL_VrsfZl\",\"children\":[{\"text\":\"Voice message download was completed.\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"gq-LWcwYRZZpRt2BvtDMv\",\"children\":[{\"id\":\"gz2hV5jZ4bz5rNvwZ_p2g\",\"children\":[{\"text\":\"result; file_path;file_id\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"kjFQJStbswUsaase0vJzz\",\"children\":[{\"id\":\"XIdGZjNFfGCW6SeRO9t9d\",\"children\":[{\"text\":\"{\\\"file_id\\\":\\\"\\\",\\\"file_path\\\":\\\"\\\",\\\"result\\\":0}\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"iGtBpba6LR3OMD9f7-eGs\",\"children\":[{\"id\":\"-EHIjR_yOdEG0dKZ1ITpw\",\"children\":[{\"id\":\"4y15hE69BoCzsgkoGTGba\",\"children\":[{\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_PLAY_COMPLETE\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"J6fxg4C3L676xlXPn2IND\",\"children\":[{\"id\":\"R-sAKV39kTxgi2pgaQM80\",\"children\":[{\"text\":\"Voice message playback was completed.\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"-u1_qW6yxvfE7CubsiGhY\",\"children\":[{\"id\":\"vB0td1tkFyQ6Qzxfjb7UT\",\"children\":[{\"text\":\"result; file_path\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"AUvMjtsqRBWWscTzC3mLA\",\"children\":[{\"id\":\"YQphOO_jqgKmcCgZ3xjQE\",\"children\":[{\"text\":\"{\\\"file_path\\\":\\\"\\\",\\\"result\\\":0}\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"hidQbM0epfcGz3NDzXKLk\",\"children\":[{\"id\":\"6kfbwNm3m1UMoHcux9ZVE\",\"children\":[{\"id\":\"4xq-LTYRVAIfUOC9zcNZT\",\"children\":[{\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_SPEECH2TEXT_COMPLETE\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"voisuIWJwwNRTjgtwBhhJ\",\"children\":[{\"id\":\"1SjDMyt0R8OLhnxwzyNwa\",\"children\":[{\"text\":\"Fast speech-to-text conversion was completed.\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"hooW3Eddyjv8q-P2UVXI8\",\"children\":[{\"id\":\"wGHV-bY-d4taR1ZGOc-Y9\",\"children\":[{\"text\":\"result; text;file_id\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"etH1tlXSxcqaZFY5cWnq4\",\"children\":[{\"id\":\"Ghz3Ik1Wea9Pi6N3fn4oT\",\"children\":[{\"text\":\"{\\\"file_id\\\":\\\"\\\",\\\"text\\\":\\\"\\\",\\\"result\\\":0}\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"dWGmqDdl7fwiGrlkjMHvB\",\"children\":[{\"id\":\"dLyWwe8SeCvkuo8JVKsgV\",\"children\":[{\"id\":\"jIjSeAT-WLW8cvmbsQUir\",\"children\":[{\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRECOGNITION_COMPLETE\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"3bMGfOqs6vSS2EATl4WWy\",\"children\":[{\"id\":\"OB0WVlh7taj4lrqUXOH9r\",\"children\":[{\"text\":\"Streaming speech-to-text conversion was completed.\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"0qjheLHTP4CkmVoru6-EB\",\"children\":[{\"id\":\"50_Np_gIdQYjewulVSRRG\",\"children\":[{\"text\":\"result; file_path; text;file_id\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"tROM-kmpsIXAYDZFmcq-1\",\"children\":[{\"id\":\"fE_aNQNTWQAUx9F9-yOBb\",\"children\":[{\"text\":\"{{\\\"file_id\\\":\\\"\\\",\\\"file_path\\\":\\\",\\\"text\\\":\\\"\\\",\\\"result\\\":0}}\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"P4d2ZVX6qhWVo7FTWx9bV\",\"children\":[{\"id\":\"i3fpns75rfpkKLxi7nGbd\",\"children\":[{\"id\":\"NOOF1iu_S5Gyj6Sezc8w_\",\"children\":[{\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRECOGNITION_IS_RUNNING\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"h9gJlCbqp2yDJedrC3ruZ\",\"children\":[{\"id\":\"jHwk7f-6Klx5peo0KFCzu\",\"children\":[{\"text\":\"Streaming speech-to-text conversion is in progress.\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"9GBDarNfHyu5btnlzUGd1\",\"children\":[{\"id\":\"69TfqnRniBgbs87hW7dec\",\"children\":[{\"text\":\"result; file_path; text;file_id\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"yshagzIJPnqAt8L5gmzZK\",\"children\":[{\"id\":\"ia01RNiHsYRTpGwn8W9-w\",\"children\":[{\"text\":\"{{\\\"file_id\\\":\\\"\\\",\\\"file_path\\\":\\\",\\\"text\\\":\\\"\\\",\\\"result\\\":0}}\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"CaBnG5zhYzY_vY1Qwnq6x\",\"children\":[{\"id\":\"I9BVGm6wE5ilv-cC9q2_S\",\"children\":[{\"id\":\"wgQN9cvlDzS6vAVylNE8R\",\"children\":[{\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_TEXT2SPEECH_COMPLETE\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"f_m50HaviBCpHfHUg4KpR\",\"children\":[{\"id\":\"abHHTavb9DOZXmRKkMkfa\",\"children\":[{\"text\":\"Text-to-speech conversion was completed.\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"y823StNofPRNdcntjrPQ6\",\"children\":[{\"id\":\"HyaW0_30Ifnr7WvYtPDEj\",\"children\":[{\"text\":\"result; text;file_id\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"a91ohnp6dEwKyvqK8bpNA\",\"children\":[{\"id\":\"zH0BhRm6EwMY8UXxxNAki\",\"children\":[{\"text\":\"{{\\\"file_id\\\":\\\"\\\",\\\"text\\\":\\\"\\\",\\\"result\\\":0}}\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"cy1nqfNnA0yubERqfkUlG\",\"children\":[{\"id\":\"5b1sR2WbzD9UUhvu-BkXI\",\"children\":[{\"id\":\"1P_ZLpZedegmtbHIHq2Hs\",\"children\":[{\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_TRANSLATE_TEXT_COMPLETE\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"kaqD06cgtEmWtDasyj8gA\",\"children\":[{\"id\":\"Wkx1XmwUPA-6288z6dd_k\",\"children\":[{\"text\":\"Text translation was completed.\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"950TwGtbA7j4UD6zHuFjZ\",\"children\":[{\"id\":\"2Y8XA5ZD5znXPAHkEfhj0\",\"children\":[{\"text\":\"result; text;file_id\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"sL97Fo0sseSdx1IDpbZOX\",\"children\":[{\"id\":\"9-I_aJiQjPCVDtze7fdXB\",\"children\":[{\"text\":\"{{\\\"file_id\\\":\\\"\\\",\\\"text\\\":\\\"\\\",\\\"result\\\":0}}\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"rowHeader\":true,\"type\":\"table\",\"widths\":[25,25,18,32],\"widthMode\":\"percentage\"},{\"id\":\"qUtPsOweH-WjfEOOpazQh\",\"children\":[{\"text\":\"\"}],\"type\":\"p\"}]"}},"53819":{"categoryId":607,"weight":70,"type":"page","extension":"","pid":53816,"id":53819,"lang":"en","title":"Speech-to-Text Service","pdfUrl":"","docType":"default","children":[],"firstReleaseTime":"2023-03-23 22:23:31","recentReleaseTime":"2023-03-23 22:23:31","content":{"title":"Speech-to-Text Service","body":"
This document describes how to integrate with and debug GME client APIs for the voice messaging and speech-to-text services for Flutter.

Key Considerations for Using GME

GME provides the real-time voice service and voice messaging and speech-to-text services, which all depend on core APIs such as Init and Poll.

Notes

You have created a GME application and obtained the SDK AppID and key. For more information, see Activating Services.
You have activated GME real-time voice and voice messaging and speech-to-text services. For more information, see Activating Services.
Configure your project before using GME; otherwise, the SDK will not take effect.
After a GME API is called successfully, GmeError.AV_OK will be returned with the value being 0.
GME APIs should be called in the same thread.
The Poll API should be called periodically for GME to trigger event callbacks.
For detailed error codes, see Error Codes.
Note: \nThere is a default call rate limit for speech-to-text APIs. For more information on how calls are billed within the limit, see Purchase Guide. If you want to increase the limit or learn more about how excessive calls are billed, submit a ticket.
Non-streaming speech-to-text API SpeechToText(): There can be up to 10 concurrent requests per account.
Streaming speech-to-text API StartRecordingWithStreamingRecognition(): There can be up to 50 concurrent requests per account.

Integrating the SDK

Directions

Key processes involved in SDK integration are as follows:

\"\"



.dart files

gme.dart GME business implementation APIs
gmeType.dart GME type definition file
gmeError.dart GME error type definition file

Core APIs

API
Description
InitSDK
Initializes GME.
Poll
Triggers the event callback.
Uninit
Uninitializes GME.

Importing the GME module

import 'package:gme/gme.dart';
import 'package:gme/gmeType.dart';

Getting an instance

var m_context = await ITMGContext.GetInstance();

Initializing the SDK

You need to initialize the SDK through the Init API before you can use the real-time voice chat, voice messaging, and speech-to-text services. The Init API must be called in the same thread as other APIs. We recommend you call all APIs in the main thread.

API prototype

Future<int> InitSDK(String appID, String openID)
Parameter
Type
Description
sdkAppId
string
`AppID` provided in the GME console, which can be obtained as instructed in Activating Services.
openID
string
`openID` can only be in `Int64` type, which is passed in after being converted to a string. You can customize its rules, and it must be unique in the application. To pass in `openID` as a string, submit a ticket for application.

Returned values

Returned Value
Description
GmeError.AV_OK= 0
SDK initialized successfully.
AV_ERR_SDK_NOT_FULL_UPDATE=7015
Solution: Check whether the SDK file is complete. We recommend that you delete it and then import the SDK again.
Note:
Notes on 7015 error code
The 7015 error code is identified by MD5. If this error is reported during integration, check the integrity and version of the SDK file as prompted.
The returned value AV_ERR_SDK_NOT_FULL_UPDATE is only a reminder but will not cause an initialization failure.

Sample code

int res = await ITMGContext.GetInstance().InitSDK(_editAppID.text,_editOpenID.text);
// Determine whether the initialization is successful by the returned value
if (ret != GmeError.AV_OK)
{
print("Failed to initialize the SDK:");
return;
}

Triggering event callback

Event callbacks can be triggered by calling the Poll API in the timer. The Poll API is GME's message pump and should be called periodically for GME to trigger event callbacks; otherwise, the entire SDK service will run abnormally. For more information, see the EnginePollHelper file in SDK Download Guide.
Note:
The Poll API must be called periodically and in the main thread to avoid abnormal API callbacks.

API prototype

Future<void> Poll()

Sample code

Future<void> pollTimer() async {
_pollTimer = Timer.periodic(Duration(milliseconds: 100), (Timer timer) {
ITMGContext.GetInstance().Poll();
});
}

Uninitializing SDK

This API is used to uninitialize the SDK to make it uninitialized. If the game business account is bound to openid, switching game account requires uninitializing GME and then using the new openid to initialize again.

API prototype

Future<int> Uninit()

Voice Messaging and Speech-to-Text Services

Note:
The speech-to-text service consists of fast recording-to-text conversion and streaming speech-to-text conversion.
You do not need to enter a voice chat room when using the voice messaging service.
The maximum recording duration of a voice message is 58 seconds by default, and the minimum recording duration cannot be less than 1 second. If you want to customize the recording duration, for example, to change the maximum recording duration to 10 seconds, call the SetMaxMessageLength API to set it after initialization.

Flowchart for using the voice message service


\"\"



Flowchart for using the speech-to-text service


\"\"


API
Description
GenAuthBuffer
Gets the authentication information.
SetMaxMessageLength
Specifies the maximum duration of a voice message.

Generating the local authentication key

Generate AuthBuffer for encryption and authentication of relevant features. For release in the production environment, use the backend deployment key as detailed in Authentication Key.

API prototype

Future<Uint8List> GenAuthBuffer(String appID, String roomID, String openID, String key)
Parameter
Type
Description
appId
string
`AppId` from the Tencent Cloud console
roomId
string
Enter `null` or an empty string.
openId
string
User ID, which is the same as `OpenId` during initialization.
key
string
Permission key from the Tencent Cloud console.

Application authentication

After the authentication information is generated, the authentication is assigned to the SDK.

API prototype

Future<int> ApplyPTTAuthbuffer(Uint8List authBuffer)

Sample code

Uint8List authBuffer = await ITMGContext.GetInstance().GenAuthBuffer(_editAppID.text, _editRoomID.text, _editOpenID.text, _editKey.text);
m_context.ApplyPTTAuthbuffer(authBuffer);

Specifying the maximum duration of voice message

This API is used to specify the maximum duration of a voice message, which can be up to 58 seconds.

API prototype

Future<int> SetMaxMessageLength(int msTime)
Parameter
Type
Description
msTime
number
Voice message duration in ms. Value range: 1000 < `msTime` <= 58000

Sample code

ITMGContext.GetInstance().GetPTT().SetMaxMessageLength(fileLen);

Streaming Speech Recognition

Voice messaging and speech-to-text APIs

API
Description
StartRecordingWithStreamingRecognition
Starts streaming recording.
StopRecording
Stops recording.

Starting streaming speech recognition

This API is used to start streaming speech recognition. Text obtained from speech-to-text conversion will be returned in real time in its callback. It can specify a language for recognition or translate the text recognized in speech into a specified language and return the translation. To stop recording, call StopRecording.

API prototype

Future<int> StartRecordingWithStreamingRecognition(String filePath, String speechLanguage, String translateLanguage)
Parameter
Type
Description
filePath
string
Path of the stored audio file
speechLanguage
string
The language in which the voice message file is to be converted to text. For parameters, see Language Parameter Reference List.
translateLanguage
string
The language in which the voice message file is to be translated to text. For parameters, see Language Parameter Reference List.

Sample code

string filePath = "xx/xxx/xxx.silk"
int res = await ITMGContext.GetInstance().GetPTT().StartRecordingWithStreamingRecognition(filePath, strCurLanguage, strCurLanguage);
if (ret == 0) {
this.currentStatus = "Start streaming recording";
} else {
this.currentStatus = "Failed to start streaming recording";
}
Note:
Translation incurs additional fees. For more information, see Purchase Guide.

Callback for streaming speech recognition

After streaming speech recognition is started, you need to listen on callback messages in the OnEvent notification, which is as detailed below:
ITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRECOGNITION_COMPLETE returns text after the recording is stopped and the recognition is completed, which is equivalent to returning the recognized text after a paragraph of speech.\nITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRECOGNITION_IS_RUNNING returns the recognized text in real time during the recording, which is equivalent to returning the recognized text while speaking.
The event message will be identified in the callback notification based on the actual needs. The passed parameters include the following four messages.
Message
Description
result
Return code indicating whether streaming speech recognition is successful
text
Text converted from speech
file_path
Local path of the stored recording file
file_id
Backend URL address of the recording file, which will be retained for 90 days
Note:
The file_id is empty when the 'ITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRECOGNITION_IS_RUNNING' message is listened for.

Error codes

Error Code
Description
Solution
32775
Streaming speech-to-text conversion failed, but recording succeeded.
Call the `UploadRecordedFile` API to upload the recording file and then call the `SpeechToText` API to perform speech-to-text conversion.
32777
Streaming speech-to-text conversion failed, but recording and upload succeeded.
The message returned contains a backend URL after successful upload. Call the `SpeechToText` API to perform speech-to-text conversion.
32786
Streaming speech-to-text conversion failed.
During streaming recording, wait for the execution result of the streaming recording API to return.
32787
Speech-to-text conversion succeeded, but the text translation service was not activated.
Activate the text translation service in the console.
32788
Speech-to-text conversion succeeded, but the language parameter of the text translation service was invalid.
Check the parameter passed in.
If the error code 4098 is reported, see Speech-to-text Conversion for solutions.

Sample code

void handleEventMsg(int eventType, String data){
switch (eventType) {
case ITMG_MAIN_EVENT_TYPE.ITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRECOGNITION_COMPLETE:
{
HandleSTREAM2TEXTComplete(data,true);
break;
}
...
case ITMG_MAIN_EVENT_TYPE.ITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRECOGNITION_IS_RUNNING:
{
HandleSTREAM2TEXTComplete(data, false);
break;
}
}
}
ITMGContext.GetInstance().SetEvent(handleEventMsg);

Voice Message Recording

The recording process is as follows: start recording > stop recording > return recording callback > start the next recording.

Voice messaging and speech-to-text APIs

API
Description
StartRecording
Starts recording.
PauseRecording
Pauses recording.
ResumeRecording
Resumes recording.
StopRecording
Stops recording.
CancelRecording
Cancels recording.

Starting recording

This API is used to start recording.

API prototype

Future<int> StartRecording(String filePath)
Parameter
Type
Description
filePath
string
Path of the stored voice message file

Sample code

string filepath = "xxxx/xxx.silk";
int res = await ITMGContext.GetInstance().GetPTT().StartRecording(filepath);

Stopping recording

This API is used to stop recording. It is async, and a callback for recording completion will be returned after recording stops. A recording file will be available only after recording succeeds.

API prototype

Future<int> StopRecording()

Sample code

ITMGContext.GetInstance().GetPTT().StopRecording();

Callback for recording start

A callback will be executed through a delegate function to pass a message when recording is completed.
To stop recording, call StopRecording. The callback for recording start will be returned after the recording is stopped.
Parameter
Type
Description
code
string
`0`: Recording is completed.
filepath
string
Path of the stored recording file, which must be accessible and cannot be the `fileid`.

Error codes

Error Code
Cause
Solution
4097
A parameter is empty.
Check whether the API parameters in the code are correct.
4098
An initialization error occurred.
Check whether the device is being used, whether the permissions are normal, and whether the initialization is normal.
4099
Recording is in progress.
Make sure that the SDK recording feature is used at the right time.
4100
No audio data is captured.
Check whether the mic is working properly.
4101
An error occurred while accessing the file during recording.
Ensure the existence of the file and the validity of the file path.
4102
The mic is not authorized.
The mic permission is required for using the SDK. To add the permission, see the SDK project configuration document for the corresponding engine or platform.
4103
The recording duration is too short.
The recording duration should be in ms and longer than 1,000 ms.
4104
No recording operation is started.
Check whether the recording starting API has been called.

Sample code

void handleEventMsg(int eventType, String data){
switch (eventType) {
case ITMG_MAIN_EVENT_TYPE.ITMG_MAIN_EVENT_TYPE_ENTER_ROOM:
{
// Process
break;
}
...
case ITMG_MAIN_EVENT_TYPE.ITMG_MAIN_EVNET_TYPE_PTT_RECORD_COMPLETE:
{
// Process
break;
}
}
}
ITMGContext.GetInstance().SetEvent(handleEventMsg);

Pausing recording

This API is used to pause recording. If you want to resume recording, call the ResumeRecording API.

API prototype

Future<int> PauseRecording()

Sample code

ITMGContext.GetInstance().GetPTT().PauseRecording();

Resuming recording

This API is used to resume recording.

API prototype

Future<int> ResumeRecording()

Sample code

ITMGContext.GetInstance().GetPTT().ResumeRecording();

Canceling recording

This API is used to cancel recording. There is no callback after cancellation.

API prototype

Future<int> CancelRecording()

Sample code

ITMGContext.GetInstance().GetPTT().CancelRecording();

Voice Message Upload, Download, and Playback

API
Description
UploadRecordedFile
Uploads an audio file.
DownloadRecordedFile
Downloads an audio file.
PlayRecordedFile
Plays back audio.
StopPlayFile
Stops playing back audio.
GetFileSize
Gets the audio file size.
GetVoiceFileDuration
Gets the audio file duration.

Uploading an audio file

This API is used to upload an audio file.

API prototype

Future<int> UploadRecordedFile(String filePath)
Parameter
Type
Description
filePath
String
Path of the uploaded audio file, which is a local path.

Sample code

ITMGContext.GetInstance().GetPTT().UploadRecordedFile(_filePath);

Callback for audio file upload completion

After the audio file is uploaded, the event message ITMG_MAIN_EVNET_TYPE_PTT_UPLOAD_COMPLETE will be returned, which will be identified in the OnEvent function.\nThe passed parameters include result, file_path, and file_id.
Parameter
Type
Description
result
number
`0`: Recording is completed.
filepath
string
Path of the stored recording file
fileid
string
File URL

Error codes

Error Code
Cause
Solution
8193
An error occurred while accessing the file during upload.
Ensure the existence of the file and the validity of the file path.
8194
Signature verification failed.
Check whether the authentication key is correct and whether the voice messaging and speech-to-text feature is initialized.
8195
A network error occurred.
Check whether the device can access the internet.
8196
The network failed while getting the upload parameters.
Check whether the authentication is correct and whether the device network can normally access the internet.
8197
The packet returned during the process of getting the upload parameters is empty.
Check whether the authentication is correct and whether the device network can normally access the internet.
8198
Failed to decode the packet returned during the process of getting the upload parameters.
Check whether the authentication is correct and whether the device network can normally access the internet.
8200
No `appinfo` is set.
Check whether the `apply` API is called or whether the input parameters are empty.

Sample code

void handleEventMsg(int eventType, String data){
switch (eventType) {
...
case ITMG_MAIN_EVENT_TYPE.ITMG_MAIN_EVNET_TYPE_PTT_UPLOAD_COMPLETE:
{
// Process
break;
}
}
}
ITMGContext.GetInstance().SetEvent(handleEventMsg);

Downloading the audio file

This API is used to download an audio file.

API prototype

Future<int> DownloadRecordedFile(String fileId, String filePath)
Parameter
Type
Description
fileId
string
File URL
filePath
string
Local path of the saved file, which must be accessible and cannot be the `fileid`.

Sample code

ITMGContext.GetInstance().GetPTT().DownloadRecordedFile(_fileId, _filePath);

Callback for audio file download completion

After the audio file is downloaded, the event message ITMG_MAIN_EVNET_TYPE_PTT_DOWNLOAD_COMPLETE will be returned, which will be identified in the OnEvent function.\nThe passed parameters include result, file_path, and file_id.
Parameter
Type
Description
result
number
`0`: Download is completed.
filepath
string
Path of the stored recording file
fileid
string
URL of the recording file, which will be retained on the server for 90 days.

Error codes

Error Code
Cause
Solution
12289
An error occurred while accessing the file during download.
Check whether the file path is valid.
12290
Signature verification failed.
Check whether the authentication key is correct and whether the voice messaging and speech-to-text feature is initialized.
12291
A network storage system exception occurred.
The server failed to get the audio file. Check whether the API parameter `fileid` is correct, whether the network is normal, and whether the file exists in COS.
12292
A server file system error occurred.
Check whether the device can access the internet and whether the file exists on the server.
12293
The HTTP network failed while getting the download parameters.
Check whether the device can access the internet.
12294
The packet returned during the process of getting the download parameters is empty.
Check whether the device can access the internet.
12295
Failed to decode the packet returned during the process of getting the download parameters.
Check whether the device can access the internet.
12297
No `appinfo` is set.
Check whether the authentication key is correct and whether the voice messaging and speech-to-text feature is initialized.

Sample code

void handleEventMsg(int eventType, String data){
switch (eventType) {
...
case ITMG_MAIN_EVENT_TYPE.ITMG_MAIN_EVENT_TYPE_ENTER_ROOM:
{
// Process
break;
}
}
}
ITMGContext.GetInstance().SetEvent(handleEventMsg);

Playing back audio

This API is used to play back audio.

API prototype

Future<int> PlayRecordedFile(String filePath, int voiceType)
Parameter
Type
Description
filePath
string
Local audio file path
voicetype
ITMG_VOICE_TYPE
Voice changing type. For more information, see Voice Changing.

Error codes

Error Code
Cause
Solution
20485
Playback is not started.
Ensure the existence of the file and the validity of the file path.

Sample code

int res = await ITMGContext.GetInstance().GetPTT().PlayRecordedFile(_filePath, _nVoiceType);

Callback for audio playback

After the audio is played back, the event message ITMG_MAIN_EVNET_TYPE_PTT_PLAY_COMPLETE will be returned, which will be identified in the OnEvent function.\nThe passed parameter includes result and file_path.
Parameter
Type
Description
code
number
`0`: Playback is completed.
filepath
string
Path of the stored recording file

Error codes

Error Code
Cause
Solution
20481
An initialization error occurred.
Check whether the device is being used, whether the permissions are normal, and whether the initialization is normal.
20482
During playback, the client tried to interrupt and play back the next one but failed (which should succeed normally).
Check whether the code logic is correct.
20483
A parameter is empty.
Check whether the API parameters in the code are correct.
20484
An internal error occurred.
An error occurred while initializing the player. This error code is generally caused by failure in decoding, and the error should be located with the aid of logs.

Sample code

void handleEventMsg(int eventType, String data){
switch (eventType) {
case ITMG_MAIN_EVENT_TYPE.ITMG_MAIN_EVNET_TYPE_PTT_PLAY_COMPLETE:
{
// Process
break;
}
}
}

Stopping audio playback

This API is used to stop audio playback. There will be a callback for playback completion when the playback stops.

API prototype

Future<int> StopPlayFile()

Sample code

ITMGContext.GetInstance().GetPTT().StopPlayFile();

Getting audio file size

This API is used to get the size of an audio file.

API prototype

Future<int> GetFileSize(String filePath)
Parameter
Type
Description
filePath
string
Path of the audio file, which is a local path

Sample code

final int res = await ITMGContext.GetInstance().GetPTT().GetFileSize(_filePath);

Getting audio file duration

This API is used to get the duration of an audio file in milliseconds.

API prototype

Future<int> GetVoiceFileDuration(String filePath)
Parameter
Type
Description
filePath
string
Path of the audio file, which is a local path

Sample code

final int res = await ITMGContext.GetInstance().GetPTT().GetVoiceFileDuration(_filePath);

Fast Recording-to-Text Conversion

Translating audio file into text in specified language

This API can specify a language for recognition or translate the text recognized in speech into a specified language and return the translation.
Note:
Translation incurs additional fees. For more information, see Purchase Guide.

API prototype

Future<int> SpeechToText(String fileId, String speechLanguage, String translateLanguage)
Parameter
Type
Description
fileID
string
URL of the audio file, which will be retained on the server for 90 days.
speechLanguage
string
The language in which the audio file is to be converted to text. For parameters, see Language Parameter Reference List.
translatelanguage
string
The language in which the audio file is to be translated to text. For parameters, see Language Parameter Reference List.

Sample code

ITMGContext.GetInstance().GetPTT().SpeechToText(_fileId, "cmn-Hans-CN", "cmn-Hans-CN");

Callback for recognition

After the specified audio file is converted to text, the event message ITMG_MAIN_EVNET_TYPE_PTT_SPEECH2TEXT_COMPLETE will be returned, which will be identified in the OnEvent function.\nThe passed parameters include result, file_path and text (recognized text).
Parameter
Type
Description
result
number
`0`: Recording is completed.
fileid
string
URL of the audio file, which will be retained on the server for 90 days.
text
string
Converted text

Error codes

Error Code
Cause
Solution
32769
An internal error occurred.
Analyze logs, get the actual error code returned from the backend to the client, and ask backend personnel for assistance.
32770
A network error occurred.
Check whether the device can access the internet.
32772
Failed to decode the returned packet.
Analyze logs, get the actual error code returned from the backend to the client, and ask backend personnel for assistance.
32774
No `appinfo` is set.
Check whether the authentication key is correct and whether the voice messaging and speech-to-text feature is initialized.
32776
`authbuffer` check failed.
Check whether `authbuffer` is correct.
32784
The speech-to-text conversion parameter is incorrect.
Check whether the API parameter `fileid` in the code is empty.
32785
Speech-to-text translation returned an error.
An error occurred in the voice messaging and speech-to-text feature on the backend. Analyze logs, get the actual error code returned from the backend to the client, and ask backend personnel for assistance.
32787
Speech-to-text conversion succeeded, but the text translation service was not activated.
Activate the text translation service in the console.
32788
Speech-to-text conversion succeeded, but the language parameter of the text translation service was invalid.
Check the parameter passed in.

Sample code

void handleEventMsg(int eventType, String data){
switch (eventType) {
case ITMG_MAIN_EVENT_TYPE.ITMG_MAIN_EVENT_TYPE_ENTER_ROOM:
{
// Process
break;
}
...
case ITMG_MAIN_EVENT_TYPE.ITMG_MAIN_EVNET_TYPE_PTT_SPEECH2TEXT_COMPLETE:
{
// Process
break;
}
}
}

Voice Message Volume Level APIs

API
Description
GetMicLevel
Gets the real-time mic volume level.
SetMicVolume
Sets the recording volume level.
GetMicVolume
Gets the recording volume level.
GetSpeakerLevel
Gets the real-time speaker volume level.
SetSpeakerVolume
Sets the playback volume level.
GetSpeakerVolume
Gets the playback volume level.

Getting the real-time mic volume of voice message

This API is used to get the real-time mic volume. A number-type value will be returned. Value range: 0-200.

API prototype

Future<int> GetMicLevel()

Sample code

final int res = await ITMGContext.GetInstance().GetPTT().GetMicLevel();

Setting the recording volume of voice message

This API is used to set the recording volume of voice message. Value range: 0-200.

API prototype

Future<int> SetMicVolume(int volume)
Parameter
Type
Description
vol
number
Value range: 0-200. Default value: `100`. `0` indicates that the audio is mute, while `100` indicates that the volume level remains unchanged.

Sample code

final int res = await ITMGContext.GetInstance().GetPTT().SetMicVolume(100);

Getting the recording volume of voice message

This API is used to get the recording volume of a voice message. A number-type value will be returned. Value range: 0-200.

API prototype

Future<int> GetMicVolume()

Sample code

final int res = await ITMGContext.GetInstance().GetPTT().GetMicVolume();

Getting the real-time speaker volume of voice message

This API is used to get the real-time speaker volume. A number-type value will be returned. Value range: 0-200.

API prototype

Future<int> GetSpeakerLevel()

Sample code

final int res = await ITMGContext.GetInstance().GetPTT().GetSpeakerLevel();

Setting the playback volume of voice message

This API is used to set the playback volume of voice message. Value range: 0-200.

API prototype

Future<int> SetSpeakerVolume(int volume)

Sample code

final int res = await ITMGContext.GetInstance().GetPTT().SetSpeakerVolume(100);

Getting the playback volume of voice message

This API is used to get the playback volume of a voice message. A number-type value will be returned. Value range: 0-200.

API prototype

Future<int> GetSpeakerVolume()

Sample code

final int res = await ITMGContext.GetInstance().GetPTT().GetSpeakerVolume();

Advanced APIs

Getting version number

This API is used to get the SDK version number for analysis.

API prototype

Future<String> GetSDKVersion()

Sample code

_sdkVersions = await ITMGContext.GetInstance().GetSDKVersion();

Setting log printing level

This API is used to set the level of logs to be printed, and needs to be called before the initialization. It is recommended to keep the default level.

API prototype

Future<int> SetLogLevel(int levelWrite, int levelPrint)

Parameter description

Parameter
Type
Description
level
ITMG_LOG_LEVEL
Sets the log level. `TMG_LOG_LEVEL_NONE` indicates not to log. Default value: `TMG_LOG_LEVEL_INFO`.
level description:
level
Description
TMG_LOG_LEVEL_NONE
Does not print logs
TMG_LOG_LEVEL_ERROR
Prints error logs (default)
TMG_LOG_LEVEL_INFO
Prints info logs
TMG_LOG_LEVEL_DEBUG
Prints debug logs
TMG_LOG_LEVEL_VERBOSE
Prints verbose logs

Sample code

ITMGContext.GetInstance().SetLogLevel(ITMG_LOG_LEVEL.TMG_LOG_LEVEL_ERROR,ITMG_LOG_LEVEL.TMG_LOG_LEVEL_ERROR);

Setting the log printing path

This API is used to set the log printing path. The default path is as follows. It needs to be called before Init.

API prototype

Future<int> SetLogPath(String logDir)
Parameter
Type
Description
logPath
string
Path

Sample code

String logDir = ""// Set a path by yourself
ITMGContext.GetInstance().SetLogPath(curPath);

","recentReleaseTime":"2024-01-18 15:15:48","slate":"[{\"id\":\"KkWEYlYiST2wiJfFXHezL\",\"children\":[{\"text\":\"This document describes how to integrate with and debug GME client APIs for the voice messaging and speech-to-text services for Flutter.\"}],\"type\":\"p\"},{\"id\":\"i85_0upSEba2Vq_G7XpIs\",\"children\":[{\"text\":\"Key Considerations for Using GME\"}],\"nodeId\":\"key-considerations-for-using-gme\",\"type\":\"h2\"},{\"id\":\"W3m0sw5_lG8gpmbXnglxg\",\"children\":[{\"text\":\"GME provides the real-time voice service and voice messaging and speech-to-text services, which all depend on core APIs such as \"},{\"code\":1,\"text\":\"Init\"},{\"text\":\" and \"},{\"code\":1,\"text\":\"Poll\"},{\"text\":\".\"}],\"type\":\"p\"},{\"id\":\"fSdAJsIhJy8TiAihHY-sM\",\"children\":[{\"text\":\"Notes\"}],\"nodeId\":\"notes\",\"type\":\"h4\"},{\"id\":\"hwYobZlIppOhcPLqJmdbW\",\"children\":[{\"text\":\"You have created a GME application and obtained the SDK \"},{\"code\":1,\"text\":\"AppID\"},{\"text\":\" and key. For more information, see \"},{\"id\":\"XGNDnhwSv28wcvxrKs8Mp\",\"children\":[{\"text\":\"Activating Services\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://www.tencentcloud.com/document/product/607/10782\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/10782\"},\"type\":\"ref\"},{\"text\":\".\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"_ksd3OVQWF_gajSPFE1cJ\",\"children\":[{\"text\":\"You have activated \"},{\"b\":1,\"text\":\"GME real-time voice and voice messaging and speech-to-text services\"},{\"text\":\". For more information, see \"},{\"id\":\"OUvaGYUdPRbkJmIbCqj-e\",\"children\":[{\"text\":\"Activating Services\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://www.tencentcloud.com/document/product/607/10782\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/10782\"},\"type\":\"ref\"},{\"text\":\".\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"dZ8eMd-PxnTjrmnNjlsGs\",\"children\":[{\"text\":\"Configure your project before using GME; otherwise, the SDK will not take effect.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"BiDGuOJ49yr6k-lzA9m-c\",\"children\":[{\"text\":\"After a GME API is called successfully, \"},{\"code\":1,\"text\":\"GmeError.AV_OK\"},{\"text\":\" will be returned with the value being \"},{\"code\":1,\"text\":\"0\"},{\"text\":\".\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"Yo7ACGqL-8cTFEZiF3DhW\",\"children\":[{\"text\":\"GME APIs should be called in the same thread.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"lCVgn8p7e030A50w6k3Iv\",\"children\":[{\"text\":\"The \"},{\"code\":1,\"text\":\"Poll\"},{\"text\":\" API should be called periodically for GME to trigger event callbacks.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"bB6Ir0EW52z8plxgbw0MS\",\"children\":[{\"text\":\"For detailed error codes, see \"},{\"id\":\"3XYknBsL1UfrPeUmgfizr\",\"children\":[{\"text\":\"Error Codes\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://intl.cloud.tencent.com/document/product/607/33223\",\"props\":{\"type\":\"link\",\"url\":\"https://intl.cloud.tencent.com/document/product/607/33223\"},\"type\":\"ref\"},{\"text\":\".\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"xjxHAMPGK3PbPZAkzd7Um\",\"children\":[{\"id\":\"iecTbUAAdsTvop4U1D6Yj\",\"children\":[{\"b\":1,\"color\":\"#04C8DC\",\"text\":\"Note: \",\"type\":\"text\"},{\"text\":\"\\nThere is a default call rate limit for speech-to-text APIs. For more information on how calls are billed within the limit, see \"},{\"id\":\"1gIYsoJHCZGTnA0LZkMLt\",\"children\":[{\"text\":\"Purchase Guide\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://intl.cloud.tencent.com/document/product/607/50009\",\"props\":{\"type\":\"link\",\"url\":\"https://intl.cloud.tencent.com/document/product/607/50009\"},\"type\":\"ref\"},{\"text\":\". If you want to increase the limit or learn more about how excessive calls are billed, \"},{\"id\":\"tSop9ZOResUcQzkp9KYQR\",\"children\":[{\"text\":\"submit a ticket\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://console.tencentcloud.com/workorder/category?level1_id=438&level2_id=445&source=0&data_title=%E6%B8%B8%E6%88%8F%E5%A4%9A%E5%AA%92%E4%BD%93%E5%BC%95%E6%93%8EGME&step=1\",\"props\":{\"type\":\"link\",\"url\":\"https://console.tencentcloud.com/workorder/category?level1_id=438&level2_id=445&source=0&data_title=%E6%B8%B8%E6%88%8F%E5%A4%9A%E5%AA%92%E4%BD%93%E5%BC%95%E6%93%8EGME&step=1\"},\"type\":\"ref\"},{\"text\":\".\"}],\"type\":\"p\"},{\"id\":\"fgdYROuBzL5TSAOMbAK8N\",\"children\":[{\"text\":\"Non-streaming speech-to-text API \"},{\"b\":1,\"i\":1,\"text\":\"SpeechToText()\"},{\"text\":\": There can be up to 10 concurrent requests per account.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"9um35-2LEk4d3Asb_j_Hd\",\"children\":[{\"text\":\"Streaming speech-to-text API \"},{\"b\":1,\"i\":1,\"text\":\"StartRecordingWithStreamingRecognition()\"},{\"text\":\": There can be up to 50 concurrent requests per account.\"}],\"start\":false,\"type\":\"uli\"}],\"hintType\":\"alert\",\"indent\":1,\"type\":\"hint\"},{\"id\":\"bAyKaEtW5IAHqxTjoZuA1\",\"children\":[{\"text\":\"Integrating the SDK\"}],\"nodeId\":\"integrating-the-sdk\",\"type\":\"h2\"},{\"id\":\"8gIXF2IidF7D-5hL7_PRj\",\"children\":[{\"text\":\"Directions\"}],\"nodeId\":\"directions\",\"type\":\"h3\"},{\"id\":\"Lt0ttyhONXJ9Vd4j9GYPO\",\"children\":[{\"text\":\"Key processes involved in SDK integration are as follows:\"}],\"type\":\"p\"},{\"type\":\"p\",\"children\":[{\"text\":\"\"},{\"id\":\"-FfM-TBKJ1jBPzXX7-k1x\",\"alt\":\"\",\"children\":[{\"text\":\"\"}],\"inline\":true,\"type\":\"image\",\"url\":\"https://cloudcache.intl.tencent-cloud.com/cms/backend-cms/a616837bb35111eeb2a1525400170219.jpeg\",\"naturalSize\":[1560,1030],\"size\":[801,528]},{\"text\":\"\"}],\"id\":\"p6z6iWbEtBKqK4j3Dz38v\"},{\"id\":\"d4cW62ufecLNqkH51xam4\",\"children\":[{\"id\":\"6fqOSG0qsRK_0bpBQTSzP\",\"children\":[{\"text\":\"Initializing GME\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://www.tencentcloud.com/document/product/607/53819\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/53819\"},\"type\":\"ref\"}],\"start\":true,\"type\":\"oli\"},{\"id\":\"0mPVvNLsXjFHoc6Od_G4G\",\"children\":[{\"id\":\"7-nGDxOLXBe034_dZccdd\",\"children\":[{\"text\":\"Call \"},{\"code\":1,\"text\":\"Poll\"},{\"text\":\" periodically to trigger event callbacks\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://www.tencentcloud.com/document/product/607/53819\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/53819\"},\"type\":\"ref\"},{\"text\":\".\"}],\"start\":false,\"type\":\"oli\"},{\"id\":\"IySAZygDwiELeOezPFoy9\",\"children\":[{\"id\":\"6OvoTOjUsehQTs9bIdCyb\",\"children\":[{\"text\":\"Initialize authentication\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://www.tencentcloud.com/document/product/607/53819\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/53819\"},\"type\":\"ref\"},{\"text\":\".\"}],\"start\":false,\"type\":\"oli\"},{\"id\":\"7hplT51JKp8iE341Rgmjp\",\"children\":[{\"id\":\"EkZNqmqO8PAoIf9q7w20P\",\"children\":[{\"text\":\"Start streaming speech recognition\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://www.tencentcloud.com/document/product/607/53819\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/53819\"},\"type\":\"ref\"},{\"text\":\".\"}],\"start\":false,\"type\":\"oli\"},{\"id\":\"8GaB03iWXfNxoP95xU2_y\",\"children\":[{\"id\":\"txybN4_meiyPi8aoYrCUE\",\"children\":[{\"text\":\"Stop recording\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://www.tencentcloud.com/document/product/607/53819\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/53819\"},\"type\":\"ref\"},{\"text\":\".\"}],\"start\":false,\"type\":\"oli\"},{\"id\":\"HZvoh-CDCjcOCLWuSRnpj\",\"children\":[{\"id\":\"XqrzczDsJJ8yUnB9Ochwp\",\"children\":[{\"text\":\"Uninitialize GME\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://www.tencentcloud.com/document/product/607/53819\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/53819\"},\"type\":\"ref\"},{\"text\":\".\"}],\"start\":false,\"type\":\"oli\"},{\"id\":\"yPbT8dvT1rk-Mfdlq5UU_\",\"children\":[{\"text\":\".dart files\"}],\"nodeId\":\".dart-files\",\"type\":\"h3\"},{\"id\":\"07JwR1ETm_Hh6MAg1-W3V\",\"children\":[{\"id\":\"OHrawJcDEZOVMvx7yjLGE\",\"children\":[{\"text\":\"gme.dart GME business implementation APIs\"}],\"type\":\"code-line\"},{\"id\":\"XRN5Ze-NoPfRMyLVX65ek\",\"children\":[{\"text\":\"gmeType.dart GME type definition file\"}],\"type\":\"code-line\"},{\"id\":\"WflkdEcYUKsMVNhT22y_-\",\"children\":[{\"text\":\"gmeError.dart GME error type definition file\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"ia_wIPUYUpBQR9dnjQlMU\",\"children\":[{\"text\":\"Core APIs\"}],\"nodeId\":\"core-apis\",\"type\":\"h2\"},{\"id\":\"905IvJxOIF_uxOqAF0QOm\",\"children\":[{\"id\":\"4EsV5u4Ha0wSIeKuzgIWi\",\"children\":[{\"id\":\"omuX5eLEy4JlfZL6SWWUc\",\"children\":[{\"id\":\"Vodtx_EmvDu8IpCkI8qj9\",\"children\":[{\"text\":\"API\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"3y2d0XpXuoWcDjhk9dofM\",\"children\":[{\"id\":\"WJxBp6SY33WOh-Es-0naW\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"HRBUCawpdX-C5mj0WD5nS\",\"children\":[{\"id\":\"6aAUGAKoAeOdb0t7ZNPFw\",\"children\":[{\"id\":\"8V9jwwr2LNJa_uHmX_sM2\",\"children\":[{\"text\":\"InitSDK\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"zpOLk3QMjNVy0MwIDf4QI\",\"children\":[{\"id\":\"NWQ6N7YQD9afK0mJ1i5cg\",\"children\":[{\"text\":\"Initializes GME.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"2FPCwZxF14iHx8Qd7LE5f\",\"children\":[{\"id\":\"bDeH45aHyPTVSurlvaEYo\",\"children\":[{\"id\":\"rxahDJCn05b-X43oJhQ7x\",\"children\":[{\"text\":\"Poll\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"d-E-BoBNvBWzTcT8PNxFB\",\"children\":[{\"id\":\"idTUvnlJuRRDp6Asu1oac\",\"children\":[{\"text\":\"Triggers the event callback.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"yMB3z9l4rMN4OO7JvdlwZ\",\"children\":[{\"id\":\"rS_2EZHCYDBRnnZifVLmV\",\"children\":[{\"id\":\"3gPmDV8B-0niHIF7kid_V\",\"children\":[{\"text\":\"Uninit\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"H4ah-ko6wQ53mb5gCKGTA\",\"children\":[{\"id\":\"dyXejceo-A0j-AJ0KP8cX\",\"children\":[{\"text\":\"Uninitializes GME.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"rowHeader\":true,\"type\":\"table\",\"widths\":[39,61],\"widthMode\":\"percentage\"},{\"id\":\"DZAIb7tHkloSoawnIXll-\",\"children\":[{\"text\":\"Importing the GME module\"}],\"nodeId\":\"importing-the-gme-module\",\"type\":\"h3\"},{\"id\":\"Q16yhwnXMZuuwGLbw_rVy\",\"children\":[{\"id\":\"90r3-14r0Gxrn5BG5ej51\",\"children\":[{\"text\":\"import 'package:gme/gme.dart';\"}],\"type\":\"code-line\"},{\"id\":\"_yN8JcHhGilUCDR9Kts08\",\"children\":[{\"text\":\"import 'package:gme/gmeType.dart';\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"yj65D-s2noE6f_dZSM15B\",\"children\":[{\"text\":\"Getting an instance\"}],\"nodeId\":\"getting-an-instance\",\"type\":\"h3\"},{\"id\":\"UOdo6LsjIdgyAd8WJxlhT\",\"children\":[{\"text\":\"var m_context = await ITMGContext.GetInstance();\"}],\"type\":\"p\"},{\"id\":\"K2kzf2o8Gzw5qRtDp98iy\",\"children\":[{\"text\":\"Initializing the SDK\"}],\"nodeId\":\"initializing-the-sdk\",\"type\":\"h3\"},{\"id\":\"Vfl1zprD2LFBDzUuIcmEg\",\"children\":[{\"b\":1,\"text\":\"You need to initialize the SDK through the \"},{\"b\":1,\"code\":1,\"text\":\"Init\"},{\"b\":1,\"text\":\" API\"},{\"text\":\" before you can use the real-time voice chat, voice messaging, and speech-to-text services. The \"},{\"code\":1,\"text\":\"Init\"},{\"text\":\" API must be called in the same thread as other APIs. We recommend you call all APIs in the main thread.\"}],\"type\":\"p\"},{\"id\":\"u1HekXpLwTIixXhyl6yHt\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype\",\"type\":\"h4\"},{\"id\":\"7VHMLf-YP4F4xO_gU3WH1\",\"children\":[{\"id\":\"tumeRrC91BqJE1HRGGWTt\",\"children\":[{\"text\":\"Future InitSDK(String appID, String openID)\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"9zJfDQBVQfL30bw-wTuF1\",\"children\":[{\"id\":\"J9crne5fHfUjgthu5uzba\",\"children\":[{\"id\":\"VRnchjJibZIjdwau6p3fy\",\"children\":[{\"id\":\"fX3OBl_xfRtfWIbtG9yVb\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"wlimnvsVxmrQsQ9aI2EPr\",\"children\":[{\"id\":\"RDba0RViTFwLWDAOKHuvk\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"tm__86taX8az58LfkPyJy\",\"children\":[{\"id\":\"B-JJU8bi9goWX5_Nb6QDp\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"YppuH8tnlLnjVtxi7B5Sj\",\"children\":[{\"id\":\"NozMM2d5rsURfbyayofMF\",\"children\":[{\"id\":\"fyyvXIVQCYRnvyQLlQFSb\",\"children\":[{\"text\":\"sdkAppId\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"U5XC159Z20sQGSqg-JxUN\",\"children\":[{\"id\":\"UpXfBxU0W2lR7e5qbuwq-\",\"children\":[{\"text\":\"string\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"rk_FrKOg6iTMqeS6jRrQF\",\"children\":[{\"id\":\"mPuedsQ776m4OIj3E52of\",\"children\":[{\"text\":\"`AppID` provided in the \"},{\"id\":\"xCjBlc0ahqqrwzYzRU5uP\",\"children\":[{\"text\":\"GME console\"}],\"linkTarget\":\"self\",\"props\":{\"type\":\"link\",\"url\":\"https://console.tencentcloud.com/gamegme\"},\"type\":\"ref\"},{\"text\":\", which can be obtained as instructed in \"},{\"id\":\"jtI3QQjBPIFLFiufdsYQO\",\"children\":[{\"text\":\"Activating Services\"}],\"linkTarget\":\"self\",\"props\":{\"type\":\"link\",\"url\":\"https://intl.cloud.tencent.com/document/product/607/10782#.E9.87.8D.E7.82.B9.E5.8F.82.E6.95.B0\"},\"type\":\"ref\"},{\"text\":\".\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"Bf5KYdY8TtpnwWXKvwMVg\",\"children\":[{\"id\":\"cOWVf-yzeILJspIuTmzBf\",\"children\":[{\"id\":\"E6ssM09LNt7yTU4TOmuTk\",\"children\":[{\"text\":\"openID\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"gKWC54tR2MgJ8ndHrQNBX\",\"children\":[{\"id\":\"1FXFWqFtZbKV6OyPL653j\",\"children\":[{\"text\":\"string\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"_ANeW7VM_UkgXJsxR8yKd\",\"children\":[{\"id\":\"Ce8hWSpNU0_Jd9HMUE5By\",\"children\":[{\"text\":\"`openID` can only be in `Int64` type, which is passed in after being converted to a string. You can customize its rules, and it must be unique in the application. To pass in `openID` as a string, \"},{\"id\":\"zG67y2zccVDjrvxesiZnH\",\"children\":[{\"text\":\"submit a ticket\"}],\"linkTarget\":\"self\",\"props\":{\"type\":\"link\",\"url\":\"https://console.tencentcloud.com/workorder/category?level1_id=438&level2_id=445&source=0&data_title=%E6%B8%B8%E6%88%8F%E5%A4%9A%E5%AA%92%E4%BD%93%E5%BC%95%E6%93%8EGME&step=1\"},\"type\":\"ref\"},{\"text\":\" for application.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"rowHeader\":true,\"type\":\"table\",\"widths\":[16,12,72],\"widthMode\":\"percentage\"},{\"id\":\"t33CECFsTefUJ7pLj-jXl\",\"children\":[{\"text\":\"Returned values\"}],\"nodeId\":\"returned-values\",\"type\":\"h4\"},{\"id\":\"0quPr34ddmSkQrsRqBEHE\",\"children\":[{\"id\":\"Emvvct8a4zG626p_924AL\",\"children\":[{\"id\":\"Gttmlxpt9QP_XPbBQx5h3\",\"children\":[{\"id\":\"td0cs7T2f75RGOp8E4peO\",\"children\":[{\"text\":\"Returned Value\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"GIxMq4uAaKsq1cZ1Rlj6n\",\"children\":[{\"id\":\"xap6-dmIaHVyPs2EOFQkA\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"UJ4vARovtgoijiRywYJUQ\",\"children\":[{\"id\":\"RZvq50BgkLMoOz05rYcX7\",\"children\":[{\"id\":\"mWwVrwFyq-QQrexw7mLmW\",\"children\":[{\"text\":\"GmeError.AV_OK= 0\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ytT7URl58GErKeMLQ-7mq\",\"children\":[{\"id\":\"YNTGnTmiXBxgucNcayEAh\",\"children\":[{\"text\":\"SDK initialized successfully.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"PmTurG-cDROa6s6cYV3S-\",\"children\":[{\"id\":\"umlxmzJMLd0lzSN85OFL5\",\"children\":[{\"id\":\"W27UcV8WtwI6NSy71VnX_\",\"children\":[{\"text\":\"AV_ERR_SDK_NOT_FULL_UPDATE=7015\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"f92aPOpgL9cmKcmHpS7HJ\",\"children\":[{\"id\":\"haoJXbAiEH-ldo3ln1Wdh\",\"children\":[{\"text\":\"Solution: Check whether the SDK file is complete. We recommend that you delete it and then import the SDK again.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"rowHeader\":true,\"type\":\"table\",\"widths\":[40,60],\"widthMode\":\"percentage\"},{\"id\":\"a6pfuluuwTYHDLoO2dk-S\",\"children\":[{\"id\":\"KY00BuA3UsG8tLFWkA2bl\",\"children\":[{\"b\":1,\"color\":\"#04C8DC\",\"text\":\"Note: \",\"type\":\"text\"}],\"type\":\"p\"},{\"id\":\"Tz0vXYABJiWACDH_j6-jr\",\"children\":[{\"b\":1,\"text\":\"Notes on 7015 error code\"}],\"type\":\"p\"},{\"id\":\"_AAF93IbCZJqvuRvA4gpW\",\"children\":[{\"text\":\"The 7015 error code is identified by MD5. If this error is reported during integration, check the integrity and version of the SDK file as prompted.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"afARErL-R4_FakjI3klI_\",\"children\":[{\"text\":\"The returned value \"},{\"code\":1,\"text\":\"AV_ERR_SDK_NOT_FULL_UPDATE\"},{\"text\":\" is \"},{\"b\":1,\"text\":\"only a reminder\"},{\"text\":\" but will not cause an initialization failure.\"}],\"start\":false,\"type\":\"uli\"}],\"hintType\":\"alert\",\"type\":\"hint\"},{\"id\":\"53MREv1J5x5T5ur7oLWI1\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code\",\"type\":\"h4\"},{\"id\":\"KboKNauWJ4ikwruYFzKDV\",\"children\":[{\"id\":\"t7P_1TakefFzljOPsg7ae\",\"children\":[{\"text\":\"int res = await ITMGContext.GetInstance().InitSDK(_editAppID.text,_editOpenID.text);\"}],\"type\":\"code-line\"},{\"id\":\"DJh-gS89bQgxk33f5ra0r\",\"children\":[{\"text\":\"// Determine whether the initialization is successful by the returned value\"}],\"type\":\"code-line\"},{\"id\":\"rIMhmYuIjI_C4grsjXmAn\",\"children\":[{\"text\":\"if (ret != GmeError.AV_OK)\"}],\"type\":\"code-line\"},{\"id\":\"ToT87F-gmQOMuSmH12Ocx\",\"children\":[{\"text\":\"{\"}],\"type\":\"code-line\"},{\"id\":\"B0V7VLg_iI8WD2GhPjkDm\",\"children\":[{\"text\":\" print(\\\"Failed to initialize the SDK:\\\");\"}],\"type\":\"code-line\"},{\"id\":\"oC6yFAoiQp0NgPwopZp2v\",\"children\":[{\"text\":\" return;\"}],\"type\":\"code-line\"},{\"id\":\"gEZyOn6lQGHZHM0fiv4Qq\",\"children\":[{\"text\":\"}\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"2DlqYKR1C_9DwMOBplQqR\",\"children\":[{\"text\":\"Triggering event callback\"}],\"nodeId\":\"triggering-event-callback\",\"type\":\"h3\"},{\"id\":\"JlPQBt7WPe9fJcxLD6WV7\",\"children\":[{\"text\":\"Event callbacks can be triggered by calling the \"},{\"code\":1,\"text\":\"Poll\"},{\"text\":\" API in the timer. The \"},{\"code\":1,\"text\":\"Poll\"},{\"text\":\" API is GME's message pump and should be called periodically for GME to trigger event callbacks; otherwise, the entire SDK service will run abnormally. For more information, see the \"},{\"code\":1,\"text\":\"EnginePollHelper\"},{\"text\":\" file in \"},{\"id\":\"Av5br0jzre51Oh3rTqsjg\",\"children\":[{\"text\":\"SDK Download Guide\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://intl.cloud.tencent.com/document/product/607/18521\",\"props\":{\"type\":\"link\",\"url\":\"https://intl.cloud.tencent.com/document/product/607/18521\"},\"type\":\"ref\"},{\"text\":\".\"}],\"type\":\"p\"},{\"id\":\"tJBnBnPBo9iZpxd_O-89c\",\"children\":[{\"id\":\"P42m-kY3AyWQ9KAmXYS4B\",\"children\":[{\"b\":1,\"color\":\"#04C8DC\",\"text\":\"Note: \",\"type\":\"text\"}],\"type\":\"p\"},{\"id\":\"clsXlkb5ZtRs71EAEEn2a\",\"children\":[{\"text\":\"The \"},{\"code\":1,\"text\":\"Poll\"},{\"text\":\" API must be called periodically and in the main thread to avoid abnormal API callbacks.\"}],\"type\":\"p\"}],\"hintType\":\"alert\",\"type\":\"hint\"},{\"id\":\"41kxn4vxHzELcHyeObouV\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype2\",\"type\":\"h4\"},{\"id\":\"kMkppvcQbXArMhDYmE9if\",\"children\":[{\"id\":\"tU6iWDSn9d16wfChnIZ57\",\"children\":[{\"text\":\"Future Poll()\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"03lh3FNPDgFAYzfPBnpYe\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code2\",\"type\":\"h4\"},{\"id\":\"4RCX2doBFg_aKRpKHDvTT\",\"children\":[{\"id\":\"I55Ju3RTGIN2jusdaYi2E\",\"children\":[{\"text\":\"Future pollTimer() async {\"}],\"type\":\"code-line\"},{\"id\":\"pSkEqgfQmC1fMWQK-a3iF\",\"children\":[{\"text\":\" _pollTimer = Timer.periodic(Duration(milliseconds: 100), (Timer timer) {\"}],\"type\":\"code-line\"},{\"id\":\"2Gpiz7C7bnGLNZ23ONEgg\",\"children\":[{\"text\":\" ITMGContext.GetInstance().Poll();\"}],\"type\":\"code-line\"},{\"id\":\"fj_xEb9Kz2rhUKhgUJ5Xe\",\"children\":[{\"text\":\" });\"}],\"type\":\"code-line\"},{\"id\":\"6sw3f1UiQrXEIdRjlQq-0\",\"children\":[{\"text\":\"}\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"Vfw7FSF3X_VrE5dxs8Jc-\",\"children\":[{\"text\":\"Uninitializing SDK\"}],\"nodeId\":\"uninitializing-sdk\",\"type\":\"h3\"},{\"id\":\"e_bLrtrgQ3axO-5bpKgsr\",\"children\":[{\"text\":\"This API is used to uninitialize the SDK to make it uninitialized. \"},{\"b\":1,\"text\":\"If the game business account is bound to \"},{\"b\":1,\"code\":1,\"text\":\"openid\"},{\"b\":1,\"text\":\", switching game account requires uninitializing GME and then using the new \"},{\"b\":1,\"code\":1,\"text\":\"openid\"},{\"b\":1,\"text\":\" to initialize again.\"}],\"type\":\"p\"},{\"id\":\"AsVA1i7C_BJ3ZYppIJ3tK\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype3\",\"type\":\"h4\"},{\"id\":\"6wHjPouKYxGRnmdtIcHhF\",\"children\":[{\"id\":\"vgpxNhl1_icPC0bIqvw3e\",\"children\":[{\"text\":\"Future Uninit()\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"h8XmrOOCUVIQRZKKKw-gC\",\"children\":[{\"text\":\"Voice Messaging and Speech-to-Text Services\"}],\"nodeId\":\"voice-messaging-and-speech-to-text-services\",\"type\":\"h2\"},{\"id\":\"xoTuZREIVIXZKzdHgsX7c\",\"children\":[{\"id\":\"3q2r96_DW4MqhCmwVYBzo\",\"children\":[{\"b\":1,\"color\":\"#04C8DC\",\"text\":\"Note: \",\"type\":\"text\"}],\"type\":\"p\"},{\"id\":\"oaE6IEnXw_DQOH-RwDsXK\",\"children\":[{\"text\":\"The speech-to-text service consists of fast recording-to-text conversion and streaming speech-to-text conversion.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"G90YfnKn5vx30JRnIAUey\",\"children\":[{\"text\":\"You do not need to enter a voice chat room when using the voice messaging service.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"xTrHyYj263BXfHKcKdB-R\",\"children\":[{\"text\":\"The maximum recording duration of a voice message is 58 seconds by default, and the minimum recording duration cannot be less than 1 second. If you want to customize the recording duration, for example, to change the maximum recording duration to 10 seconds, call the \"},{\"code\":1,\"text\":\"SetMaxMessageLength\"},{\"text\":\" API to set it after initialization.\"}],\"start\":false,\"type\":\"uli\"}],\"hintType\":\"alert\",\"type\":\"hint\"},{\"id\":\"MMEjMDrihyS-fbIRkIVmT\",\"children\":[{\"text\":\"Flowchart for using the voice message service\"}],\"nodeId\":\"flowchart-for-using-the-voice-message-service\",\"type\":\"h3\"},{\"type\":\"p\",\"children\":[{\"text\":\"\"},{\"id\":\"7GgUjywyOLYvyEdlh2xEX\",\"alt\":\"\",\"children\":[{\"text\":\"\"}],\"inline\":true,\"type\":\"image\",\"url\":\"https://cloudcache.intl.tencent-cloud.com/cms/backend-cms/a6197373b35111eeae9a525400c26da5.jpeg\",\"naturalSize\":[923,675],\"size\":[801,585]},{\"text\":\"\"}],\"id\":\"Xv9Pn7c2N1iEmXq3s2bxx\"},{\"id\":\"i0GeJKhwnXy8pznmr_o2k\",\"children\":[{\"text\":\"Flowchart for using the speech-to-text service\"}],\"nodeId\":\"flowchart-for-using-the-speech-to-text-service\",\"type\":\"h3\"},{\"type\":\"p\",\"children\":[{\"text\":\"\"},{\"id\":\"qzeVKg1btwJ74pXzs9LAm\",\"alt\":\"\",\"children\":[{\"text\":\"\"}],\"inline\":true,\"type\":\"image\",\"url\":\"https://cloudcache.intl.tencent-cloud.com/cms/backend-cms/a6479e3bb35111ee9939525400461a83.jpeg\",\"naturalSize\":[1138,1043],\"size\":[803,735]},{\"text\":\"\"}],\"id\":\"Up041Oc69JHiv9cp9U9es\"},{\"id\":\"MWf_2jDKGrFVEI8AsUkn6\",\"children\":[{\"id\":\"6J-JwQtlpt_WLGo7ZqolR\",\"children\":[{\"id\":\"uKGpxOuVRslzE_XbHqN98\",\"children\":[{\"id\":\"UXQRYQhtvP6tDsd96uKcy\",\"children\":[{\"text\":\"API\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"CTcV0xb9owRSpbqO5zHSc\",\"children\":[{\"id\":\"he0hOYS1oVJX9FrAPGTIJ\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"avcOhLyOF0SF9edynDav4\",\"children\":[{\"id\":\"Ri5VjdmKGySCnG50nF4LL\",\"children\":[{\"id\":\"sdJZrKVm5AW0nOcCU63uN\",\"children\":[{\"text\":\"GenAuthBuffer\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"jeIE4t4HCQiUFhjraHP5E\",\"children\":[{\"id\":\"s7bdTti-4WwTJNj7qXTpQ\",\"children\":[{\"text\":\"Gets the authentication information.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"4Lodkl3dveQTujujEAYD0\",\"children\":[{\"id\":\"c79lNvFHl9i8M23fn1qxn\",\"children\":[{\"id\":\"ypolzLYcEuhc76MVw7JDT\",\"children\":[{\"text\":\"SetMaxMessageLength\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"c7UMwww_7oXh4vTb-2JJC\",\"children\":[{\"id\":\"N89AcwZkolbxfdBIxrtra\",\"children\":[{\"text\":\"Specifies the maximum duration of a voice message.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"rowHeader\":true,\"type\":\"table\",\"widths\":[50,50],\"widthMode\":\"percentage\"},{\"id\":\"l74bOtxbw_gtofFvTY3IW\",\"children\":[{\"text\":\"Generating the local authentication key\"}],\"nodeId\":\"generating-the-local-authentication-key\",\"type\":\"h3\"},{\"id\":\"MAirRNLYFI59zzr7KtOuS\",\"children\":[{\"text\":\"Generate \"},{\"code\":1,\"text\":\"AuthBuffer\"},{\"text\":\" for encryption and authentication of relevant features. For release in the production environment, use the backend deployment key as detailed in \"},{\"id\":\"3Fi-d48BOFsRoWsbwAft-\",\"children\":[{\"text\":\"Authentication Key\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://www.tencentcloud.com/document/product/607/12218\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/12218\"},\"type\":\"ref\"},{\"text\":\". \"}],\"type\":\"p\"},{\"id\":\"b5_5JzBam9bkaVMoyH4id\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype4\",\"type\":\"h4\"},{\"id\":\"0AfrpZ3HwK4rHeDtzEmFw\",\"children\":[{\"id\":\"jnh-xbxkSgSR3OHvLpUpR\",\"children\":[{\"text\":\"Future GenAuthBuffer(String appID, String roomID, String openID, String key)\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"AdR8n1NO4a2obJ-FHJlw5\",\"children\":[{\"id\":\"G3QL91nIlNCmU_Aj6GGeg\",\"children\":[{\"id\":\"KkMVn6mrw3mnSzi936Xde\",\"children\":[{\"id\":\"DfwD833obSHlO5t2XluQm\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"N7oJX5WV5Lhzba20Q2qIs\",\"children\":[{\"id\":\"n0qwxS1ZG14VTElLkYWoL\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"EoE6MAfPMepDcjKipCLKT\",\"children\":[{\"id\":\"7Dhuwr8m9BlJKBbxSapOQ\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"gDQyTzuwf6Lf-2F6rKUL0\",\"children\":[{\"id\":\"r7gxaYnhooxdMbIBQnzd3\",\"children\":[{\"id\":\"aV8uXtk94NO2V4jXhXlb_\",\"children\":[{\"text\":\"appId\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"TQswGyxbKynRI0WT8Faw-\",\"children\":[{\"id\":\"SxRFl3Ctdb9pzSviyQ0w4\",\"children\":[{\"text\":\"string\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Hlke95cG_mYEKzId6mOSj\",\"children\":[{\"id\":\"_NkEBgIsLPZcWNTw9hiL7\",\"children\":[{\"text\":\"`AppId` from the Tencent Cloud console\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"vtDPRGc5WyP4q3AXmKsN8\",\"children\":[{\"id\":\"Z5d_0R-EOQqgU6m3zBdIw\",\"children\":[{\"id\":\"1UqbNydOXJJp1VyGMFn28\",\"children\":[{\"text\":\"roomId\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"05gatwX8o_00wVBAfKnET\",\"children\":[{\"id\":\"K7VV6jRyI4uUmFKXfyCIn\",\"children\":[{\"text\":\"string\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"M-Fql-s0x2QsnuMJhuPQ-\",\"children\":[{\"id\":\"8zob-I2G5_wpJn7x4tJqI\",\"children\":[{\"text\":\"Enter `null` or an empty string.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"D06yDw18BAwamj7G4vTuR\",\"children\":[{\"id\":\"JwWD_CS9NTYDZGYovN9P2\",\"children\":[{\"id\":\"NxYHIo3XbFAkiBwdBUylb\",\"children\":[{\"text\":\"openId\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"8jc1wS0ESu8cC5iV5NqWn\",\"children\":[{\"id\":\"aN29H-hWYci67cQknlYsd\",\"children\":[{\"text\":\"string\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"gSHd1LzdwmuCqAKlyUhCi\",\"children\":[{\"id\":\"atYLeq4mqBJQ_VptON5WQ\",\"children\":[{\"text\":\"User ID, which is the same as `OpenId` during initialization.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"lxFKKGA1qiThAa4XofCzr\",\"children\":[{\"id\":\"ynxjUKkBBPa4jl8PJGNzU\",\"children\":[{\"id\":\"euGsfzsbcG2E7NLzsPMEB\",\"children\":[{\"text\":\"key\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"SfLwzn5vJZWeLglmzNJqG\",\"children\":[{\"id\":\"I7J8Qwt-jV_AgWSo6Kzd2\",\"children\":[{\"text\":\"string\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"QAzaf5SVwLhxUcU4apvXp\",\"children\":[{\"id\":\"xyQ2__9I2B4MugQBpKSYU\",\"children\":[{\"text\":\"Permission key from the Tencent Cloud \"},{\"id\":\"VhufcUrJ46D6Fcgaz2TEY\",\"children\":[{\"text\":\"console\"}],\"linkTarget\":\"self\",\"props\":{\"type\":\"link\",\"url\":\"https://console.tencentcloud.com/gamegme\"},\"type\":\"ref\"},{\"text\":\".\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"rowHeader\":true,\"type\":\"table\",\"widths\":[15,23,62],\"widthMode\":\"percentage\"},{\"id\":\"BRY0ScWXP3AtQLUzHfiOq\",\"children\":[{\"text\":\"Application authentication\"}],\"nodeId\":\"application-authentication\",\"type\":\"h3\"},{\"id\":\"IqCBYUamhXKZ48qMoNa_q\",\"children\":[{\"text\":\"After the authentication information is generated, the authentication is assigned to the SDK. \"}],\"type\":\"p\"},{\"id\":\"jcIj0_PBF-6ssbDfSHTj7\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype5\",\"type\":\"h4\"},{\"id\":\"IoLxth2G-DAUy4ngylPwr\",\"children\":[{\"id\":\"XqNV2eXwhfVg_nlEpaLYG\",\"children\":[{\"text\":\"Future ApplyPTTAuthbuffer(Uint8List authBuffer) \"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"cxriGEYf2WaJ79CM4JQoI\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code3\",\"type\":\"h4\"},{\"id\":\"BwfdYz4j0tBSw2O-4TuzD\",\"children\":[{\"id\":\"HvsXrw5ocgN0bcCj9ABVL\",\"children\":[{\"text\":\"Uint8List authBuffer = await ITMGContext.GetInstance().GenAuthBuffer(_editAppID.text, _editRoomID.text, _editOpenID.text, _editKey.text);\"}],\"type\":\"code-line\"},{\"id\":\"-r1XIhaCrR7PDKwIZ4hLI\",\"children\":[{\"text\":\"m_context.ApplyPTTAuthbuffer(authBuffer);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"g6BvIe4f8IzXxVq7ykk04\",\"children\":[{\"text\":\"Specifying the maximum duration of voice message\"}],\"nodeId\":\"specifying-the-maximum-duration-of-voice-message\",\"type\":\"h3\"},{\"id\":\"JIbaFfBUUfN4Zf3FmQhsk\",\"children\":[{\"text\":\"This API is used to specify the maximum duration of a voice message, which can be up to 58 seconds.\"}],\"type\":\"p\"},{\"id\":\"-mIcKftpGnPn6EjfA_Lgq\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype6\",\"type\":\"h4\"},{\"id\":\"2dkIG32oZwpU7G6vycsbB\",\"children\":[{\"id\":\"LOWJMnW9rtEgbwvGXDRBJ\",\"children\":[{\"text\":\"Future SetMaxMessageLength(int msTime)\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"MdMRG5uxXSZJLmoD920kG\",\"children\":[{\"id\":\"sqvgKWg5eErK9-OV7xQ76\",\"children\":[{\"id\":\"Lhl4W0p34Sl1XqWI_WnxS\",\"children\":[{\"id\":\"WePQvLzQlt9KzsW0ISLAP\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"uzXyfSjGL3bzCbk1KmFhZ\",\"children\":[{\"id\":\"MJF44gMJRwD5CgizzxuFb\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"-viLpLQdhoeDGpIHTVyoO\",\"children\":[{\"id\":\"5dSpBuW2CEHcAgQZV_oEo\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"oHFUwUo2EUz28hQcY4iNC\",\"children\":[{\"id\":\"zRNPPQO3x0XN8DiyHN2SG\",\"children\":[{\"id\":\"qtj2HKzjuuIjRfiPZAP54\",\"children\":[{\"text\":\"msTime\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"V5Eue_meRY-br70tRouuQ\",\"children\":[{\"id\":\"WtmPe5xJ1YpUcHf-HzeSj\",\"children\":[{\"text\":\"number\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"FTPYgdHbl00HnZ4N8ahlD\",\"children\":[{\"id\":\"iqx_7JOEAS31IlCArJ_py\",\"children\":[{\"text\":\"Voice message duration in ms. Value range: 1000 < `msTime` <= 58000\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"rowHeader\":true,\"type\":\"table\",\"widths\":[17,23,60],\"widthMode\":\"percentage\"},{\"id\":\"gGMdCtkgX6szgfcTExR4V\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code4\",\"type\":\"h4\"},{\"id\":\"YUTW20NYvcni98YdGtx4A\",\"children\":[{\"id\":\"Z5IyfE-tDAWd1EOPwMpVT\",\"children\":[{\"text\":\"ITMGContext.GetInstance().GetPTT().SetMaxMessageLength(fileLen);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"u57Y_a5806MvHJ_8TeT0L\",\"children\":[{\"text\":\"Streaming Speech Recognition\"}],\"nodeId\":\"streaming-speech-recognition\",\"type\":\"h2\"},{\"id\":\"HFx91HPKQCC70mgnbtxxc\",\"children\":[{\"text\":\"Voice messaging and speech-to-text APIs\"}],\"nodeId\":\"voice-messaging-and-speech-to-text-apis\",\"type\":\"h3\"},{\"id\":\"F-gGMvka3HGmerKRHW5gf\",\"children\":[{\"id\":\"KUdytU_rFygKkaICkHzKv\",\"children\":[{\"id\":\"qhPsLbxnCRKj2g8zq5Rj-\",\"children\":[{\"id\":\"59d3adnlaFzPBawpZi3wL\",\"children\":[{\"text\":\"API\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"GJHsp_Fo5N56yjeQD1O2b\",\"children\":[{\"id\":\"TeARDGruyDZkMUR6EO5os\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"FqK-9H5WFAbfgvP7c0O2P\",\"children\":[{\"id\":\"BSxi5Z3WUBb5r6DKzMQiw\",\"children\":[{\"id\":\"G_wiQlHzM4h170jd5Ym0i\",\"children\":[{\"text\":\"StartRecordingWithStreamingRecognition\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"GWQjr0L5VsF694T8cIojs\",\"children\":[{\"id\":\"9ORD9gNvUH6-jcjD1Qka-\",\"children\":[{\"text\":\"Starts streaming recording.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"Fo0r9ftSnqoha4fbhSVrk\",\"children\":[{\"id\":\"9eM2YZ2vH4eZb4I9PZCLq\",\"children\":[{\"id\":\"7HQmvZJSiaFZj5paPiSHS\",\"children\":[{\"text\":\"StopRecording\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"T8NROoiBvfG7LLtJTYbtV\",\"children\":[{\"id\":\"sjU9CmlK9P0vqXWQ2W-Cx\",\"children\":[{\"text\":\"Stops recording.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"rowHeader\":true,\"type\":\"table\",\"widths\":[36,64],\"widthMode\":\"percentage\"},{\"id\":\"UHcE72oQscpXueziyyPIY\",\"children\":[{\"text\":\"Starting streaming speech recognition\"}],\"nodeId\":\"starting-streaming-speech-recognition\",\"type\":\"h3\"},{\"id\":\"wHl-rkK0EPtRakfUA7hv5\",\"children\":[{\"text\":\"This API is used to start streaming speech recognition. Text obtained from speech-to-text conversion will be returned in real time in its callback. It can specify a language for recognition or translate the text recognized in speech into a specified language and return the translation. \"},{\"b\":1,\"text\":\"To stop recording, call \"},{\"id\":\"lVXUASMGIXsJYm7pTB_tn\",\"children\":[{\"text\":\"StopRecording\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://www.tencentcloud.com/document/product/607/53819\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/53819\"},\"type\":\"ref\"},{\"b\":1,\"text\":\".\"}],\"type\":\"p\"},{\"id\":\"raMBI89fGMq639jebFR-6\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype7\",\"type\":\"h4\"},{\"id\":\"teiQjbN9aNwyNmR3dhA7e\",\"children\":[{\"id\":\"X0zhUga0mBbmS4TuHkcwk\",\"children\":[{\"text\":\"Future StartRecordingWithStreamingRecognition(String filePath, String speechLanguage, String translateLanguage) \"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"imxgsEVI1De2u4baB08cs\",\"children\":[{\"id\":\"5OPE0cG038GLUxHKf1s5C\",\"children\":[{\"id\":\"ii1DjGp5znBqrt2A5_oQB\",\"children\":[{\"id\":\"QTSqayG0XGLDr_ucMaah5\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"oceT5O-uyqT8IXrhabEr5\",\"children\":[{\"id\":\"obdL8e4tM-kY2sl6GvCqx\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"XMWChztQRjuq5W0LlAsVQ\",\"children\":[{\"id\":\"_I_Nr4yk51dAd6aQ5_hJr\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"evFM4N18j4ti9GZ-9vV0r\",\"children\":[{\"id\":\"WYcmuNgfn7x0z-flgAP6B\",\"children\":[{\"id\":\"2WeNnpPxmXuUj2mNUWNHz\",\"children\":[{\"text\":\"filePath\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"16Yvoa-mFdchAc3pspE3D\",\"children\":[{\"id\":\"Xl1jkhARSYoHOiOuRyPjC\",\"children\":[{\"text\":\"string\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"mHB7e7m_ewtITURxzpkH_\",\"children\":[{\"id\":\"ITaGhx6oBz-2ssr-DGP1H\",\"children\":[{\"text\":\"Path of the stored audio file\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"Yql1v2keQoRMA4u5ApNNG\",\"children\":[{\"id\":\"lyCLrk9ppPeXnjakVrA3V\",\"children\":[{\"id\":\"q91bDXINDxdfD28ZFJora\",\"children\":[{\"text\":\"speechLanguage\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"9XrEH3c3AYs01CMlEJZsg\",\"children\":[{\"id\":\"Kk7qKVzQbscPgrN7hAnio\",\"children\":[{\"text\":\"string\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"KjQOPD95QQWEsa4ZjJWJ3\",\"children\":[{\"id\":\"0Oii_-WApBne5qp2cyDr3\",\"children\":[{\"text\":\"The language in which the voice message file is to be converted to text. For parameters, see \"},{\"id\":\"YREHNbW9j3nXF91dMgFcj\",\"children\":[{\"text\":\"Language Parameter Reference List\"}],\"linkTarget\":\"self\",\"props\":{\"type\":\"link\",\"url\":\"https://intl.cloud.tencent.com/document/product/607/30260\"},\"type\":\"ref\"},{\"text\":\".\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"Uwo5mpzHsH7Ap_8JjvMOn\",\"children\":[{\"id\":\"VTcI5dx0ufPdkVGv9o-Bj\",\"children\":[{\"id\":\"U8ZYx6wgIcug8Rpp7SlZt\",\"children\":[{\"text\":\"translateLanguage\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"U9BM4b3o1G51rb9uTdtbB\",\"children\":[{\"id\":\"bYfjo8e7eNo0wqiZV3WOk\",\"children\":[{\"text\":\"string\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"iRJmCTOfEif_QUfzCWiKd\",\"children\":[{\"id\":\"g7zs8fqtm0By0RiO6iVnl\",\"children\":[{\"text\":\"The language in which the voice message file is to be translated to text. For parameters, see \"},{\"id\":\"bqVXCOUEgr2--8pNDvaBz\",\"children\":[{\"text\":\"Language Parameter Reference List.\"}],\"linkTarget\":\"self\",\"props\":{\"type\":\"link\",\"url\":\"https://intl.cloud.tencent.com/document/product/607/30260\"},\"type\":\"ref\"},{\"text\":\"\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"rowHeader\":true,\"type\":\"table\",\"widths\":[19,15,66],\"widthMode\":\"percentage\"},{\"id\":\"4djxx-c7S5QpWjCAba-gf\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code5\",\"type\":\"h4\"},{\"id\":\"BL3j8pHcqgY4FOAEInsWv\",\"children\":[{\"id\":\"tcG4AEaT1RCZgPkRohuTn\",\"children\":[{\"text\":\"string filePath = \\\"xx/xxx/xxx.silk\\\"\"}],\"type\":\"code-line\"},{\"id\":\"FxMDhkAtwsV9FncI-iIq5\",\"children\":[{\"text\":\"int res = await ITMGContext.GetInstance().GetPTT().StartRecordingWithStreamingRecognition(filePath, strCurLanguage, strCurLanguage);\"}],\"type\":\"code-line\"},{\"id\":\"ywTV-cBn5GTJI5DDW5pOJ\",\"children\":[{\"text\":\"if (ret == 0) {\"}],\"type\":\"code-line\"},{\"id\":\"WNJV_OE_31rCVH3DB3W_B\",\"children\":[{\"text\":\" this.currentStatus = \\\"Start streaming recording\\\";\"}],\"type\":\"code-line\"},{\"id\":\"3mbFFbU2a6PPNd7oMnp9m\",\"children\":[{\"text\":\"} else {\"}],\"type\":\"code-line\"},{\"id\":\"rKY9fdSahjUWxcuAje_TG\",\"children\":[{\"text\":\" this.currentStatus = \\\"Failed to start streaming recording\\\";\"}],\"type\":\"code-line\"},{\"id\":\"6MwjcKMDQ2Z9sb5yU0LXK\",\"children\":[{\"text\":\"}\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"dzEA-SwRMEwbMag7pf1dh\",\"children\":[{\"id\":\"EwW1yaHZ05hpe_dTT6BwW\",\"children\":[{\"b\":1,\"color\":\"#04C8DC\",\"text\":\"Note: \",\"type\":\"text\"}],\"type\":\"p\"},{\"id\":\"VDvv18DkyKwRntl9bem8_\",\"children\":[{\"text\":\"Translation incurs additional fees. For more information, see \"},{\"id\":\"EWQyF6j3ywENbN8UenLb1\",\"children\":[{\"text\":\"Purchase Guide\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://intl.cloud.tencent.com/document/product/607/50009\",\"props\":{\"type\":\"link\",\"url\":\"https://intl.cloud.tencent.com/document/product/607/50009\"},\"type\":\"ref\"},{\"text\":\".\"}],\"type\":\"p\"}],\"hintType\":\"alert\",\"type\":\"hint\"},{\"id\":\"7WC3C615pOGW72TaSQKTq\",\"children\":[{\"text\":\"Callback for streaming speech recognition\"}],\"nodeId\":\"callback-for-streaming-speech-recognition\",\"type\":\"h3\"},{\"id\":\"zinXizZAPo3UgNxvHFai9\",\"children\":[{\"text\":\"After streaming speech recognition is started, you need to listen on callback messages in the \"},{\"code\":1,\"text\":\"OnEvent\"},{\"text\":\" notification, which is as detailed below:\"}],\"type\":\"p\"},{\"id\":\"uEALRPk2dwQLKwqhIEYNc\",\"children\":[{\"code\":1,\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRECOGNITION_COMPLETE\"},{\"text\":\" returns text after the recording is stopped and the recognition is completed, which is equivalent to returning the recognized text after a paragraph of speech.\\n\"},{\"code\":1,\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRECOGNITION_IS_RUNNING\"},{\"text\":\" returns the recognized text in real time during the recording, which is equivalent to returning the recognized text while speaking.\"}],\"type\":\"p\"},{\"id\":\"Nc1nGD3wB01ALGGLh0Yo2\",\"children\":[{\"text\":\"The event message will be identified in the callback notification based on the actual needs. The passed parameters include the following four messages.\"}],\"type\":\"p\"},{\"id\":\"q-qnkgMZy_gmhMk8Ig0Mq\",\"children\":[{\"id\":\"aJASCfElFPoMZqeRXUgFX\",\"children\":[{\"id\":\"-m2YN6mjL84_WOnuJo4jF\",\"children\":[{\"id\":\"udMMQCnJ2fWFW8SH0HvSm\",\"children\":[{\"text\":\"Message\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"HTW1yxdhbMMl1keW7dE4m\",\"children\":[{\"id\":\"1dzB8oo9Q4WDsfcKmLG6Z\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"ypLxpSaCRNXfo-Izhf_um\",\"children\":[{\"id\":\"mNK4ikNn3oMGWtndNpvGW\",\"children\":[{\"id\":\"nQfUYAXApAHw91AT5RcnI\",\"children\":[{\"text\":\"result\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"S-kcafSuCwRgErNaG4H06\",\"children\":[{\"id\":\"f5IYvW0Oophyy5rHKnYkC\",\"children\":[{\"text\":\"Return code indicating whether streaming speech recognition is successful\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"dGVTABGEcvumAJhO4BsP2\",\"children\":[{\"id\":\"vlIat2sGj5qH4LmgVpMmF\",\"children\":[{\"id\":\"y7YJfmIIHC30CUeQq6Hjj\",\"children\":[{\"text\":\"text\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"W7JjpZv_hMh6mPlIVETWj\",\"children\":[{\"id\":\"Fe_5u0PjtiAzSVgfPxjRm\",\"children\":[{\"text\":\"Text converted from speech\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"k4_7v2Gv1V5FnfRyh7NF0\",\"children\":[{\"id\":\"hvXijZSyfwi9TxZ-Tgt5H\",\"children\":[{\"id\":\"tMkYUx2FE-redt-dCNxJm\",\"children\":[{\"text\":\"file_path\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Wi4sb1ODMtWELV057JgSs\",\"children\":[{\"id\":\"ROkXdTMKOJ_q5cEkn20L9\",\"children\":[{\"text\":\"Local path of the stored recording file\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"lcc-J6BVDeED_CGkDHuq6\",\"children\":[{\"id\":\"MXDhiq8RezZ4ynHmXELQo\",\"children\":[{\"id\":\"xjCWVRbZ9Hv3D725mWEXj\",\"children\":[{\"text\":\"file_id\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"84gw-R2APpEWsd0VjeTu-\",\"children\":[{\"id\":\"W2i-yEqCqO7VZvBOLaimn\",\"children\":[{\"text\":\"Backend URL address of the recording file, which will be retained for 90 days\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"rowHeader\":true,\"type\":\"table\",\"widths\":[25,75],\"widthMode\":\"percentage\"},{\"id\":\"O9wxs76PciCmffS_rLUS6\",\"children\":[{\"id\":\"WijpI5Sb6mvKJCce5RAt_\",\"children\":[{\"b\":1,\"color\":\"#04C8DC\",\"text\":\"Note: \",\"type\":\"text\"}],\"type\":\"p\"},{\"id\":\"T9HoGGo2EH6lZSL_Hh0a2\",\"children\":[{\"text\":\"The \"},{\"code\":1,\"text\":\"file_id\"},{\"text\":\" is empty when the 'ITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRECOGNITION_IS_RUNNING' message is listened for.\"}],\"type\":\"p\"}],\"hintType\":\"alert\",\"type\":\"hint\"},{\"id\":\"-aGwjDbMdvss8PQOPLACY\",\"children\":[{\"text\":\"Error codes\"}],\"nodeId\":\"error-codes\",\"type\":\"h4\"},{\"id\":\"SnavPmKIOs22Eun3e4j-3\",\"children\":[{\"id\":\"dRy8s2tqEIuyLqdrz2i4s\",\"children\":[{\"id\":\"OItm-OGYGA2GSi4xl-9i5\",\"children\":[{\"id\":\"Af7SaX9LjSQWZRM7jMxZ9\",\"children\":[{\"text\":\"Error Code\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"CHGiqGQhLVdyCMWhstep9\",\"children\":[{\"id\":\"SDTh-rOBPk06TJOYReVVp\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"f-W5kq6LSrNUKlAWqbiKL\",\"children\":[{\"id\":\"Z1jQ2CDFG2PJH3gx0V3UL\",\"children\":[{\"text\":\"Solution\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"TGJGw9piEUVGpcNFkEjBl\",\"children\":[{\"id\":\"OZFs5A4QcvDQIfL0EzZzC\",\"children\":[{\"id\":\"sCxQ7skj9g-Siw4bcfdoE\",\"children\":[{\"text\":\"32775\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Dy3JpGQm-ZcITRah1gggW\",\"children\":[{\"id\":\"jsSeceLU-z30cteyWuo6w\",\"children\":[{\"text\":\"Streaming speech-to-text conversion failed, but recording succeeded.\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"YcAyudGbqEqDH0nxnazST\",\"children\":[{\"id\":\"OJE0pG9nXNgB7GqCusVEP\",\"children\":[{\"text\":\"Call the `UploadRecordedFile` API to upload the recording file and then call the `SpeechToText` API to perform speech-to-text conversion.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"Ah_2Qt5R3RrhaJY71T5lG\",\"children\":[{\"id\":\"Oot5YYWnU9J3z58taZW7b\",\"children\":[{\"id\":\"i3nFKf_GfF2jkcHeYpIwu\",\"children\":[{\"text\":\"32777\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"sHQxA8wZfweMOOz0RSccN\",\"children\":[{\"id\":\"fcW7a7-fadjjGHjgDfTRw\",\"children\":[{\"text\":\"Streaming speech-to-text conversion failed, but recording and upload succeeded.\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"OoDLZ5jPiMfhI_vh9OIoV\",\"children\":[{\"id\":\"73UW03cdZKa0pI1MxVofP\",\"children\":[{\"text\":\"The message returned contains a backend URL after successful upload. Call the `SpeechToText` API to perform speech-to-text conversion.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"SwiUM7to-y3YbPtwi9sjk\",\"children\":[{\"id\":\"mAXCYDhrDl1frmhHYy9zI\",\"children\":[{\"id\":\"CmGCD0yaK-aIaaJmtW6ml\",\"children\":[{\"text\":\"32786\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"8vOM0vgZ2qkMPQk4FkUEL\",\"children\":[{\"id\":\"ZMbHQzXonCe0ZogCw0HRO\",\"children\":[{\"text\":\"Streaming speech-to-text conversion failed.\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"LODNrODsNNr94WwEf4DgY\",\"children\":[{\"id\":\"OKB1vMg_iPeuj6jGCavxt\",\"children\":[{\"text\":\"During streaming recording, wait for the execution result of the streaming recording API to return.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"Jja-lXk1gTXNkol423dIt\",\"children\":[{\"id\":\"OLdJdC1tlcClx-gLgc-3O\",\"children\":[{\"id\":\"LTA6Ug1AlOFR26K6yxxzo\",\"children\":[{\"text\":\"32787\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"6NbT1jlLKFQAPrwWR9oJH\",\"children\":[{\"id\":\"RoPrITNpE0Gi9TkdfPHS4\",\"children\":[{\"text\":\"Speech-to-text conversion succeeded, but the text translation service was not activated.\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"P517CgMWSu5BsjbqvAf9x\",\"children\":[{\"id\":\"jOOCBcydL5Ie8an3SlHqo\",\"children\":[{\"text\":\"Activate the text translation service in the console.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"LNCo2kaUdf95b2Ay7z_tE\",\"children\":[{\"id\":\"YQX3IvOGWEVv3BqQyAtD1\",\"children\":[{\"id\":\"Lj2RHBaiJTkrgsvE9EufZ\",\"children\":[{\"text\":\"32788\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"WyCJhidIpXpLFRFTebo8C\",\"children\":[{\"id\":\"eymwDq7dkdy2I_ROaLsrv\",\"children\":[{\"text\":\"Speech-to-text conversion succeeded, but the language parameter of the text translation service was invalid.\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"fNR5tSxTI43oYL2RznE8k\",\"children\":[{\"id\":\"fyv9JNtfwbhcAFX6YWg31\",\"children\":[{\"text\":\"Check the parameter passed in.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"rowHeader\":true,\"type\":\"table\",\"widths\":[14,34,52],\"widthMode\":\"percentage\"},{\"id\":\"DGsRY1pczBczU-Z7UV4Lg\",\"children\":[{\"text\":\"If the error code 4098 is reported, see \"},{\"id\":\"UInoNVZi8YzStok6s1WFD\",\"children\":[{\"text\":\"Speech-to-text Conversion\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://intl.cloud.tencent.com/document/product/607/39716\",\"props\":{\"type\":\"link\",\"url\":\"https://intl.cloud.tencent.com/document/product/607/39716\"},\"type\":\"ref\"},{\"text\":\" for solutions.\"}],\"type\":\"p\"},{\"id\":\"baKz0KnnQpdQgzr1OsA8Q\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code6\",\"type\":\"h4\"},{\"id\":\"VkS1MIhsDFMkDvXPU2kzi\",\"children\":[{\"id\":\"yo3m5oqDHbU4eHM8-gkK1\",\"children\":[{\"text\":\"void handleEventMsg(int eventType, String data){\"}],\"type\":\"code-line\"},{\"id\":\"1D_ZQDFhp-mTLmCGpGP8B\",\"children\":[{\"text\":\" switch (eventType) {\"}],\"type\":\"code-line\"},{\"id\":\"B64amKb0-dRhqvjpn-zXZ\",\"children\":[{\"text\":\" case ITMG_MAIN_EVENT_TYPE.ITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRECOGNITION_COMPLETE:\"}],\"type\":\"code-line\"},{\"id\":\"69RJA29PGwaWYVYxtFNxL\",\"children\":[{\"text\":\" {\"}],\"type\":\"code-line\"},{\"id\":\"JuOd8UdQMd_j1QI6KCWB1\",\"children\":[{\"text\":\" HandleSTREAM2TEXTComplete(data,true);\"}],\"type\":\"code-line\"},{\"id\":\"B12_1DlWciAtlUp0k6Kf9\",\"children\":[{\"text\":\" break;\"}],\"type\":\"code-line\"},{\"id\":\"_4LSn18Wvp9oMsfOGuuxG\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"uGEXHKTLABItTVVLE4pvh\",\"children\":[{\"text\":\" ...\"}],\"type\":\"code-line\"},{\"id\":\"UBnrF6TyuLD_Xs6p57_T2\",\"children\":[{\"text\":\" case ITMG_MAIN_EVENT_TYPE.ITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRECOGNITION_IS_RUNNING:\"}],\"type\":\"code-line\"},{\"id\":\"54Pul4F5x_iW3WpkuF_4k\",\"children\":[{\"text\":\" {\"}],\"type\":\"code-line\"},{\"id\":\"AmthAii2bMaogm5pLcpwl\",\"children\":[{\"text\":\" HandleSTREAM2TEXTComplete(data, false);\"}],\"type\":\"code-line\"},{\"id\":\"xgZvOfWG_ImulAB6MnH1K\",\"children\":[{\"text\":\" break;\"}],\"type\":\"code-line\"},{\"id\":\"Jhcf_cgwlt5nHRHyJOPCD\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"D4fAX7dwX-w59pnW8HiE1\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"dPeEndHkoWFUZpXD_MF-a\",\"children\":[{\"text\":\"}\"}],\"type\":\"code-line\"},{\"id\":\"tGJdy1zNhmb2AtJVm9FrV\",\"children\":[{\"text\":\"ITMGContext.GetInstance().SetEvent(handleEventMsg);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"v1qM__Vwsl5yHTDd26VDQ\",\"children\":[{\"text\":\"Voice Message Recording\"}],\"nodeId\":\"voice-message-recording\",\"type\":\"h2\"},{\"id\":\"Sy9dgSfPFnjICTrA-MRiy\",\"children\":[{\"b\":1,\"text\":\"The recording process is as follows: start recording > stop recording > return recording callback > start the next recording.\"}],\"type\":\"p\"},{\"id\":\"xDXL9oaue7DDsVZLUChae\",\"children\":[{\"text\":\"Voice messaging and speech-to-text APIs\"}],\"nodeId\":\"voice-messaging-and-speech-to-text-apis2\",\"type\":\"h3\"},{\"id\":\"nkiwv6wiXvnEQY8dgHHSo\",\"children\":[{\"id\":\"hYAqpIaSTs8lXkNRmBMNH\",\"children\":[{\"id\":\"EeGqODqdnGJbYEkPU6bE1\",\"children\":[{\"id\":\"RH1ubiTYcwkvpTyLq-Gc1\",\"children\":[{\"text\":\"API\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"xgxMiwygV1ddKA5GBeaNf\",\"children\":[{\"id\":\"i-L5NRI8rK_tcqgEbYM52\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"rxFNCRIzxjZgVvU5oIZab\",\"children\":[{\"id\":\"WAXuSnAxUY55-eW3SzGkw\",\"children\":[{\"id\":\"B33smx28PQu9Aks7H0Ytp\",\"children\":[{\"text\":\"StartRecording\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"kkUUlfUT2L81Si5Dqbx2T\",\"children\":[{\"id\":\"WIVXPAPBSxMZlJ0uXpcw-\",\"children\":[{\"text\":\"Starts recording.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"ZbFdgYiALHiiiGhswOwH1\",\"children\":[{\"id\":\"JEkC2NDBzjZ5Y2l3FDCNM\",\"children\":[{\"id\":\"oUinG73aTZCHoCyF88r5l\",\"children\":[{\"text\":\"PauseRecording\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"8x34y6ll1yiLdBzrSK90b\",\"children\":[{\"id\":\"5qtE1zMc1aZ7F-zpfpkYy\",\"children\":[{\"text\":\"Pauses recording.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"sSEATuUkOosUaOEwOSobs\",\"children\":[{\"id\":\"m8p_qspLl6BjWmi8eFngo\",\"children\":[{\"id\":\"XKh4A0rXaGMSNUxh8taZR\",\"children\":[{\"text\":\"ResumeRecording\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"dhGMI148m7boZnujCSBBb\",\"children\":[{\"id\":\"jmhsu5CLm8vyNqqNthrAI\",\"children\":[{\"text\":\"Resumes recording.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"U8Ok3OLMNQdT6jZ07p2vb\",\"children\":[{\"id\":\"qVGxydXvKtjClZqFtx_jD\",\"children\":[{\"id\":\"XhJ1kUI5yqDDx3UB1-SuY\",\"children\":[{\"text\":\"StopRecording\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"k-jwO2IkfcjvBgNDmhR85\",\"children\":[{\"id\":\"d1bbF6BWWi0TLnkl1Te6_\",\"children\":[{\"text\":\"Stops recording.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"C5FjM6c-aLTAaEI-L3bBn\",\"children\":[{\"id\":\"S2pNxy6ardFIilU9DghWy\",\"children\":[{\"id\":\"E8LmTNnvb7_Ki1yLdIU9M\",\"children\":[{\"text\":\"CancelRecording\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"19AWIDqXgpSRoHDfFDKzO\",\"children\":[{\"id\":\"K-t42WJbxaRt3uavP1AIz\",\"children\":[{\"text\":\"Cancels recording.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"rowHeader\":true,\"type\":\"table\",\"widths\":[50,50],\"widthMode\":\"percentage\"},{\"id\":\"ZNhRKKdQHkZTePZGdwgk_\",\"children\":[{\"text\":\"Starting recording\"}],\"nodeId\":\"starting-recording\",\"type\":\"h3\"},{\"id\":\"Vb_PgODsymAf8tbMYbNKI\",\"children\":[{\"text\":\"This API is used to start recording.\"}],\"type\":\"p\"},{\"id\":\"4xhZYGDvtmk12tjIVGDFF\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype8\",\"type\":\"h4\"},{\"id\":\"UP25V51uWYK3n2Z4n13oe\",\"children\":[{\"id\":\"ZhKkymkAlZhTau46LEQTq\",\"children\":[{\"text\":\"Future StartRecording(String filePath)\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"Uguseh-bSR_9pU4QEepU2\",\"children\":[{\"id\":\"GoVIgA6PEonGSiJsDsllP\",\"children\":[{\"id\":\"F6czPFgQJRd8vLOkc9C7S\",\"children\":[{\"id\":\"4DB9A64TWgXfu_QQ7y7Zy\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ZmxUNCgmiaGeEvnCdWr8V\",\"children\":[{\"id\":\"EV8XWBeHtP3PJlW79A8wC\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"5890ndCEjZ2_eIt5epiJn\",\"children\":[{\"id\":\"6O2Grih3WGvDVyajUmn1_\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"rpA_C7sps1G6CLGLZX5mw\",\"children\":[{\"id\":\"EJwalrMbFphtmn1Ix1RPD\",\"children\":[{\"id\":\"0tQb1LLasMAPKgMIjo1sA\",\"children\":[{\"text\":\"filePath\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"6dH9eQT_AMgrWz0qqKy_G\",\"children\":[{\"id\":\"maIMXQol8lpfTrgdgqfIk\",\"children\":[{\"text\":\"string\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"AbJRvDbWGWT4Y6BZZmMXC\",\"children\":[{\"id\":\"99HIdYKpDF0fQQB5Pme1Y\",\"children\":[{\"text\":\"Path of the stored voice message file\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"rowHeader\":true,\"type\":\"table\",\"widths\":[33.33,33.33,33.34],\"widthMode\":\"percentage\"},{\"id\":\"pZXMMzR73DaeXwPT7OMSq\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code7\",\"type\":\"h4\"},{\"id\":\"LlFWayITAyhGrex_qZprB\",\"children\":[{\"id\":\"BOUeaH0qXpcsGA53iP_hH\",\"children\":[{\"text\":\"string filepath = \\\"xxxx/xxx.silk\\\";\"}],\"type\":\"code-line\"},{\"id\":\"gVVPFBkoOjkIQT6pCgTpw\",\"children\":[{\"text\":\"int res = await ITMGContext.GetInstance().GetPTT().StartRecording(filepath);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"o3MKeEqwB_EoLRyuTnMp_\",\"children\":[{\"text\":\"Stopping recording\"}],\"nodeId\":\"stopping-recording\",\"type\":\"h3\"},{\"id\":\"bYt0K5N7C6sBWjD2WM0PR\",\"children\":[{\"text\":\"This API is used to stop recording. It is async, and a callback for recording completion will be returned after recording stops. A recording file will be available only after recording succeeds.\"}],\"type\":\"p\"},{\"id\":\"QcWSQMn75r_QwOPfa8Tbp\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype9\",\"type\":\"h4\"},{\"id\":\"EJ2F6qBX3m0Ioh9xZDk07\",\"children\":[{\"id\":\"4_SX8hFgA7kZA2edGQQh2\",\"children\":[{\"text\":\"Future StopRecording() \"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"K1p6NAht1yUCtS1FjMUHG\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code8\",\"type\":\"h4\"},{\"id\":\"fFUnXL34EB8eVP8744dKu\",\"children\":[{\"id\":\"ds76mqSpJ5moHjqgli3y5\",\"children\":[{\"text\":\"ITMGContext.GetInstance().GetPTT().StopRecording();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"Atu_8XBY9UnfXvFwrQ7o5\",\"children\":[{\"text\":\"Callback for recording start\"}],\"nodeId\":\"callback-for-recording-start\",\"type\":\"h3\"},{\"id\":\"kvPnNmk-4YTfTr3Y53-Wn\",\"children\":[{\"text\":\"A callback will be executed through a delegate function to pass a message when recording is completed.\"}],\"type\":\"p\"},{\"id\":\"CrZ4PW8YiOfVNHEGT3ep3\",\"children\":[{\"b\":1,\"text\":\"To stop recording, call \"},{\"b\":1,\"code\":1,\"text\":\"StopRecording\"},{\"text\":\". The callback for recording start will be returned after the recording is stopped.\"}],\"type\":\"p\"},{\"id\":\"OnGi6JpAGiKfsCDXcObfE\",\"children\":[{\"id\":\"2Lr7r-E5KF9jFVCV8HYLV\",\"children\":[{\"id\":\"YMSAM9-KluQmr9-Gsp1--\",\"children\":[{\"id\":\"WV02oFDHTyeoRNZV7qfZp\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"pctjH7Lo6coPccfkwPVsn\",\"children\":[{\"id\":\"_b1Fmd-E9O7rILn0w7fw_\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"cBKOukNCJxDtlER8t7X_X\",\"children\":[{\"id\":\"6dTFNyt9bSAvUp-6KCoAd\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"nzCp5EuMgfLvBr0124Lyv\",\"children\":[{\"id\":\"8IGI8ulHiuXW2Prsuv_71\",\"children\":[{\"id\":\"otZTYpTODSStSTWsJioPa\",\"children\":[{\"text\":\"code\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"SoUE31YuEeH53IzGdDQqu\",\"children\":[{\"id\":\"uUcIF32gKOYibZxJPG4mN\",\"children\":[{\"text\":\"string\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"xXg5DksLz0yiFYaCAk1a-\",\"children\":[{\"id\":\"pmQ1sM1ZAUroh-fIWhU2P\",\"children\":[{\"text\":\"`0`: Recording is completed.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"0CpeuANzJrWHJj61neVBx\",\"children\":[{\"id\":\"qacNDe2uhq37W-Iq3w8Aj\",\"children\":[{\"id\":\"qdib1QQEIXiW-AE0fBZ5i\",\"children\":[{\"text\":\"filepath\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"FIHsXczUvI6WBQP57Wwu5\",\"children\":[{\"id\":\"n8fO_WOtMn_qs7nTw4z4O\",\"children\":[{\"text\":\"string\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"kS6gwuGhQnTM39CZugWZ6\",\"children\":[{\"id\":\"ArTBNOhC7cMyziNeJbVIo\",\"children\":[{\"text\":\"Path of the stored recording file, which must be accessible and cannot be the `fileid`.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"rowHeader\":true,\"type\":\"table\",\"widths\":[17,18,65],\"widthMode\":\"percentage\"},{\"id\":\"AT9nL8sV8IYuJnvJrQiGI\",\"children\":[{\"text\":\"Error codes\"}],\"nodeId\":\"error-codes2\",\"type\":\"h4\"},{\"id\":\"LLUaixTd-0b-yR4sySP1N\",\"children\":[{\"id\":\"ttEQzsaS3PulFB1GJqegu\",\"children\":[{\"id\":\"ONbjcFUdMMVj-ocR59fzX\",\"children\":[{\"id\":\"f1bvEZ0EwAqmxab_cR2Lb\",\"children\":[{\"text\":\"Error Code\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"_hx8xcn0-EGiogYOldze0\",\"children\":[{\"id\":\"-uIvgC_q9Ou1ryFWlZNGs\",\"children\":[{\"text\":\"Cause\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"d4nujHEV6ThhHQ4TxsFGJ\",\"children\":[{\"id\":\"F00klzMQvAVhSyu8oEo6Z\",\"children\":[{\"text\":\"Solution\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"CJZUrhVsV0KvsDockDy5I\",\"children\":[{\"id\":\"BMnOKNdd4YXAz8Msd_4YO\",\"children\":[{\"id\":\"jDoeNona8epmnV2kr7Ir0\",\"children\":[{\"text\":\"4097\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"uGryXEGn5KDYZ_M0XDpu2\",\"children\":[{\"id\":\"DC4eSZIoAcsyeD9eVtoBx\",\"children\":[{\"text\":\"A parameter is empty.\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"PJf45P0Hn5PNwNFJ7nxxG\",\"children\":[{\"id\":\"xvuzJGOEezBHvBJ9RjmuF\",\"children\":[{\"text\":\"Check whether the API parameters in the code are correct.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"MgKwObQrdtkqMgkLwWmap\",\"children\":[{\"id\":\"qM9G0HatixaukDd6Q0h-b\",\"children\":[{\"id\":\"Ktl5-k_jTNtQX4V8F-wv4\",\"children\":[{\"text\":\"4098\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"2p9Yw3fUe2t6v6d2rv5QO\",\"children\":[{\"id\":\"3I295kEavipGtxjO8fACf\",\"children\":[{\"text\":\"An initialization error occurred.\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"FPIwl5wp4UhXpwagZrp6z\",\"children\":[{\"id\":\"R55oFWw9PTWJmkpAYd4of\",\"children\":[{\"text\":\"Check whether the device is being used, whether the permissions are normal, and whether the initialization is normal.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"baIbGPFXKc2I5j0EN_nMX\",\"children\":[{\"id\":\"hQLWPNf2NnaSBBf5-CaBX\",\"children\":[{\"id\":\"MVZxJXHGeUudGhI9-euEl\",\"children\":[{\"text\":\"4099\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Ph_HwqUmWGl_LZ5cd66e-\",\"children\":[{\"id\":\"-CQGwjGhX0D1F5NOwlDZE\",\"children\":[{\"text\":\"Recording is in progress.\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"T3nZBRfr_29R-jSg6G_Ar\",\"children\":[{\"id\":\"vM2_m0V17AA6Y3f-m2I7J\",\"children\":[{\"text\":\"Make sure that the SDK recording feature is used at the right time.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"vKU_AwxQh3AQJsm9crmXM\",\"children\":[{\"id\":\"7YvoFpg4ck-ITLbU7YQi-\",\"children\":[{\"id\":\"vkvFxb0dfJdVRsXCFLJDI\",\"children\":[{\"text\":\"4100\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"d6uUPonKRO9Z3ILdipsIH\",\"children\":[{\"id\":\"ZQRdp5yvsL6bVWmJggeTq\",\"children\":[{\"text\":\"No audio data is captured.\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"N5j4SrLYYZWP6H3S5NpJw\",\"children\":[{\"id\":\"WbRNztowu8TPgC04DkoWU\",\"children\":[{\"text\":\"Check whether the mic is working properly.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"_DdsC84d4-ErIvZCu1ZCs\",\"children\":[{\"id\":\"BxidPAk4rGw4OpDwrzvKW\",\"children\":[{\"id\":\"DaRE6OjJuu5Ft3Tm05AE3\",\"children\":[{\"text\":\"4101\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"eJwq9WZReWCdQ0RM2L2HU\",\"children\":[{\"id\":\"MUDhvMl0xD9hpzaC-9PO4\",\"children\":[{\"text\":\"An error occurred while accessing the file during recording.\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"OEywn1Q9YIfzF-wBvmQeU\",\"children\":[{\"id\":\"HZnUS9j9EKboVcU55zqyJ\",\"children\":[{\"text\":\"Ensure the existence of the file and the validity of the file path.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"nskph6pEcgTjEA5kKnbMV\",\"children\":[{\"id\":\"IlvifGq-97vGXZQNc0yJU\",\"children\":[{\"id\":\"o-fvw4J1KvW1AhLc9cTAX\",\"children\":[{\"text\":\"4102\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"JZukLfUlj19pbX3kyfqSM\",\"children\":[{\"id\":\"3PEEKStl82LqZ-UO9KLA4\",\"children\":[{\"text\":\"The mic is not authorized.\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"pXtH0mFvr4Z04JqDErJot\",\"children\":[{\"id\":\"1B7T81jOL9EBMnFzK759H\",\"children\":[{\"text\":\"The mic permission is required for using the SDK. To add the permission, see the SDK project configuration document for the corresponding engine or platform.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"DaWOabf7YK_hp-Vi4bON9\",\"children\":[{\"id\":\"Uc3BaMGidnMPMV4feMu4e\",\"children\":[{\"id\":\"AbR2eKWCRjlI87PH5rtXg\",\"children\":[{\"text\":\"4103\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"FXNxHKg7kgtsVL5_HlB-U\",\"children\":[{\"id\":\"u2Lz_H0hHgPudIy-To_yK\",\"children\":[{\"text\":\"The recording duration is too short.\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"0n-6kBWJdOKIdTLdWhzn4\",\"children\":[{\"id\":\"sS1nxPjo-YaWANmJ0UdpE\",\"children\":[{\"text\":\"The recording duration should be in ms and longer than 1,000 ms.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"lDYqZiPTCVIEaenPjaemf\",\"children\":[{\"id\":\"gZHJpPqsKFkdWKS0JKHly\",\"children\":[{\"id\":\"0C6LN790QdWyhOA1Feenp\",\"children\":[{\"text\":\"4104\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"4FJSTixJQwje6iBDMwbtu\",\"children\":[{\"id\":\"XMwInkE62pcwdY4nJY9PZ\",\"children\":[{\"text\":\"No recording operation is started.\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"bND3umL5Fop0W5Gkm7p6w\",\"children\":[{\"id\":\"HjRXBC9PfC28g4DOGG-yq\",\"children\":[{\"text\":\"Check whether the recording starting API has been called.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"rowHeader\":true,\"type\":\"table\",\"widths\":[13,39,48],\"widthMode\":\"percentage\"},{\"id\":\"kVCN3fbghT2VbUxi-BYJ3\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code9\",\"type\":\"h4\"},{\"id\":\"wGjUHaLCv5YO4tPeh0LpN\",\"children\":[{\"id\":\"mIJdiY0VMnFOb5FotAZn1\",\"children\":[{\"text\":\"void handleEventMsg(int eventType, String data){\"}],\"type\":\"code-line\"},{\"id\":\"v_C30XDWvFhMpQc9pl89k\",\"children\":[{\"text\":\" switch (eventType) {\"}],\"type\":\"code-line\"},{\"id\":\"_otimCU_xnO2C278Wz65l\",\"children\":[{\"text\":\" case ITMG_MAIN_EVENT_TYPE.ITMG_MAIN_EVENT_TYPE_ENTER_ROOM:\"}],\"type\":\"code-line\"},{\"id\":\"A43t6a5j2o3V31qx2zFNy\",\"children\":[{\"text\":\" {\"}],\"type\":\"code-line\"},{\"id\":\"BGDq5tpz9tLK64FxHfiWR\",\"children\":[{\"text\":\" // Process\"}],\"type\":\"code-line\"},{\"id\":\"AVajJEbGbUZRmiqdL6Wyi\",\"children\":[{\"text\":\" break;\"}],\"type\":\"code-line\"},{\"id\":\"uEM0Hkl83nj1FsQRX1Or-\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"2JEo3tewN6iFqHBweYxI3\",\"children\":[{\"text\":\" ...\"}],\"type\":\"code-line\"},{\"id\":\"LCF9sps1lX_v2sLf6Qf-p\",\"children\":[{\"text\":\" case ITMG_MAIN_EVENT_TYPE.ITMG_MAIN_EVNET_TYPE_PTT_RECORD_COMPLETE:\"}],\"type\":\"code-line\"},{\"id\":\"azjDCdzthXKd7O74ZyH9n\",\"children\":[{\"text\":\" {\"}],\"type\":\"code-line\"},{\"id\":\"XSC1QSPET0a3xh1HtjA8H\",\"children\":[{\"text\":\" // Process\"}],\"type\":\"code-line\"},{\"id\":\"rj7OLV9MjorpiB4nJ0GsT\",\"children\":[{\"text\":\" break;\"}],\"type\":\"code-line\"},{\"id\":\"d0-2wxHRRk1GkBI8iPCbx\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"0JfSWPJPKLZdJV3RGF4lO\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"2gvgYN1NvO_U_4HFsgv1z\",\"children\":[{\"text\":\"}\"}],\"type\":\"code-line\"},{\"id\":\"vH_f0M-gxjJM76ZVkSYzr\",\"children\":[{\"text\":\"ITMGContext.GetInstance().SetEvent(handleEventMsg);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"NIkFYCQ6JwMtqy52H-X6C\",\"children\":[{\"text\":\"Pausing recording\"}],\"nodeId\":\"pausing-recording\",\"type\":\"h3\"},{\"id\":\"zjx1pOlbV4hALTBcd92c5\",\"children\":[{\"text\":\"This API is used to pause recording. If you want to resume recording, call the \"},{\"code\":1,\"text\":\"ResumeRecording\"},{\"text\":\" API.\"}],\"type\":\"p\"},{\"id\":\"6Pkvd4ut8oE0v4y-7uDCg\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype10\",\"type\":\"h4\"},{\"id\":\"qsq09FOnZ_9QENpsrNi6d\",\"children\":[{\"id\":\"jxOMEuauDFnZ8MzgwwJzi\",\"children\":[{\"text\":\"Future PauseRecording()\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"tty3f-FeuJXiG5c9i3iBa\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code10\",\"type\":\"h4\"},{\"id\":\"lzq0oTDnSUZ6y-oSptjcd\",\"children\":[{\"id\":\"6naMem4TeJwM33cvRrnKh\",\"children\":[{\"text\":\"ITMGContext.GetInstance().GetPTT().PauseRecording();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"WDHqF_jcqqzHVTWUGqBCb\",\"children\":[{\"text\":\"Resuming recording\"}],\"nodeId\":\"resuming-recording\",\"type\":\"h3\"},{\"id\":\"phnwMR2Fj2fq6GdHJxBxn\",\"children\":[{\"text\":\"This API is used to resume recording.\"}],\"type\":\"p\"},{\"id\":\"9Se3_ex0pGde2EcIo4ZF1\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype11\",\"type\":\"h4\"},{\"id\":\"yDNlaHjhkQIkmd1eoY3Nw\",\"children\":[{\"id\":\"MZ5sNysRrAxVTZklWgIDT\",\"children\":[{\"text\":\"Future ResumeRecording()\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"hoDnFt9v3z4uuYSmeQh5e\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code11\",\"type\":\"h4\"},{\"id\":\"Y2YZuP19PDIh2ynW8AXVg\",\"children\":[{\"id\":\"FSpIO3TnpOFXgps4Itj_c\",\"children\":[{\"text\":\"ITMGContext.GetInstance().GetPTT().ResumeRecording();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"qMNR688jQdAQjGPc40Ex5\",\"children\":[{\"text\":\"Canceling recording\"}],\"nodeId\":\"canceling-recording\",\"type\":\"h3\"},{\"id\":\"G-E3AhC0YjiRz1tVzdHrC\",\"children\":[{\"text\":\"This API is used to cancel recording. \"},{\"b\":1,\"text\":\"There is no callback after cancellation\"},{\"text\":\".\"}],\"type\":\"p\"},{\"id\":\"lqJH9Y5cM1YFNeqzb4WL_\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype12\",\"type\":\"h4\"},{\"id\":\"rXC58EyZvW736CLH5M0wZ\",\"children\":[{\"id\":\"EfAU53lrtEnkVT4xsTFn_\",\"children\":[{\"text\":\"Future CancelRecording()\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"1OwSt_WKNMP0hJaa0ghme\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code12\",\"type\":\"h4\"},{\"id\":\"NgB1h5AUO50zL4nlSFR64\",\"children\":[{\"id\":\"snTkm5tZQdWKRTXNvaVCH\",\"children\":[{\"text\":\"ITMGContext.GetInstance().GetPTT().CancelRecording();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"nkTrJz7hEKN0kdrSARI1c\",\"children\":[{\"text\":\"Voice Message Upload, Download, and Playback\"}],\"nodeId\":\"voice-message-upload.2C-download.2C-and-playback\",\"type\":\"h2\"},{\"id\":\"M2niJ6Bn6d1xpywwU6L_N\",\"children\":[{\"id\":\"Iuin_55wZCfh2-Q-pYiFE\",\"children\":[{\"id\":\"eGU0PolClA032XexGJCRh\",\"children\":[{\"id\":\"meZHNQRrSoHPNegP5GblE\",\"children\":[{\"text\":\"API\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"DzG26rbSP4fi0qNf9vWo1\",\"children\":[{\"id\":\"Q2G7lM5cR_DJHEpIvMvnr\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"NVmpfZ0OJKthvUFQ5HDwK\",\"children\":[{\"id\":\"yHkBia0Q7l5dwzxlduOx8\",\"children\":[{\"id\":\"QM35EyGY7_E8QqtxCYjHN\",\"children\":[{\"text\":\"UploadRecordedFile\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"1VQP7X_jYlBmLqO_dxhRS\",\"children\":[{\"id\":\"RZlCs4amvX5gaZqoSxC6r\",\"children\":[{\"text\":\"Uploads an audio file.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"WMkrLRhUpenGYQjhxKWOJ\",\"children\":[{\"id\":\"Pka9zcGLi9I_0eXxXkh0h\",\"children\":[{\"id\":\"8c2qZgzPgj3-g2aycve9J\",\"children\":[{\"text\":\"DownloadRecordedFile\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"icQZJZIye3kYAZVjCx1qp\",\"children\":[{\"id\":\"0t-PlPBGl5bJyv8yGUtjY\",\"children\":[{\"text\":\"Downloads an audio file.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"CmrD-C06w-nj46FuUO_Mw\",\"children\":[{\"id\":\"kbSPF6wvLy2ZFkGS5hjeZ\",\"children\":[{\"id\":\"gTfwftYVECz0bTs6i51Xn\",\"children\":[{\"text\":\"PlayRecordedFile\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"7mng74u7DUB2xWumDdB_K\",\"children\":[{\"id\":\"4zAlGzFPyZlSytvkGZFTX\",\"children\":[{\"text\":\"Plays back audio.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"RvGdNzbHCJYFDTetSzHbc\",\"children\":[{\"id\":\"asP0wT0RYxb-oq02znNVF\",\"children\":[{\"id\":\"JqVM4UggCoBG9sXkfGvtY\",\"children\":[{\"text\":\"StopPlayFile\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"fOAe7jEbKH-lBhFaA6Paf\",\"children\":[{\"id\":\"OWX5z3qJqIiD_VFn1i6fc\",\"children\":[{\"text\":\"Stops playing back audio.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"Vwy9znnh1RQY0dfR9k3Cn\",\"children\":[{\"id\":\"gFNqO9sD3oRflyTno4GQ_\",\"children\":[{\"id\":\"zRf7XXtS8voMMF4tBcyzz\",\"children\":[{\"text\":\"GetFileSize\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"E_CgLevjVs2wU1XThFuu4\",\"children\":[{\"id\":\"C7mSKpS6sj_Mob14_V7bz\",\"children\":[{\"text\":\"Gets the audio file size.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"Nxst5zSRPu4Kv0bPHk1ch\",\"children\":[{\"id\":\"NYG2wxPYSVfGYSpGnUp83\",\"children\":[{\"id\":\"cbdy544ogk15VzfWHjtu4\",\"children\":[{\"text\":\"GetVoiceFileDuration\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Ho0enUfyV5pY9yObvZEMI\",\"children\":[{\"id\":\"Gej3gf9PWQIw8Ug6EFbxQ\",\"children\":[{\"text\":\"Gets the audio file duration.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"rowHeader\":true,\"type\":\"table\",\"widths\":[50,50],\"widthMode\":\"percentage\"},{\"id\":\"4l9YHo8CVZ7NNCeLlO9A1\",\"children\":[{\"text\":\"Uploading an audio file\"}],\"nodeId\":\"uploading-an-audio-file\",\"type\":\"h3\"},{\"id\":\"8sFu8HbpBIkG17jBe68V5\",\"children\":[{\"text\":\"This API is used to upload an audio file.\"}],\"type\":\"p\"},{\"id\":\"EutTDod3Pz_6Si13zNSCD\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype13\",\"type\":\"h4\"},{\"id\":\"NjEu3Xcj90yZbP6-4X-al\",\"children\":[{\"id\":\"P2OEWlMV0qtJXlFbvdS4w\",\"children\":[{\"text\":\"Future UploadRecordedFile(String filePath) \"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"DI4J9TzI33anf7n6cxc0w\",\"children\":[{\"id\":\"hdIeS-sEwMgKO2lD8RnNJ\",\"children\":[{\"id\":\"ODa2lriyqdZDBdPywCtNl\",\"children\":[{\"id\":\"M2T2ZWByIaLZNTDoD5nbf\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"AqYIQiuF1NyaPjk_984bQ\",\"children\":[{\"id\":\"G9decp33bcwqGYAwWhAa9\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"eY1pn6MNgEC2GBQS-o4W9\",\"children\":[{\"id\":\"Qy3vDaHyWyQukFzcfiDxb\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"IdStOk09DEo9iQgBnYkaQ\",\"children\":[{\"id\":\"yNqejF3GUe_pjBq5kuN3D\",\"children\":[{\"id\":\"j1tbA9lUWWSh-mC6o8poY\",\"children\":[{\"text\":\"filePath\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"sYm88omfzsl-MFm-J4kjV\",\"children\":[{\"id\":\"3W5exF9V4p4-BGGGZTbiN\",\"children\":[{\"text\":\"String\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"UYnr6jolIOZE9epQEWrwp\",\"children\":[{\"id\":\"N3VVr6I01DzZUp16pecsl\",\"children\":[{\"text\":\"Path of the uploaded audio file, which is a local path.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"rowHeader\":true,\"type\":\"table\",\"widths\":[22,26.33,51.67],\"widthMode\":\"percentage\"},{\"id\":\"I4fZ9Mzrr0SUryduLZG6I\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code13\",\"type\":\"h4\"},{\"id\":\"nT_p8teaFVg9rwvWup2Jm\",\"children\":[{\"id\":\"kgBYxoJhUO71ObwydDxZK\",\"children\":[{\"text\":\"ITMGContext.GetInstance().GetPTT().UploadRecordedFile(_filePath);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"gx4y_wCBFYFw_BOPrRIxW\",\"children\":[{\"text\":\"Callback for audio file upload completion\"}],\"nodeId\":\"callback-for-audio-file-upload-completion\",\"type\":\"h3\"},{\"id\":\"pGNFkvYARRg1c_TOm1VVD\",\"children\":[{\"text\":\"After the audio file is uploaded, the event message \"},{\"code\":1,\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_UPLOAD_COMPLETE\"},{\"text\":\" will be returned, which will be identified in the \"},{\"code\":1,\"text\":\"OnEvent\"},{\"text\":\" function.\\nThe passed parameters include \"},{\"code\":1,\"text\":\"result\"},{\"text\":\", \"},{\"code\":1,\"text\":\"file_path\"},{\"text\":\", and \"},{\"code\":1,\"text\":\"file_id\"},{\"text\":\".\"}],\"type\":\"p\"},{\"id\":\"lTwQG4ui7fQZULxNzvUwD\",\"children\":[{\"id\":\"88MyZIrWcNfyKjQLfPVaA\",\"children\":[{\"id\":\"HQcurCa9ZnHLS-ihA8aZk\",\"children\":[{\"id\":\"hmG41drHQ6lIMAWG1yiJm\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"DA4mVsrbvQFXNlmnP9yrV\",\"children\":[{\"id\":\"_c6QbQjTEY8YrJPFbjnsI\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"DZuogNd8eu4evQb9ueVn5\",\"children\":[{\"id\":\"vQU9thaflXGlgfhItWmL1\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"ks7MjQEBhTQcrQV6qBH8p\",\"children\":[{\"id\":\"iGl0os8SoWwRg40pb2xfE\",\"children\":[{\"id\":\"CQD3BaRFutaAOrQgH_N0O\",\"children\":[{\"text\":\"result\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"X09-QRKgLvJbIvAR1b_t9\",\"children\":[{\"id\":\"S3eyx7S4VNDFLKUfv-J8x\",\"children\":[{\"text\":\"number\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"i2kU-Su7TLNjBwUpndeo8\",\"children\":[{\"id\":\"Vkq6S2HSDylbkrhA-Gv4O\",\"children\":[{\"text\":\"`0`: Recording is completed.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"mwwXXaxH3EX9Z1ZJDSSDQ\",\"children\":[{\"id\":\"vcvECfDjmAF5W86hd-1pT\",\"children\":[{\"id\":\"yxJUMEA8KBJ5WOkXVLg8v\",\"children\":[{\"text\":\"filepath\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"9KifUsbMoyTsAntpgY_LO\",\"children\":[{\"id\":\"dFOUH-6D6kut3jCuo6EsH\",\"children\":[{\"text\":\"string\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"HYqpjK7mjB8YTmfmzXWjV\",\"children\":[{\"id\":\"hwiBBEpaQYMrtKhMwR7DI\",\"children\":[{\"text\":\"Path of the stored recording file\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"zwvInpG0IEtrHxJ0C5adi\",\"children\":[{\"id\":\"uZVQUQHuppIHcktp3bFbg\",\"children\":[{\"id\":\"PwQXqFbbOXLTVCUTMO3kk\",\"children\":[{\"text\":\"fileid\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"8nBC66kQAH3PI3qwiSM_y\",\"children\":[{\"id\":\"ycd5CBHUrpmvM1YUxmxs0\",\"children\":[{\"text\":\"string\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"6ovD4Ledcb3GJ2D3MZg18\",\"children\":[{\"id\":\"X-NLiY_5CbOVlv98X4yt9\",\"children\":[{\"text\":\"File URL\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"rowHeader\":true,\"type\":\"table\",\"widths\":[33.33,33.33,33.34],\"widthMode\":\"percentage\"},{\"id\":\"LaHcF5FJ2MtouN5e4d7xi\",\"children\":[{\"text\":\"Error codes\"}],\"nodeId\":\"error-codes3\",\"type\":\"h4\"},{\"id\":\"kgvUDSyE5Mh3RsgNlh4Ea\",\"children\":[{\"id\":\"N8TZUfbmRsyhRmzwCNZmB\",\"children\":[{\"id\":\"aiidazowKEKLVk-wd7gYj\",\"children\":[{\"id\":\"uLa_ztMv5un1twMvu5aw2\",\"children\":[{\"text\":\"Error Code\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ulAFv_b2df3COLQBTVkf4\",\"children\":[{\"id\":\"qITG6Ugzy0W1b0gJwGUrN\",\"children\":[{\"text\":\"Cause\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"JPkp2_LUit6yXx8R_zj34\",\"children\":[{\"id\":\"0z-dHKrbSDa3v5X7Wx77C\",\"children\":[{\"text\":\"Solution\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"HwQmO-u7oxlNFlJobTdH1\",\"children\":[{\"id\":\"QI5Eupbo9L5cWFugSEnAu\",\"children\":[{\"id\":\"EVng3UN84Td6-xCRE-cSN\",\"children\":[{\"text\":\"8193\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"nsZIQG80CqwD915nNwrOa\",\"children\":[{\"id\":\"tyVUMsEygNF1H5y_2knBU\",\"children\":[{\"text\":\"An error occurred while accessing the file during upload.\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"llXETcLfNzOMOeroySD9m\",\"children\":[{\"id\":\"eCDaPx-t38sTwv-BwigI2\",\"children\":[{\"text\":\"Ensure the existence of the file and the validity of the file path.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"jwuKKIQg99pNeGieR0gRo\",\"children\":[{\"id\":\"J-pJV4NQcEW4Gyyu8F0_Y\",\"children\":[{\"id\":\"rjaLRJJohdwH6aVDg7fRX\",\"children\":[{\"text\":\"8194\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"p0ZSf7Q48tQTjYJJYpqT_\",\"children\":[{\"id\":\"hptxUuZkH-bGufku7UYox\",\"children\":[{\"text\":\"Signature verification failed.\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Q1SMx5VsP6JJH1bgC6A4t\",\"children\":[{\"id\":\"rEqCH7JtToLHiGN5UAk-T\",\"children\":[{\"text\":\"Check whether the authentication key is correct and whether the voice messaging and speech-to-text feature is initialized.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"K92fX4Q38NJtx55lVRuCJ\",\"children\":[{\"id\":\"N5BconDXGES3J8ZqXLKkU\",\"children\":[{\"id\":\"N3Z2ND9SsnJKSe_nmwFoB\",\"children\":[{\"text\":\"8195\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"L05QFN_URK1YpQcxFvise\",\"children\":[{\"id\":\"xAb_8j28CSstdg2eKV40r\",\"children\":[{\"text\":\"A network error occurred.\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Td97JWahFHHwbSUPvWvxG\",\"children\":[{\"id\":\"EkrQnvX3UFNp8Y4pSICAV\",\"children\":[{\"text\":\"Check whether the device can access the internet.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"NjzuufxyAy4WbYIetodQe\",\"children\":[{\"id\":\"uX2Yp04Ul9w0AO6hg41X-\",\"children\":[{\"id\":\"Key6Z2EOm6B9G2ZjtV-4D\",\"children\":[{\"text\":\"8196\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"GynTo3nR-vLkDVypDnJTj\",\"children\":[{\"id\":\"8_MwwNFX1KNgwl57pGvKT\",\"children\":[{\"text\":\"The network failed while getting the upload parameters.\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"uSsscpV9Y-175Fx2qYyjh\",\"children\":[{\"id\":\"cfnZtS5ncPHDSKHgRWUDT\",\"children\":[{\"text\":\"Check whether the authentication is correct and whether the device network can normally access the internet.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"_TzklJHmDw8XQSw-GOmDQ\",\"children\":[{\"id\":\"Tc-Ukn6xu-p6PYO4Ydqc_\",\"children\":[{\"id\":\"ZowA4Y7sVYPsULFHfE3FB\",\"children\":[{\"text\":\"8197\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"tv0Rq4tMEsILQp9EPxPAA\",\"children\":[{\"id\":\"XWYdtAQ4deZJ5ilGxHY2l\",\"children\":[{\"text\":\"The packet returned during the process of getting the upload parameters is empty.\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"p2SipPlvrKtpuZprg2ZeS\",\"children\":[{\"id\":\"hzAXqKVj05DcquBbS9HNz\",\"children\":[{\"text\":\"Check whether the authentication is correct and whether the device network can normally access the internet.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"lJQBksQDVladLJJBo88MS\",\"children\":[{\"id\":\"HRC33uo2c-BXPgVuWIUrq\",\"children\":[{\"id\":\"7WkpHXGcf18xKCzLArhgB\",\"children\":[{\"text\":\"8198\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"AicCJ53hgLOvKpGh4eNXd\",\"children\":[{\"id\":\"NEktARLJ9sL1WxIHghmrL\",\"children\":[{\"text\":\"Failed to decode the packet returned during the process of getting the upload parameters.\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"L4-RMcNCHteLgHs61yaoK\",\"children\":[{\"id\":\"LDskz7fmNM55gP0N7snS8\",\"children\":[{\"text\":\"Check whether the authentication is correct and whether the device network can normally access the internet.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"YmsUyTtMa3lGoCroGnLgU\",\"children\":[{\"id\":\"-Iz7h7xLzcRy3BCtquvOk\",\"children\":[{\"id\":\"R4_XeFCHOC9e04JcPzPC3\",\"children\":[{\"text\":\"8200\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"8tNJaJ0GuInVjUyTFRze7\",\"children\":[{\"id\":\"NH7DBzkrM05t5wCcLtCOR\",\"children\":[{\"text\":\"No `appinfo` is set.\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"IFbaBv8Yjrpv6fXD0L0eG\",\"children\":[{\"id\":\"53VaW-uyH3QOIqmlY7QVT\",\"children\":[{\"text\":\"Check whether the `apply` API is called or whether the input parameters are empty.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"rowHeader\":true,\"type\":\"table\",\"widths\":[12,42,46],\"widthMode\":\"percentage\"},{\"id\":\"VUHb_lvo3jub63vv8M4sY\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code14\",\"type\":\"h4\"},{\"id\":\"06Bt4qpb3TkcwxAriSLpw\",\"children\":[{\"id\":\"k1wNPcf971O0f4z_4dUmP\",\"children\":[{\"text\":\"void handleEventMsg(int eventType, String data){\"}],\"type\":\"code-line\"},{\"id\":\"3FKvpiHxy_mA-CYR4NerA\",\"children\":[{\"text\":\" switch (eventType) {\"}],\"type\":\"code-line\"},{\"id\":\"o5dAxXB5yf8k6oLBjt11h\",\"children\":[{\"text\":\" ...\"}],\"type\":\"code-line\"},{\"id\":\"pKJ8qLUyUHox0LfYq573F\",\"children\":[{\"text\":\" case ITMG_MAIN_EVENT_TYPE.ITMG_MAIN_EVNET_TYPE_PTT_UPLOAD_COMPLETE:\"}],\"type\":\"code-line\"},{\"id\":\"qYVeUctoEHWZ2lo0hGEwp\",\"children\":[{\"text\":\" {\"}],\"type\":\"code-line\"},{\"id\":\"Vekm12FJBRE4_Ms033Eaw\",\"children\":[{\"text\":\" // Process\"}],\"type\":\"code-line\"},{\"id\":\"vM3C9VKLVVj9g9p2JmW3c\",\"children\":[{\"text\":\" break;\"}],\"type\":\"code-line\"},{\"id\":\"Te3SrdOFdZl9sYa1bkS1x\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"tYEwXIYe8WVQlWvjpMKJg\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"HRFuYC-LvkS6o_zTSWpYb\",\"children\":[{\"text\":\"}\"}],\"type\":\"code-line\"},{\"id\":\"oT9qrb88uj1ytww66Fpm1\",\"children\":[{\"text\":\"ITMGContext.GetInstance().SetEvent(handleEventMsg);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"pbbWKy7mVwv8jQWeefIjF\",\"children\":[{\"text\":\"Downloading the audio file\"}],\"nodeId\":\"downloading-the-audio-file\",\"type\":\"h3\"},{\"id\":\"SksaEpXvQ7UqLojb15C9E\",\"children\":[{\"text\":\"This API is used to download an audio file.\"}],\"type\":\"p\"},{\"id\":\"n0I-a5OMSEuDRTX9_OplW\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype14\",\"type\":\"h4\"},{\"id\":\"Oh24iIaAYn2S0CTPF9Es6\",\"children\":[{\"id\":\"qsDqKKjtcXxMQbPOlhpYf\",\"children\":[{\"text\":\"Future DownloadRecordedFile(String fileId, String filePath)\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"aAeF__9nx0HPWWv-5L5aC\",\"children\":[{\"id\":\"cr6aE6lD9sAqwKzreHKXz\",\"children\":[{\"id\":\"kzb2vioeaOHYT8BhHW2dY\",\"children\":[{\"id\":\"942UshUyB5fsTfYmAF63q\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"60YbqOZkLhe1d3Ibqmja3\",\"children\":[{\"id\":\"Io_-bPm76wr1rNiw-sJvj\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"LuAadnbcj0Vg8JJHsHN8f\",\"children\":[{\"id\":\"G1bJCa8WrxvFFXu2AJYEv\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"6FWux1etvaJF_WWupkox6\",\"children\":[{\"id\":\"tzxBFbYXPIWUxsKAcTRez\",\"children\":[{\"id\":\"VrpFEru6bXGM1asGpokbS\",\"children\":[{\"text\":\"fileId\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"8w9YOsEHHzUeKlPKNolY1\",\"children\":[{\"id\":\"x0MXbLAkXgh6Q4L8ZgejN\",\"children\":[{\"text\":\"string\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"L08_U4prvVprHzYBEVrp7\",\"children\":[{\"id\":\"vqNbKhSsbCl6zprL-ggv6\",\"children\":[{\"text\":\"File URL\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"1BIYTcly6LOzYbcG6YXrU\",\"children\":[{\"id\":\"8VXz33LM8__RtE_0-7744\",\"children\":[{\"id\":\"bxy-6Q5Tb_lY3162kOnaM\",\"children\":[{\"text\":\"filePath\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"2hVpGbbfso-gCDWw9_WYj\",\"children\":[{\"id\":\"sNEbfH7a4kHdzEAoqjAgz\",\"children\":[{\"text\":\"string\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"9RByIdS2PVA_vPZoH7A_U\",\"children\":[{\"id\":\"kZZkR8_Rm4Fh6ZZ83b51U\",\"children\":[{\"text\":\"Local path of the saved file, which must be accessible and cannot be the `fileid`.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"rowHeader\":true,\"type\":\"table\",\"widths\":[20,21,59],\"widthMode\":\"percentage\"},{\"id\":\"LF80vmJmgJf_3XFmOUIxX\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code15\",\"type\":\"h4\"},{\"id\":\"rNuksdFrqbksTl1j-93Ca\",\"children\":[{\"id\":\"ENp0OIr1-F1EukpoMcmHE\",\"children\":[{\"text\":\"ITMGContext.GetInstance().GetPTT().DownloadRecordedFile(_fileId, _filePath);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"vj3zY38Z9MGhHk8elSXnp\",\"children\":[{\"text\":\"Callback for audio file download completion\"}],\"nodeId\":\"callback-for-audio-file-download-completion\",\"type\":\"h3\"},{\"id\":\"fqpnA_wCDwgXOPOagx7rb\",\"children\":[{\"text\":\"After the audio file is downloaded, the event message \"},{\"code\":1,\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_DOWNLOAD_COMPLETE\"},{\"text\":\" will be returned, which will be identified in the \"},{\"code\":1,\"text\":\"OnEvent\"},{\"text\":\" function.\\nThe passed parameters include \"},{\"code\":1,\"text\":\"result\"},{\"text\":\", \"},{\"code\":1,\"text\":\"file_path\"},{\"text\":\", and \"},{\"code\":1,\"text\":\"file_id\"},{\"text\":\".\"}],\"type\":\"p\"},{\"id\":\"9a_x0Z_KB8GsJq562Z7Ri\",\"children\":[{\"id\":\"ysCuefjyfOMRhv2yWexAB\",\"children\":[{\"id\":\"IPARhhKadEUZ8N_ixNLM3\",\"children\":[{\"id\":\"EnYgR8jfDv-JTt2lxqQVu\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"zOCsns24fNUpiWwyIrFh6\",\"children\":[{\"id\":\"aZL3VpTwSOBwWIBY0u05S\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"NunuaAv_YZ9VEsFiXmPdX\",\"children\":[{\"id\":\"dqSUQzRKakuog-vOJhxmG\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"Tqk4Z4iZa3fUgQASywwUo\",\"children\":[{\"id\":\"jqhnDBN5LuZa0x1EjHUmQ\",\"children\":[{\"id\":\"7HISn1rBcxFdMlizLiFRG\",\"children\":[{\"text\":\"result\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Nh7jQPzWSgraTtXB-qA9H\",\"children\":[{\"id\":\"5KEqOafzbz8J3rMeNIDa6\",\"children\":[{\"text\":\"number\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"yBRreHIddeqGfn9nMVeEQ\",\"children\":[{\"id\":\"PZm_ZuEXRyjZmGGOpfjA3\",\"children\":[{\"text\":\"`0`: Download is completed.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"kS8Onyisv-FdGqIJq7av4\",\"children\":[{\"id\":\"glS_-OUmZWVBUAxj2XB7-\",\"children\":[{\"id\":\"NgsdEafvUK7gp0TpOwkor\",\"children\":[{\"text\":\"filepath\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"k8Xl0TOKTrfjrTwInwQUA\",\"children\":[{\"id\":\"VbuST6CaKedgBOg0TurBK\",\"children\":[{\"text\":\"string\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"-UyojCzEykLR_ZyfhyWmM\",\"children\":[{\"id\":\"cvysle7FiPkW_nQRqtVdv\",\"children\":[{\"text\":\"Path of the stored recording file\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"sPDtzk0fcJNYGL3Jxqjs4\",\"children\":[{\"id\":\"ym1GyUWy2yROhlFrFYSlx\",\"children\":[{\"id\":\"qh0vHE9RVgUcV24JUCagM\",\"children\":[{\"text\":\"fileid\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Jf-7zJyAiQuT3w4S_EV1V\",\"children\":[{\"id\":\"XHQFjxm7OMYzgAwCR-bTp\",\"children\":[{\"text\":\"string\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"b-wqYNfHQMwcb6OpULFYW\",\"children\":[{\"id\":\"xbnS1w8FNIrGbc3dFaC9x\",\"children\":[{\"text\":\"URL of the recording file, which will be retained on the server for 90 days.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"rowHeader\":true,\"type\":\"table\",\"widths\":[17,23,60],\"widthMode\":\"percentage\"},{\"id\":\"q8ox9x2KYUihMVYVfecgv\",\"children\":[{\"text\":\"Error codes\"}],\"nodeId\":\"error-codes4\",\"type\":\"h4\"},{\"id\":\"2yK7j6CaHXjA4ah-4nzUi\",\"children\":[{\"id\":\"JPwdm6dbBNdnutziydArK\",\"children\":[{\"id\":\"n4_X5hUzLH2jcH37XF75q\",\"children\":[{\"id\":\"f76phK1DdiG4GYkjqxSpM\",\"children\":[{\"text\":\"Error Code\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"7qscJdNydVJUN2I0wsmFc\",\"children\":[{\"id\":\"gONgApvxWnBMs-exPp_CE\",\"children\":[{\"text\":\"Cause\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"EDaO8xvDQ1R6lXnPDuXEk\",\"children\":[{\"id\":\"0BySlIlaI0p0jNzdxpBhi\",\"children\":[{\"text\":\"Solution\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"gBPE0-cQDxDMV6eEGHO3B\",\"children\":[{\"id\":\"-mNRuRV_NkRFv8G9gFakP\",\"children\":[{\"id\":\"gQ91f_GSxUU_29w34xVgF\",\"children\":[{\"text\":\"12289\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"6Viy_aIZrm6oAv3xs9xyu\",\"children\":[{\"id\":\"B_R1L9jqmqfkWYCV3pUIg\",\"children\":[{\"text\":\"An error occurred while accessing the file during download.\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"DbWgRhB2Dxv4YrIlvXeEM\",\"children\":[{\"id\":\"0BEDTlifvD3j97msIw_Xt\",\"children\":[{\"text\":\"Check whether the file path is valid.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"L-dExUoeLdWcbzPzKuN24\",\"children\":[{\"id\":\"ucPRSBhIj9i3X8ec8gHNg\",\"children\":[{\"id\":\"iGWyKKVxWX1KH8z5AZds8\",\"children\":[{\"text\":\"12290\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"tXVhH4ggJ6F-rgY2oR2Ua\",\"children\":[{\"id\":\"VZuHkzA86jHlX5q8Cjjg0\",\"children\":[{\"text\":\"Signature verification failed.\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"6OjghdI6-pkgKdQFeuwvL\",\"children\":[{\"id\":\"sMp7L02m2Q0kU3-84Fxkc\",\"children\":[{\"text\":\"Check whether the authentication key is correct and whether the voice messaging and speech-to-text feature is initialized.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"Or1Q6yuUTNKahMB_A6xEg\",\"children\":[{\"id\":\"ipFGhj1_AnxDB6s-V4Hy1\",\"children\":[{\"id\":\"uhH0PsxO2tfnLpJ2r2M4Y\",\"children\":[{\"text\":\"12291\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"2EmTGLXs4oYE_YsuW6gCJ\",\"children\":[{\"id\":\"7qWf0Z1zzKgeEugu6e66R\",\"children\":[{\"text\":\"A network storage system exception occurred.\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"LX_tnynLdpy30Ha5-7y9T\",\"children\":[{\"id\":\"aC9MdKYaUWn2EiiCjsZ8b\",\"children\":[{\"text\":\"The server failed to get the audio file. Check whether the API parameter `fileid` is correct, whether the network is normal, and whether the file exists in COS.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"pkpPRir0znABNDpeHhf68\",\"children\":[{\"id\":\"PG_omnCO2MKMUjFWdwBiD\",\"children\":[{\"id\":\"xF38XIXXe5qfecDhml7RM\",\"children\":[{\"text\":\"12292\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"9BRZBYcbg-CgzS4iwpO4y\",\"children\":[{\"id\":\"AbQ5o_UDciYLZJw_qIY8t\",\"children\":[{\"text\":\"A server file system error occurred.\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"9X_fHsf9Ji_Cei3naREmb\",\"children\":[{\"id\":\"8rCOQzi-QkcQQ9b0yOvNt\",\"children\":[{\"text\":\"Check whether the device can access the internet and whether the file exists on the server.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"wDF-sTesiadd-gJzT4bUl\",\"children\":[{\"id\":\"9POEwEAfUoXeLo7eio0z4\",\"children\":[{\"id\":\"kD-dbT87Bq-EE0axElIpk\",\"children\":[{\"text\":\"12293\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"PMWvYtYSWJsxtAgT8AZt0\",\"children\":[{\"id\":\"phsavCL8TKVAotnLiNbgP\",\"children\":[{\"text\":\"The HTTP network failed while getting the download parameters.\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"KHTh1vm7LZaBtzcoHzbKO\",\"children\":[{\"id\":\"SG65XIMEmJyNNCbol07d3\",\"children\":[{\"text\":\"Check whether the device can access the internet.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"QaM5CxMn5Rmmo7a6J62pB\",\"children\":[{\"id\":\"ldFjG-ctKYEkef9DOkHIS\",\"children\":[{\"id\":\"zb49FCW8NTZd4FEFJLMe2\",\"children\":[{\"text\":\"12294\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"5-Ybp0mlu2kbvHcQixCjZ\",\"children\":[{\"id\":\"nH-SEFNEmvLFRjPtWAVN7\",\"children\":[{\"text\":\"The packet returned during the process of getting the download parameters is empty.\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ixCSlSMKraK9h6EjrHUcY\",\"children\":[{\"id\":\"HgAQHEYHk2U0nadBshS96\",\"children\":[{\"text\":\"Check whether the device can access the internet.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"CLLn3Heech04BYt-ule1_\",\"children\":[{\"id\":\"TmS4k5lTTfH-tFuGyJ1D4\",\"children\":[{\"id\":\"G-YACIz5_whlZNlZkAuid\",\"children\":[{\"text\":\"12295\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Ovdrkl1fuMpXUcyM5jTLI\",\"children\":[{\"id\":\"1Jgpw9C5jf6J714ss-Okt\",\"children\":[{\"text\":\"Failed to decode the packet returned during the process of getting the download parameters.\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"HqPfkJWyiFrIyMA9iYN_V\",\"children\":[{\"id\":\"V42T2AJG6LiFFpzL6kT_x\",\"children\":[{\"text\":\"Check whether the device can access the internet.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"WCRJXoVkF8GwkWROKjpor\",\"children\":[{\"id\":\"WAJOvaSk3dQn-FIBtJF56\",\"children\":[{\"id\":\"ULdLp0EIX59z2A_ze-mqq\",\"children\":[{\"text\":\"12297\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"6zZpu-IzYlf9RpUNvut9E\",\"children\":[{\"id\":\"C6JYCOdvOVPmf5PDxMAY6\",\"children\":[{\"text\":\"No `appinfo` is set.\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"_Ek8nuYdqQ9jIH4qnsy9A\",\"children\":[{\"id\":\"1eCX9KMln1_I10bWcr90W\",\"children\":[{\"text\":\"Check whether the authentication key is correct and whether the voice messaging and speech-to-text feature is initialized.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"rowHeader\":true,\"type\":\"table\",\"widths\":[14,37,49],\"widthMode\":\"percentage\"},{\"id\":\"8FqDqPZ3Sm21KyuG-7llF\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code16\",\"type\":\"h4\"},{\"id\":\"HKxjnXzSF0joh3XAWkxA2\",\"children\":[{\"id\":\"lvSTbIXpU9qHZk_s5Siiz\",\"children\":[{\"text\":\"void handleEventMsg(int eventType, String data){\"}],\"type\":\"code-line\"},{\"id\":\"HkrKdVbQqsqDTrBjHal7q\",\"children\":[{\"text\":\" switch (eventType) {\"}],\"type\":\"code-line\"},{\"id\":\"SS_i_FrAwt_viYlmWrZkE\",\"children\":[{\"text\":\" ...\"}],\"type\":\"code-line\"},{\"id\":\"djdyuic5JJxAEDSH7Bmd5\",\"children\":[{\"text\":\" case ITMG_MAIN_EVENT_TYPE.ITMG_MAIN_EVENT_TYPE_ENTER_ROOM:\"}],\"type\":\"code-line\"},{\"id\":\"gW2_F9lKYjnjN681HRafr\",\"children\":[{\"text\":\" {\"}],\"type\":\"code-line\"},{\"id\":\"Vvq0uQAQ4vR_uQab2jjVv\",\"children\":[{\"text\":\" // Process\"}],\"type\":\"code-line\"},{\"id\":\"7FCJyFHf8vVSe1VJCPdl2\",\"children\":[{\"text\":\" break;\"}],\"type\":\"code-line\"},{\"id\":\"Od64zDIKzaOunaIKF7wxn\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"Iaapyq4QHVXiP2uf4eFW6\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"LQ7fbPruEjv2ZgNq9H5o6\",\"children\":[{\"text\":\"}\"}],\"type\":\"code-line\"},{\"id\":\"DOe80zpEORgdaBVCqx5jA\",\"children\":[{\"text\":\"ITMGContext.GetInstance().SetEvent(handleEventMsg);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"LHAqtTO6ssuJUcwpgv3jr\",\"children\":[{\"text\":\"Playing back audio\"}],\"nodeId\":\"playing-back-audio\",\"type\":\"h3\"},{\"id\":\"MwmTtlocW3SDoz0TjPJ_I\",\"children\":[{\"text\":\"This API is used to play back audio.\"}],\"type\":\"p\"},{\"id\":\"Kg8mYCHjFYt271jICQg0b\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype15\",\"type\":\"h4\"},{\"id\":\"XeJql0XZq7ywI54mXSNiZ\",\"children\":[{\"id\":\"mVXT4IdapN7ZhjoHHUkGE\",\"children\":[{\"text\":\"Future PlayRecordedFile(String filePath, int voiceType)\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"Tupezy1FcoyZC0kuNez7F\",\"children\":[{\"id\":\"0D8FSDEY6p3r2FxxT5EXQ\",\"children\":[{\"id\":\"yFHJPK347tu3HJhHbEfdk\",\"children\":[{\"id\":\"f9MGR6x7-OUzsW_10g5M5\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"-aHM9K3MmxTDqx9KMSJCq\",\"children\":[{\"id\":\"Gk9x0GSMTWRpd_J7tez6i\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"9KMUFeNQV7DXCZ1H06XvL\",\"children\":[{\"id\":\"Mr51UMU68qj5XY7xHVFSS\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"aSzLUCM0_LycE9yf5O4QA\",\"children\":[{\"id\":\"Pqo7qamBwbH_kUEUe0HuX\",\"children\":[{\"id\":\"EZeMVvOvwepx9VmeWpVcr\",\"children\":[{\"text\":\"filePath\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"auQ0CltgcJJa1S2JOF_Nd\",\"children\":[{\"id\":\"SCSZXbxAc6pZixNjpUQom\",\"children\":[{\"text\":\"string\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"1l_pVLkhUY06a2_1g--Wp\",\"children\":[{\"id\":\"khqj2WdnlliqROiEoWw5F\",\"children\":[{\"text\":\"Local audio file path\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"jSephwQf4SPCbyPzcpu4n\",\"children\":[{\"id\":\"1KH9LTcsnH6S_JxihyC-4\",\"children\":[{\"id\":\"udLaRCQy8tJfj8B53kg2w\",\"children\":[{\"text\":\"voicetype\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"LFhogRGJ_ztERPJ1QGQD-\",\"children\":[{\"id\":\"KhlCUaJa4YTgrzA26RxZ_\",\"children\":[{\"text\":\"ITMG_VOICE_TYPE\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"vnjyq1693pXY9cEKDTuP6\",\"children\":[{\"id\":\"3IV4zaEeilgmldJqt8k1l\",\"children\":[{\"text\":\"Voice changing type. For more information, see \"},{\"id\":\"_XlNMNy0qGHhhIoxYy8sM\",\"children\":[{\"text\":\"Voice Changing\"}],\"linkTarget\":\"self\",\"props\":{\"type\":\"link\",\"url\":\"https://intl.cloud.tencent.com/document/product/607/44995\"},\"type\":\"ref\"},{\"text\":\".\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"rowHeader\":true,\"type\":\"table\",\"widths\":[17,27,56],\"widthMode\":\"percentage\"},{\"id\":\"w8JEsHIqkeOF6SUw4sKCl\",\"children\":[{\"text\":\"Error codes\"}],\"nodeId\":\"error-codes5\",\"type\":\"h4\"},{\"id\":\"H3ZqkglqYIwdW5oexpmC2\",\"children\":[{\"id\":\"LvxMJtK3-veV5_n_9ChmF\",\"children\":[{\"id\":\"oDWkFg3lragPR6FWt8DFr\",\"children\":[{\"id\":\"f4SFl3kenl2J_GlrZbFgG\",\"children\":[{\"text\":\"Error Code\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"S7oijJdimWJClgeNEafML\",\"children\":[{\"id\":\"zyhlQFSYtwXvqSZJMUtTX\",\"children\":[{\"text\":\"Cause\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Uw6VAlS3H-r8w30aAYGaO\",\"children\":[{\"id\":\"FiVpsyMJR5O99CNS-vDT2\",\"children\":[{\"text\":\"Solution\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"99JNkDMr72TBAjeXXpEco\",\"children\":[{\"id\":\"hb-H7WyD5e58G5FJdLP9l\",\"children\":[{\"id\":\"h6xz8UZsiNAKAQ-_BGar3\",\"children\":[{\"text\":\"20485\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"0zMK-umINZFsUPkcBlqaW\",\"children\":[{\"id\":\"93C0PgnOyf--WDViTPDHS\",\"children\":[{\"text\":\"Playback is not started.\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Dyjec-lIsRD-WJZa2qa-_\",\"children\":[{\"id\":\"gTfjxYgdZs_HnMdXh9gnX\",\"children\":[{\"text\":\"Ensure the existence of the file and the validity of the file path.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"rowHeader\":true,\"type\":\"table\",\"widths\":[17,27,56],\"widthMode\":\"percentage\"},{\"id\":\"_BEwgk1S30lihgA6FE46e\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code17\",\"type\":\"h4\"},{\"id\":\"KNS--Ee_jKqvXLl6rsPG_\",\"children\":[{\"id\":\"ChwnOzH5qRQath3xFsj-0\",\"children\":[{\"text\":\"int res = await ITMGContext.GetInstance().GetPTT().PlayRecordedFile(_filePath, _nVoiceType);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"J2yACvph7BgY_6RV7uzXt\",\"children\":[{\"text\":\"Callback for audio playback\"}],\"nodeId\":\"callback-for-audio-playback\",\"type\":\"h3\"},{\"id\":\"Ts0yXRUX2nVWoCrDb6PPQ\",\"children\":[{\"text\":\"After the audio is played back, the event message \"},{\"code\":1,\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_PLAY_COMPLETE\"},{\"text\":\" will be returned, which will be identified in the \"},{\"code\":1,\"text\":\"OnEvent\"},{\"text\":\" function.\\nThe passed parameter includes \"},{\"code\":1,\"text\":\"result\"},{\"text\":\" and \"},{\"code\":1,\"text\":\"file_path\"},{\"text\":\".\"}],\"type\":\"p\"},{\"id\":\"qkUCOgejdaw3-COXyKuGN\",\"children\":[{\"id\":\"iPIBL-RO5Uzf67c7eiMtn\",\"children\":[{\"id\":\"_Er1HhviF_EuAtpqBL1yU\",\"children\":[{\"id\":\"cwts4lvTUvsmJuDq71QU9\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"cPmLRBNbRDbqkSqV2JElX\",\"children\":[{\"id\":\"HDa6gnofCm8MPh88ki901\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"sr19yGHyxm5YddWBKXVZG\",\"children\":[{\"id\":\"AEkFZZJcjQiU9-rqm4Jvp\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"eDxrum_5HfUL3Da703YCQ\",\"children\":[{\"id\":\"icl5oqs6RjT4fLkbRLuwb\",\"children\":[{\"id\":\"CliYxa0aOG6g13IioYYc1\",\"children\":[{\"text\":\"code\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"x4PB4ZFidoYAk_p7xbJ1v\",\"children\":[{\"id\":\"kfwIo8IRmoQA5cRvEWjKZ\",\"children\":[{\"text\":\"number\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"2uRa7cVBD3O0mGGQb3f1g\",\"children\":[{\"id\":\"QXaKxNh3N4_kmfJimq0Ln\",\"children\":[{\"text\":\"`0`: Playback is completed.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"a4dJwyj4W85Rthd4NIZC_\",\"children\":[{\"id\":\"KG8pzwjT4smzp1jty_zpd\",\"children\":[{\"id\":\"rvsIQatTY9FMgE6_GMaH1\",\"children\":[{\"text\":\"filepath\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"fWjCJHogNvlJim9V-pS-S\",\"children\":[{\"id\":\"pZqsiGlHY5JGzfDQk7Z1A\",\"children\":[{\"text\":\"string\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"5nXuzz7iPUK1skT0OAwsK\",\"children\":[{\"id\":\"IA1ot7hx1bAPYzZ7422JH\",\"children\":[{\"text\":\"Path of the stored recording file\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"rowHeader\":true,\"type\":\"table\",\"widths\":[22,21,57],\"widthMode\":\"percentage\"},{\"id\":\"SCSO2hqY5k81_aBMOupX0\",\"children\":[{\"text\":\"Error codes\"}],\"nodeId\":\"error-codes6\",\"type\":\"h4\"},{\"id\":\"bNvaEmx1a8hrRaU-p9RIF\",\"children\":[{\"id\":\"9ziBvEEPRs-q2cQXnCIlG\",\"children\":[{\"id\":\"lG7PU-CWke6MNgpLhqs3S\",\"children\":[{\"id\":\"WYIXRQ0SCdDasf0PYYhAq\",\"children\":[{\"text\":\"Error Code\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"8tdBtQ9rYd-X6JOAvJBK-\",\"children\":[{\"id\":\"70v5o6ZKRzsZLHsE38RP0\",\"children\":[{\"text\":\"Cause\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"d90fz30Nnyhrdm3xzY0mj\",\"children\":[{\"id\":\"f0T3Cs__I_Azf-Nz2f2K5\",\"children\":[{\"text\":\"Solution\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"OP64AM_N_Hv_8wZ-OVz8I\",\"children\":[{\"id\":\"y5QaEYlE9KxVNepXjkNrh\",\"children\":[{\"id\":\"nSSE1dLUV03-0qLHKY1dx\",\"children\":[{\"text\":\"20481\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"doJGMaXOe_tgzGu63ZNvd\",\"children\":[{\"id\":\"Ndt3UIJPY3cGo8Y5rgpwh\",\"children\":[{\"text\":\"An initialization error occurred.\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"6N4lav8jarPQKvGXAXc1F\",\"children\":[{\"id\":\"0Z3QKE1_aS02GlV2X5aI4\",\"children\":[{\"text\":\"Check whether the device is being used, whether the permissions are normal, and whether the initialization is normal.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"qv4DqG_V_E2Ux7ZWn0cbp\",\"children\":[{\"id\":\"1c3WX6hyKp4fisWl_CN3h\",\"children\":[{\"id\":\"DA4OqA99vR2fatFFnGZNg\",\"children\":[{\"text\":\"20482\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"104dp6Kvx95kq14upJ1OY\",\"children\":[{\"id\":\"s441uY-ThtVb1amiNvdpu\",\"children\":[{\"text\":\"During playback, the client tried to interrupt and play back the next one but failed (which should succeed normally).\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Aj6nm0bKRXajyTNbdIx7h\",\"children\":[{\"id\":\"DLLQ8v9X-gJgxDDpYcm2u\",\"children\":[{\"text\":\"Check whether the code logic is correct.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"zN6hwFIkG61tPqEstIH90\",\"children\":[{\"id\":\"OiMN9A8Ge1_hGmu5eDMup\",\"children\":[{\"id\":\"mGhvxKvD8cHqUoHzgsOed\",\"children\":[{\"text\":\"20483\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"EQsPa7jCG5rwQiPIFCffi\",\"children\":[{\"id\":\"3Djb_K5xj3uJo0J5eCzEh\",\"children\":[{\"text\":\"A parameter is empty.\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"N0atN9FEzFXUdll8pZafk\",\"children\":[{\"id\":\"TuIx3yBQwIioYzkIl_mTY\",\"children\":[{\"text\":\"Check whether the API parameters in the code are correct.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"JBv7oBcNwxq0CwP6dZ49A\",\"children\":[{\"id\":\"K4hhzCvENh2sFNqL9unZA\",\"children\":[{\"id\":\"o4uSBo4N3M73dVAT8yhAO\",\"children\":[{\"text\":\"20484\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"5Xaq3FjGDm-DxB9EvZsqT\",\"children\":[{\"id\":\"1y8apJ4pKhplWWm30cPdl\",\"children\":[{\"text\":\"An internal error occurred.\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"QKluGqOWNBYYjU8NKNbaw\",\"children\":[{\"id\":\"teXTBxZs9rPwfOtYsaaLv\",\"children\":[{\"text\":\"An error occurred while initializing the player. This error code is generally caused by failure in decoding, and the error should be located with the aid of logs.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"rowHeader\":true,\"type\":\"table\",\"widths\":[15,34,51],\"widthMode\":\"percentage\"},{\"id\":\"dEQG8Fm1ChI48bstJ2H5U\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code18\",\"type\":\"h4\"},{\"id\":\"7opcR6xajJnsNd4E3x3ZV\",\"children\":[{\"id\":\"znZm1VZt1XwnBSqepZv79\",\"children\":[{\"text\":\"void handleEventMsg(int eventType, String data){\"}],\"type\":\"code-line\"},{\"id\":\"A9jJNu_EF8Qqqy7VqVJej\",\"children\":[{\"text\":\" switch (eventType) {\"}],\"type\":\"code-line\"},{\"id\":\"lB4yzH07bH25gOMO25leY\",\"children\":[{\"text\":\" case ITMG_MAIN_EVENT_TYPE.ITMG_MAIN_EVNET_TYPE_PTT_PLAY_COMPLETE:\"}],\"type\":\"code-line\"},{\"id\":\"bVvVLy5hZIx-0NkJCOm3Y\",\"children\":[{\"text\":\" {\"}],\"type\":\"code-line\"},{\"id\":\"lVOqFAgHl5-sB4AC9-HO0\",\"children\":[{\"text\":\" // Process\"}],\"type\":\"code-line\"},{\"id\":\"RroD0Ca4ujTKhw7YTTixf\",\"children\":[{\"text\":\" break;\"}],\"type\":\"code-line\"},{\"id\":\"CescwvgSm13VV4O7T-OGT\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"jlAz853hwiB-Om2uNswfp\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"6fs_EwOe3WGsxixSopyVM\",\"children\":[{\"text\":\"}\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"maPR0DSYK1oZKkftrf026\",\"children\":[{\"text\":\"Stopping audio playback\"}],\"nodeId\":\"stopping-audio-playback\",\"type\":\"h3\"},{\"id\":\"Ef-lEOipKMb3EUqCRhtq1\",\"children\":[{\"text\":\"This API is used to stop audio playback. There will be a callback for playback completion when the playback stops.\"}],\"type\":\"p\"},{\"id\":\"F03ZCRp_hw5ILXYZRZONM\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype16\",\"type\":\"h4\"},{\"id\":\"OZWl6M7iVS1eMAJS5UFra\",\"children\":[{\"id\":\"1yP-KP5suGjwef_LeN6_P\",\"children\":[{\"text\":\"Future StopPlayFile()\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"z2F2Tn0PoEKNFY06T9CQ6\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code19\",\"type\":\"h4\"},{\"id\":\"QkRIok1y2-1k3LZARiCOe\",\"children\":[{\"id\":\"PBGxeAzXLX6yqmaBuX7U7\",\"children\":[{\"text\":\"ITMGContext.GetInstance().GetPTT().StopPlayFile();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"0Iv-Ed3EZzID-mMdCrWj1\",\"children\":[{\"text\":\"Getting audio file size\"}],\"nodeId\":\"getting-audio-file-size\",\"type\":\"h3\"},{\"id\":\"ip1z_X4mxFQ9zCpr1nJzX\",\"children\":[{\"text\":\"This API is used to get the size of an audio file.\"}],\"type\":\"p\"},{\"id\":\"diHM6os3cxNd1MlLJuxzf\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype17\",\"type\":\"h4\"},{\"id\":\"huMlvmMN5Q63SRs7rVDW4\",\"children\":[{\"id\":\"zlTV-sQR3IctUfW06zTTT\",\"children\":[{\"text\":\"Future GetFileSize(String filePath)\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"zgsWbP4C93wj2UJlyiWxr\",\"children\":[{\"id\":\"Wxh6_8XMTdxXkEvZfNr-z\",\"children\":[{\"id\":\"-6phQkbZ7Mx-NO3jqg1k5\",\"children\":[{\"id\":\"MXpvEP7tyc174M3i81lEK\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ALIvU4OZloT_xlwd7rph5\",\"children\":[{\"id\":\"CueJKEat14LXih0KbgN0x\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"h8meb8QoywwO4lhUbzo2B\",\"children\":[{\"id\":\"CYVWCUKTTlVvu_XrXjgXv\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"R6QluXGQKeoKyrIDA_qOu\",\"children\":[{\"id\":\"HfXFHVMDvU057tYTnbo-C\",\"children\":[{\"id\":\"CbjbZMX2ljJyD96y4_MpL\",\"children\":[{\"text\":\"filePath\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"OZW0SwQb4yHTrneex32cK\",\"children\":[{\"id\":\"ipo1KJiCiGtnMDvIOzrNF\",\"children\":[{\"text\":\"string\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Nat9eR6zuFOPPpmwr_Oy4\",\"children\":[{\"id\":\"cSrxb3__FB5JkAkH6mYYo\",\"children\":[{\"text\":\"Path of the audio file, which is a local path\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"rowHeader\":true,\"type\":\"table\",\"widths\":[22,19,59],\"widthMode\":\"percentage\"},{\"id\":\"RfrAgd4WQoQhe3uOjjp_D\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code20\",\"type\":\"h4\"},{\"id\":\"diWumRachBGiJyrzy36Q3\",\"children\":[{\"id\":\"6uGa2I2IHPMXFUV-orWl5\",\"children\":[{\"text\":\"final int res = await ITMGContext.GetInstance().GetPTT().GetFileSize(_filePath);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"5AtWbWqNW3jj_Ct3JxXKN\",\"children\":[{\"text\":\"Getting audio file duration\"}],\"nodeId\":\"getting-audio-file-duration\",\"type\":\"h3\"},{\"id\":\"D0U8ZopTfnj2SL3AkUSSL\",\"children\":[{\"text\":\"This API is used to get the duration of an audio file in milliseconds.\"}],\"type\":\"p\"},{\"id\":\"Aataw5xDfDVIoNpkXKdtk\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype18\",\"type\":\"h4\"},{\"id\":\"PUgqg8753OTqIngmcMfsy\",\"children\":[{\"id\":\"2aib_4i5KRql19KsZkcQJ\",\"children\":[{\"text\":\"Future GetVoiceFileDuration(String filePath)\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"OENopkKZ4EFCbhErjyl02\",\"children\":[{\"id\":\"uKyVUF7IbgW_E-3ZEbqTc\",\"children\":[{\"id\":\"Yr-SZCGfpLboDO9SgbTfF\",\"children\":[{\"id\":\"erL0qQcRmj9opK48EhaMb\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"LDQIzAHJuP11DucFQZABu\",\"children\":[{\"id\":\"HuDmhWuDlibhOKCdbcEzm\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"1UO_jjg_Fe2YeWB3mVM6W\",\"children\":[{\"id\":\"QiYs784lFFrQsh6EadcUo\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"cmU8ZoPZdJOOxIpWh5G_W\",\"children\":[{\"id\":\"vDZWzzeNIHK-StpnqEycp\",\"children\":[{\"id\":\"bSM55EMnrJGt-Q61OY3lF\",\"children\":[{\"text\":\"filePath\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"EL0O0rmqgjCmOUiNP6uz1\",\"children\":[{\"id\":\"-VxjTIFj0Z7l_p4k3dQbz\",\"children\":[{\"text\":\"string\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"O2_XELEn6HJZ05iB7IkmL\",\"children\":[{\"id\":\"qBeq7e3IgHUJWeXA7K9yq\",\"children\":[{\"text\":\"Path of the audio file, which is a local path\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"rowHeader\":true,\"type\":\"table\",\"widths\":[19,20,61],\"widthMode\":\"percentage\"},{\"id\":\"fZohQSPsVnz4OCNNCGl7g\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code21\",\"type\":\"h4\"},{\"id\":\"rO6igB7mKEFiKUdOqQFh8\",\"children\":[{\"id\":\"UP5H7gXfpLSPoPVLEfLUx\",\"children\":[{\"text\":\"final int res = await ITMGContext.GetInstance().GetPTT().GetVoiceFileDuration(_filePath);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"7rct9a-GJeJjlpmVVoNmm\",\"children\":[{\"text\":\"Fast Recording-to-Text Conversion\"}],\"nodeId\":\"fast-recording-to-text-conversion\",\"type\":\"h2\"},{\"id\":\"bmOW9Ea-5cY7U1XEZZL-y\",\"children\":[{\"text\":\"Translating audio file into text in specified language\"}],\"nodeId\":\"translating-audio-file-into-text-in-specified-language\",\"type\":\"h3\"},{\"id\":\"aJysqHwMaZdUcQ-cKcWI-\",\"children\":[{\"text\":\"This API can specify a language for recognition or translate the text recognized in speech into a specified language and return the translation.\"}],\"type\":\"p\"},{\"type\":\"hint\",\"hintType\":\"alert\",\"children\":[{\"type\":\"p\",\"children\":[{\"b\":1,\"text\":\"Note:\",\"color\":\"#04C8DC\"}],\"id\":\"nNK0D6hhf8ndWDxnv7RMk\"},{\"type\":\"p\",\"children\":[{\"text\":\"Translation incurs additional fees. For more information, see \"},{\"id\":\"EICdVcxKz5R45e5_YjJNB\",\"children\":[{\"text\":\"Purchase Guide\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://intl.cloud.tencent.com/document/product/607/50009\",\"props\":{\"type\":\"link\",\"url\":\"https://intl.cloud.tencent.com/document/product/607/50009\"},\"type\":\"ref\"},{\"text\":\".\"}],\"id\":\"Vgn_zg1-tQPFfWDgtQX4s\"}],\"id\":\"F3wcAlb-Szh7A0B-GprnK\"},{\"id\":\"Bg-0M4RLKZyrofG_UBmdq\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype19\",\"type\":\"h4\"},{\"id\":\"lT4Hh-q7snxa1SIyRFc6m\",\"children\":[{\"id\":\"X5rzDawstTFs5wh-VbMwU\",\"children\":[{\"text\":\"Future SpeechToText(String fileId, String speechLanguage, String translateLanguage)\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"GGwqP67dmBIQyuFPbl3SG\",\"children\":[{\"id\":\"dRybX3U3IbArVDM5FklJl\",\"children\":[{\"id\":\"nDx4vcZuqL27Mj7Sqfggh\",\"children\":[{\"id\":\"ZWmy86kcBNlZl1fI_rAoF\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"VdIv4c-KJ9v0pNbPdBzrk\",\"children\":[{\"id\":\"-X9XjHuI0PL8emxI7WEZL\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"hp78gMmosMGYBK_ltR443\",\"children\":[{\"id\":\"ELVABwswIYYoXq3pLiOG6\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"1fqUtLcXB4hQ9EcmRFkHL\",\"children\":[{\"id\":\"WQrs-w09zuTOPKvwPgCQ_\",\"children\":[{\"id\":\"feFifTtJfJgNYsFdBMHTY\",\"children\":[{\"text\":\"fileID\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"lBvaSZ1xtg98mI6G_f4UH\",\"children\":[{\"id\":\"JtjZvgf4NoEy4Dqz0ibvz\",\"children\":[{\"text\":\"string\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"os257uwJJ4yYTV_zZ11A5\",\"children\":[{\"id\":\"PkmrynyLhDBSCWvXaSRJn\",\"children\":[{\"text\":\"URL of the audio file, which will be retained on the server for 90 days.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"g3OLRd9Fiskxt8TEpvOZd\",\"children\":[{\"id\":\"ibrn8VSyuPX8mjm4WUBZM\",\"children\":[{\"id\":\"EJjhNAQqtUNJxAWC8TLMP\",\"children\":[{\"text\":\"speechLanguage\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"9qEYoMmQaIodhxC3pogd0\",\"children\":[{\"id\":\"GgaaK7lLsjBwWCSCAip32\",\"children\":[{\"text\":\"string\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"D3GLk3dDM3YEYj-jbCdeT\",\"children\":[{\"id\":\"u0onh-FHlOidYTCwmR65T\",\"children\":[{\"text\":\"The language in which the audio file is to be converted to text. For parameters, see \"},{\"id\":\"DiY-u71D0AReuxIWUzQ2M\",\"children\":[{\"text\":\"Language Parameter Reference List\"}],\"linkTarget\":\"self\",\"props\":{\"type\":\"link\",\"url\":\"https://intl.cloud.tencent.com/document/product/607/30260\"},\"type\":\"ref\"},{\"text\":\".\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"HbNGyaCB5cgoztjTNEUI6\",\"children\":[{\"id\":\"meYCkyNk5kQklNNUEDIwF\",\"children\":[{\"id\":\"nQyyeuczcxdPbhYL-NyLE\",\"children\":[{\"text\":\"translatelanguage\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"TSI_tEBdAXxWh5kWgI62e\",\"children\":[{\"id\":\"7fZBcFWaXgoEZvMEl1pZe\",\"children\":[{\"text\":\"string\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"SHkvd9saTaa6YpkRXA7Zx\",\"children\":[{\"id\":\"VMJxvDB9f6TK-w5l-8jjT\",\"children\":[{\"text\":\"The language in which the audio file is to be translated to text. For parameters, see \"},{\"id\":\"q2YuljA_futqWn8M5u4zw\",\"children\":[{\"text\":\"Language Parameter Reference List\"}],\"linkTarget\":\"self\",\"props\":{\"type\":\"link\",\"url\":\"https://intl.cloud.tencent.com/document/product/607/30260\"},\"type\":\"ref\"},{\"text\":\".\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"rowHeader\":true,\"type\":\"table\",\"widths\":[18,13,69],\"widthMode\":\"percentage\"},{\"id\":\"yLA17Bst7gLN8YoJ1Jc76\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code22\",\"type\":\"h4\"},{\"id\":\"hU6DG2FILRuvrVzh9Gd_5\",\"children\":[{\"id\":\"TuvlO91p2F1JnOyXkJYNJ\",\"children\":[{\"text\":\"ITMGContext.GetInstance().GetPTT().SpeechToText(_fileId, \\\"cmn-Hans-CN\\\", \\\"cmn-Hans-CN\\\");\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"k-1lO6V-F3PV3h_qykZhg\",\"children\":[{\"text\":\"Callback for recognition\"}],\"nodeId\":\"callback-for-recognition\",\"type\":\"h3\"},{\"id\":\"Ztq1adg-dJ5YTW3NNJFGm\",\"children\":[{\"text\":\"After the specified audio file is converted to text, the event message ITMG_MAIN_EVNET_TYPE_PTT_SPEECH2TEXT_COMPLETE will be returned, which will be identified in the \"},{\"code\":1,\"text\":\"OnEvent\"},{\"text\":\" function.\\nThe passed parameters include \"},{\"code\":1,\"text\":\"result\"},{\"text\":\", \"},{\"code\":1,\"text\":\"file_path\"},{\"text\":\" and \"},{\"code\":1,\"text\":\"text\"},{\"text\":\" (recognized text).\"}],\"type\":\"p\"},{\"id\":\"isSS1_62U6hCfNGhHHDM9\",\"children\":[{\"id\":\"vGTkcGOpij0FeFfbi7dNV\",\"children\":[{\"id\":\"oihdiODy_KaFF4bGuQRtk\",\"children\":[{\"id\":\"WfRb-fMnGLppZ5Oe1S2zJ\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"UYUiuMisF6qhefhEyuTze\",\"children\":[{\"id\":\"26xo-oD0oa3iAoYkUQSYA\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"FnHhWDvs9XTNhMwMPCQwp\",\"children\":[{\"id\":\"uNC6fPB9hygHY-yKT6Prp\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"SmeNEXTvXip5dwb8H29OR\",\"children\":[{\"id\":\"COxxw_F4P1Ca8FahVVZ3o\",\"children\":[{\"id\":\"Mq69sULjvXKYG3MolTb7v\",\"children\":[{\"text\":\"result\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"vJdFUmp5KHe-cV2FdvXZt\",\"children\":[{\"id\":\"8rj7-CMExIGDW8dwu4Neq\",\"children\":[{\"text\":\"number\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"O-8-0mDNr7_IN8D8eNWw7\",\"children\":[{\"id\":\"9OfWYPooT6p-X8YZJ6GxT\",\"children\":[{\"text\":\"`0`: Recording is completed.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"lnLZQiee9vtUaahinacs_\",\"children\":[{\"id\":\"lImGZRpST7XSBh0d-rPFN\",\"children\":[{\"id\":\"AVmvg0zGOI55n7C17o4e3\",\"children\":[{\"text\":\"fileid\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"IMe6MZTyLfJF__83e6xxg\",\"children\":[{\"id\":\"b7QQ-CtsTXZR1rjlbfYz5\",\"children\":[{\"text\":\"string\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"s_UVgMVoZGTV-JleGobwC\",\"children\":[{\"id\":\"tFaZH4kKl5Ps-HyWyMEXE\",\"children\":[{\"text\":\"URL of the audio file, which will be retained on the server for 90 days.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"Jr39mvofJHUHEjSL-Rv05\",\"children\":[{\"id\":\"QY3H2lFQNJ-9fvSf6ZwWB\",\"children\":[{\"id\":\"wxK7Vnl3jjuzfVrtfY1Jx\",\"children\":[{\"text\":\"text\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"lymRREnGjwIm9qbMVffUD\",\"children\":[{\"id\":\"LIyoS4GLZqHBEB7v3BWJq\",\"children\":[{\"text\":\"string\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"U3NKyYMqR9_fidJdS0Hvm\",\"children\":[{\"id\":\"ozYcfFm3XiXtuWgOvOLwx\",\"children\":[{\"text\":\"Converted text\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"rowHeader\":true,\"type\":\"table\",\"widths\":[14,20,66],\"widthMode\":\"percentage\"},{\"id\":\"tMiUadDFuP-GDIJg23t7l\",\"children\":[{\"text\":\"Error codes\"}],\"nodeId\":\"error-codes7\",\"type\":\"h4\"},{\"id\":\"9t7vaEiQOjNgkgPnqTe-A\",\"children\":[{\"id\":\"0uJr041tsFlvigbHZMybs\",\"children\":[{\"id\":\"pBLcHWpA20AcQhmOAs-Bt\",\"children\":[{\"id\":\"3EGDMbTD2aD2g05crzNXj\",\"children\":[{\"text\":\"Error Code\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"N-DV-3s1uSLm3pAa4dyCs\",\"children\":[{\"id\":\"atiaAoFlrV07w15lvGizW\",\"children\":[{\"text\":\"Cause\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"YTjWwWWuhNycw4Ox8Ga64\",\"children\":[{\"id\":\"MOg5DtvLWdWBMV_ifKJs2\",\"children\":[{\"text\":\"Solution\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"k9VCIkZVEJ5ofsDwCZQ2x\",\"children\":[{\"id\":\"1LxwESAJpwJHVi-gROQAE\",\"children\":[{\"id\":\"vKA0urqN2gYrtkIhxHhrx\",\"children\":[{\"text\":\"32769\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ufJ7ek1TDLpql2MERm_RH\",\"children\":[{\"id\":\"lpghseax4_E9FsNuzrkju\",\"children\":[{\"text\":\"An internal error occurred.\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"7qiQterdGIKLxjI1krU0N\",\"children\":[{\"id\":\"yNKSWXNbIJnYHFJaTwjqV\",\"children\":[{\"text\":\"Analyze logs, get the actual error code returned from the backend to the client, and ask backend personnel for assistance.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"O1-lqxnW_nvpKrL7xpdNS\",\"children\":[{\"id\":\"KZTyzr0WvMsoQ3pVk3MZl\",\"children\":[{\"id\":\"ea1GrvlIQI-BGMWqbNIye\",\"children\":[{\"text\":\"32770\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"LEfRPmnN7-aydsNbazWL6\",\"children\":[{\"id\":\"4hgH9nE3igGVu1OrCQ0wG\",\"children\":[{\"text\":\"A network error occurred.\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"O8Hvf4itFDdZaB9YCP-7p\",\"children\":[{\"id\":\"cVjp8_3wEdbOaZCAWFArM\",\"children\":[{\"text\":\"Check whether the device can access the internet.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"4iORvrKI1fWChCfIb-fZ0\",\"children\":[{\"id\":\"CMK-HbFbdj8Kv06rJ-8D1\",\"children\":[{\"id\":\"hux4aNXrej7ujWF1WLGZ1\",\"children\":[{\"text\":\"32772\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Y_LzFn9XC0_ae6FqISwRA\",\"children\":[{\"id\":\"rCjEyang3DqjDo1ncnkOv\",\"children\":[{\"text\":\"Failed to decode the returned packet.\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"_A8tw-41IQbIvfCrfrH6S\",\"children\":[{\"id\":\"lsHhphSWsSTePFeZ8Dje5\",\"children\":[{\"text\":\"Analyze logs, get the actual error code returned from the backend to the client, and ask backend personnel for assistance.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"2Zr8gBSiFrf78RkkJ8RrV\",\"children\":[{\"id\":\"TxRdjL4l3Ng6HYeVog1NZ\",\"children\":[{\"id\":\"vstRsIgP9nHqZqBCBsMvD\",\"children\":[{\"text\":\"32774\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"nns5rqEREYZxStH_ldSu3\",\"children\":[{\"id\":\"v-Wurx4HusI9ZtOyFV8xv\",\"children\":[{\"text\":\"No `appinfo` is set.\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"-NucmJXt5xT9ihh_vqSRa\",\"children\":[{\"id\":\"9mF8j3NNI4WJybQ9M-IbA\",\"children\":[{\"text\":\"Check whether the authentication key is correct and whether the voice messaging and speech-to-text feature is initialized.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"7JdcgKXmloKsistmnZKwP\",\"children\":[{\"id\":\"UG9OU3vttC3iYF5N4iOck\",\"children\":[{\"id\":\"1IhLVwnLwGn-tWvDdb57r\",\"children\":[{\"text\":\"32776\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"F7T2HOJ3uqUAeLQNE6Ijd\",\"children\":[{\"id\":\"Hw8w9VaEsgPXh5Ip68GBr\",\"children\":[{\"text\":\"`authbuffer` check failed.\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ycqseCPZp7WMyB0q7rmdp\",\"children\":[{\"id\":\"urhZ7JHQZAgVtl2H3qaLC\",\"children\":[{\"text\":\"Check whether `authbuffer` is correct.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"zdnzA6yrjPAIWTLMrsZ-q\",\"children\":[{\"id\":\"XNdBWQYQpJfJ8kBYkFfNj\",\"children\":[{\"id\":\"Yf43s7iWoMYqqsGks5iof\",\"children\":[{\"text\":\"32784\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"44xGyGx16a-uRNbusPlYK\",\"children\":[{\"id\":\"4uyWos8OAH0npw2v7I2bC\",\"children\":[{\"text\":\"The speech-to-text conversion parameter is incorrect.\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"n9Xe3uf8wil_NoI_755SW\",\"children\":[{\"id\":\"iRRfxZBB13ohD4JJ8b9lQ\",\"children\":[{\"text\":\"Check whether the API parameter `fileid` in the code is empty.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"Qs1VNMM3L2jtDOTq99X_y\",\"children\":[{\"id\":\"mcGXyPWU_EBPSVPPxTdvb\",\"children\":[{\"id\":\"EzjVwhHKnEGPA6pAaeWJA\",\"children\":[{\"text\":\"32785\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"X_kzdCq2KHbAXVjZY6LOQ\",\"children\":[{\"id\":\"3D3uMg_V_3KsHpnoFFGLG\",\"children\":[{\"text\":\"Speech-to-text translation returned an error.\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"7I-TaSfcHYB06IOHODlxs\",\"children\":[{\"id\":\"E6dHpzjQzV_86bdtZui3-\",\"children\":[{\"text\":\"An error occurred in the voice messaging and speech-to-text feature on the backend. Analyze logs, get the actual error code returned from the backend to the client, and ask backend personnel for assistance.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"QCUQ7lM-pqv6GTalK3e-O\",\"children\":[{\"id\":\"imqbmJfdh5XdEkuxc69Iw\",\"children\":[{\"id\":\"wbff9X5WJzUSew0Vw6E_z\",\"children\":[{\"text\":\"32787\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ztyyHpmn5nHl4GvK2oTxI\",\"children\":[{\"id\":\"eleu7cLp0Ict7QkCtte76\",\"children\":[{\"text\":\"Speech-to-text conversion succeeded, but the text translation service was not activated.\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"bKH_Dq8AoAao3dsB2me4j\",\"children\":[{\"id\":\"RRUENkPzYBhCewGXm_yJf\",\"children\":[{\"text\":\"Activate the text translation service in the console.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"FGEx9xFPo6tyoM2koZJ-y\",\"children\":[{\"id\":\"LuOiOE5nkf7BAA6Wyg6zk\",\"children\":[{\"id\":\"8n-eAENUvuuYHYEmWRPaE\",\"children\":[{\"text\":\"32788\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"I9xsWtLFt1X3FaM742aQg\",\"children\":[{\"id\":\"xrdERum67J2PThiHGI1Pn\",\"children\":[{\"text\":\"Speech-to-text conversion succeeded, but the language parameter of the text translation service was invalid.\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"EqOJLMu0tpbiPyyNdCFbt\",\"children\":[{\"id\":\"I_GEAp-boFsdWHkC8s8lY\",\"children\":[{\"text\":\"Check the parameter passed in.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"rowHeader\":true,\"type\":\"table\",\"widths\":[14,34,52],\"widthMode\":\"percentage\"},{\"id\":\"ZxljBV1ItQwyQZNjkZ6JK\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code23\",\"type\":\"h4\"},{\"id\":\"0RcBm56AO6KmNYjS0K6Po\",\"children\":[{\"id\":\"f8lJ_NVklgehAlp9V6pMj\",\"children\":[{\"text\":\"void handleEventMsg(int eventType, String data){\"}],\"type\":\"code-line\"},{\"id\":\"WFeFiK9FW3uriLfyj5aUF\",\"children\":[{\"text\":\" switch (eventType) {\"}],\"type\":\"code-line\"},{\"id\":\"82PuE_22C8GnmnJKL8LDR\",\"children\":[{\"text\":\" case ITMG_MAIN_EVENT_TYPE.ITMG_MAIN_EVENT_TYPE_ENTER_ROOM:\"}],\"type\":\"code-line\"},{\"id\":\"bHhF735MSwCN59BoCAQ00\",\"children\":[{\"text\":\" {\"}],\"type\":\"code-line\"},{\"id\":\"aAZ2VzbQ3H-3zo-OO7iZH\",\"children\":[{\"text\":\" // Process\"}],\"type\":\"code-line\"},{\"id\":\"Vly0KZGlrzBMO_g_ezgmo\",\"children\":[{\"text\":\" break;\"}],\"type\":\"code-line\"},{\"id\":\"xq1FBF-eh60tbK0eUuERo\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"uMxGqNZUTUI_I5waxWSlk\",\"children\":[{\"text\":\" ...\"}],\"type\":\"code-line\"},{\"id\":\"8eTc4fHnrSDVXYURnCmz3\",\"children\":[{\"text\":\" case ITMG_MAIN_EVENT_TYPE.ITMG_MAIN_EVNET_TYPE_PTT_SPEECH2TEXT_COMPLETE:\"}],\"type\":\"code-line\"},{\"id\":\"MqSrj_hx8S4Tt9WBid7m5\",\"children\":[{\"text\":\" {\"}],\"type\":\"code-line\"},{\"id\":\"UYeNsKNIFFZZcBALyN0xk\",\"children\":[{\"text\":\" // Process\"}],\"type\":\"code-line\"},{\"id\":\"fkdhoeKtOIsLn4yyI1WQe\",\"children\":[{\"text\":\" break;\"}],\"type\":\"code-line\"},{\"id\":\"49B7OdbBFrGg81uhtivLk\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"nshumD8EtRE3b4AI-n17q\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"G5R9Pvb5Af_088Rs3UjMa\",\"children\":[{\"text\":\"}\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"RZecX8-HfdyTixvyBnnql\",\"children\":[{\"text\":\"Voice Message Volume Level APIs\"}],\"nodeId\":\"voice-message-volume-level-apis\",\"type\":\"h2\"},{\"id\":\"Q1XEdn4PNq1QHhQeHMH9q\",\"children\":[{\"id\":\"Jvx68T8cUeUmcaqOO8Ah2\",\"children\":[{\"id\":\"SXnmQX4sCjgz6BOF5fr-Y\",\"children\":[{\"id\":\"WhrhtCt99zxR_Kd7BAzFm\",\"children\":[{\"text\":\"API\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"A_7439Emja45OOcwtYukC\",\"children\":[{\"id\":\"5PhIPmkGWLM0okjaMbtQf\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"sh326tBgjSCdbm6gDZ7jj\",\"children\":[{\"id\":\"0aQ4F684LAJSurYFyyg3F\",\"children\":[{\"id\":\"rzcv4ZqJ0QE9P70fMBfug\",\"children\":[{\"text\":\"GetMicLevel\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"MY4dw1dG5cbXud-4WH4V-\",\"children\":[{\"id\":\"0bS6w79ygkjXKYMx8BfBK\",\"children\":[{\"text\":\"Gets the real-time mic volume level.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"AMNdzHiebnmhqztvlBnIU\",\"children\":[{\"id\":\"U7wdqNOySPgzMTd8tD7Pj\",\"children\":[{\"id\":\"acpkaraF6DJrbiUhhmvWX\",\"children\":[{\"text\":\"SetMicVolume\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ve_mdvizswHFQ0jtjRdA3\",\"children\":[{\"id\":\"dtzTDbrYsZlW18JE0OMmD\",\"children\":[{\"text\":\"Sets the recording volume level.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"BSXpj8JwiOvAYt_cJpSpT\",\"children\":[{\"id\":\"xi_nah_V8FkypNt8W5DIs\",\"children\":[{\"id\":\"zLDfpcN1zar5ZssvSqlvr\",\"children\":[{\"text\":\"GetMicVolume\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"vCiVHPv6cGgtGpp5lgXFi\",\"children\":[{\"id\":\"JsTSIkOtBCptJai7rr6Ut\",\"children\":[{\"text\":\"Gets the recording volume level.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"8uq1Kcld1dHe_2sQNZm7N\",\"children\":[{\"id\":\"qbnbX6s973_hrQSrokCye\",\"children\":[{\"id\":\"DtIoixiuiiB3-T1l8P7fa\",\"children\":[{\"text\":\"GetSpeakerLevel\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"k2SMulDz5yoZWvv-vnsIR\",\"children\":[{\"id\":\"gsTicF--nj4wyvinYvIH7\",\"children\":[{\"text\":\"Gets the real-time speaker volume level.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"7oJvJcy_AEytn6oAjo4HO\",\"children\":[{\"id\":\"q4SUc__sCwVlnKCEjHOI9\",\"children\":[{\"id\":\"JrRlduJY5QlHUriPyCcyW\",\"children\":[{\"text\":\"SetSpeakerVolume\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ism7kx1frd4iaRihzHIOr\",\"children\":[{\"id\":\"n6P3W_JBpEDcQ7qKnk9Wt\",\"children\":[{\"text\":\"Sets the playback volume level.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"czd9ZWoCO97co0uMWhWia\",\"children\":[{\"id\":\"EReKLvIVJLwbB9xV3xuXl\",\"children\":[{\"id\":\"blylQ5ftWFEynQofSbfA4\",\"children\":[{\"text\":\"GetSpeakerVolume\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"wofTOkM3dw4OLB2Ey3QPH\",\"children\":[{\"id\":\"mdMYfeqXIGuHTZrxqH7fz\",\"children\":[{\"text\":\"Gets the playback volume level.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"rowHeader\":true,\"type\":\"table\",\"widths\":[30,70],\"widthMode\":\"percentage\"},{\"id\":\"2flTfDY-hbGlEOVaUvD65\",\"children\":[{\"text\":\"Getting the real-time mic volume of voice message\"}],\"nodeId\":\"getting-the-real-time-mic-volume-of-voice-message\",\"type\":\"h3\"},{\"id\":\"ZICPh7rQ_HgyufOjai_h6\",\"children\":[{\"text\":\"This API is used to get the real-time mic volume. A number-type value will be returned. Value range: 0-200.\"}],\"type\":\"p\"},{\"id\":\"LF3mXgetENLZm7hhCk1TS\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype20\",\"type\":\"h4\"},{\"id\":\"kFfRHONr_4oce6hg1prql\",\"children\":[{\"id\":\"NqRxWbEfZrLHWEiMT92is\",\"children\":[{\"text\":\"Future GetMicLevel() \"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"40XThF4i824rkY0mymPA1\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code24\",\"type\":\"h4\"},{\"id\":\"ge-k8aeM5noGh-GJ14cWP\",\"children\":[{\"id\":\"ybPQVI2DeOFUfHjuh-wNp\",\"children\":[{\"text\":\"final int res = await ITMGContext.GetInstance().GetPTT().GetMicLevel();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"2e6E6r_DcIMQ0G3aD4rdX\",\"children\":[{\"text\":\"Setting the recording volume of voice message\"}],\"nodeId\":\"setting-the-recording-volume-of-voice-message\",\"type\":\"h3\"},{\"id\":\"v8cREW5ocBruByoVs7W0i\",\"children\":[{\"text\":\"This API is used to set the recording volume of voice message. Value range: 0-200.\"}],\"type\":\"p\"},{\"id\":\"HyC62_NkM0yoP_EhdTOY5\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype21\",\"type\":\"h4\"},{\"id\":\"QB18nI4eN0H3tfPkZeTUZ\",\"children\":[{\"id\":\"q5IgTarcxm0H7x23gyWYh\",\"children\":[{\"text\":\"Future SetMicVolume(int volume)\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"dMBPUHqA5v5rbNKpCHI3t\",\"children\":[{\"id\":\"w0uRNCzH5YQ5qbVV-27hR\",\"children\":[{\"id\":\"hkuEyNDPObYL0l4o5Znma\",\"children\":[{\"id\":\"3slbtwxvxIfbGacA8OwHm\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"bmET1d7xHAM2wN3W57HfW\",\"children\":[{\"id\":\"VLsPy3lPlRi59QKScImkn\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"7Jtgy4Koyf-A3lxv1bUSW\",\"children\":[{\"id\":\"ljoWkTwXgpKsAmqRxqNch\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"YR0SMcnSBevDF_MBZKaep\",\"children\":[{\"id\":\"YwKqIzLfQuRbxIykrYXJ6\",\"children\":[{\"id\":\"zLmeESxosFc77EaTgZoMU\",\"children\":[{\"text\":\"vol\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"i6qy90qZYUlnWTNFmpYWj\",\"children\":[{\"id\":\"pymFGOuc3bVPkkaLeH6SY\",\"children\":[{\"text\":\"number\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"lq0zK9Iq15yzSQ9nk-jUs\",\"children\":[{\"id\":\"grhhld0McK_wtqQTZl5Fd\",\"children\":[{\"text\":\"Value range: 0-200. Default value: `100`. `0` indicates that the audio is mute, while `100` indicates that the volume level remains unchanged.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"rowHeader\":true,\"type\":\"table\",\"widths\":[13,13,74],\"widthMode\":\"percentage\"},{\"id\":\"pd3Wq1c2nnsJ6t8xPtAd0\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code25\",\"type\":\"h4\"},{\"id\":\"KcV2KqTxPm4IhdsqLqp45\",\"children\":[{\"id\":\"1IcAviIS6kC3VfzKZLaJi\",\"children\":[{\"text\":\"final int res = await ITMGContext.GetInstance().GetPTT().SetMicVolume(100);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"pmkffmt4lZES83vntDP8X\",\"children\":[{\"text\":\"Getting the recording volume of voice message\"}],\"nodeId\":\"getting-the-recording-volume-of-voice-message\",\"type\":\"h3\"},{\"id\":\"9ZpxE9MOTBgIPDOwEcTe1\",\"children\":[{\"text\":\"This API is used to get the recording volume of a voice message. A number-type value will be returned. Value range: 0-200.\"}],\"type\":\"p\"},{\"id\":\"Om63QLRiWtVkd4wtLFQKr\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype22\",\"type\":\"h4\"},{\"id\":\"3N1HTT-1MJ4822FKprZar\",\"children\":[{\"id\":\"XDBb-mPv1TZJlN9kyZTTT\",\"children\":[{\"text\":\"Future GetMicVolume() \"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"NcSq5ID--wDdapo-9WQ8J\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code26\",\"type\":\"h4\"},{\"id\":\"tI415IlSslbAT0tIjgCs1\",\"children\":[{\"id\":\"d-5Viik1n1KKmVuNXu0Vs\",\"children\":[{\"text\":\"final int res = await ITMGContext.GetInstance().GetPTT().GetMicVolume();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"y7GrqOtgBpPICOZi8NvVO\",\"children\":[{\"text\":\"Getting the real-time speaker volume of voice message\"}],\"nodeId\":\"getting-the-real-time-speaker-volume-of-voice-message\",\"type\":\"h3\"},{\"id\":\"-2jbzCTBCaJnMsZOoryby\",\"children\":[{\"text\":\"This API is used to get the real-time speaker volume. A number-type value will be returned. Value range: 0-200.\"}],\"type\":\"p\"},{\"id\":\"AjNEfTHcMvSUpAos0Rs_Q\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype23\",\"type\":\"h4\"},{\"id\":\"UYtGnecD6HoHvmnrNnesU\",\"children\":[{\"id\":\"Z411xbZGqu8OSskP8sji8\",\"children\":[{\"text\":\"Future GetSpeakerLevel()\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"j3Ahzixx9PuNOtXEMeViD\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code27\",\"type\":\"h4\"},{\"id\":\"rkVJCAe-PmBEbMk82qaRc\",\"children\":[{\"id\":\"d6eDJfVLYoRCCy9HP5u3C\",\"children\":[{\"text\":\"final int res = await ITMGContext.GetInstance().GetPTT().GetSpeakerLevel();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"ExWzXSdz38s1pefR5piTO\",\"children\":[{\"text\":\"Setting the playback volume of voice message\"}],\"nodeId\":\"setting-the-playback-volume-of-voice-message\",\"type\":\"h3\"},{\"id\":\"pPN5at06JJVogEnxTPFvl\",\"children\":[{\"text\":\"This API is used to set the playback volume of voice message. Value range: 0-200.\"}],\"type\":\"p\"},{\"id\":\"IbcS1u5IwaERdt44k-t7s\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype24\",\"type\":\"h4\"},{\"id\":\"4Ll2DBr8MNc_rwezh-QR_\",\"children\":[{\"id\":\"m134Q5rxm1JG697K2P5XF\",\"children\":[{\"text\":\"Future SetSpeakerVolume(int volume)\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"jUJFdhybZhCzJEVBJx5O0\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code28\",\"type\":\"h4\"},{\"id\":\"pR6Ilq9Y2uph2JM123Elc\",\"children\":[{\"id\":\"doip5FJ3zX0693kN4WAo4\",\"children\":[{\"text\":\"final int res = await ITMGContext.GetInstance().GetPTT().SetSpeakerVolume(100);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"7wDmyh1im6zQbNB94UtAt\",\"children\":[{\"text\":\"Getting the playback volume of voice message\"}],\"nodeId\":\"getting-the-playback-volume-of-voice-message\",\"type\":\"h3\"},{\"id\":\"j2DTrv0M2S5Op8AnlYEKQ\",\"children\":[{\"text\":\"This API is used to get the playback volume of a voice message. A number-type value will be returned. Value range: 0-200.\"}],\"type\":\"p\"},{\"id\":\"vACqoedSsCbFV9QlNnVuh\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype25\",\"type\":\"h4\"},{\"id\":\"Vm0KGCfCRIT-pSoJUjmIc\",\"children\":[{\"id\":\"kApIxSoAAgzrQABvnr8te\",\"children\":[{\"text\":\"Future GetSpeakerVolume()\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"hksU8b00yE7nxGfLMbmKl\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code29\",\"type\":\"h4\"},{\"id\":\"Aa-3ZHun4hKrdb86XHMjr\",\"children\":[{\"id\":\"_ZAYkwqMTMDL9sOp1nQPd\",\"children\":[{\"text\":\"final int res = await ITMGContext.GetInstance().GetPTT().GetSpeakerVolume();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"kvTO73LRuW-pKU4IAKTzW\",\"children\":[{\"text\":\"Advanced APIs\"}],\"nodeId\":\"advanced-apis\",\"type\":\"h2\"},{\"id\":\"jW17cp6FCDeMUoMqY4bqu\",\"children\":[{\"text\":\"Getting version number\"}],\"nodeId\":\"getting-version-number\",\"type\":\"h3\"},{\"id\":\"USEHTThlqAyAJMu1xoMKo\",\"children\":[{\"text\":\"This API is used to get the SDK version number for analysis.\"}],\"type\":\"p\"},{\"id\":\"Jt92YSRQNBfHXlVpptab3\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype26\",\"type\":\"h4\"},{\"id\":\"EaFMnb2PKjP1v3ZrcnCSN\",\"children\":[{\"id\":\"p74BSO-y7E91U0cb9Wk7u\",\"children\":[{\"text\":\"Future GetSDKVersion() \"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"IEGs4_kgxFk_p5s7IqiN4\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code30\",\"type\":\"h4\"},{\"id\":\"T-_1u89JZoKctNEBRIoyR\",\"children\":[{\"id\":\"Pg3QnfLqsTHqN7qUh3psT\",\"children\":[{\"text\":\"_sdkVersions = await ITMGContext.GetInstance().GetSDKVersion();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"ObBBBojrISjkF0zZGpAh8\",\"children\":[{\"text\":\"Setting log printing level\"}],\"nodeId\":\"setting-log-printing-level\",\"type\":\"h3\"},{\"id\":\"2gsRVlNOX1jXrjl5ck-3c\",\"children\":[{\"text\":\"This API is used to set the level of logs to be printed, and needs to be called before the initialization. It is recommended to keep the default level.\"}],\"type\":\"p\"},{\"id\":\"opINEZBZvsfWXSD2BdMOY\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype27\",\"type\":\"h4\"},{\"id\":\"TLVfXqIxobm6j3VafJfN9\",\"children\":[{\"id\":\"v4EaPLQoJH-8MgmNB1Ocd\",\"children\":[{\"text\":\"Future SetLogLevel(int levelWrite, int levelPrint)\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"ymvo90flp8Swb3vhglVe9\",\"children\":[{\"text\":\"Parameter description\"}],\"nodeId\":\"parameter-description\",\"type\":\"h4\"},{\"id\":\"r9lXBv7ILL4bjFrySx07O\",\"children\":[{\"id\":\"0xStskEEU7bBEpzAVCOCK\",\"children\":[{\"id\":\"FxI3yIwaqO7ijkuJJP7FH\",\"children\":[{\"id\":\"fSkPFhlaExyeZzAm3m8fX\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"jLO0h-osCdvbFOW2pcUKI\",\"children\":[{\"id\":\"_smg96hK29oHGjCeHwLJs\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"s8Z2AkGrWcO2oMNCtWN5z\",\"children\":[{\"id\":\"9ldK0Duy7Z7DzdygFz_Xc\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"Dc-DimwxpWCtVHG0oNlkb\",\"children\":[{\"id\":\"SOai8DYixCnKyA7aTqfCV\",\"children\":[{\"id\":\"SzE8RV-1vmou9f7_rwi7X\",\"children\":[{\"text\":\"level\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"V6FhoqVzKnhG94MGn28AR\",\"children\":[{\"id\":\"gUg8HeTPi_XIm_Lk5GTbN\",\"children\":[{\"text\":\"ITMG_LOG_LEVEL\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"c2_VJ9Pb-htoKe4jWiqzL\",\"children\":[{\"id\":\"mvpZBLbcbs-Ijo3MmFf9e\",\"children\":[{\"text\":\"Sets the log level. `TMG_LOG_LEVEL_NONE` indicates not to log. Default value: `TMG_LOG_LEVEL_INFO`.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"rowHeader\":true,\"type\":\"table\",\"widths\":[14,20,66],\"widthMode\":\"percentage\"},{\"id\":\"9yY4584kJIJpqGHQ6cyfD\",\"children\":[{\"code\":1,\"text\":\"level\"},{\"text\":\" description:\"}],\"type\":\"p\"},{\"id\":\"ufOV2R7WNGxA3aiZM36uD\",\"children\":[{\"id\":\"jeAfgmJ6dX-Y2mmV_v3rm\",\"children\":[{\"id\":\"y1C7f_W4EO7Iuqo06QBkP\",\"children\":[{\"id\":\"Ij26C4X2HAm4wZ7OfZGJR\",\"children\":[{\"text\":\"level\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"BLM62d339u3LNiEz1eink\",\"children\":[{\"id\":\"B16Sk7b0HpGTit2C5nVib\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"qbgWXmatCmO3rJE61aqBU\",\"children\":[{\"id\":\"-jdrLyZmxVL0YOqPzZwyI\",\"children\":[{\"id\":\"2xRHwoNK12wzdmfJj8BIh\",\"children\":[{\"text\":\"TMG_LOG_LEVEL_NONE\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"TnbMd2lObNf58KSIBZ2w9\",\"children\":[{\"id\":\"LSCHT1sbmCmdo4ERazlAo\",\"children\":[{\"text\":\"Does not print logs\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"G0_MrOh7_sYMYo_LYH5GC\",\"children\":[{\"id\":\"hRyWeR5Suf1hThUo37vb2\",\"children\":[{\"id\":\"ml-oyYTB7Bj6h7mHi9Fva\",\"children\":[{\"text\":\"TMG_LOG_LEVEL_ERROR\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"7ptlK2J37WJNOVGBQvLTN\",\"children\":[{\"id\":\"H7-A_rqPj8dbYkFPCFEnu\",\"children\":[{\"text\":\"Prints error logs (default)\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"K5u43wPsbTcW8LDqLyilL\",\"children\":[{\"id\":\"4gk5i4xesJijaxxwNYLbD\",\"children\":[{\"id\":\"ijGtQk0g6nPJMWP8qKNBS\",\"children\":[{\"text\":\"TMG_LOG_LEVEL_INFO\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"RwA-xTwApmInKNDGo-CWl\",\"children\":[{\"id\":\"vFECSLDPP0B9eCdgQpFM9\",\"children\":[{\"text\":\"Prints info logs\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"ps8CQxVylEhy338X6HYN3\",\"children\":[{\"id\":\"Ny0DwSIMQNab7omhu8FDy\",\"children\":[{\"id\":\"qLxidMY4S6PoCgr3fkEWR\",\"children\":[{\"text\":\"TMG_LOG_LEVEL_DEBUG\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"4vMl97wgo-6Mqye_8gdOW\",\"children\":[{\"id\":\"PAIOm9camIsMMcw_z5EiF\",\"children\":[{\"text\":\"Prints debug logs\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"Am0q1yK82hNK0OPdo4JS1\",\"children\":[{\"id\":\"OzYPrXoWhERu6v7BnENGC\",\"children\":[{\"id\":\"1gPbB0_78sJNmsmazeHri\",\"children\":[{\"text\":\"TMG_LOG_LEVEL_VERBOSE\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"1RXQxg_BdVEjQs-OwZsKa\",\"children\":[{\"id\":\"N-Kn5TMHiHWTxFi-7gXZ5\",\"children\":[{\"text\":\"Prints verbose logs\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"rowHeader\":true,\"type\":\"table\",\"widths\":[50,50],\"widthMode\":\"percentage\"},{\"id\":\"fbnqx-8r50_ivfxxMvzEL\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code31\",\"type\":\"h4\"},{\"id\":\"vm_h-5I48rsmY6qD0woaT\",\"children\":[{\"id\":\"ZdLMfHWSByzuYIT6leoSt\",\"children\":[{\"text\":\"ITMGContext.GetInstance().SetLogLevel(ITMG_LOG_LEVEL.TMG_LOG_LEVEL_ERROR,ITMG_LOG_LEVEL.TMG_LOG_LEVEL_ERROR);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"J192P-sSpph_pc0SfwWQl\",\"children\":[{\"text\":\"Setting the log printing path\"}],\"nodeId\":\"setting-the-log-printing-path\",\"type\":\"h3\"},{\"id\":\"yGM0HrCNUqY_Q0mvi9SH_\",\"children\":[{\"text\":\"This API is used to set the log printing path. The default path is as follows. It needs to be called before Init.\"}],\"type\":\"p\"},{\"id\":\"47xC6BZwIShY9mltExTfj\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype28\",\"type\":\"h4\"},{\"id\":\"bXGgbx93nyUW3qha66ouW\",\"children\":[{\"id\":\"fKA_aGVChzuEZ1deTLPW-\",\"children\":[{\"text\":\"Future SetLogPath(String logDir)\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"u0G9HFavO7KkeB9sZZmdi\",\"children\":[{\"id\":\"PlbuFUM1uFOwHf4qiGUJZ\",\"children\":[{\"id\":\"z7kHzC-twrAQtwNK2qCG-\",\"children\":[{\"id\":\"rbLZzzgBMMQBdnW2ydnHP\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"IPsOZwMTBcCobIpN-cqCC\",\"children\":[{\"id\":\"oBCrJvl1PBoSi9iiWcL-B\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"GmNImL_PN-JvXuevRcFXX\",\"children\":[{\"id\":\"nuU5XCpsXkOfoaePgfK-G\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"eCR0UDCB8UN71_d_pZuhZ\",\"children\":[{\"id\":\"hEStSRdvOqYvdxRJFX04O\",\"children\":[{\"id\":\"LhhqfReu01kohjx40QSCu\",\"children\":[{\"text\":\"logPath\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Xpa1GDGEeTcww2iWe51JS\",\"children\":[{\"id\":\"p1vZw0AbN_ag2lyeCpvHT\",\"children\":[{\"text\":\"string\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"WbciXlW91iUYbndICTL-R\",\"children\":[{\"id\":\"ZQ519pe-maRnbF4hN37ss\",\"children\":[{\"text\":\"Path\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"rowHeader\":true,\"type\":\"table\",\"widths\":[33.33,33.33,33.34],\"widthMode\":\"percentage\"},{\"id\":\"48U1xbS380hWTXTDBhuIK\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code32\",\"type\":\"h4\"},{\"id\":\"Uy2y23mQixVuyezEQsfmr\",\"children\":[{\"id\":\"gZV2K7EQnzou7gXVuqyT6\",\"children\":[{\"text\":\"String logDir = \\\"\\\"// Set a path by yourself\"}],\"type\":\"code-line\"},{\"id\":\"kaabKZBX0GNjE-6P1Ehu1\",\"children\":[{\"text\":\"ITMGContext.GetInstance().SetLogPath(curPath);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"type\":\"p\",\"children\":[{\"text\":\"\"}],\"id\":\"OzoRlDiIseieMxWs6HvBc\"}]"}},"54038":{"categoryId":607,"weight":90,"type":"page","extension":"","pid":54037,"id":54038,"lang":"en","title":"Integrating SDK","pdfUrl":"","docType":"default","children":[],"firstReleaseTime":"2023-03-13 22:33:21","recentReleaseTime":"2023-03-13 22:33:21","content":{"title":"Integrating SDK","body":"
This document describes how to configure an Electron project for the GME APIs for Electron.

Supported Platforms

Windows

Importing the SDK

Step 1: Install Node.js

1. Download the latest version of the Node.js installation package Windows Installer (.msi) 64-bit for Windows.
2. Open Node.js command prompt in the application list and open a terminal window.

Step 2. Install Electron

Run the following command in the terminal to install Electron. V4.0.0 or later is recommended.
$ npm install electron -g


Step 3. Install the GME SDK for Electron

1. Use the following npm command in your Electron project to install the GME SDK:
$ npm install gme-electron-sdk@latest --save

2. In the project script, import and use the module:
const { GmeContext } = require('gme-electron-sdk');
// import gmesdk from 'gme-electron-sdk';
gmeContext = new GmeContext();
// Get the SDK version number
gmeContext.GetSDKVersion();


Step 4. Create an executable program

Install the packaging tool. We recommend you use Electron Forge. You can run the following command:
1. Add Electron Forge to your application's development dependencies and run the import command to set the scaffold of Forge:
npm install --save-dev @electron-forge/cli
npx electron-forge import
2. Run the make command of Forge to create a distributable application:
npm run make

","recentReleaseTime":"2024-01-18 15:15:48","slate":"[{\"id\":\"wfgwHEfoGi4juWQD6VrwI\",\"children\":[{\"text\":\"This document describes how to configure an Electron project for the GME APIs for Electron.\"}],\"type\":\"p\"},{\"id\":\"ECwNiQIsEq9iNvLYpxyJ1\",\"children\":[{\"text\":\"Supported Platforms\"}],\"nodeId\":\"supported-platforms\",\"type\":\"h2\"},{\"id\":\"cfFPv6l3s61P6eUcbqFdJ\",\"children\":[{\"text\":\"Windows\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"t1_P0WrrBjz2anMcFqRWa\",\"children\":[{\"text\":\"Importing the SDK\"}],\"nodeId\":\"importing-the-sdk\",\"type\":\"h2\"},{\"id\":\"47upcx9QmSTXxz_qD3Ge6\",\"children\":[{\"text\":\"Step 1: Install Node.js\"}],\"nodeId\":\"step-1.3A-install-node.js\",\"type\":\"h3\"},{\"id\":\"lMtvwH15cetGtGPQWGT8Y\",\"children\":[{\"text\":\"Download the latest version of the Node.js installation package \"},{\"code\":1,\"text\":\"Windows Installer (.msi) 64-bit\"},{\"text\":\" for Windows.\"}],\"start\":true,\"type\":\"oli\"},{\"id\":\"26j99sSqtp2tuMFFO8cpi\",\"children\":[{\"text\":\"Open \"},{\"code\":1,\"text\":\"Node.js command prompt\"},{\"text\":\" in the application list and open a terminal window.\"}],\"start\":false,\"type\":\"oli\"},{\"id\":\"QGAQoo7JWgzzneEf0mBS-\",\"children\":[{\"text\":\"Step 2. Install Electron\"}],\"nodeId\":\"step-2.-install-electron\",\"type\":\"h3\"},{\"id\":\"SAWLrTdpszaQMfLnzdSLo\",\"children\":[{\"text\":\"Run the following command in the terminal to install Electron. V4.0.0 or later is recommended.\"}],\"type\":\"p\"},{\"id\":\"9-cFNQlgvqqnzHS6vvzhm\",\"children\":[{\"id\":\"qLZGq4M6iuMf6Q9ptXs-E\",\"children\":[{\"text\":\"$ npm install electron -g\"}],\"type\":\"code-line\"},{\"id\":\"Id-VZcmEGvAuyqt0bTDIt\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"sh\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"Sq-sPop2OFG731d_cq_52\",\"children\":[{\"text\":\"Step 3. Install the GME SDK for Electron\"}],\"nodeId\":\"step-3.-install-the-gme-sdk-for-electron\",\"type\":\"h3\"},{\"id\":\"8COCDtNT-s2lTk7KNWzIb\",\"children\":[{\"text\":\"Use the following npm command in your Electron project to install the GME SDK:\"}],\"start\":true,\"type\":\"oli\"},{\"id\":\"io8e9CyWotT5pT5eaLttR\",\"children\":[{\"id\":\"3Q2r-PYpBTT1oNDmY3ie8\",\"children\":[{\"text\":\"$ npm install gme-electron-sdk@latest --save\"}],\"type\":\"code-line\"},{\"id\":\"KNUV7VSjkbeV7T7rZD0dN\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"indent\":1,\"language\":\"sh\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"HbkBAJ2k0-t53Z-6QfIx7\",\"children\":[{\"text\":\"In the project script, import and use the module:\"}],\"start\":false,\"type\":\"oli\"},{\"id\":\"S_2hKYZ68iXISrwSaQG1o\",\"children\":[{\"id\":\"CoH4i89REpolovTkQdkQ2\",\"children\":[{\"text\":\"const { GmeContext } = require('gme-electron-sdk');\"}],\"type\":\"code-line\"},{\"id\":\"jPYIyEjsG5FS2EIXAOso9\",\"children\":[{\"text\":\"// import gmesdk from 'gme-electron-sdk';\"}],\"type\":\"code-line\"},{\"id\":\"QEDeEBTG8ua2MGvXwhDXd\",\"children\":[{\"text\":\"gmeContext = new GmeContext();\"}],\"type\":\"code-line\"},{\"id\":\"GjPN1dcsDN_IuoybQH8gJ\",\"children\":[{\"text\":\"// Get the SDK version number\"}],\"type\":\"code-line\"},{\"id\":\"iCV5FxE5KtfW8LbEb9s0i\",\"children\":[{\"text\":\"gmeContext.GetSDKVersion();\"}],\"type\":\"code-line\"},{\"id\":\"OsI4NG1i6evdXayCTF6Eo\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"indent\":1,\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"O7PXbiWjIQJF5SjmBMU9D\",\"children\":[{\"text\":\"Step 4. Create an executable program\"}],\"nodeId\":\"step-4.-create-an-executable-program\",\"type\":\"h3\"},{\"id\":\"V4uvHef_W3a459T_BJtqf\",\"children\":[{\"text\":\"Install the packaging tool. We recommend you use Electron Forge. You can run the following command:\"}],\"type\":\"p\"},{\"id\":\"Oj_YO0aSgSMr3tMwnLGjA\",\"children\":[{\"text\":\"Add Electron Forge to your application's development dependencies and run the \"},{\"code\":1,\"text\":\"import\"},{\"text\":\" command to set the scaffold of Forge:\"}],\"start\":true,\"type\":\"oli\"},{\"id\":\"CXcv-dPHi0YAc2jQbk0-B\",\"children\":[{\"id\":\"OjWWZBLHROK0NmTM3qAAV\",\"children\":[{\"text\":\"npm install --save-dev @electron-forge/cli\"}],\"type\":\"code-line\"},{\"id\":\"i1bMiBPnJJsC8R8hjulmd\",\"children\":[{\"text\":\"npx electron-forge import\"}],\"type\":\"code-line\"}],\"indent\":1,\"language\":\"sh\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"hVePJRQMixAETw_M1lTlX\",\"children\":[{\"text\":\"Run the \"},{\"code\":1,\"text\":\"make\"},{\"text\":\" command of Forge to create a distributable application:\"}],\"start\":false,\"type\":\"oli\"},{\"id\":\"gUMXaq67PZGL1i4c6LfYw\",\"children\":[{\"id\":\"GcV1cS3Mf2qS-pPIUFS_R\",\"children\":[{\"text\":\"npm run make\"}],\"type\":\"code-line\"}],\"indent\":1,\"language\":\"sh\",\"type\":\"code-block\",\"autoWrap\":false},{\"type\":\"p\",\"children\":[{\"text\":\"\"}],\"id\":\"x2nYWGmJXxvQaR27r-0rD\"}]"}},"54039":{"categoryId":607,"weight":80,"type":"page","extension":"","pid":54037,"id":54039,"lang":"en","title":"Voice Chat","pdfUrl":"","docType":"default","children":[],"firstReleaseTime":"2023-03-13 22:33:21","recentReleaseTime":"2023-03-13 22:33:21","content":{"title":"Voice Chat","body":"

\"\"


This document describes how to integrate with and debug GME client APIs for the voice chat feature for Electron.

Key Considerations for Using GME

GME provides the voice chat, voice messaging and speech-to-text services, which all depend on core APIs such as Init and Poll.

Notes

You have created a GME application and obtained the SDK AppID and key. For more information, see Activating Services.
You have activated GME voice chat, voice messaging, and speech-to-text services. For more information, see Activating Services.
Configure your project before using GME; otherwise, the SDK will not take effect.
After a GME API is called successfully, GmeError.AV_OK will be returned with the value being 0.
GME APIs should be called in the same thread.
The Poll API should be called periodically for GME to trigger event callbacks.
For detailed error codes, see Error Codes.

Integrating the SDK

Directions

Key processes involved in SDK integration are as follows:
2. Calling Poll periodically to trigger callbacks

Core APIs

API
Description
Init
Initializes GME.
Poll
Triggers an event callback.
Pause
Pauses the system.
Resume
Resumes the system.
Uninit
Uninitializes GME.

Importing the GME module

const { GmeContext } = require('gme-electron-sdk');

Getting an instance

To use the voice chat feature, get the GmeSDK object first.
context = new GmeContext();

Initializing the SDK

You need to initialize the SDK through the Init API before you can use the real-time voice chat, voice message, and speech-to-text services. The Init API must be called in the same thread as other APIs. We recommend you call all APIs in the main thread.

API prototype

//class GmeSDK
Init(appid: string, openid: string): number;
Parameter
Type
Description
sdkAppId
string
AppID provided in the GME console, which can be obtained as instructed in Activating Services.
openID
string
openID can only be in Int64 type, which is passed in after being converted to a string. You can customize its rules, and it must be unique in the application. To pass in openID as a string, submit a ticket for application.

Returned values

Returned Value
Description
GmeError.AV_OK= 0
The SDK was initialized successfully.
AV_ERR_SDK_NOT_FULL_UPDATE=7015
Check whether the SDK file is complete. We recommend that you delete it and then import it again.
Note on 7015 error code
The error code 7015 is identified based on the MD5 value. If this error is reported during integration, check the integrity and version of the SDK file as prompted.
The returned value AV_ERR_SDK_NOT_FULL_UPDATE is only a reminder but will not cause an initialization failure.
Due to the third-party enhancement, the Unity packaging mechanism, and other factors, the MD5 value of the library file will be affected, resulting in misjudgment. Therefore, ignore this error in the logic for official releases, and avoid displaying it on the UI.

Sample code

string SDKAPPID3RD = "14000xxxxx";
string openId="10001";
number ret = context.Init(SDKAPPID3RD, openId);
// Determine whether the initialization is successful by the returned value
if (ret != GmeError.AV_OK)
{
console.log("Failed to initialize the SDK:");
return;
}

Setting callbacks

The API class uses the Delegate method to send callback notifications to the application. Register the callback function to the SDK for receiving callback messages before room entry.

Function prototype and sample code

Register the callback function to the SDK for receiving callback messages before room entry.
SetTMGDelegate(cb: ITMGDelegate);
// When initializing the SDK
context = GmeSDK.GetInstance();
context.setTMGDelegate(function(eventId, msg){
if (type == ITMG_MAIN_EVENT_TYPE_ENTER_ROOM)
{
// Processing callbacks
}
});

Triggering event callback

You need to periodically call the Poll API to trigger event callbacks. The Poll API is GME's message pump and should be called periodically for GME to trigger event callbacks; otherwise, the entire SDK service will run abnormally. For more information, see the EnginePollHelper file in SDK Download Guide.
Call the Poll API periodically
The Poll API must be called periodically and in the main thread to avoid abnormal API callbacks.

API prototype

Poll():number;

Sample code

setInterval(function () {
context.Poll();
}, 50);

Pausing the system

When a Pause event occurs in the system, the engine should also be notified for pause. For example, when the application switches to the background (OnApplicationPause, isPause=True), and you do not need the background to play back the audio in the room, please call Pause API to pause the GME service.

API prototype

Pause() :number

Resuming the system

When a Resume event occurs in the system, the engine should also be notified for resumption. The Resume API only supports resuming voice chat.

API prototype

Resume() :number

Uninitializing SDK

This API is used to uninitialize the SDK to make it uninitialized. If the game account is bound to openid, switching game account requires uninitializing GME and then using the new openid to initialize again.

API prototype

Uninit() : number;

Voice Chat Room APIs

You should initialize and call the SDK to enter a room before voice chat can start.
If you have any questions when using the service, see Sound and Audio.

\"\"


API
Description
GenAuthBuffer
Calculates the local authentication key.
EnterRoom
Enters a room.
ExitRoom
Exits a room.
IsRoomEntered
Determines whether room entry is successful.

Local authentication key calculation

Generate AuthBuffer for encryption and authentication of relevant features. For release in the production environment, use the backend deployment key as detailed in Authentication Key.

API prototype

GenAuthBuffer(appId: string,roomId: string, openId:string, appKey: number) :string;
Parameter
Type
Description
appId
string
AppID from the Tencent Cloud console
roomId
string
Room ID, which can contain up to 127 characters.
openId
string
User ID, which is the same as openID during initialization.
key
number
Permission key from the Tencent Cloud console.

Sample code

let userSig = context.GenAuthBuffer(this.appid, this.roomId, this.userId, this.authKey)
context.EnterRoom(this.roomId, this.roomType, userSig);

Entering a room

This API is used to enter a room with the generated authentication information. The mic and speaker are not enabled by default after room entry.
Note:
If the room entry callback result is 0, the room entry is successful. If 0 is returned from the EnterRoom API, it doesn't necessarily mean that the room entry is successful.
The audio type of the room is determined by the first user to enter the room. After that, if a member in the room changes the room type, it will take effect for all members there. For example, if the first user entering the room uses the smooth sound quality, and the second user entering the room uses the HD sound quality, the room audio type of the second user will become smooth sound quality. Only when a member in the room calls the ChangeRoomType API, the audio type of the room will be changed.

API prototype

EnterRoom(roomid: string, roomType: number, appKey: string) :number;
Parameter
Type
Description
roomId
string
Room ID, which can contain up to 127 characters.
roomType
ITMGRoomType
Room type. We recommend that you select ITMG_ROOM_TYPE_FLUENCY for games. For more information on room audio types, see Sound Quality.
appKey
string
Authentication key

Sample code

context.EnterRoom(roomID, ITMG_ROOM_TYPE_STANDARD, retAuthBuff);

Callback for room entry

After the user enters the room, the ITMG_MAIN_EVENT_TYPE_ENTER_ROOM event type will be called back to notify the room entry result, which can be listened on for processing. A successful callback means that the room entry is successful, and the billing starts.

Sample code

// Listen on an event:
gmeContext.setTMGDelegate(function(eventId, msg){
switch (eventId) {
case ITMG_MAIN_EVENT_TYPE_ENTER_ROOM:
{
}
}
});

Data details

Message
Data
Example
ITMG_MAIN_EVENT_TYPE_ENTER_ROOM
result; error_info
{"error_info":"","result":0}
ITMG_MAIN_EVENT_TYPE_ROOM_DISCONNECT
result; error_info
{"error_info":"waiting timeout, please check your network","result":0}
If the network is disconnected, there will be a disconnection callback notification ITMG_MAIN_EVENT_TYPE.ITMG_MAIN_EVENT_TYPE_ROOM_DISCONNECT. At this time, the SDK will automatically reconnect, and the callback is ITMG_MAIN_EVENT_TYPE_RECONNECT_START. When the reconnection is successful, there will be a callback ITMG_MAIN_EVENT_TYPE_RECONNECT_SUCCESS.

Error codes

Error Code
Cause and Suggested Solution
7006
Authentication failure causes:
AppID doesn't exist or is incorrect.
An error occurred while authenticating authbuff.
Authentication expired.
OpenId is invalid.
7007
The user was already in another room.
1001
The user was already in the process of entering a room but repeated this operation. We recommend that you not call the room entry API until the room entry callback is returned.
1003
The user was already in the room and called the room entry API again.
1101
Make sure that the SDK is initialized, OpenId complies with the rules, the APIs are called in the same thread, and the Poll API is called normally.

Exiting a room

This API is used to exit the current room. It is an async API. The returned value AV_OK indicates a successful async delivery. If there is a scenario in the application where room entry is performed immediately after room exit, you don't need to wait for the RoomExitComplete callback notification from the ExitRoom API; instead, you can directly call the EnterRoom API.

API prototype

ExitRoom(): number;

Sample code

context.ExitRoom();

Callback for room exit

After the user exits a room, a callback will be returned with the message being ITMG_MAIN_EVENT_TYPE_EXIT_ROOM. The sample code is shown below:

Sample code

gmeContext.setTMGDelegate(function(eventId, msg){
switch (eventId) {
case ITMG_MAIN_EVENT_TYPE_EXIT_ROOM:
{
// Process
break;
}
}
});

Determining whether user has entered room

This API is used to determine whether the user has entered a room. A value in boolean type will be returned. Do not call this API during room entry.

API prototype

IsRoomEntered() :boolean

Sample code

context.IsRoomEntered();

Room Status Maintenance

APIs in this section are used to display speaking members and members entering or exiting the room and mute a member in the room at the business layer.
\"\"

API/Notification
Description
ITMG_MAIN_EVNET_TYPE_USER_UPDATE
The member status changed.
AddAudioBlackList
Mutes a member in the room.
RemoveAudioBlackList
Unmutes a member.
IsOpenIdInAudioBlackList
Queries whether the user of the specified openid is muted.

Notification events of the member room entry and speaking status

This event is used to get the user speaking in the room and display the user on the UI, and to send a notification when someone enters or exits the room.
A notification for this event will be sent only when the status changes. To get the member status in real time, cache the notification when it is received at the business layer. The event message ITMG_MAIN_EVNET_TYPE_USER_UPDATE containing event_id, count, and openIdList will be returned, which will be identified in the OnEvent notification.
Notifications of the EVENT_ID_ENDPOINT_NO_AUDIO audio event will be sent only when the threshold is exceeded; that is, other members in the room can receive the notification that the local user stops speaking only after the local client captures no voice for two seconds.
The audio event returns only the member speaking status but not the specific volume level. If you need the specific volume levels of members in the room, you can use the GetVolumeById API.
event_id
Description
Maintenance
EVENT_ID_ENDPOINT_ENTER
Return the openid of the member entering the room.
Member list
EVENT_ID_ENDPOINT_EXIT
Return the openid of the member exiting the room.
Member list
EVENT_ID_ENDPOINT_HAS_AUDIO
Return the openid of the member sending audio packets in the room. This event can be used to determine whether a user is speaking and display the voiceprint effect.
Chat member list
EVENT_ID_ENDPOINT_NO_AUDIO
Return the openid of the member stopping sending audio packets in the room.
Chat member list

Sample code

context.setTMGDelegate(function(eventId, msg){
if (type == ITMG_MAIN_EVENT_TYPE_ENTER_ROOM)
{
// Process
switch (eventID)
{
case EVENT_ID_ENDPOINT_ENTER:
// A member enters the room
break;
case EVENT_ID_ENDPOINT_EXIT:
// A member exits the room
break;
case EVENT_ID_ENDPOINT_HAS_AUDIO:
// A member sends audio packets
break;
case EVENT_ID_ENDPOINT_NO_AUDIO:
// A member stops sending audio packets
break;

default:
break;
}
break;
}
});

Muting a member in the room

This API is used to add an ID to the audio data blocklist. This operation blocks audio from someone and only applies to the local device without affecting other devices. The returned value 0 indicates that the call is successful. Assume that users A, B, and C are all speaking using their mic in a room:
If A blocks C, A can only hear B.
If B blocks neither A nor C, B can hear both of them.
If C blocks neither A nor B, C can hear both of them.
This API is suitable for scenarios where a user is muted in a room.

API prototype

AddAudioBlackList(openId: string) :number
Parameter
Type
Description
openId
string
openid of the user to be blocked

Sample code

context.AddAudioBlackList(openId);

Unmuting

This API is used to remove an ID from the audio data blacklist. A returned value of 0 indicates the call is successful.

API prototype

RemoveAudioBlackList(openId: string) :number
Parameter
Type
Description
openId
string
ID to be unblocked

Sample code

context.RemoveAudioBlackList(openId);

Querying whether a user is muted

This API is used to query whether an ID is blocked. The returned value true indicates that the ID is blocked, while false indicates not.

API prototype

IsOpenIdInAudioBlackList(openId: string) :boolean
Parameter
Type
Description
openId
string
ID to be queried

Sample code

boolean isInBlackList = context.IsOpenIdInAudioBlackList(openId);

Voice Chat Capturing APIs

The voice chat APIs can only be called after SDK initialization and room entry.
When the user clicks the button of enabling/disabling the mic or speaker on the UI, we recommend that you call the EnableMic or EnableSpeaker API.
To enable the user to press the mic button on the UI to speak and release it to stop speaking, we recommend that you call EnableAudioCaptureDevice once during room entry and call EnableAudioSend to enable the user to speak while pressing the button.
API
Description
EnableMic
Enables/Disables the mic.
GetMicState
Gets the mic status.
EnableAudioCaptureDevice
Enables/Disables the capturing device.
IsAudioCaptureDeviceEnabled
Gets the capturing device status.
EnableAudioSend
Enables/Disables audio upstreaming.
IsAudioSendEnabled
Gets the audio upstreaming status.
GetMicLevel
Gets the real-time mic volume level.
GetSendStreamLevel
Gets the real-time audio upstreaming volume level.
SetMicVolume
Sets the mic volume level.
GetMicVolume
Gets the mic volume level.

Enabling or disabling mic

This API is used to enable/disable the mic. The mic and speaker are not enabled by default after room entry. EnableMic = EnableAudioCaptureDevice + EnableAudioSend

API prototype

EnableMic(bEnable: boolean) : number
Parameter
Type
Description
isEnabled
boolean
To enable the mic, set this parameter to true; otherwise, set it to false.

Sample code

// Turn on mic
context.EnableMic(true);

Getting the mic status

This API is used to get the mic status. The returned value 0 indicates that the mic is off, while 1 is on.

API prototype

GetMicState() :number

Sample code

context.GetMicState();

Enabling or disabling capturing device

This API is used to enable/disable a capturing device. The device is not enabled by default after room entry.
This API can only be called after room entry. The device will be disabled automatically after room exit.
Operations such as permission application and volume type adjustment will generally be performed when a capturing device is enabled on a mobile device.

API prototype

EnableAudioCaptureDevice(enable:boolean) :number
Parameter
Type
Description
enable
boolean
To enable the capturing device, set this parameter to true, otherwise, set it to false.

Sample code

// Enable capturing device
context.EnableAudioCaptureDevice(true);

Getting the capturing device status

This API is used to get the status of a capturing device.

API prototype

IsAudioCaptureDeviceEnabled():boolean

Sample code

boolean IsAudioCaptureDevice = context.IsAudioCaptureDeviceEnabled();

Enabling or disabling audio upstreaming

This API is used to enable/disable audio upstreaming. If a capturing device is already enabled, it will send captured audio data; otherwise, it will remain muted. For more information on how to enable/disable the capturing device, see the EnableAudioCaptureDevice API.

API prototype

EnableAudioSend(bEnable: boolean) :number
Parameter
Type
Description
isEnabled
boolean
To enable audio upstreaming, set this parameter to true; otherwise, set it to false.

Sample code

context.EnableAudioSend(true);

Getting audio upstreaming status

This API is used to get the status of audio upstreaming.

API prototype

IsAudioSendEnabled():boolean

Sample code

boolean IsAudioSend = context.IsAudioSendEnabled();

Getting the real-time mic volume

This API is used to get the real-time mic volume level. A number-type value in the range of 0–100 will be returned. We recommend that you call this API once every 20 ms.

API prototype

GetMicLevel():number

Sample code

context.GetMicLevel();

Getting the real-time audio upstreaming volume

This API is used to get the local real-time audio upstreaming volume level. A number-type value in the range of 0–100 will be returned.

API prototype

GetSendStreamLevel() :number

Sample code

context.GetSendStreamLevel();

Setting the mic software volume

This API is used to set the mic volume level. The corresponding parameter is volume, which is equivalent to attenuating or gaining the captured sound.

API prototype

SetMicVolume(volume:number) :number
Parameter
Type
Description
volume
number
Value range: 0-200. Default value: 100. 0 indicates that the audio is muted, while 100 indicates that the volume level remains unchanged.

Sample code

number micVol = (value * 100);
context.SetMicVolume (micVol);

Getting the mic software volume

This API is used to get the mic volume level. A number-type value will be returned. 101 indicates that the SetMicVolume API has not been called.

API prototype

GetMicVolume()

Sample code

context.GetMicVolume();

Voice Chat Playback APIs

API
Description
EnableSpeaker
Enables/Disables the speaker.
GetSpeakerState
Gets the speaker status.
EnableAudioPlayDevice
Enables/Disables the playback device.
IsAudioPlayDeviceEnabled
Gets the playback device status.
EnableAudioRecv
Enables/Disables audio downstreaming.
IsAudioRecvEnabled
Gets the audio downstreaming status.
GetSpeakerLevel
Gets the real-time speaker volume level.
GetRecvStreamLevel
Gets the real-time downstreaming audio levels of other members in the room.
SetSpeakerVolume
Sets the speaker volume level.
GetSpeakerVolume
Gets the speaker volume level.

Enabling or disabling speaker

This API is used to enable/disable the speaker. EnableSpeaker = EnableAudioPlayDevice + EnableAudioRecv

API prototype

EnableSpeaker(bEnable: boolean) : number;
Parameter
Type
Description
bEnable
boolean
To disable the speaker, set this parameter to false; otherwise, set it to true.

Sample code

// Turn on the speaker
context.EnableSpeaker(true);

Getting the speaker status

This API is used to get the speaker status. 0 indicates that the speaker is off, and 1 is on.

API prototype

GetSpeakerState() :number

Sample code

context.GetSpeakerState();

Enabling or disabling playback device

This API is used to enable/disable a playback device.

API prototype

EnableAudioPlayDevice(enable:boolean) :number
Parameter
Type
Description
enable
boolean
To disable the playback device, set this parameter to false; otherwise, set it to true.

Sample code

context.EnableAudioPlayDevice(true);

Getting the playback device status

This API is used to get the status of a playback device.

API prototype

IsAudioPlayDeviceEnabled() :boolean

Sample code

boolean enable = context.IsAudioPlayDeviceEnabled();

Enabling or disabling audio downstreaming

This API is used to enable/disable audio downstreaming. If a playback device is already enabled, it will play back audio data from other members in the room; otherwise, it will remain muted. For more information on how to enable/disable the playback device, see the EnableAudioPlayDevice API.

API prototype

EnableAudioRecv(bEnable: boolean) :number
Parameter
Type
Description
isEnabled
boolean
To enable audio downstreaming, set this parameter to true; otherwise, set it to false.

Sample code

context.EnableAudioRecv(true);

Getting audio downstreaming status

This API is used to get the status of audio downstreaming.

API prototype

IsAudioRecvEnabled():boolean

Sample code

boolean IsAudioRecv = context.IsAudioRecvEnabled();

Getting the real-time speaker volume

This API is used to get the real-time speaker volume level. A number-type value will be returned to indicate the volume level. We recommend that you call this API once every 20 ms.

API prototype

GetSpeakerLevel():number

Sample code

context.GetSpeakerLevel();

Getting the real-time downstreaming audio levels of other members in room

This API is used to get the real-time audio downstreaming volume levels of other members in the room. A number-type value will be returned. Value range: 0–200.

API prototype

GetRecvStreamLevel(openId: string) :number
Parameter
Type
Description
openId
string
openId of another member in the room

Sample code

number level =GetRecvStreamLevel(openId);

Dynamically setting the volume of a member of the room

This API is used to set the volume of a member in the room. It takes effect only on the local.

API prototype

SetSpeakerVolumeByOpenID(openId: string, volume:number) :number;
Parameter
Type
Description
openId
string
OpenID of the target user
volume
number
Percentage. Recommended value range: 0–200. Default value: 100.

Sample code

context.SetSpeakerVolumeByOpenID(openId, 100);

Getting volume percentage

This API is used to get the volume level set by SetSpeakerVolumeByOpenID.

API prototype

GetSpeakerVolumeByOpenID(openId: string) :number;
Parameter
Type
Description
openId
string
OpenID of the target user

Returned values

API returns volume percentage set by OpenID, where 100 is by default.

Sample code

context.GetSpeakerVolumeByOpenID(openId);

Setting the speaker volume

This API is used to set the speaker volume.

API prototype

SetSpeakerVolume(volume:number) :number
Parameter
Type
Description
volume
number
Volume level. Value range: 0–200. Default value: 100. 0 indicates that the audio is muted, while 100 indicates that the volume level remains unchanged.

Sample code

number vol = 100;
context.SetSpeakerVolume(vol);

Getting the speaker volume

This API is used to get the speaker volume. A number-type value will be returned to indicate the volume. 101 indicates that the SetSpeakerVolume API has not been called.\n"Level" indicates the real-time volume, and "Volume" the speaker volume. The final volume = Level * Volume%. For example, if the "Level" is 100 and "Volume" is 60, the final volume is "60".

API prototype

GetSpeakerVolume() :number

Sample code

numbet volume = context.GetSpeakerVolume();

Device Selection APIs

Device selection APIs can be used only on PC.
API
Description
GetMicListCount
Gets the number of mics.
GetMicList
Enumerates mics.
GetSpeakerListCount
Gets the number of speakers.
GetSpeakerList
Enumerates speakers.
SelectMic
Selects a mic.
SelectSpeaker
Selects a speaker.

Getting the number of mics

This API is used to get the number of mics.

Function prototype

GetMicListCount() :number

Sample code

var micListCount = context.GetMicListCount();

Enumerating mics

This API is used together with the GetMicListCount API to enumerate mics.

Function prototype

GetMicList() :GmeAudioDeviceInfo[];

Sample code

var micList = context.GetMicList();

Selecting mic

This API is used to select a mic. If this API is not called or DEVICEID_DEFAULT is passed in, the default mic will be selected.\nThe 0th device id returned in the GetMicList API is the default device of the call device. If there is a selected call device, it will be maintained by service. If it is unplugged, the call device will be changed back into the default device.

Function prototype

SelectMic(micId: string) :number;
Parameter
Type
Description
micId
string
Mic ID, which is from the list returned by GetMicList.

Sample code

context.SelectMic(deviceID);
This API is used to get the number of speakers.

Function prototype

GetSpeakerListCount() :number;

Sample code

context.GetSpeakerListCount();

Enumerating speakers

This API is used together with the GetSpeakerListCount API to enumerate speakers.

Function prototype

GetSpeakerList(): GmeAudioDeviceInfo[]

Sample code

var speakList = GetSpeakerList();

Selecting speaker

This API is used to select a playback device. If this API is not called or DEVICEID_DEFAULT is passed in, the default playback device will be selected.

Function prototype

SelectSpeaker(speakerId: string) :number
Parameter
Type
Description
speakerId
string
Speaker ID, which is from the list returned by GetSpeakerList.

Sample code

var ret = SelectSpeaker(deviceID);

Advanced APIs

Enabling in-ear monitoring

This API is used to enable in-ear monitoring. You need to call EnableLoopBack+EnableSpeaker before you can hear your own voice.

API prototype

EnableLoopBack(bEnable: boolean) :number
Parameter
Type
Description
enable
boolean
Specifies whether to enable.

Sample code

context.EnableLoopBack(true);

Getting user's room audio type

This API is used to get a user's room audio type. The returned value is the room audio type. Value 0 indicates that an error occurred while getting the user's room audio type. For room audio types, please see the EnterRoom API.

API prototype

GetRoomType() :number

Sample code

context.GetRoomType();

Changing the room type

This API is used to modify a user's room audio type. For the result, please see the callback event. The event type is ITMG_MAIN_EVENT_TYPE_CHANGE_ROOM_TYPE. The audio type of the room is determined by the first user to enter the room. After that, if a member in the room changes the room type, it will take effect for all members there.

API prototype

ChangeRoomType(roomType: number) :number
Parameter
Type
Description
roomtype
number
Room type to be switched to. For room audio types, see the EnterRoom API.

Sample code

context.ChangeRoomType(ITMG_ROOM_TYPE_FLUENCY);

Callback event

After the room type is set, the event message ITMG_MAIN_EVENT_TYPE_CHANGE_ROOM_TYPE will be returned in the callback. The returned parameters include result, error_info, and new_room_type. The new_room_type represents the following information. The event message will be identified in the OnEvent function.
Event Subtype
Parameter
Description
ITMG_ROOM_CHANGE_EVENT_ENTERROOM
1
The existing audio type is inconsistent with and changed to that of the entered room.
ITMG_ROOM_CHANGE_EVENT_START
2
A user is already in the room and the audio type starts changing (e.g., calling the ChangeRoomType API to change the audio type).
ITMG_ROOM_CHANGE_EVENT_COMPLETE
3
A user is already in the room, and the audio type has been changed.
ITMG_ROOM_CHANGE_EVENT_REQUEST
4
A room member calls the ChangeRoomType API to request a change of the room audio type.

Sample code

context.setTMGDelegate(function(eventId, msg){
if (ITMGContext.ITMG_MAIN_EVENT_TYPE.ITMG_MAIN_EVENT_TYPE_CHANGE_ROOM_TYPE == type)
{
// Process room type events
}
});

The monitoring event of room call quality

This is the quality monitoring event used to listen on the network quality. If your network conditions are poor, the business layer will ask you to switch the network through the UI. This event is triggered once every two seconds after room entry, and its message is ITMG_MAIN_EVENT_TYPE_CHANGE_ROOM_QUALITY. The returned parameters include weight, loss, and delay, which are as detailed below:
Parameter
Type
Description
weight
number
Value range: 1–50. 50 indicates excellent sound quality, 1 indicates very poor (barely usable) sound quality, and 0 represents an initial meaningless value. Generally, if the value is below 30, you can remind users that the network is poor and recommend them to switch the network.
Loss
var
Upstream packet loss rate
Delay
number
Voice chat delay in ms

Getting version number

This API is used to get the SDK version number for analysis.

API prototype

GetSDKVersion() :string

Sample code

context.GetSDKVersion();

Setting the application name and version

This API is used to set the application name and version.

API prototype

SetAppVersion(appVersion: string) : number

Parameter description

Parameter
Type
Description
appVersion
string
Application name and version

Sample code

context.SetAppVersion("gme V2.0.0");

Setting log printing level

This API is used to set the level of logs to be printed, and needs to be called before the initialization. It is recommended to keep the default level.

API prototype

SetLogLevel(level: number) : number

Parameter description

Parameter
Type
Description
level
number
Sets the log level. TMG_LOG_LEVEL_NONE indicates not to log. Default value: TMG_LOG_LEVEL_INFO.
level description:
level
Description
TMG_LOG_LEVEL_NONE
Does not print logs
TMG_LOG_LEVEL_ERROR
Prints error logs (default)
TMG_LOG_LEVEL_INFO
Prints info logs
TMG_LOG_LEVEL_DEBUG
Prints debug logs
TMG_LOG_LEVEL_VERBOSE
Prints verbose logs

Sample code

context.SetLogLevel(TMG_LOG_LEVEL_INFO);

Setting the log printing path

This API is used to set the log printing path. The default path is as follows. It needs to be called before Init.
Platform
Path
Windows
%appdata%\\GMEGLOBAL\\GME\\ProcessName

API prototype

SetLogPath(logPath: string)
Parameter
Type
Description
logPath
string
Path

Sample code

string logDir = ""// Set a path by yourself
context.SetLogPath(logDir);

Getting the diagnostic messages

This API is used to get information on the quality of real-time audio/video calls, which is mainly used to view real-time call quality and troubleshoot and can be ignored on the business side.

API prototype

GetQualityTips() :string

Sample code

string tips = context.GetQualityTips();

Callback message

Message
Description
Data
Example
ITMG_MAIN_EVENT_TYPE_ENTER_ROOM
A member entered the audio room.
result; error_info
{"error_info":"","result":0}
ITMG_MAIN_EVENT_TYPE_EXIT_ROOM
A member exited the audio room.
result; error_info
{"error_info":"","result":0}
ITMG_MAIN_EVENT_TYPE_ROOM_DISCONNECT
The room was disconnected due to a network or another issue.
result; error_info
{"error_info":"waiting timeout, please check your network","result":0}
ITMG_MAIN_EVNET_TYPE_USER_UPDATE
Room members were updated.
user_list; event_id
{"event_id":1,"user_list":["0"]}
ITMG_MAIN_EVENT_TYPE_RECONNECT_START
The reconnection to the room started.
result; error_info
{"error_info":"","result":0}
ITMG_MAIN_EVENT_TYPE_RECONNECT_SUCCESS
The reconnection to the room succeeded.
result; error_info
{"error_info":"","result":0}
ITMG_MAIN_EVENT_TYPE_SWITCH_ROOM
The room was quickly switched.
result; error_info
{"error_info":"","result":0}
ITMG_MAIN_EVENT_TYPE_CHANGE_ROOM_TYPE
The room status was changed.
result; error_info; sub_event_type; new_room_type
{"error_info":"","new_room_type":0,"result":0}
ITMG_MAIN_EVENT_TYPE_ROOM_SHARING_START
Cross-room mic connect started.
result;
{"result":0}
ITMG_MAIN_EVENT_TYPE_ROOM_SHARING_STOP
Cross-room mic connect stopped.
result;
{"result":0}
ITMG_MAIN_EVENT_TYPE_SPEAKER_DEFAULT_DEVICE_CHANGED
The default speaker was changed.
result; error_info
{"deviceID":"{0.0.0.00000000}.{a4f1e8be-49fa-43e2-b8cf-dd00542b47ae}","deviceName":"Speaker (Realtek High Definition Audio)","error_info":"","isNewDevice":true,"isUsedDevice":false,"result":0}
ITMG_MAIN_EVENT_TYPE_SPEAKER_NEW_DEVICE
A new speaker was added.
result; error_info
{"deviceID":"{0.0.0.00000000}.{a4f1e8be-49fa-43e2-b8cf-dd00542b47ae}","deviceName":"Speaker (Realtek High Definition Audio)","error_info":"","isNewDevice":true,"isUsedDevice":false,"result":0}
ITMG_MAIN_EVENT_TYPE_SPEAKER_LOST_DEVICE
A speaker was lost.
result; error_info
{"deviceID":"{0.0.0.00000000}.{a4f1e8be-49fa-43e2-b8cf-dd00542b47ae}","deviceName":"Speaker (Realtek High Definition Audio)","error_info":"","isNewDevice":false,"isUsedDevice":false,"result":0}
ITMG_MAIN_EVENT_TYPE_MIC_NEW_DEVICE
A new mic was added.
result; error_info
{"deviceID":"{0.0.1.00000000}.{5fdf1a5b-f42d-4ab2-890a-7e454093f229}","deviceName":"Mic (Realtek High Definition Audio)","error_info":"","isNewDevice":true,"isUsedDevice":true,"result":0}
ITMG_MAIN_EVENT_TYPE_MIC_LOST_DEVICE
A mic was lost.
result; error_info
{"deviceID":"{0.0.1.00000000}.{5fdf1a5b-f42d-4ab2-890a-7e454093f229}","deviceName":"Mic (Realtek High Definition Audio)","error_info":"","isNewDevice":false,"isUsedDevice":true,"result":0}
ITMG_MAIN_EVENT_TYPE_MIC_DEFAULT_DEVICE_CHANGED
The default mic was changed.
result; error_info
{"deviceID":"{0.0.1.00000000}.{5fdf1a5b-f42d-4ab2-890a-7e454093f229}","deviceName":"Mic (Realtek High Definition Audio)","error_info":"","isNewDevice":false,"isUsedDevice":true,"result":0}
ITMG_MAIN_EVENT_TYPE_CHANGE_ROOM_QUALITY
The room network quality changed.
weight; loss; delay
{"weight":5,"loss":0.1,"delay":1}
ITMG_MAIN_EVNET_TYPE_PTT_RECORD_COMPLETE
Voice message recording was completed.
result; file_path
{"file_path":"","result":0}
ITMG_MAIN_EVNET_TYPE_PTT_UPLOAD_COMPLETE
Voice message upload was completed.
result; file_path;file_id
{"file_id":"","file_path":"","result":0}
ITMG_MAIN_EVNET_TYPE_PTT_DOWNLOAD_COMPLETE
Voice message download was completed.
result; file_path;file_id
{"file_id":"","file_path":"","result":0}
ITMG_MAIN_EVNET_TYPE_PTT_PLAY_COMPLETE
Voice message playback was completed.
result; file_path
{"file_path":"","result":0}
ITMG_MAIN_EVNET_TYPE_PTT_SPEECH2TEXT_COMPLETE
Fast speech-to-text conversion was completed.
result; text;file_id
{"file_id":"","text":"","result":0}
ITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRECOGNITION_COMPLETE
Streaming speech-to-text conversion was completed.
result; file_path; text;file_id
{{"file_id":"","file_path":","text":"","result":0}}
ITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRECOGNITION_IS_RUNNING
Streaming speech-to-text conversion is in progress.
result; file_path; text;file_id
{{"file_id":"","file_path":","text":"","result":0}}
ITMG_MAIN_EVNET_TYPE_PTT_TEXT2SPEECH_COMPLETE
Text-to-speech conversion was completed.
result; text;file_id
{{"file_id":"","text":"","result":0}}
ITMG_MAIN_EVNET_TYPE_PTT_TRANSLATE_TEXT_COMPLETE
Text translation was completed.
result; text;file_id
{{"file_id":"","text":"","result":0}}

","recentReleaseTime":"2024-01-18 15:15:48","slate":"[{\"id\":\"SGOSbn0u_j26XAxYtchQk\",\"children\":[{\"text\":\"\"},{\"id\":\"0cFTsyuzi6NEl2WuPjIBW\",\"alt\":\"\",\"children\":[{\"text\":\"\"}],\"inline\":true,\"naturalSize\":[1560,1030],\"size\":[799,527],\"type\":\"image\",\"url\":\"https://cloudcache.intl.tencent-cloud.com/cms/backend-cms/23913b3fb96711eda534525400c56988.png\"},{\"text\":\"\"}],\"type\":\"p\"},{\"id\":\"OAZwl4LNHo5dRnAo_bLOC\",\"type\":\"p\",\"children\":[{\"text\":\"This document describes how to integrate with and debug GME client APIs for the voice chat feature for Electron.\"}]},{\"id\":\"2wFX1d7UqGH_w9Cu-2T_m\",\"children\":[{\"text\":\"Key Considerations for Using GME\"}],\"nodeId\":\".E4.BD.BF.E7.94.A8-gme-.E9.87.8D.E8.A6.81.E4.BA.8B.E9.A1.B9\",\"type\":\"h2\"},{\"id\":\"rYh3PgHE925ZNPY3RGMfB\",\"children\":[{\"text\":\"GME provides the voice chat, voice messaging and speech-to-text services, which all depend on core APIs such as \"},{\"code\":1,\"text\":\"Init\"},{\"text\":\" and \"},{\"code\":1,\"text\":\"Poll\"},{\"text\":\".\"}],\"type\":\"p\"},{\"id\":\"PiyJkCzJFqRFJb_f48IR2\",\"children\":[{\"text\":\"Notes\"}],\"nodeId\":\".E9.87.8D.E7.82.B9.E6.8F.90.E7.A4.BA\",\"type\":\"h4\"},{\"id\":\"xKjHYxjHQN_aj3EGERwpu\",\"children\":[{\"text\":\"You have created a GME application and obtained the SDK \"},{\"code\":1,\"text\":\"AppID\"},{\"text\":\" and key. For more information, see \"},{\"id\":\"_Us-QWYW95zTVeuiXLI0Y\",\"children\":[{\"text\":\"Activating Services\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://www.tencentcloud.com/document/product/607/10782\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/10782\"},\"type\":\"ref\"},{\"text\":\".\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"rKL5P0YB_ishadZ-vcPll\",\"children\":[{\"text\":\"You have activated \"},{\"b\":1,\"text\":\"GME voice chat, voice messaging, and speech-to-text services\"},{\"text\":\". For more information, see \"},{\"id\":\"IF6IqgH4Ti3gX55zWwHzI\",\"children\":[{\"text\":\"Activating Services\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://www.tencentcloud.com/document/product/607/10782\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/10782\"},\"type\":\"ref\"},{\"text\":\".\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"DP0vaDufIwh0waJeDNWoz\",\"children\":[{\"text\":\"Configure your project before using GME; otherwise, the SDK will not take effect.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"5I-2XAyk02IOc9Pcx9Q_w\",\"children\":[{\"text\":\"After a GME API is called successfully, \"},{\"code\":1,\"text\":\"GmeError.AV_OK\"},{\"text\":\" will be returned with the value being \"},{\"code\":1,\"text\":\"0\"},{\"text\":\".\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"x7u6Vf4OLlVDWDMKj2Cor\",\"children\":[{\"text\":\"GME APIs should be called in the same thread.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"tjz_isiTcARaBtc8dhjHR\",\"children\":[{\"text\":\"The \"},{\"code\":1,\"text\":\"Poll\"},{\"text\":\" API should be called periodically for GME to trigger event callbacks.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"hiyZ3gmXp953kdJaEoRqd\",\"children\":[{\"text\":\"For detailed error codes, see \"},{\"id\":\"Nr_h6cgq5a4g1F0qr6CVS\",\"children\":[{\"text\":\"Error Codes\"}],\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/33223\"},\"type\":\"ref\"},{\"text\":\".\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"IjvsF1VOP80BnOpFzpOwt\",\"children\":[{\"text\":\"Integrating the SDK\"}],\"nodeId\":\".E6.8E.A5.E5.85.A5-sdk\",\"type\":\"h2\"},{\"id\":\"szYpW3N_tEeL5rlyN-vIy\",\"children\":[{\"text\":\"Directions\"}],\"nodeId\":\".E9.87.8D.E8.A6.81.E6.AD.A5.E9.AA.A4\",\"type\":\"h3\"},{\"id\":\"JHMjZjCHz_LpL-yvj8k2y\",\"children\":[{\"text\":\"Key processes involved in SDK integration are as follows:\"}],\"type\":\"p\"},{\"id\":\"LhFATJwbjCXFrxGYDcLM3\",\"children\":[{\"text\":\"\"},{\"id\":\"udo7sPnhHXpDcWPgk7szn\",\"type\":\"ref\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/54039\"},\"children\":[{\"text\":\"Initializing GME\"}]},{\"text\":\"\"}],\"type\":\"oli\"},{\"id\":\"BFlVurs6UYeuogbrvRLxw\",\"children\":[{\"text\":\"\"},{\"id\":\"eeppg2qMfOWfYQgjuoa81\",\"type\":\"ref\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/54039\"},\"children\":[{\"text\":\"Calling\"}]},{\"text\":\" \"},{\"code\":1,\"text\":\"Poll\"},{\"text\":\" periodically to trigger callbacks\"}],\"type\":\"oli\"},{\"id\":\"SVNJCQjzfMoG8hmp1Fyvt\",\"children\":[{\"text\":\"\"},{\"id\":\"XicjDpVSQVdu1t39_X9li\",\"type\":\"ref\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/54039\"},\"children\":[{\"text\":\"Entering a voice chat room\"}]},{\"text\":\"\"}],\"type\":\"oli\"},{\"id\":\"Q5FhPXaZlp-09ajfLs4yS\",\"children\":[{\"text\":\"\"},{\"id\":\"F7bUbrvnYmGACqxydR5Sg\",\"type\":\"ref\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/54039\"},\"children\":[{\"text\":\"Turning on the mic\"}]},{\"text\":\"\"}],\"type\":\"oli\"},{\"id\":\"kj15W4OvPckKFgmvCiGDp\",\"children\":[{\"text\":\"\"},{\"id\":\"JOTOQH_LV6sXHe9CBuRNP\",\"type\":\"ref\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/54039\"},\"children\":[{\"text\":\"Turning on the speaker\"}]},{\"text\":\"\"}],\"type\":\"oli\"},{\"id\":\"0IOU2RL0fh2GtsAAbB7rS\",\"children\":[{\"text\":\"\"},{\"id\":\"YGNGD0bCtrk6qtUxlp-yn\",\"type\":\"ref\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/54039\"},\"children\":[{\"text\":\"Exiting the voice chat room\"}]},{\"text\":\"\"}],\"type\":\"oli\"},{\"id\":\"ckjiqQXz1AxwzGcjgf7ZS\",\"children\":[{\"text\":\"\"},{\"id\":\"r6j6KUARMbJ42EOTdkjMb\",\"type\":\"ref\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/54039\"},\"children\":[{\"text\":\"Uninitializing GME\"}]},{\"text\":\"\"}],\"type\":\"oli\"},{\"id\":\"M86kl37gJf3zyMK3eRJDO\",\"children\":[{\"text\":\"Core APIs\"}],\"nodeId\":\".E6.A0.B8.E5.BF.83.E6.8E.A5.E5.8F.A3\",\"type\":\"h2\"},{\"id\":\"hThdHihYd4cTpwMdUdf_R\",\"children\":[{\"id\":\"oR7JPRgVBTj-1v9i7Vj9j\",\"children\":[{\"id\":\"ChISbuLN3Dl4rBH0WQ-ue\",\"children\":[{\"id\":\"9pIHabeYUG9pHnHYyT2mj\",\"children\":[{\"text\":\"API\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"jyp8g0KVcGPoraMOQc3T5\",\"children\":[{\"id\":\"XhxNmPeyToUWOW4Xv7Vpl\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"p9iS7kHrltPD0Yx1XAlMt\",\"children\":[{\"id\":\"2BAc5x1RAkQzIi20-1YiF\",\"children\":[{\"id\":\"8gjppALDJ0eKRZPDxaBrd\",\"children\":[{\"id\":\"e3x9XSnPkUZA09cyNFiWz\",\"children\":[{\"text\":\"Init\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"5i5gWQIh7nBt7sflbLbxb\",\"children\":[{\"id\":\"dkBS2rYqfV9dJtMa_VfK_\",\"children\":[{\"id\":\"BVFKJ3yXOrNdSN2Xtx8nX\",\"children\":[{\"text\":\"Initializes GME.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"BzkB4D8hJ0W1OLn7jOjbk\",\"children\":[{\"id\":\"Fk_3C6MchEKnO9mpiamC2\",\"children\":[{\"id\":\"r2j39UEUaeHOw05Bdi0ct\",\"children\":[{\"id\":\"nkZYznZ5x1uwwlWT7BDJ8\",\"children\":[{\"text\":\"Poll\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"XGoW38m0-P5mnUcvhGZwp\",\"children\":[{\"id\":\"CAFgQ74RRcbsX2Ri6Gp2d\",\"children\":[{\"id\":\"WYR4rCjBrmwqizCE7L4y2\",\"children\":[{\"text\":\"Triggers an event callback.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"v2RlJsU2m1HBCHiiYy3lR\",\"children\":[{\"id\":\"sSzA4OLfG0Ja5RACmd2yQ\",\"children\":[{\"id\":\"Ll808WY3BK-cqG9XuSj1u\",\"children\":[{\"id\":\"6GK5nJkr7lPe179SaY7yR\",\"children\":[{\"text\":\"Pause\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"R7fIJz2LaJEfvlsuZOBUV\",\"children\":[{\"id\":\"HUhFql9RnfIPS1ZJB16Gx\",\"children\":[{\"id\":\"YD6qJYqE7dTJaZXT-vKCd\",\"children\":[{\"text\":\"Pauses the system.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"Q0OuPHpVNBAOEofN31Why\",\"children\":[{\"id\":\"VH9CA50ZbsWDN6DDSrbxi\",\"children\":[{\"id\":\"2k7-wTIIPNTSt4cyo556q\",\"children\":[{\"id\":\"n5zfjg76k8fFbTogcEdgi\",\"children\":[{\"text\":\"Resume\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"IYvkYufwv1123IN8sPFj9\",\"children\":[{\"id\":\"q5HGOSeMrI2ZAU4JUCjPB\",\"children\":[{\"id\":\"CSBxZ2oIIb5Ruj3uIvrVM\",\"children\":[{\"text\":\"Resumes the system.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"kSNSCRM6SWBhiq20KyFek\",\"children\":[{\"id\":\"oRMDmPS_uNiHxmCCVzPg-\",\"children\":[{\"id\":\"5L1QqdpaZwso-19z3-Fvu\",\"children\":[{\"id\":\"le0CCjV-pmWxwJJxLwjWQ\",\"children\":[{\"text\":\"Uninit\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"UgZPakzvYCLUuJhvKo_5r\",\"children\":[{\"id\":\"LGOvP0-uHS2P36eMcAKhk\",\"children\":[{\"id\":\"mq3l23cG1Q2FiEgGnxzbA\",\"children\":[{\"text\":\"Uninitializes GME.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[29,71],\"widthMode\":\"percentage\"},{\"id\":\"TwSsGgae3kBbVqUisftLq\",\"children\":[{\"text\":\"Importing the GME module\"}],\"nodeId\":\".E5.BC.95.E7.94.A8gme.E6.A8.A1.E5.9D.97\",\"type\":\"h3\"},{\"id\":\"LiRjrVZuT1TqnbWsbzORN\",\"autoWrap\":false,\"children\":[{\"id\":\"cBAjjBsm1Zl6z9j0170rb\",\"children\":[{\"text\":\"const { GmeContext } = require('gme-electron-sdk');\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"zxuj76aXi-gAuHv-0uBI8\",\"children\":[{\"text\":\"Getting an instance\"}],\"nodeId\":\".E8.8E.B7.E5.8F.96.E5.AE.9E.E4.BE.8B\",\"type\":\"h3\"},{\"id\":\"8_NZ1ePwe2Y1UMcmCSJXn\",\"children\":[{\"text\":\"To use the voice chat feature, get the \"},{\"code\":1,\"text\":\"GmeSDK\"},{\"text\":\" object first.\"}],\"type\":\"p\"},{\"id\":\"2b1b1A0ZvEMTjB7-M4nv1\",\"autoWrap\":false,\"children\":[{\"id\":\"JIzYwe3VqFga69ypvKCpQ\",\"children\":[{\"text\":\"context = new GmeContext();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"-Vn4cAmWoZEUCt1xInPtJ\",\"children\":[{\"text\":\"Initializing the SDK\"}],\"nodeId\":\".E5.88.9D.E5.A7.8B.E5.8C.96-sdk\",\"type\":\"h3\"},{\"id\":\"irxwwNCkFtYi_7jVFVZPk\",\"children\":[{\"b\":1,\"text\":\"You need to initialize the SDK through the \"},{\"code\":1,\"text\":\"Init\"},{\"text\":\" API\"},{\"text\":\" before you can use the real-time voice chat, voice message, and speech-to-text services. The \"},{\"code\":1,\"text\":\"Init\"},{\"text\":\" API must be called in the same thread as other APIs. We recommend you call all APIs in the main thread.\"}],\"nodeId\":\"Init\",\"type\":\"p\"},{\"id\":\"nQh_LqzRpYto5zX4xtCds\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\".E6.8E.A5.E5.8F.A3.E5.8E.9F.E5.9E.8B\",\"type\":\"h4\"},{\"id\":\"ggqWW644VkRLC67l5rc7l\",\"autoWrap\":false,\"children\":[{\"id\":\"j5ARaAkUSfI23LVRvozNb\",\"children\":[{\"text\":\"//class GmeSDK\"}],\"type\":\"code-line\"},{\"id\":\"b4ifA7s6EKFWWRU6CS2R7\",\"children\":[{\"text\":\"Init(appid: string, openid: string): number;\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"VA8QhU-mSB1bcMg3EoByL\",\"children\":[{\"id\":\"8LyAlPIgbSToCodUtdoAT\",\"children\":[{\"id\":\"F63UM6oCtZjHCwMLle0n1\",\"children\":[{\"id\":\"k8mezBA3EmnqEtkjIBygH\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"gdfgpJJsDLwmgLOg63_a4\",\"children\":[{\"id\":\"f3hj_7lAa2a_gunRmBVW4\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"d2n2HcY8FyM8KDj2ecVmS\",\"children\":[{\"id\":\"3Ml91hkmtPNCkYG7812nF\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"HU4dd4luVVnjMv86T5sY4\",\"children\":[{\"id\":\"mNdJx9DVYKXHxgI4JhcNX\",\"children\":[{\"id\":\"kRsY7WubGVibJS1KluIZA\",\"children\":[{\"id\":\"7WJ_pXLkwDsZYeUZ26pnG\",\"children\":[{\"text\":\"sdkAppId\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"yJqYhHcJNNPUhWOe-_p6t\",\"children\":[{\"id\":\"kdvfp7vXmtEqL3zkgKkyr\",\"children\":[{\"id\":\"lV05t5ZuOj7vlgQVZRfkm\",\"children\":[{\"text\":\"string\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ApfSTQyVT8Ap6AAy-OUht\",\"children\":[{\"id\":\"CEJZl1MFa7ryw8BXfx6wF\",\"children\":[{\"id\":\"kPlfUsjg0vxqebJCzDwjh\",\"children\":[{\"code\":1,\"text\":\"AppID\"},{\"text\":\" provided in the \"},{\"id\":\"cduN-0j1uMbUvZHkXTFrk\",\"children\":[{\"text\":\"GME console\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://console.tencentcloud.com/gamegme\",\"props\":{\"type\":\"link\",\"url\":\"https://console.tencentcloud.com/gamegme\"},\"type\":\"ref\"},{\"text\":\", which can be obtained as instructed in \"},{\"id\":\"mJcB0RcOek09Eht_Jz8J9\",\"children\":[{\"text\":\"Activating Services\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://www.tencentcloud.com/document/product/607/10782#.E9.87.8D.E7.82.B9.E5.8F.82.E6.95.B0\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/10782#.E9.87.8D.E7.82.B9.E5.8F.82.E6.95.B0\"},\"type\":\"ref\"},{\"text\":\".\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"2DZSolklxcfJ56_t-wgBG\",\"children\":[{\"id\":\"75OTpS1iEeP3V4dl9AfPy\",\"children\":[{\"id\":\"PXbBGLkv6RUpbjDYBptjt\",\"children\":[{\"id\":\"KpEYiHzBQhf6sTeHYpx4W\",\"children\":[{\"text\":\"openID\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"RbFrTnU_q-EUIl9sIN7ht\",\"children\":[{\"id\":\"A_p5CV1Esj2WZh-ZrxvY1\",\"children\":[{\"id\":\"j6I6vqeMT8z9eH1OQPGQK\",\"children\":[{\"text\":\"string\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"egDpRhfcKOFYm27n1GkS_\",\"children\":[{\"id\":\"gBFv5wRwiQ2ciz9Wy3LHN\",\"children\":[{\"id\":\"XCcdH3279sw6-1LNwSkmn\",\"children\":[{\"code\":1,\"text\":\"openID\"},{\"text\":\" can only be in Int64 type, which is passed in after being converted to a string. You can customize its rules, and it must be unique in the application. To pass in \"},{\"code\":1,\"text\":\"openID\"},{\"text\":\" as a string, \"},{\"id\":\"suCZCAyy6VFWhYB_z07vs\",\"children\":[{\"text\":\"submit a ticket\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://console.tencentcloud.com/workorder/category?level1_id=438&level2_id=445&source=0&data_title=%E6%B8%B8%E6%88%8F%E5%A4%9A%E5%AA%92%E4%BD%93%E5%BC%95%E6%93%8EGME&step=1\",\"props\":{\"type\":\"link\",\"url\":\"https://console.tencentcloud.com/workorder/category?level1_id=438&level2_id=445&source=0&data_title=%E6%B8%B8%E6%88%8F%E5%A4%9A%E5%AA%92%E4%BD%93%E5%BC%95%E6%93%8EGME&step=1\"},\"type\":\"ref\"},{\"text\":\" for application.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[12,11,77],\"widthMode\":\"percentage\"},{\"id\":\"onKG5Y5h4wa4BNywo86gd\",\"children\":[{\"text\":\"Returned values\"}],\"nodeId\":\".E8.BF.94.E5.9B.9E.E5.80.BC\",\"type\":\"h4\"},{\"id\":\"fhtS0wUQ8msW1ss2jbNGt\",\"children\":[{\"id\":\"2H9R6y72ZaIDpIvi1Qve6\",\"children\":[{\"id\":\"3CQ1F6R0Ipggy3B7USAPf\",\"children\":[{\"id\":\"pfe3dMv4GWkym68DsJcFG\",\"children\":[{\"text\":\"Returned Value\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"1THfPjPwvJ3_GVw4WizcN\",\"children\":[{\"id\":\"JLaeMs1TB1mb9zxpzeNYA\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"1Uukqnn0F5wu1NC6StSgW\",\"children\":[{\"id\":\"XO072VFNIB0kwBekv-c22\",\"children\":[{\"id\":\"6Da4oT8Xh-Sc4TFwZA4jq\",\"children\":[{\"id\":\"fHAEXTLqQQFZP1lSQWtwd\",\"children\":[{\"text\":\"GmeError.AV_OK= 0\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"E4FSqj13ftKl1yBrQTZ9B\",\"children\":[{\"id\":\"GovJc2KGSnSq3rAzVn26N\",\"children\":[{\"id\":\"iAK56moN5aC1Lnu6rewFb\",\"children\":[{\"text\":\"The SDK was initialized successfully.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"YUERYNdFWc9pCJmtQl11o\",\"children\":[{\"id\":\"5nB-sRZkc8PsiTq32SV-E\",\"children\":[{\"id\":\"--Amhkkpi96sNIX2mdgD7\",\"children\":[{\"id\":\"jZesXDsCiT10KkuXkU-hy\",\"children\":[{\"text\":\"AV_ERR_SDK_NOT_FULL_UPDATE=7015\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"OTv7axqt1fg8ZkOnv0hNV\",\"children\":[{\"id\":\"T6qbFhxRlm-uNjt7JYivf\",\"children\":[{\"id\":\"Hv7q6etnZeCl5kiwr-nmj\",\"children\":[{\"text\":\"Check whether the SDK file is complete. We recommend that you delete it and then import it again.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[32,68],\"widthMode\":\"percentage\"},{\"id\":\"VOL7-eRTZMO8f6zKYpflT\",\"children\":[{\"id\":\"ycFp2IqQ8VBDoxd0SxBJY\",\"children\":[{\"b\":1,\"text\":\"Note on 7015 error code\"}],\"type\":\"p\"},{\"id\":\"0synx4VsXlmG96JVrWjGr\",\"children\":[{\"text\":\"The error code 7015 is identified based on the MD5 value. If this error is reported during integration, check the integrity and version of the SDK file as prompted.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"RJUeg3mRFlMtpH2GLyhYC\",\"children\":[{\"text\":\"The returned value \"},{\"code\":1,\"text\":\"AV_ERR_SDK_NOT_FULL_UPDATE\"},{\"text\":\" is \"},{\"b\":1,\"text\":\"only a reminder\"},{\"text\":\" but will not cause an initialization failure.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"eiyi16dnvOcuBf7221Ia5\",\"children\":[{\"text\":\"Due to the third-party enhancement, the Unity packaging mechanism, and other factors, the MD5 value of the library file will be affected, resulting in misjudgment. Therefore, \"},{\"b\":1,\"text\":\"ignore this error in the logic for official releases\"},{\"text\":\", and avoid displaying it on the UI.\"}],\"start\":false,\"type\":\"uli\"}],\"hintType\":\"alert\",\"type\":\"hint\"},{\"id\":\"RNoPp-RiIxz-hZJj0LbU6\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.81\",\"type\":\"h4\"},{\"id\":\"xRhHJQn2c10mLdNw5cfIm\",\"autoWrap\":false,\"children\":[{\"id\":\"sDUDEtnyyHYu3lYzyQrBQ\",\"children\":[{\"text\":\"string SDKAPPID3RD = \\\"14000xxxxx\\\";\"}],\"type\":\"code-line\"},{\"id\":\"InbwkdRqRcnLzd7JSAtpj\",\"children\":[{\"text\":\"string openId=\\\"10001\\\";\"}],\"type\":\"code-line\"},{\"id\":\"PowP3QqOd5_DIvF44_GYC\",\"children\":[{\"text\":\"number ret = context.Init(SDKAPPID3RD, openId);\"}],\"type\":\"code-line\"},{\"id\":\"Kf0Ol2zF9wB6oZU1ZamWO\",\"children\":[{\"text\":\"// Determine whether the initialization is successful by the returned value\"}],\"type\":\"code-line\"},{\"id\":\"bM_g3UYv0aY2IdKtwkSwS\",\"children\":[{\"text\":\"if (ret != GmeError.AV_OK)\"}],\"type\":\"code-line\"},{\"id\":\"Mk_bQqKTovA1iw_dEHxjP\",\"children\":[{\"text\":\"{\"}],\"type\":\"code-line\"},{\"id\":\"veRMBi-6ly871JRd0ICIo\",\"children\":[{\"text\":\" console.log(\\\"Failed to initialize the SDK:\\\");\"}],\"type\":\"code-line\"},{\"id\":\"gAUugiL-_DbQriA8bQHyG\",\"children\":[{\"text\":\" return;\"}],\"type\":\"code-line\"},{\"id\":\"MyCagzulsOScoAoHgGOkL\",\"children\":[{\"text\":\"}\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"xI1z47UqiIvP-05jJEEhG\",\"children\":[{\"text\":\"Setting callbacks\"}],\"nodeId\":\".E8.AE.BE.E7.BD.AE.E5.9B.9E.E8.B0.83\",\"type\":\"h3\"},{\"id\":\"AZ-gkTMgZGr140j5ALiKa\",\"children\":[{\"text\":\"The API class uses the \"},{\"code\":1,\"text\":\"Delegate\"},{\"text\":\" method to send callback notifications to the application. Register the callback function to the SDK for receiving callback messages before room entry.\"}],\"type\":\"p\"},{\"id\":\"WLEClQulbbAlYMjmvFCvb\",\"children\":[{\"text\":\"Function prototype and sample code\"}],\"nodeId\":\".E5.87.BD.E6.95.B0.E5.8E.9F.E5.9E.8B.E5.8F.8A.E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.81\",\"type\":\"h4\"},{\"id\":\"wwJDQQHKcQzisCP2LXRUC\",\"children\":[{\"text\":\"Register the callback function to the SDK for receiving callback messages before room entry.\"}],\"type\":\"p\"},{\"id\":\"OQjTab9-6CQBN-I92ZWdP\",\"autoWrap\":false,\"children\":[{\"id\":\"JoCpEEJ57BbVj48SfbyOn\",\"children\":[{\"text\":\"SetTMGDelegate(cb: ITMGDelegate);\"}],\"type\":\"code-line\"},{\"id\":\"ExWauLIhJbyCNmwLrctIO\",\"children\":[{\"text\":\"// When initializing the SDK\"}],\"type\":\"code-line\"},{\"id\":\"BhOty8tEtrzxkYjDbk6dY\",\"children\":[{\"text\":\"context = GmeSDK.GetInstance();\"}],\"type\":\"code-line\"},{\"id\":\"CAXVSdBJQSaWqn7aJD6GD\",\"children\":[{\"text\":\"context.setTMGDelegate(function(eventId, msg){\"}],\"type\":\"code-line\"},{\"id\":\"rDVlX5yJJBDkoCLokdVhp\",\"children\":[{\"text\":\" if (type == ITMG_MAIN_EVENT_TYPE_ENTER_ROOM)\"}],\"type\":\"code-line\"},{\"id\":\"rM_Gb93pGB918KGztcBPn\",\"children\":[{\"text\":\" {\"}],\"type\":\"code-line\"},{\"id\":\"DA7iy40F9kZIEQHFcfPpk\",\"children\":[{\"text\":\" // Processing callbacks\"}],\"type\":\"code-line\"},{\"id\":\"_maP0YQC8eedVoYYfycuO\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"AeJMmyqvgu5X9gSvhNUSc\",\"children\":[{\"text\":\"});\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"d4xCRZqNqjXwh-MHWLmPL\",\"children\":[{\"text\":\"Triggering event callback\"}],\"nodeId\":\".E8.A7.A6.E5.8F.91.E4.BA.8B.E4.BB.B6.E5.9B.9E.E8.B0.83\",\"type\":\"h3\"},{\"id\":\"EUDKRLJuf1LiC-1qK8YJP\",\"children\":[{\"text\":\"You need to periodically call the \"},{\"code\":1,\"text\":\"Poll\"},{\"text\":\" API to trigger event callbacks. The \"},{\"code\":1,\"text\":\"Poll\"},{\"text\":\" API is GME's message pump and should be called periodically for GME to trigger event callbacks; otherwise, the entire SDK service will run abnormally. For more information, see the \"},{\"code\":1,\"text\":\"EnginePollHelper\"},{\"text\":\" file in \"},{\"id\":\"Sa65GROa1Zk1mnIb7jQlF\",\"children\":[{\"text\":\"SDK Download Guide\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://www.tencentcloud.com/document/product/607/18521\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/18521\"},\"type\":\"ref\"},{\"text\":\".\"}],\"type\":\"p\"},{\"id\":\"IPL7KM7lJNRpPurYn_hsa\",\"children\":[{\"id\":\"kVKB0Knq6gcqty9TO4jJ1\",\"children\":[{\"b\":1,\"text\":\"Call the \"},{\"code\":1,\"text\":\"Poll\"},{\"text\":\" API periodically\"}],\"type\":\"p\"},{\"id\":\"ZD0QKKVt9o5UhqPwaX5zx\",\"children\":[{\"text\":\"The \"},{\"code\":1,\"text\":\"Poll\"},{\"text\":\" API must be called periodically and in the main thread to avoid abnormal API callbacks.\"}],\"type\":\"p\"}],\"hintType\":\"warn\",\"type\":\"hint\"},{\"id\":\"4-ZkoLoGkKxfZMxCzebej\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\".E6.8E.A5.E5.8F.A3.E5.8E.9F.E5.9E.8B2\",\"type\":\"h4\"},{\"id\":\"ZwIAJDqwwK-R-i-tScp3R\",\"autoWrap\":false,\"children\":[{\"id\":\"veaobpBMLHU_gtdOQR8Ck\",\"children\":[{\"text\":\"Poll():number;\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"fnitbzD85v7M6OvYxQ_Mt\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.812\",\"type\":\"h4\"},{\"id\":\"DedPTcGjgyIMPWshNhzRQ\",\"autoWrap\":false,\"children\":[{\"id\":\"4PQQ72gDlxnW85j_TpC8C\",\"children\":[{\"text\":\"setInterval(function () {\"}],\"type\":\"code-line\"},{\"id\":\"dike0KqP957ELhSf9ovLQ\",\"children\":[{\"text\":\" context.Poll();\"}],\"type\":\"code-line\"},{\"id\":\"GbuRzXzlXFDrG1A48npfc\",\"children\":[{\"text\":\" }, 50);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"VFkCB4j1x8fGM8zdP7zSp\",\"children\":[{\"text\":\"Pausing the system\"}],\"nodeId\":\".E7.B3.BB.E7.BB.9F.E6.9A.82.E5.81.9C\",\"type\":\"h3\"},{\"id\":\"_4NrYlCD5PnA3xH3HXUdz\",\"children\":[{\"text\":\"When a \"},{\"code\":1,\"text\":\"Pause\"},{\"text\":\" event occurs in the system, the engine should also be notified for pause. For example, when the application switches to the background (OnApplicationPause, isPause=True), and you do not need the background to play back the audio in the room, please call \"},{\"code\":1,\"text\":\"Pause\"},{\"text\":\" API to pause the GME service.\"}],\"type\":\"p\"},{\"id\":\"CLtYQTu69Ivy_xlXzZUaB\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\".E6.8E.A5.E5.8F.A3.E5.8E.9F.E5.9E.8B3\",\"type\":\"h4\"},{\"id\":\"ozrFStw6If6MNCkSh2lSg\",\"autoWrap\":false,\"children\":[{\"id\":\"JgVAl0jSCL3B50YC0lK1e\",\"children\":[{\"text\":\"Pause() :number\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"bTHaNMQuYnkx58um1fVn2\",\"children\":[{\"text\":\"Resuming the system\"}],\"nodeId\":\".E7.B3.BB.E7.BB.9F.E6.81.A2.E5.A4.8D\",\"type\":\"h3\"},{\"id\":\"GwjMe3FdpDxUm2_YV_w7z\",\"children\":[{\"text\":\"When a \"},{\"code\":1,\"text\":\"Resume\"},{\"text\":\" event occurs in the system, the engine should also be notified for resumption. The \"},{\"code\":1,\"text\":\"Resume\"},{\"text\":\" API only supports resuming voice chat.\"}],\"type\":\"p\"},{\"id\":\"5GGAQfEYCZ5iKeS_dd1e-\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\".E6.8E.A5.E5.8F.A3.E5.8E.9F.E5.9E.8B4\",\"type\":\"h4\"},{\"id\":\"eGfmJvStiP6Z2_guCUWgy\",\"autoWrap\":false,\"children\":[{\"id\":\"YMc3-V_vmYy0q8IyZcyKP\",\"children\":[{\"text\":\"Resume() :number\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"79hsLcOt7SzY5HxceT8Ux\",\"children\":[{\"text\":\"Uninitializing SDK\"}],\"nodeId\":\".E5.8F.8D.E5.88.9D.E5.A7.8B.E5.8C.96-sdk\",\"type\":\"h3\"},{\"id\":\"uTaI0ZE2JVUqndHBYot6f\",\"children\":[{\"text\":\"This API is used to uninitialize the SDK to make it uninitialized. \"},{\"b\":1,\"text\":\"If the game account is bound to \"},{\"code\":1,\"text\":\"openid\"},{\"text\":\", switching game account requires uninitializing GME and then using the new \"},{\"code\":1,\"text\":\"openid\"},{\"text\":\" to initialize again.\"}],\"nodeId\":\"UnInit\",\"type\":\"p\"},{\"id\":\"2mF-5IWuobnaF40GnNzEx\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\".E6.8E.A5.E5.8F.A3.E5.8E.9F.E5.9E.8B5\",\"type\":\"h4\"},{\"id\":\"lJF5Pan9Xh8yNm9YPEKD5\",\"autoWrap\":false,\"children\":[{\"id\":\"vwcxQ1sG-a6oG5Do2iB5-\",\"children\":[{\"text\":\"Uninit() : number;\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"ov_ry-VtznRF4lFhU5tLW\",\"children\":[{\"text\":\"Voice Chat Room APIs\"}],\"nodeId\":\".E5.AE.9E.E6.97.B6.E8.AF.AD.E9.9F.B3.E6.88.BF.E9.97.B4.E7.9B.B8.E5.85.B3.E6.8E.A5.E5.8F.A3\",\"type\":\"h2\"},{\"id\":\"QFgukzkFcHZ81aPVHDaby\",\"children\":[{\"text\":\"You should initialize and call the SDK to enter a room before voice chat can start.\"}],\"type\":\"p\"},{\"id\":\"n2IH2nTrOrgZxhClkjpGf\",\"type\":\"p\",\"children\":[{\"text\":\"If you have any questions when using the service, see \"},{\"id\":\"h_u6YTdzdqhWGWEvKUPAp\",\"children\":[{\"text\":\"Sound and Audio\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://www.tencentcloud.com/document/product/607/39524\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/39524\"},\"type\":\"ref\"},{\"text\":\".\"}]},{\"type\":\"p\",\"children\":[{\"text\":\"\"},{\"id\":\"CGpBweAMOEA6ZPb_vxuyn\",\"alt\":\"\",\"children\":[{\"text\":\"\"}],\"inline\":true,\"naturalSize\":[1556,1264],\"size\":[800,649],\"type\":\"image\",\"url\":\"https://cloudcache.intl.tencent-cloud.com/cms/backend-cms/31a16f32b96711eda534525400c56988.png\"},{\"text\":\"\"}],\"id\":\"sT-sc356cHqDS-3fwLKs2\"},{\"id\":\"77dv6wFyZCdKEZEJ2OJvf\",\"children\":[{\"id\":\"tJQ5Pp40bAFg95C6JrN1K\",\"children\":[{\"id\":\"S6tBS_94mjKnBYbgzPpq1\",\"children\":[{\"id\":\"-xCx-UcF0tJsrv1l1MWru\",\"children\":[{\"text\":\"API\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"qgkdMlRNwJe5UERl3cEUQ\",\"children\":[{\"id\":\"GDrY-F3gwUwzcK41hVCJi\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"3Ck36e4VvOnZruqbI1M9W\",\"children\":[{\"id\":\"Udo9TKUV0fq-u_fMTB-ne\",\"children\":[{\"id\":\"fPiF0v21kMIcvysdQh3u4\",\"children\":[{\"id\":\"DvzHT6vRZnVfyc1OcyakI\",\"children\":[{\"text\":\"GenAuthBuffer\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"az2FECXMNUN4tF0OP-P6l\",\"children\":[{\"id\":\"cposJu5l4l8HfGNM5Ysv6\",\"children\":[{\"id\":\"1l0cP41dI17yB1ihAPVgb\",\"children\":[{\"text\":\"Calculates the local authentication key.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"9TmEx2LbHcmzTiYkrZsNX\",\"children\":[{\"id\":\"KF8Sjvm3eI3sgeuspI4XD\",\"children\":[{\"id\":\"CKxYJln9UlbGs-iG-pHmV\",\"children\":[{\"id\":\"WKCpZoKNsb2fq5UafZYfa\",\"children\":[{\"text\":\"EnterRoom\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"V2hZtfJ1o5PYU0z14jPfF\",\"children\":[{\"id\":\"lECcxww5PTR4T3OICAXdV\",\"children\":[{\"id\":\"dOEt0FrbBu1BxAFlC6Clv\",\"children\":[{\"text\":\"Enters a room.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"cHunHy90iOoxD1VjwNRTs\",\"children\":[{\"id\":\"exd3plpLU1I2PCYvbKX_l\",\"children\":[{\"id\":\"Zlyt2HYGlPFTiOcdW0X8d\",\"children\":[{\"id\":\"CdXNntlSUxjTQi7A94m0t\",\"children\":[{\"text\":\"ExitRoom\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"WlYpWaVnaoLEbfObPxqk8\",\"children\":[{\"id\":\"MUbiIZoFh-7rMkLfEm656\",\"children\":[{\"id\":\"Qf-AXm21P8SYB0rMFYoB3\",\"children\":[{\"text\":\"Exits a room.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"sufRKr33cortOC3ueKc9w\",\"children\":[{\"id\":\"kMKhWkpsT3JYyoAol321Y\",\"children\":[{\"id\":\"4l8fMLcxlZKyX_QjcgJYy\",\"children\":[{\"id\":\"y2ljgTHPNBP0jtEdiRPWh\",\"children\":[{\"text\":\"IsRoomEntered\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"hP1Cw2ltlH_ggU2MapXFx\",\"children\":[{\"id\":\"E3GT7v5Lwrkd1ZnR7vYIj\",\"children\":[{\"id\":\"DLuweMEhMoz-MYAjPIkgk\",\"children\":[{\"text\":\"Determines whether room entry is successful.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[29,71],\"widthMode\":\"percentage\"},{\"id\":\"_bP7SvTPc5_mEZQ9Ep7KR\",\"children\":[{\"text\":\"Local authentication key calculation\"}],\"nodeId\":\".E6.9C.AC.E5.9C.B0.E9.89.B4.E6.9D.83.E8.AE.A1.E7.AE.97\",\"type\":\"h3\"},{\"id\":\"c07jHYrh8zVvs6jKEhzRX\",\"children\":[{\"text\":\"Generate \"},{\"code\":1,\"text\":\"AuthBuffer\"},{\"text\":\" for encryption and authentication of relevant features. For release in the production environment, use the backend deployment key as detailed in \"},{\"id\":\"_26gZ3juv3Vnybgh6h3jm\",\"children\":[{\"text\":\"Authentication Key\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://www.tencentcloud.com/document/product/607/12218\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/12218\"},\"type\":\"ref\"},{\"text\":\".\"}],\"type\":\"p\"},{\"id\":\"v2FK7T7KYh5_GI1irBNgh\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\".E6.8E.A5.E5.8F.A3.E5.8E.9F.E5.9E.8B6\",\"type\":\"h4\"},{\"id\":\"Os9UALfnMl2YkY4UksTyB\",\"autoWrap\":false,\"children\":[{\"id\":\"ulhodCf73usIHYNOSrKBN\",\"children\":[{\"text\":\"GenAuthBuffer(appId: string,roomId: string, openId:string, appKey: number) :string;\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"AguMILlpWG-SaudyS5PUe\",\"children\":[{\"id\":\"pXyoUzUxlT_jePrVH4Jjw\",\"children\":[{\"id\":\"KZ1BNShLoeztIXq72-H22\",\"children\":[{\"id\":\"Ka-vkbH3B3LDqCd36zZSk\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"IUwXbDGm8OoMOKt-x4bgt\",\"children\":[{\"id\":\"r-alLqBBkRvdKSqOL1C2N\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"0rlvDVwAxli17oSTaw6L8\",\"children\":[{\"id\":\"EPY9mYvDV9G4n6j6p1kfh\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"RsqCh586gDIM0bhoQvAZ0\",\"children\":[{\"id\":\"bSLCL8xqJD7Io8xwh_jI0\",\"children\":[{\"id\":\"wOFwaVpbGvBJ0pSqTON-d\",\"children\":[{\"id\":\"PQ5jIJVoKPOo0vQXpoNY9\",\"children\":[{\"text\":\"appId\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"A57vXbPasiGdalRIY8503\",\"children\":[{\"id\":\"7toJ0GT6o4FtxiEISfIcC\",\"children\":[{\"id\":\"91Q9MpadO1PyGsvpeblyf\",\"children\":[{\"text\":\"string\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"FgrQiDwgEf2eITnnR5VJV\",\"children\":[{\"id\":\"rAoKZDtwR8hOmeTWlW2zX\",\"children\":[{\"id\":\"bIYSIT4rux65xNBHmFyVJ\",\"children\":[{\"code\":1,\"text\":\"AppID\"},{\"text\":\" from the Tencent Cloud console\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"_qw88qtwvR-w6ZguL9BSc\",\"children\":[{\"id\":\"7dlaPV0-FSYRxJ5i31mF0\",\"children\":[{\"id\":\"QpvdvKMfPJE5vSnVRIQ4j\",\"children\":[{\"id\":\"x0eXS3Omfap_JqR88COsb\",\"children\":[{\"text\":\"roomId\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"PHWkzcxmBhLYGOABmdYGU\",\"children\":[{\"id\":\"6msIhYCRtZ-EMQAnVj-VM\",\"children\":[{\"id\":\"Z66gE_PNtLN7FOoFY_klj\",\"children\":[{\"text\":\"string\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"6f2SyTAba6Ri8HCJf8SiG\",\"children\":[{\"id\":\"-_uDlm9I2q8BRt9CgRE20\",\"children\":[{\"id\":\"HZQRrjXt4otgl9su7ZsfX\",\"children\":[{\"text\":\"Room ID, which can contain up to 127 characters.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"_G3lff1NNXStvpuT4ke2K\",\"children\":[{\"id\":\"REXXT0q44AwicTOibfe_7\",\"children\":[{\"id\":\"S_KJeKS49X8FqcBhGXLQm\",\"children\":[{\"id\":\"OwEjtpfiThluBmmR3k0BZ\",\"children\":[{\"text\":\"openId\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"EbIudRfL-CdHUAKMKdEtj\",\"children\":[{\"id\":\"yP-S_bfwIlf3bTB7cdpqj\",\"children\":[{\"id\":\"i_V8Y9OgVZR4nVUfTqhIT\",\"children\":[{\"text\":\"string\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"XESCDEoQNYdJKAblygKl-\",\"children\":[{\"id\":\"ufjplnkemAlJrFVcPAZzj\",\"children\":[{\"id\":\"3ya6Qeyr5sfmBgrHOMtoU\",\"children\":[{\"text\":\"User ID, which is the same as \"},{\"code\":1,\"text\":\"openID\"},{\"text\":\" during initialization.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"tVsLv6gBMwrmoezxUGpGf\",\"children\":[{\"id\":\"STt8xfwfXrJyInJLzLSjK\",\"children\":[{\"id\":\"G6Sz6Z_97L_GZxbjbqj_E\",\"children\":[{\"id\":\"ir3VfRPbCOXOkl2bYL4U2\",\"children\":[{\"text\":\"key\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"oux4tCxiSKbBnuBdbncps\",\"children\":[{\"id\":\"2s3fhsElzLdTjUZSB6mpa\",\"children\":[{\"id\":\"njN_M0u5HCajYx4wB6pjd\",\"children\":[{\"text\":\"number\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"F0w0xPH-FvSZjamTYBNtt\",\"children\":[{\"id\":\"kP9di8WmDBZPqR-6SLU0g\",\"children\":[{\"id\":\"yJcCLRi1fwDD3hNRJ-2Tz\",\"children\":[{\"text\":\"Permission key from the Tencent Cloud \"},{\"id\":\"2cseCnB2S9Di75eHCIe3S\",\"children\":[{\"text\":\"console\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://console.tencentcloud.com/gamegme\",\"props\":{\"type\":\"link\",\"url\":\"https://console.tencentcloud.com/gamegme\"},\"type\":\"ref\"},{\"text\":\".\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[16,13,71],\"widthMode\":\"percentage\"},{\"id\":\"PXQCTUDoMysEL39MzaOKF\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.813\",\"type\":\"h4\"},{\"id\":\"Vn44kWj41lTPp4MQZcDmt\",\"autoWrap\":false,\"children\":[{\"id\":\"dnhsZrwOC-jkt31YhOEQP\",\"children\":[{\"text\":\" let userSig = context.GenAuthBuffer(this.appid, this.roomId, this.userId, this.authKey)\"}],\"type\":\"code-line\"},{\"id\":\"TfED5Pq_oOy3sJD-k3QoP\",\"children\":[{\"text\":\" context.EnterRoom(this.roomId, this.roomType, userSig);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"9w1QZ8nKeoH_E7Rqi8EFa\",\"children\":[{\"text\":\"Entering a room\"}],\"nodeId\":\".E5.8A.A0.E5.85.A5.E6.88.BF.E9.97.B4\",\"type\":\"h3\"},{\"id\":\"8grCnCn_IynrHrrbsKZwZ\",\"children\":[{\"text\":\"This API is used to enter a room with the generated authentication information. The mic and speaker are not enabled by default after room entry.\"}],\"type\":\"p\"},{\"type\":\"hint\",\"hintType\":\"alert\",\"children\":[{\"type\":\"p\",\"children\":[{\"b\":1,\"text\":\"Note:\",\"color\":\"#04C8DC\"}],\"id\":\"3pDQAGvQd75gUQGihKf0l\"},{\"id\":\"Ski22xFpiEWo_EycvWVW8\",\"children\":[{\"text\":\"If the room entry callback result is \"},{\"code\":1,\"text\":\"0\"},{\"text\":\", the room entry is successful. If \"},{\"code\":1,\"text\":\"0\"},{\"text\":\" is returned from the \"},{\"code\":1,\"text\":\"EnterRoom\"},{\"text\":\" API, it doesn't necessarily mean that the room entry is successful.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"vhvWGXie2pouh4cjqlSqu\",\"children\":[{\"text\":\"The audio type of the room is determined by the first user to enter the room. After that, if a member in the room changes the room type, it will take effect for all members there. For example, if the first user entering the room uses the smooth sound quality, and the second user entering the room uses the HD sound quality, the room audio type of the second user will become smooth sound quality. Only when a member in the room calls the \"},{\"code\":1,\"text\":\"ChangeRoomType\"},{\"text\":\" API, the audio type of the room will be changed.\"}],\"start\":false,\"type\":\"uli\"}],\"id\":\"4gmOZz8QdIYEsYio9sFLc\"},{\"id\":\"1R9Q_C73MTzMEzhRPIxbF\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\".E6.8E.A5.E5.8F.A3.E5.8E.9F.E5.9E.8B7\",\"type\":\"h4\"},{\"id\":\"8_o6_NWzov2bbe35yO4WB\",\"autoWrap\":false,\"children\":[{\"id\":\"DzZXQgHIPyKwizcCD046V\",\"children\":[{\"text\":\"EnterRoom(roomid: string, roomType: number, appKey: string) :number;\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"3XiaymJXirPJX1tkF0K36\",\"children\":[{\"id\":\"axEcbAyZ0tA-2kQNHzJJo\",\"children\":[{\"id\":\"HshC0jAHvmmcmlRo5LUhd\",\"children\":[{\"id\":\"bUWVqjBuR71XFd_E2ofOF\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"S1xDfP4SYUFmLl8J5j2Wh\",\"children\":[{\"id\":\"kTxjFDyE-nONZ_rgtEgD4\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"zN6qRcswYnu6lLkEj20lA\",\"children\":[{\"id\":\"_434osKWUW3wP-rz4dcbM\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"ae0YdKxqmt5OIW6Gn9r5R\",\"children\":[{\"id\":\"eonifUS5FVZBbI5yuJYmB\",\"children\":[{\"id\":\"rEZFT8ltyVdPIxZ4Pjzwf\",\"children\":[{\"id\":\"opy7Ag2MetFkU7vljDEFP\",\"children\":[{\"text\":\"roomId\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"K8n7i1tspaC0XjTemY0Cg\",\"children\":[{\"id\":\"tCBNSSdjqFgKmWepx13Ht\",\"children\":[{\"id\":\"phTV1uhxInGTsOgAUR-UA\",\"children\":[{\"text\":\"string\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"JfZxECYCZul3O-A0GVAfx\",\"children\":[{\"id\":\"HgqKjnzWDkjf--gx0qEC6\",\"children\":[{\"id\":\"4MZLwRRW0XKitoOFMdmrH\",\"children\":[{\"text\":\"Room ID, which can contain up to 127 characters.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"uAtBoKvCJmo9bsoD0uyfd\",\"children\":[{\"id\":\"FVSqQ_Nb_OtT8_4woyo5M\",\"children\":[{\"id\":\"rVps2ZPsWhR2awEeWnxcT\",\"children\":[{\"id\":\"gRCxutzJjvcahGfTZ2s-1\",\"children\":[{\"text\":\"roomType\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"qW4l95rmpxq7YjRVDhFJq\",\"children\":[{\"id\":\"1Tp7W8b16LzdjcDMPJu1U\",\"children\":[{\"id\":\"wJ4GVHyYbBIblWyCjxPsq\",\"children\":[{\"text\":\"ITMGRoomType\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"4hIjui1O86DEZgsZmDM_h\",\"children\":[{\"id\":\"wxUvmnEmF85BQPVSQv2Px\",\"children\":[{\"id\":\"Rqa-nxeYHCeKDiSdNyJoZ\",\"children\":[{\"text\":\"Room type. We recommend that you select \"},{\"code\":1,\"text\":\"ITMG_ROOM_TYPE_FLUENCY\"},{\"text\":\" for games. For more information on room audio types, see \"},{\"id\":\"atL32GXS5DQwCRREwtl7Y\",\"children\":[{\"text\":\"Sound Quality\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://www.tencentcloud.com/document/product/607/18522\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/18522\"},\"type\":\"ref\"},{\"text\":\".\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"3J-fNptH79nNIHB1SJoHk\",\"children\":[{\"id\":\"KiVNc0y3ywCXEhgwER2zK\",\"children\":[{\"id\":\"m6gpGin_0X7UwFVFHxNz3\",\"children\":[{\"id\":\"txzSkrSXxQXYk1phGPuWj\",\"children\":[{\"text\":\"appKey\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"pgS8Ldm2hZaEAw0N61rM7\",\"children\":[{\"id\":\"fZFHmUq-CJAF-8t4_kMZB\",\"children\":[{\"id\":\"brERYkVI-t1layCwCCMNO\",\"children\":[{\"text\":\"string\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"pl8qeXKKnobf7M8ttZGOH\",\"children\":[{\"id\":\"0UVNa2JMh6QIgYqooJI_1\",\"children\":[{\"id\":\"fT2eHUyWLz2YkpzqF-57S\",\"children\":[{\"text\":\"Authentication key\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[12,17,71],\"widthMode\":\"percentage\"},{\"id\":\"c4R_WZXkv42bS4ZThv07D\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.814\",\"type\":\"h4\"},{\"id\":\"HuXUY61wYK6mdVTevu_dX\",\"autoWrap\":false,\"children\":[{\"id\":\"9i6W23Z0lDhC2WF5O98mi\",\"children\":[{\"text\":\"context.EnterRoom(roomID, ITMG_ROOM_TYPE_STANDARD, retAuthBuff);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"EeHTzLhJYNDQkJqYsGTXr\",\"children\":[{\"text\":\"Callback for room entry\"}],\"nodeId\":\".E5.8A.A0.E5.85.A5.E6.88.BF.E9.97.B4.E4.BA.8B.E4.BB.B6.E5.9B.9E.E8.B0.83\",\"type\":\"h4\"},{\"id\":\"O-OXMKiXKE9QIgx7hfQ2m\",\"children\":[{\"text\":\"After the user enters the room, the \"},{\"code\":1,\"text\":\"ITMG_MAIN_EVENT_TYPE_ENTER_ROOM\"},{\"text\":\" event type will be called back to notify the room entry result, which can be listened on for processing. A successful callback means that the room entry is successful, and the billing \"},{\"b\":1,\"text\":\"starts\"},{\"text\":\".\"}],\"type\":\"p\"},{\"id\":\"STsgYYRg2aTwuvr7nyKxL\",\"children\":[{\"id\":\"5S0pDNlWIE5UUaklJFLva\",\"children\":[{\"b\":1,\"text\":\"Billing references:\"}],\"type\":\"p\"},{\"id\":\"gAdYuiMIG27OlYqkeqHBs\",\"children\":[{\"id\":\"ZXnZMS7QqhP9zenyUoQMw\",\"children\":[{\"text\":\"Purchase Guide\"}],\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/50009\"},\"type\":\"ref\"}],\"type\":\"uli\"},{\"id\":\"3yJkGVrP4d3_SdAjSG0BD\",\"children\":[{\"id\":\"LjCLOh_A6JoErQbVPRqpM\",\"children\":[{\"text\":\"Billing\"}],\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/30255\"},\"type\":\"ref\"}],\"type\":\"uli\"},{\"id\":\"25oQ7McJ0X9wWbVI8YvWo\",\"children\":[{\"id\":\"0w1xN2dxaWFCMz6rYqGHk\",\"children\":[{\"text\":\"Will the billing continue if the client is disconnected from the server when using the voice chat?\"}],\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/30255#.E4.BD.BF.E7.94.A8.E5.AE.9E.E6.97.B6.E8.AF.AD.E9.9F.B3.E5.90.8E.EF.BC.8C.E5.A6.82.E6.9E.9C.E5.AE.A2.E6.88.B7.E7.AB.AF.E6.8E.89.E7.BA.BF.E4.BA.86.EF.BC.8C.E6.98.AF.E5.90.A6.E8.BF.98.E4.BC.9A.E7.BB.A7.E7.BB.AD.E8.AE.A1.E8.B4.B9.EF.BC.9F\"},\"type\":\"ref\"}],\"type\":\"uli\"}],\"hintType\":\"info\",\"type\":\"hint\"},{\"id\":\"SKtS-ar3yR5u-ZNe8C0yk\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.815\",\"type\":\"h4\"},{\"id\":\"jAs5oojVf4kPBX_-hA9Oa\",\"autoWrap\":false,\"children\":[{\"id\":\"v6fVFqKaoY3H3n8p767Fb\",\"children\":[{\"text\":\"// Listen on an event:\"}],\"type\":\"code-line\"},{\"id\":\"tYzvi_d2tVQIsYfk3C2I7\",\"children\":[{\"text\":\" gmeContext.setTMGDelegate(function(eventId, msg){\"}],\"type\":\"code-line\"},{\"id\":\"cAM5tY-PvnsWktolAXhzs\",\"children\":[{\"text\":\" switch (eventId) {\"}],\"type\":\"code-line\"},{\"id\":\"iNzxp83Bcp3vzBx_bNW_6\",\"children\":[{\"text\":\" case ITMG_MAIN_EVENT_TYPE_ENTER_ROOM:\"}],\"type\":\"code-line\"},{\"id\":\"2U9qIGv3b2VUb21QXoSUX\",\"children\":[{\"text\":\" {\"}],\"type\":\"code-line\"},{\"id\":\"phnoN2P6d6wGF3fWXI827\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"UPoTQPfikRrnAaFiNtiNt\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"XdsvCjB1B3SMEBAE7g6TT\",\"children\":[{\"text\":\"});\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"mjvDxjrIhodldfT6CTP3X\",\"children\":[{\"text\":\"Data details\"}],\"nodeId\":\"data-.E8.AF.A6.E6.83.85\",\"type\":\"h4\"},{\"id\":\"dX4_CIRdoyWX0brfKwAWs\",\"children\":[{\"id\":\"JbXACzC4C3RJSonFJrMg1\",\"children\":[{\"id\":\"Yo7YO0u5nwbjbpI7M3_Ij\",\"children\":[{\"id\":\"UIE0Q0vuF5Wze-vqWXTkM\",\"children\":[{\"text\":\"Message\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"QG4J2c_8oPkFWs7P14h5y\",\"children\":[{\"id\":\"1-oyOzrcXstaau7y95HLJ\",\"children\":[{\"text\":\"Data\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"6GPBvW2c-LgndrjA_4X7k\",\"children\":[{\"id\":\"9m3h6nqqr6-MHgO_2TDBi\",\"children\":[{\"text\":\"Example\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"3_pxAEP58jsWicDtF-tpI\",\"children\":[{\"id\":\"zJLUbx0hMY-umjGWbNiiw\",\"children\":[{\"id\":\"6pF9sXlo0goot7Lhgex2W\",\"children\":[{\"id\":\"Xws7i41xiNlPc55FiXkTw\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_ENTER_ROOM\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"st5OWL9klBZZcR4taTqcg\",\"children\":[{\"id\":\"1zOVzTmhxmMCNPUYcmV1i\",\"children\":[{\"id\":\"kj7GlrC27uRQQwTJ9GBnG\",\"children\":[{\"text\":\"result; error_info\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"tCzIlkOKe_uIS_XXjUREz\",\"children\":[{\"id\":\"j3QFvxg1-MColyDZdLQTP\",\"children\":[{\"id\":\"ELnR3OIVvlS-VZzwD1UIi\",\"children\":[{\"text\":\"{\\\"error_info\\\":\\\"\\\",\\\"result\\\":0}\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"TrQRICkXCF5QdEVYUZo1m\",\"children\":[{\"id\":\"cZ_-o0N-2fQ68q3W4nH7V\",\"children\":[{\"id\":\"JCwWymLhHogL_NjDMCiyy\",\"children\":[{\"id\":\"FnYd7gJF78CGwXyk-0Oxe\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_ROOM_DISCONNECT\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"gzDKcO--qvcY8vg88FXh-\",\"children\":[{\"id\":\"phM6z9knQHJH2GUtNukOu\",\"children\":[{\"id\":\"oiSZ5w-YNDhitwBZ7-V6s\",\"children\":[{\"text\":\"result; error_info\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"j8EjoATo99y89RMOIx4TW\",\"children\":[{\"id\":\"mRAOZG6oTEAn651-W-lks\",\"children\":[{\"id\":\"y1Kpsq_yrs5UF86wWAjmq\",\"children\":[{\"text\":\"{\\\"error_info\\\":\\\"waiting timeout, please check your network\\\",\\\"result\\\":0}\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[38,14,48],\"widthMode\":\"percentage\"},{\"id\":\"dGsn4h7VIUHKMZvdI0GXt\",\"children\":[{\"text\":\"If the network is disconnected, there will be a disconnection callback notification \"},{\"code\":1,\"text\":\"ITMG_MAIN_EVENT_TYPE.ITMG_MAIN_EVENT_TYPE_ROOM_DISCONNECT\"},{\"text\":\". At this time, the SDK will automatically reconnect, and the callback is \"},{\"code\":1,\"text\":\"ITMG_MAIN_EVENT_TYPE_RECONNECT_START\"},{\"text\":\". When the reconnection is successful, there will be a callback \"},{\"code\":1,\"text\":\"ITMG_MAIN_EVENT_TYPE_RECONNECT_SUCCESS\"},{\"text\":\".\"}],\"type\":\"p\"},{\"id\":\"XXRkCwgtaFakGQc2zA2VU\",\"children\":[{\"text\":\"Error codes\"}],\"nodeId\":\".E9.94.99.E8.AF.AF.E7.A0.81\",\"type\":\"h4\"},{\"id\":\"QuHJ-McJXenio6VD8L1uj\",\"children\":[{\"id\":\"rdQ2XTIKPMSY0MwGbRve3\",\"children\":[{\"id\":\"QxInI_Bg786NglAY5Ryx7\",\"children\":[{\"id\":\"bDdl1e9bBfCXeliRtlN7h\",\"children\":[{\"text\":\"Error Code\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"g5EvTv_XPEoXnBTZe-yi9\",\"children\":[{\"id\":\"P3muc3Qw-QHOyRXx34LwG\",\"children\":[{\"text\":\"Cause and Suggested Solution\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"nbEM8usJ5kaa_LNhnR9x6\",\"children\":[{\"id\":\"WG4yu1FZ41pGOsjT1TODI\",\"children\":[{\"id\":\"iPrkwfgdzKKm7jO_U4LFg\",\"children\":[{\"id\":\"YFqmPFlrmJ9yBjIP05Z4F\",\"children\":[{\"text\":\"7006\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"5_4tWYYncs-GOJGLHrS1q\",\"children\":[{\"id\":\"YZ0wA1aSeOUH-_bl9Io-8\",\"children\":[{\"text\":\"Authentication failure causes:\"}],\"type\":\"p\"},{\"id\":\"CiVeNL1lwfPj-_mrXAWzn\",\"children\":[{\"code\":1,\"text\":\"AppID\"},{\"text\":\" doesn't exist or is incorrect.\"}],\"type\":\"uli\"},{\"id\":\"8xtXQJkkLbznssVeK2T1S\",\"children\":[{\"text\":\"An error occurred while authenticating \"},{\"code\":1,\"text\":\"authbuff\"},{\"text\":\".\"}],\"type\":\"uli\"},{\"id\":\"KU_NZP1yO8KzWs3U1jrtw\",\"children\":[{\"text\":\"Authentication expired.\"}],\"type\":\"uli\"},{\"id\":\"Z3bzCYQAc5W3HY73cNbXZ\",\"children\":[{\"code\":1,\"text\":\"OpenId\"},{\"text\":\" is invalid.\"}],\"type\":\"uli\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"G60tiCmK1VOhRt-XDss49\",\"children\":[{\"id\":\"BLk3ud-C22tM-3o4y1nDC\",\"children\":[{\"id\":\"iKNdKw70STdomY4SJuv47\",\"children\":[{\"id\":\"Ey8D9_DDsf750mhqyTzVa\",\"children\":[{\"text\":\"7007\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"fghZvdAKKqTiYW45wLQJi\",\"children\":[{\"id\":\"yWctwCOiwABR3AENQGIG2\",\"children\":[{\"id\":\"HanpzJz1b8r0k-4TMBSmC\",\"children\":[{\"text\":\"The user was already in another room.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"BZk1LuWMi3OSs_3sppb8m\",\"children\":[{\"id\":\"MJpEMNc3GRfOjXb0akv4n\",\"children\":[{\"id\":\"XGIi8tiH0gsEU5UtcKTGI\",\"children\":[{\"id\":\"Zh0jKUVXoJa8-txm5CzHT\",\"children\":[{\"text\":\"1001\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"KLLXHmr2Ty-BsOsF7JpZy\",\"children\":[{\"id\":\"LKR5vamj0Kdhl0uGOmdzd\",\"children\":[{\"id\":\"Zs8vcBpLrupQUiQ99v-Gw\",\"children\":[{\"text\":\"The user was already in the process of entering a room but repeated this operation. We recommend that you not call the room entry API until the room entry callback is returned.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"WrQ8zxa-kDx7AfTD62nTa\",\"children\":[{\"id\":\"3rukEgL2VnkVbEg4nKHPM\",\"children\":[{\"id\":\"NkZ6-Cs-i6n5VWmX2Oew_\",\"children\":[{\"id\":\"15yRq1XPFCEsjOJSTR9uZ\",\"children\":[{\"text\":\"1003\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"FbR5DyiEyOQ_LTrvw4l_C\",\"children\":[{\"id\":\"pGJgbtWz4IV-mUm-AUxwk\",\"children\":[{\"id\":\"IVVwvBlVT1tqrVmUkd8Gk\",\"children\":[{\"text\":\"The user was already in the room and called the room entry API again.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"ldCP0p8oEWSc1cUw2Y_nu\",\"children\":[{\"id\":\"-Gk3eRGMUGj3ASODZ6CTr\",\"children\":[{\"id\":\"h3pN19zM5PDNHWXjXUzcP\",\"children\":[{\"id\":\"2Nhxc-FiHMqdG5ABiIbCK\",\"children\":[{\"text\":\"1101\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Cyi07nlLIlnFsn7cIMqyy\",\"children\":[{\"id\":\"krV9I766bsDxpkxCnnVA9\",\"children\":[{\"text\":\"Make sure that the SDK is initialized, \"},{\"code\":1,\"text\":\"OpenId\"},{\"text\":\" complies with the rules, the APIs are called in the same thread, and the \"},{\"code\":1,\"text\":\"Poll\"},{\"text\":\" API is called normally.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[15,85],\"widthMode\":\"percentage\"},{\"id\":\"BUZEhfekzt2ezDQ7arJ1y\",\"children\":[{\"text\":\"Exiting a room\"}],\"nodeId\":\".E9.80.80.E5.87.BA.E6.88.BF.E9.97.B4\",\"type\":\"h3\"},{\"id\":\"Rat57ZRr4OsvXtOqMY644\",\"children\":[{\"text\":\"This API is used to exit the current room. It is an async API. The returned value \"},{\"code\":1,\"text\":\"AV_OK\"},{\"text\":\" indicates a successful async delivery. If there is a scenario in the application where room entry is performed immediately after room exit, you don't need to wait for the \"},{\"code\":1,\"text\":\"RoomExitComplete\"},{\"text\":\" callback notification from the \"},{\"code\":1,\"text\":\"ExitRoom\"},{\"text\":\" API; instead, you can directly call the \"},{\"code\":1,\"text\":\"EnterRoom\"},{\"text\":\" API.\"}],\"nodeId\":\"ExitRoom\",\"type\":\"p\"},{\"id\":\"NqPmiwVhNmLxSM1pd4PKp\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\".E6.8E.A5.E5.8F.A3.E5.8E.9F.E5.9E.8B8\",\"type\":\"h4\"},{\"id\":\"AlCLSLzSCZTbKxcL0AvnE\",\"autoWrap\":false,\"children\":[{\"id\":\"r_8OQQo52kfZPjbzIyVgt\",\"children\":[{\"text\":\"ExitRoom(): number;\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"AWvtBei-qsYFJfdk8ewsD\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.816\",\"type\":\"h4\"},{\"id\":\"ifkMz2FVhZEZyYRcxvUXq\",\"autoWrap\":false,\"children\":[{\"id\":\"8OEDZ6EmZ6e2R84KGEGJv\",\"children\":[{\"text\":\"context.ExitRoom();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"zj48WDuNWmc8YGXuMGMhm\",\"children\":[{\"text\":\"Callback for room exit\"}],\"nodeId\":\".E9.80.80.E5.87.BA.E6.88.BF.E9.97.B4.E4.BA.8B.E4.BB.B6.E5.9B.9E.E8.B0.83\",\"type\":\"h4\"},{\"id\":\"SYy6dTbz7Mkk8Aq9T4C8O\",\"children\":[{\"text\":\"After the user exits a room, a callback will be returned with the message being \"},{\"code\":1,\"text\":\"ITMG_MAIN_EVENT_TYPE_EXIT_ROOM\"},{\"text\":\". The sample code is shown below:\"}],\"type\":\"p\"},{\"id\":\"j6yKKS1at5Ob1hb8j1r-s\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.817\",\"type\":\"h4\"},{\"id\":\"dA03TyO9hnDgrw9sZIfgq\",\"autoWrap\":false,\"children\":[{\"id\":\"B3hdWhFnlBwuXfUWfe3HI\",\"children\":[{\"text\":\"gmeContext.setTMGDelegate(function(eventId, msg){\"}],\"type\":\"code-line\"},{\"id\":\"pesshi1H1QC8yLLR8BNKh\",\"children\":[{\"text\":\" switch (eventId) {\"}],\"type\":\"code-line\"},{\"id\":\"RaCwmwWufaubgl3RT5GNi\",\"children\":[{\"text\":\" case ITMG_MAIN_EVENT_TYPE_EXIT_ROOM:\"}],\"type\":\"code-line\"},{\"id\":\"4LNyIOevB3Ag0sU5sPqIw\",\"children\":[{\"text\":\" {\"}],\"type\":\"code-line\"},{\"id\":\"eShy1e4w0Y-KKBLTaIIbN\",\"children\":[{\"text\":\" // Process\"}],\"type\":\"code-line\"},{\"id\":\"7BTwBp17M1NWNXfaUTTar\",\"children\":[{\"text\":\" break;\"}],\"type\":\"code-line\"},{\"id\":\"3416d1Qbm6yzymMcrSv4W\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"WJNMcUYCR6Nen-SR-NWbN\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"8lUJ1G0PpM5o1iTLMHJAi\",\"children\":[{\"text\":\"});\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"7xZ84OJ4u1TqF2f5hUEGy\",\"children\":[{\"text\":\"Determining whether user has entered room\"}],\"nodeId\":\".E5.88.A4.E6.96.AD.E6.98.AF.E5.90.A6.E5.B7.B2.E7.BB.8F.E8.BF.9B.E5.85.A5.E6.88.BF.E9.97.B4\",\"type\":\"h3\"},{\"id\":\"0J3K6AsDXu_ZUKwCDVXPr\",\"children\":[{\"text\":\"This API is used to determine whether the user has entered a room. A value in boolean type will be returned. Do not call this API during room entry.\"}],\"type\":\"p\"},{\"id\":\"CCaoPs1QEquuu6tHv34lS\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\".E6.8E.A5.E5.8F.A3.E5.8E.9F.E5.9E.8B9\",\"type\":\"h4\"},{\"id\":\"xAPC1eQD9THzyGyuLQGgz\",\"autoWrap\":false,\"children\":[{\"id\":\"tHl_b5Pv_0Wm7LTEgcUvG\",\"children\":[{\"text\":\"IsRoomEntered() :boolean\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"ksM3NYLyGuuyF4zdlAVwn\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.818\",\"type\":\"h4\"},{\"id\":\"yxGFKnRsKs-9hEbiOB57v\",\"autoWrap\":false,\"children\":[{\"id\":\"-Q7Z3_psjV-UUpX7dbsoh\",\"children\":[{\"text\":\"context.IsRoomEntered();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"auQkpHJON5zH6AHvaAhc_\",\"children\":[{\"text\":\"Room Status Maintenance\"}],\"nodeId\":\".E6.88.BF.E9.97.B4.E5.86.85.E7.8A.B6.E6.80.81.E7.BB.B4.E6.8A.A4\",\"type\":\"h2\"},{\"id\":\"d8-d2QpsszP4nY6GpRVtx\",\"children\":[{\"text\":\"APIs in this section are used to display speaking members and members entering or exiting the room and mute a member in the room at the business layer.\"}],\"type\":\"p\"},{\"id\":\"n8smisGPn1BD17OVtvW83\",\"children\":[{\"id\":\"UEjN98SiiY2u78Y6HIPcM\",\"alt\":\"\",\"children\":[{\"text\":\"\"}],\"inline\":true,\"naturalSize\":[521,410],\"size\":[521,410],\"type\":\"image\",\"url\":\"https://cloudcache.intl.tencent-cloud.com/cms/backend-cms/3f9c852ab96711ed9e14525400088f3a.png\"}],\"type\":\"p\"},{\"id\":\"_a27phJ6qTursRwulDZ8P\",\"children\":[{\"id\":\"sd1ne5PKQ5yptxWRInJpT\",\"children\":[{\"id\":\"9-U7jRTusw4KgrlTwS9J2\",\"children\":[{\"id\":\"9AqcTIesLD70gOHEP1jyW\",\"children\":[{\"text\":\"API/Notification\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"G8jc88Z68RwGccf-cylu1\",\"children\":[{\"id\":\"Ghckxl8u-5u8VKl1xjigf\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"WLD27-S0wKZbr-Q6iz5_V\",\"children\":[{\"id\":\"vFRHHqAtOLUYpHyf98OrT\",\"children\":[{\"id\":\"G5Y-Hf-qAb81jTNRy9z88\",\"children\":[{\"id\":\"I0ND7ba1P-p3X9M3iwP74\",\"children\":[{\"text\":\"ITMG_MAIN_EVNET_TYPE_USER_UPDATE\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"9f3KhGWQhkOTWNMIBZZdE\",\"children\":[{\"id\":\"-FQrk9MGuY_hFt6oYXjop\",\"children\":[{\"id\":\"vS0YrrUm0cyl9rblTBirf\",\"children\":[{\"text\":\"The member status changed.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"sZjnqFe2Uz8SaIkwUVWt6\",\"children\":[{\"id\":\"Gq9rQkDtG6H8F8DMDxtAg\",\"children\":[{\"id\":\"1sUTb8pQoX4MbAK4Rc1QK\",\"children\":[{\"id\":\"xji7FKx4a4nbcJVcvEArX\",\"children\":[{\"text\":\"AddAudioBlackList\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"4rpcm32RmZ7qB5NnP6QWr\",\"children\":[{\"id\":\"65uRbpuLJ_ND-rqHf4UF5\",\"children\":[{\"id\":\"hdY5aMMFpWyB3BMVIJXyA\",\"children\":[{\"text\":\"Mutes a member in the room.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"c1lsFlcyKLkXplTHq8XEs\",\"children\":[{\"id\":\"3za2wum9KsVpPY6J7wkjs\",\"children\":[{\"id\":\"cjobcqzkF_MwgAuRY9YCD\",\"children\":[{\"id\":\"Cgejt47tZTvQdn1620c84\",\"children\":[{\"text\":\"RemoveAudioBlackList\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"m0VIDmTZTE43aHPrSJj8g\",\"children\":[{\"id\":\"ECsA_Ba3oCDlfPfmh1W09\",\"children\":[{\"id\":\"AG5q0V3eOlRkqRJ7MRWUh\",\"children\":[{\"text\":\"Unmutes a member.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"9eXAJh18rU1DxklVP82Ot\",\"children\":[{\"id\":\"U3OJUZTcKoX2TPi_Kv1PM\",\"children\":[{\"id\":\"MaudSTHZZOuFV7mY50P-_\",\"children\":[{\"id\":\"VIqy8vyUZrVA-jvGiC93S\",\"children\":[{\"text\":\"IsOpenIdInAudioBlackList\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"UD31ANVd03i-H0LAvaHFR\",\"children\":[{\"id\":\"A48IYnixiPsRAU1e47vd1\",\"children\":[{\"id\":\"gnJNvfwDtA3ivIXMDz4gY\",\"children\":[{\"text\":\"Queries whether the user of the specified \"},{\"code\":1,\"text\":\"openid\"},{\"text\":\" is muted.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[43,57],\"widthMode\":\"percentage\"},{\"id\":\"QQwJtTwpsXFz8CR4YSy0t\",\"children\":[{\"text\":\"Notification events of the member room entry and speaking status\"}],\"nodeId\":\".E6.88.90.E5.91.98.E8.BF.9B.E6.88.BF.E3.80.81.E8.AF.B4.E8.AF.9D.E7.8A.B6.E6.80.81.E9.80.9A.E7.9F.A5.E4.BA.8B.E4.BB.B6\",\"type\":\"h3\"},{\"id\":\"RJAA6TGWV31N2mXPM9Rly\",\"children\":[{\"text\":\"This event is used to get the user speaking in the room and display the user on the UI, and to send a notification when someone enters or exits the room.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"Bw45Dt3AkPNnkEg9Hw2hY\",\"children\":[{\"text\":\"A notification for this event will be sent only when the status changes. To get the member status in real time, cache the notification when it is received at the business layer. The event message \"},{\"code\":1,\"text\":\"ITMG_MAIN_EVNET_TYPE_USER_UPDATE\"},{\"text\":\" containing \"},{\"code\":1,\"text\":\"event_id\"},{\"text\":\", \"},{\"code\":1,\"text\":\"count\"},{\"text\":\", and \"},{\"code\":1,\"text\":\"openIdList\"},{\"text\":\" will be returned, which will be identified in the \"},{\"code\":1,\"text\":\"OnEvent\"},{\"text\":\" notification.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"aadbIJ4Mfqwgo4og43lrR\",\"children\":[{\"text\":\"Notifications of the \"},{\"code\":1,\"text\":\"EVENT_ID_ENDPOINT_NO_AUDIO\"},{\"text\":\" audio event will be sent only when the threshold is exceeded; that is, other members in the room can receive the notification that the local user stops speaking only after the local client captures no voice for two seconds.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"teNMdEyjjvbp4kBwmkpxS\",\"children\":[{\"text\":\"The audio event returns only the member speaking status but not the specific volume level. If you need the specific volume levels of members in the room, you can use the \"},{\"code\":1,\"text\":\"GetVolumeById\"},{\"text\":\" API.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"WwTLHR1KveBYFPvSHed8P\",\"children\":[{\"id\":\"VNr7ylCN_bgBpAC7xABhH\",\"children\":[{\"id\":\"oB8aJ0_Tl3SZzAln2ZCTs\",\"children\":[{\"id\":\"yLk9mJMrC1Fh2J5vY6W5d\",\"children\":[{\"text\":\"event_id\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"d3FZW86fBnPKgNr19jpBU\",\"children\":[{\"id\":\"O8gkeTnDYAzYagCSoaIq_\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"AfFG6eiJyTqDGIYoWde__\",\"children\":[{\"id\":\"gp4-c0dXDbaa808SzBZaW\",\"children\":[{\"text\":\"Maintenance\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"IIkmErrGASzkrawMJstg7\",\"children\":[{\"id\":\"VjJS4ZK1nKDPvxXB_O5Dl\",\"children\":[{\"id\":\"fkdE0cXuNWNLu9iAon-ys\",\"children\":[{\"id\":\"6ajC20vXQKeVng_lGitId\",\"children\":[{\"text\":\"EVENT_ID_ENDPOINT_ENTER\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"uQgZ1hTriK9GEISBjcVL-\",\"children\":[{\"id\":\"SzuVNPtf5sXmrN_Df2AEH\",\"children\":[{\"id\":\"NBJPNfYy2HUhrvu_av4fo\",\"children\":[{\"text\":\"Return the \"},{\"code\":1,\"text\":\"openid\"},{\"text\":\" of the member entering the room.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"MyoCeVPqdcLIJpFL2VfMh\",\"children\":[{\"id\":\"efuBPcS2a9K1FQZALsZUi\",\"children\":[{\"id\":\"SSCY02aPkad_vQ1UlZVyO\",\"children\":[{\"text\":\"Member list\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"dvY-OUot7V048v109367w\",\"children\":[{\"id\":\"niysHinZmBfMPJ2nzIIVY\",\"children\":[{\"id\":\"iKn-E3YXvKp3PmLyPFBjR\",\"children\":[{\"id\":\"GxXR7J4PJ1_jh2TS9sd7h\",\"children\":[{\"text\":\"EVENT_ID_ENDPOINT_EXIT\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"8RJiQ3SLxhmCIkuGap_FN\",\"children\":[{\"id\":\"epbBtxtCpZgT8JDwGnhev\",\"children\":[{\"id\":\"Kj9KiwMfHYQoImhgjNuDS\",\"children\":[{\"text\":\"Return the \"},{\"code\":1,\"text\":\"openid\"},{\"text\":\" of the member exiting the room.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"7VNyTtt_hTkWC6mmtpeHg\",\"children\":[{\"id\":\"Zi-MCdWLoQxs1Ack-093Q\",\"children\":[{\"id\":\"DRAye9UrEHkqVdC729MAi\",\"children\":[{\"text\":\"Member list\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"M8osAiZVNEWdbaExkYfPh\",\"children\":[{\"id\":\"JGgyujFbSuKbuxhXPzTfo\",\"children\":[{\"id\":\"q5T4qyWNZ5FoWVhayYSnv\",\"children\":[{\"id\":\"o5JrMVzk-gbHL7Lf3hHRg\",\"children\":[{\"text\":\"EVENT_ID_ENDPOINT_HAS_AUDIO\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"PzYxS9H310kbVOVPg3ssF\",\"children\":[{\"id\":\"qGrs0fRnggEphs8SomJiT\",\"children\":[{\"id\":\"mcnXO7-5nUVmH2FDRsnJo\",\"children\":[{\"text\":\"Return the \"},{\"code\":1,\"text\":\"openid\"},{\"text\":\" of the member sending audio packets in the room. This event can be used to determine whether a user is speaking and display the voiceprint effect.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"f2ywGjd--6pPDPCGnlYhb\",\"children\":[{\"id\":\"hAp_oEvnW2BtMhX7-qCaj\",\"children\":[{\"id\":\"HrGbauKoY8tgigS3vRiJa\",\"children\":[{\"text\":\"Chat member list\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"Viqcz8h9bCdyNHAputDkg\",\"children\":[{\"id\":\"Qta-yZYYDoWDWoJVEeQgc\",\"children\":[{\"id\":\"Fa2ayR3ieOAOzAOJvP65W\",\"children\":[{\"id\":\"Ar-tEhr0I5hO5b9Vyuoa6\",\"children\":[{\"text\":\"EVENT_ID_ENDPOINT_NO_AUDIO\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"9YublUGS-4Vh2b6sAipB_\",\"children\":[{\"id\":\"KGnIpxmOf-WK0a6b6qmS_\",\"children\":[{\"id\":\"fM3Vf2mBUMG5bYoc7kwGS\",\"children\":[{\"text\":\"Return the \"},{\"code\":1,\"text\":\"openid\"},{\"text\":\" of the member stopping sending audio packets in the room.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"OYhQ5bC4JNnhtB39WB9tT\",\"children\":[{\"id\":\"uJTOfcQ71PiQricJPBnIT\",\"children\":[{\"id\":\"LVO60fvh9njseFbCXP8qp\",\"children\":[{\"text\":\"Chat member list\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[29,59,12],\"widthMode\":\"percentage\"},{\"id\":\"eYRR-28_IwludrdrTbs4j\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.819\",\"type\":\"h4\"},{\"id\":\"kDmygOdzR0h0upzjnRiMN\",\"autoWrap\":false,\"children\":[{\"id\":\"3m3E2wTauL-cQKS8iVgB8\",\"children\":[{\"text\":\"context.setTMGDelegate(function(eventId, msg){\"}],\"type\":\"code-line\"},{\"id\":\"pKHYn6R7fkbo6G9xiyBkE\",\"children\":[{\"text\":\" if (type == ITMG_MAIN_EVENT_TYPE_ENTER_ROOM)\"}],\"type\":\"code-line\"},{\"id\":\"OR-74vOaWUqLfj9xXeMd3\",\"children\":[{\"text\":\" {\"}],\"type\":\"code-line\"},{\"id\":\"pRDeq2sjRQShr5fc8KrmX\",\"children\":[{\"text\":\" // Process\"}],\"type\":\"code-line\"},{\"id\":\"_gVrZT41CUIGFl3KC9yKn\",\"children\":[{\"text\":\" switch (eventID)\"}],\"type\":\"code-line\"},{\"id\":\"h-bfNouZXQlNCSOl75Boc\",\"children\":[{\"text\":\" {\"}],\"type\":\"code-line\"},{\"id\":\"a6UYHhVksIb3MzCiiCnrI\",\"children\":[{\"text\":\" case EVENT_ID_ENDPOINT_ENTER:\"}],\"type\":\"code-line\"},{\"id\":\"--QYixQd5ehj3_5Gz0sLG\",\"children\":[{\"text\":\" // A member enters the room\"}],\"type\":\"code-line\"},{\"id\":\"Pq7Vuu-w5B2C8-qXEiPfj\",\"children\":[{\"text\":\" break;\"}],\"type\":\"code-line\"},{\"id\":\"U3EohU5YutCMGSN79sK7H\",\"children\":[{\"text\":\" case EVENT_ID_ENDPOINT_EXIT:\"}],\"type\":\"code-line\"},{\"id\":\"Qr5N7rVO1sfEx4-WzMCe5\",\"children\":[{\"text\":\" // A member exits the room\"}],\"type\":\"code-line\"},{\"id\":\"fqEt8TU2Pu6jjEubBsvuQ\",\"children\":[{\"text\":\" break;\"}],\"type\":\"code-line\"},{\"id\":\"cabP0wKWIi1EmNFnWVwDK\",\"children\":[{\"text\":\" case EVENT_ID_ENDPOINT_HAS_AUDIO:\"}],\"type\":\"code-line\"},{\"id\":\"p68eqTrUHxulAYXtcAkYy\",\"children\":[{\"text\":\" // A member sends audio packets\"}],\"type\":\"code-line\"},{\"id\":\"rp63W-eeDFEbMw19E9YZ8\",\"children\":[{\"text\":\" break;\"}],\"type\":\"code-line\"},{\"id\":\"9uXcZW9UZwN1FCRO4Nszp\",\"children\":[{\"text\":\" case EVENT_ID_ENDPOINT_NO_AUDIO:\"}],\"type\":\"code-line\"},{\"id\":\"ThEMUxd9J0Q78RGr2bJrK\",\"children\":[{\"text\":\" // A member stops sending audio packets\"}],\"type\":\"code-line\"},{\"id\":\"VRl1heV6UHpbuWJrcU-vO\",\"children\":[{\"text\":\" break;\"}],\"type\":\"code-line\"},{\"id\":\"Dhison5QfqRPDUK0nJs4R\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"},{\"id\":\"uN6JpDco4a6CUDXQyilGL\",\"children\":[{\"text\":\" default:\"}],\"type\":\"code-line\"},{\"id\":\"cCm9Z0bKGq6AQVrKYzex5\",\"children\":[{\"text\":\" break;\"}],\"type\":\"code-line\"},{\"id\":\"QvO4nQwwkZ1eCKISKUwrA\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"KAZFyHPXi5NEyaB1NDvqA\",\"children\":[{\"text\":\" break;\"}],\"type\":\"code-line\"},{\"id\":\"QEb3ilZJfPdrf7wbRvc7b\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"qdwj3ZDjIKtJGi5P8J4-w\",\"children\":[{\"text\":\"});\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"lnHu3X4jIPB8NLJLBtoMY\",\"children\":[{\"text\":\"Muting a member in the room\"}],\"nodeId\":\".E6.88.BF.E9.97.B4.E4.B8.AD.E7.A6.81.E8.A8.80.E6.9F.90.E6.88.90.E5.91.98\",\"type\":\"h3\"},{\"id\":\"iO_6bMB1NKER03GGttqqR\",\"children\":[{\"text\":\"This API is used to add an ID to the audio data blocklist. This operation blocks audio from someone and only applies to the local device without affecting other devices. The returned value \"},{\"code\":1,\"text\":\"0\"},{\"text\":\" indicates that the call is successful. Assume that users A, B, and C are all speaking using their mic in a room:\"}],\"type\":\"p\"},{\"id\":\"BK-CD4UEBBXMbnRlAHkzf\",\"children\":[{\"text\":\"If A blocks C, A can only hear B.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"Wsyouf9EzjbvSUSlkVKTf\",\"children\":[{\"text\":\"If B blocks neither A nor C, B can hear both of them.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"L9oNDMaPfNt3CK4Q9-hSR\",\"children\":[{\"text\":\"If C blocks neither A nor B, C can hear both of them.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"97fQyOUDe94PofRp36l1z\",\"children\":[{\"text\":\"This API is suitable for scenarios where a user is muted in a room.\"}],\"type\":\"p\"},{\"id\":\"pr9emp0vmoV_MSoJ1lILL\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\".E6.8E.A5.E5.8F.A3.E5.8E.9F.E5.9E.8B10\",\"type\":\"h4\"},{\"id\":\"gX39wAiX-4m7NQ4t1uM8P\",\"autoWrap\":false,\"children\":[{\"id\":\"J9-kOdykLk-bAV81F1vRw\",\"children\":[{\"text\":\"AddAudioBlackList(openId: string) :number\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"KWu05ABgEBcS5MJIZnPRa\",\"children\":[{\"id\":\"9KWGaKWgt9zuQVNza_4ud\",\"children\":[{\"id\":\"6_s7P7dZDSzkT4c00ILjv\",\"children\":[{\"id\":\"scCNSWby249iXdaqBldA2\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Fi149bPKmB5068Gjq2hYH\",\"children\":[{\"id\":\"YnJuTfkMfskfan1NSXvE5\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"oF3zhC8oBdkdrx7BuD8UJ\",\"children\":[{\"id\":\"htM-Epey000sDHz-k0x6Z\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"Oxxqb9ZoWJyzy3o7_gn4s\",\"children\":[{\"id\":\"p-mQF7pGRrod06bJQnrb4\",\"children\":[{\"id\":\"ppBcqQG1PFMXFtG0M99go\",\"children\":[{\"id\":\"_7OKdGm561ocfvPmFtt_b\",\"children\":[{\"text\":\"openId\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"3MKU4QKWL3NnBMtSriUG9\",\"children\":[{\"id\":\"fhtwZKZqVQNdNHfMoHj-9\",\"children\":[{\"id\":\"dQNOonqURv3WdvG_48jLy\",\"children\":[{\"text\":\"string\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"2Pv0rmze19inWiHXHms_s\",\"children\":[{\"id\":\"efAdUcwhQ8EW_KbMbiIvL\",\"children\":[{\"id\":\"0zk0YtBVxOqqcQDPOrYu5\",\"children\":[{\"code\":1,\"text\":\"openid\"},{\"text\":\" of the user to be blocked\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[23,16,61],\"widthMode\":\"percentage\"},{\"id\":\"ngtvUhLTOUsxCLmyEIP5F\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.8110\",\"type\":\"h4\"},{\"id\":\"VdjtupKpkhCp1-si2HGD7\",\"autoWrap\":false,\"children\":[{\"id\":\"PWwipvTk13RGiDAg3ZdHw\",\"children\":[{\"text\":\"context.AddAudioBlackList(openId);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"_-yPVYa7jnd4nPEsz52EA\",\"children\":[{\"text\":\"Unmuting\"}],\"nodeId\":\".E7.A7.BB.E9.99.A4.E7.A6.81.E8.A8.80\",\"type\":\"h3\"},{\"id\":\"3kdX9ZgGF3wnZwDnI-aF7\",\"children\":[{\"text\":\"This API is used to remove an ID from the audio data blacklist. A returned value of 0 indicates the call is successful.\"}],\"type\":\"p\"},{\"id\":\"jFkkhaFzuuQPKvYQm7mJE\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\".E6.8E.A5.E5.8F.A3.E5.8E.9F.E5.9E.8B11\",\"type\":\"h4\"},{\"id\":\"hKU9XskvzClcHrSJgtJL5\",\"autoWrap\":false,\"children\":[{\"id\":\"tibA-6vmleQnV5M08Hlru\",\"children\":[{\"text\":\"RemoveAudioBlackList(openId: string) :number\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"1caA9atgbOt3EXtiiOt0C\",\"children\":[{\"id\":\"jCdbnfihCPYPtgFIt-cOq\",\"children\":[{\"id\":\"5YmrGZswilaL9xE-M51nH\",\"children\":[{\"id\":\"xw-EZXcmJs6Xah4xjosR5\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"pW6ikkrUs2B0-im1fPcOy\",\"children\":[{\"id\":\"4dymI5eGDr0bHdzjDZ8da\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"IV7O3cttNNrRHHs85XMan\",\"children\":[{\"id\":\"ZEmLmcaJLwxfqzMXSNnI6\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"hHhZFZUJvqwcgOYO5H7uf\",\"children\":[{\"id\":\"hQagV4EX84xs8N02vTKHs\",\"children\":[{\"id\":\"ky2I4kfl8mi3jtEBcqoHo\",\"children\":[{\"id\":\"JLsKexMLLwHf0AIfRcXmY\",\"children\":[{\"text\":\"openId\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Yu8tmYKnqdg4kL_882wsX\",\"children\":[{\"id\":\"xFPovdQ_IYpmjFE7QAKw9\",\"children\":[{\"id\":\"GOBSlNEsVPq3kvEtgvaD1\",\"children\":[{\"text\":\"string\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"VXC4YDjCSanCavgKH3sfy\",\"children\":[{\"id\":\"1QagfTmv4KJ5Oqm6o6iO_\",\"children\":[{\"id\":\"9C-OOX4WWe5cjn52KT1yp\",\"children\":[{\"text\":\"ID to be unblocked\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[31,21,48],\"widthMode\":\"percentage\"},{\"id\":\"5semjP41sgms2AMsl1MuY\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.8111\",\"type\":\"h4\"},{\"id\":\"NQcELWH261N8PQM1d57va\",\"autoWrap\":false,\"children\":[{\"id\":\"z_y-tNi-OCUFMK4cDY5qg\",\"children\":[{\"text\":\"context.RemoveAudioBlackList(openId);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"ROGmvg5WX1_292hbAWdxS\",\"children\":[{\"text\":\"Querying whether a user is muted\"}],\"nodeId\":\".E6.9F.A5.E8.AF.A2.E7.94.A8.E6.88.B7.E6.98.AF.E5.90.A6.E8.A2.AB.E7.A6.81.E8.A8.80\",\"type\":\"h3\"},{\"id\":\"VmyQk7cqipc-oU9c9uIdX\",\"children\":[{\"text\":\"This API is used to query whether an ID is blocked. The returned value \"},{\"code\":1,\"text\":\"true\"},{\"text\":\" indicates that the ID is blocked, while \"},{\"code\":1,\"text\":\"false\"},{\"text\":\" indicates not.\"}],\"type\":\"p\"},{\"id\":\"opTA34vdjl6I9TlOKQE7l\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\".E6.8E.A5.E5.8F.A3.E5.8E.9F.E5.9E.8B12\",\"type\":\"h4\"},{\"id\":\"to-dnRGlBnV66Ik8IYVkT\",\"autoWrap\":false,\"children\":[{\"id\":\"ohtj2HvL4vWqmh1ldYg9q\",\"children\":[{\"text\":\"IsOpenIdInAudioBlackList(openId: string) :boolean\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"8mOwqr0HMKUbSP6DD3NYt\",\"children\":[{\"id\":\"zjOt9hQNOQQeyf5dXT_VI\",\"children\":[{\"id\":\"_ga-8Jbiywzo3TKs5miLi\",\"children\":[{\"id\":\"_Gm4G0TiI-TrwvoiF9ZGP\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"73eMroFYl4DBnsGU9q4wu\",\"children\":[{\"id\":\"CvuzJ1UOByxd3St073cQi\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"mdqexCWPq3hiqnXcgzL0n\",\"children\":[{\"id\":\"2zA70bn8uWViZnIupFBs7\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"kSMnDISEyNpJ1o0nPs5tY\",\"children\":[{\"id\":\"fzeGot0iOuV7D1uv4oqrd\",\"children\":[{\"id\":\"x3hYamIM5x0jALHPQCUG3\",\"children\":[{\"id\":\"uRHsNJ6uUQ0S4XBo4td4c\",\"children\":[{\"text\":\"openId\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"mSVm8t0o0f4fRTWt3aGJx\",\"children\":[{\"id\":\"5OAeJxmNClZSMNDoo41eM\",\"children\":[{\"id\":\"jTN7Fg34moeItxquD3it9\",\"children\":[{\"text\":\"string\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"YXGI1jnmIiVpev1LKls6F\",\"children\":[{\"id\":\"6IudZjK2jJ_bYKQ5OgfPp\",\"children\":[{\"id\":\"wLTGnNHB4A1qAAQRI9F7E\",\"children\":[{\"text\":\"ID to be queried\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[32,22,46],\"widthMode\":\"percentage\"},{\"id\":\"zWUtc3o_ICqEe56UMN4ci\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.8112\",\"type\":\"h4\"},{\"id\":\"_Wye7Fra2cUR3-6JyE1Rw\",\"autoWrap\":false,\"children\":[{\"id\":\"XfnfanUM6zvmhQ7KuE_Pd\",\"children\":[{\"text\":\"boolean isInBlackList = context.IsOpenIdInAudioBlackList(openId);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"tZSBavukr499kEczM75fn\",\"children\":[{\"text\":\"Voice Chat Capturing APIs\"}],\"nodeId\":\".E5.AE.9E.E6.97.B6.E8.AF.AD.E9.9F.B3.E9.87.87.E9.9B.86.E7.9B.B8.E5.85.B3.E6.8E.A5.E5.8F.A3\",\"type\":\"h2\"},{\"id\":\"gMQfA1cdIZ8Z7GyHKMqRd\",\"children\":[{\"text\":\"The voice chat APIs can only be called after SDK initialization and room entry.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"rIiZo0ZGA0TsklG9EPDUM\",\"children\":[{\"text\":\"When the user clicks the button of enabling/disabling the mic or speaker on the UI, we recommend that you call the \"},{\"code\":1,\"text\":\"EnableMic\"},{\"text\":\" or \"},{\"code\":1,\"text\":\"EnableSpeaker\"},{\"text\":\" API.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"MhdMD_QIKGRF_EwvzbuR5\",\"children\":[{\"text\":\"To enable the user to press the mic button on the UI to speak and release it to stop speaking, we recommend that you call \"},{\"code\":1,\"text\":\"EnableAudioCaptureDevice\"},{\"text\":\" once during room entry and call \"},{\"code\":1,\"text\":\"EnableAudioSend\"},{\"text\":\" to enable the user to speak while pressing the button.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"scJ-c0V70ngwNi_wh-j-h\",\"children\":[{\"id\":\"6pkBdWjCEJA3c7ANc4jPb\",\"children\":[{\"id\":\"xhF6OYIcy00c5tCTKdPSO\",\"children\":[{\"id\":\"x-qJwBTlA6QAFeuUrcx8C\",\"children\":[{\"text\":\"API\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Qe2dkx0oOwQLCFelX5fWS\",\"children\":[{\"id\":\"jDF1VDdKRm_PQZKlXFZRQ\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"SM-cb5EzuVwJ-0nVVorTI\",\"children\":[{\"id\":\"j2KYhnaqwjLGtP-SOmKbY\",\"children\":[{\"id\":\"uRwrfsptl38Yam6JERyLs\",\"children\":[{\"id\":\"0Sp-CIlAXqS5eHc8obqW6\",\"children\":[{\"text\":\"EnableMic\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"hdAUHCk4mIQ_LMk07STY3\",\"children\":[{\"id\":\"nRIPYvde4eaM8ApqtzYC6\",\"children\":[{\"id\":\"2rMgl2vgz3yMVnFTFM-6A\",\"children\":[{\"text\":\"Enables/Disables the mic.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"xXktQJMIHGWuytQucvOL8\",\"children\":[{\"id\":\"iYayEfP1WBPkkX4UWbLyI\",\"children\":[{\"id\":\"AbmILGrRnraQT_HOUZtGE\",\"children\":[{\"id\":\"df-jHn2WgtGi4yyQFi7F9\",\"children\":[{\"text\":\"GetMicState\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"CnyqLqk3GX8bX5aYPvbCH\",\"children\":[{\"id\":\"u3gOAaHarQ4bL-0MgJGmV\",\"children\":[{\"id\":\"2o7WMdQeK0cW3va6QQsqR\",\"children\":[{\"text\":\"Gets the mic status.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"KbQRSyJ6XxcuqnSVhUVrK\",\"children\":[{\"id\":\"HE4zpKG-ddDl_gC_nAvwW\",\"children\":[{\"id\":\"GDnIrSeEvXEU4wo5OsJxG\",\"children\":[{\"id\":\"ewdpym2pzigvhaVcau5Wq\",\"children\":[{\"text\":\"EnableAudioCaptureDevice\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Led8sDZg3fUL0y389wNpf\",\"children\":[{\"id\":\"rmnVxXtd-V5k7X7eu9eTB\",\"children\":[{\"id\":\"G2KIQkRzkXb3l5sjISF82\",\"children\":[{\"text\":\"Enables/Disables the capturing device.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"bkjXPUIT1MkMwF-ZFYaXO\",\"children\":[{\"id\":\"ofoLxs1Cr7ZejsfUJ31lh\",\"children\":[{\"id\":\"Pn5N4fQBVxOQPbPAvu55m\",\"children\":[{\"id\":\"SlL87OEY7qZf7VEhbwVdP\",\"children\":[{\"text\":\"IsAudioCaptureDeviceEnabled\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"630XjFEjQJ-zuSKvNYaEn\",\"children\":[{\"id\":\"GQYQvDVF_3ptio4gJHI5J\",\"children\":[{\"id\":\"OCKODaJns26PJQvcHkBts\",\"children\":[{\"text\":\"Gets the capturing device status.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"BHyHu9zTw5vnyznAiphbf\",\"children\":[{\"id\":\"x7YS72JwDPZC_hmLqb563\",\"children\":[{\"id\":\"MXUxMuJUJvHb2b3NSNLIU\",\"children\":[{\"id\":\"UPQq8Cl7q1Wq3zVwKCD4Y\",\"children\":[{\"text\":\"EnableAudioSend\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"OICFnP31JJktzKM4oxDKt\",\"children\":[{\"id\":\"e6xZ2Ato_ZKYkLAo6kHfZ\",\"children\":[{\"id\":\"FxYv4dx7ugTs1LW0Udur2\",\"children\":[{\"text\":\"Enables/Disables audio upstreaming.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"32zf4RtjYEkhsURcX5rXF\",\"children\":[{\"id\":\"FNn_HBZcgqj6OgAI1-pBy\",\"children\":[{\"id\":\"RYcMGIa1971Q0v7iAguig\",\"children\":[{\"id\":\"5TyIScNdFBtUEUYkzTUVp\",\"children\":[{\"text\":\"IsAudioSendEnabled\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"R6ppaVy6T9ZWiTjM45fH3\",\"children\":[{\"id\":\"m4AKelW0Y8MUWmmoalNbq\",\"children\":[{\"id\":\"fq4Am-XTxOpfL-rRgP-Ig\",\"children\":[{\"text\":\"Gets the audio upstreaming status.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"bm5RcMPNesxcooQsWPoYS\",\"children\":[{\"id\":\"H4QtZKp2yeQ-o9bedzWU3\",\"children\":[{\"id\":\"lxGpYhiib1tCBHpgDZ3TE\",\"children\":[{\"id\":\"s_KCc50_x98cQu4H3Rwp2\",\"children\":[{\"text\":\"GetMicLevel\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"4JqsiGIdm3rmNipdd8QgJ\",\"children\":[{\"id\":\"t3m5xoK-jolYQWQR8fXx2\",\"children\":[{\"id\":\"mTKzpGUCHSw4xcjx1ICz-\",\"children\":[{\"text\":\"Gets the real-time mic volume level.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"2Je_0AfNGbmNdKzwNzsV2\",\"children\":[{\"id\":\"iDoTr4hbl5xDaFyVefOqL\",\"children\":[{\"id\":\"j3UvyCFq28IVbNUBl1w47\",\"children\":[{\"id\":\"WRrlXTYRji3GUpx9gjdTz\",\"children\":[{\"text\":\"GetSendStreamLevel\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"3IynFkX5mtS0dkMrGahTU\",\"children\":[{\"id\":\"uzbe1YxVpO-TaGQYnwIDX\",\"children\":[{\"id\":\"-CFom03dewib-kGsxFfCX\",\"children\":[{\"text\":\"Gets the real-time audio upstreaming volume level.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"hOE_O_Hf_Bnw9KdjZklLY\",\"children\":[{\"id\":\"tfPrj8rw7He00Z1btZmuS\",\"children\":[{\"id\":\"pGC7geX6Qt1G7tfnyDPnF\",\"children\":[{\"id\":\"_WP7wmSPhE0B3acpb8ExJ\",\"children\":[{\"text\":\"SetMicVolume\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"unkr-arKUYDmdVKr0TyaW\",\"children\":[{\"id\":\"qeyOC0KO0m-2NPFZBqsWV\",\"children\":[{\"id\":\"jvY79UPgvxnP1IeMLiYwp\",\"children\":[{\"text\":\"Sets the mic volume level.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"iBcMhEb6qrvxg-IpzqVRM\",\"children\":[{\"id\":\"iMTjD-Ff-DyYPU7_OFcC-\",\"children\":[{\"id\":\"7N_IBzAdQjz7gKUJvTCeY\",\"children\":[{\"id\":\"FMjjEImV0z7sYPwXI_Qom\",\"children\":[{\"text\":\"GetMicVolume\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"WFleGQVsuZ6FXjG_vOZLj\",\"children\":[{\"id\":\"pLZz_P99NGmTm-QtB_-y2\",\"children\":[{\"text\":\"Gets the mic volume level.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[39,61],\"widthMode\":\"percentage\"},{\"id\":\"5ROLSX0jNSFG6j5gPjBhR\",\"children\":[{\"text\":\"Enabling or disabling mic\"}],\"nodeId\":\".E5.BC.80.E5.90.AF.E6.88.96.E5.85.B3.E9.97.AD.E9.BA.A6.E5.85.8B.E9.A3.8E\",\"type\":\"h3\"},{\"id\":\"zXQ9p2r2etLbLP4xt2p90\",\"children\":[{\"text\":\"This API is used to enable/disable the mic. The mic and speaker are not enabled by default after room entry. \"},{\"b\":1,\"text\":\"EnableMic = EnableAudioCaptureDevice + EnableAudioSend\"}],\"nodeId\":\"EnableMic\",\"type\":\"p\"},{\"id\":\"Ov-Lv8Qv_5fsdoDu9xAdB\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\".E6.8E.A5.E5.8F.A3.E5.8E.9F.E5.9E.8B13\",\"type\":\"h4\"},{\"id\":\"6-EfMOOx04LKuDV_HkARA\",\"autoWrap\":false,\"children\":[{\"id\":\"8pAUfkwlf2e57IuzZlGjB\",\"children\":[{\"text\":\"EnableMic(bEnable: boolean) : number\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"mUdWj_dD5MOIkGM4Pqo8G\",\"children\":[{\"id\":\"qlpMSRht9WqvnDzH4gfya\",\"children\":[{\"id\":\"Xf3zIXpsoj_pkZ0JWZ3uC\",\"children\":[{\"id\":\"AihSpQdsAE2e09UIovcT5\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"DGcfrRdPkuAssrMhKlSk9\",\"children\":[{\"id\":\"2G9wOD0KcPenl3VhBKrAe\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"PG0cmZidfkGadMPO76alJ\",\"children\":[{\"id\":\"xVQ6hF1qBnzrMVIJms-SU\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"BQ6y-FWWNkhgIcAqNMeTt\",\"children\":[{\"id\":\"JNUyvOKeQVFs0hKRVj5I3\",\"children\":[{\"id\":\"DGADUWnjezehwSkEzP9xr\",\"children\":[{\"id\":\"r-XCiBMJ4D1rA44je4ynF\",\"children\":[{\"text\":\"isEnabled\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"VEIvKuzR5HwOsymqeeTKX\",\"children\":[{\"id\":\"yFHqLJTGY3acWCsv6_WYi\",\"children\":[{\"id\":\"-UpwRVe9MGdn1ftloSrXv\",\"children\":[{\"text\":\"boolean\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"4_tcdT7HQK0xxyjJfe_U6\",\"children\":[{\"id\":\"5OgQwDOOUhv8uFzKqVAOq\",\"children\":[{\"id\":\"oBWBrmjq9mC0xSK9zlr6U\",\"children\":[{\"text\":\"To enable the mic, set this parameter to \"},{\"code\":1,\"text\":\"true\"},{\"text\":\"; otherwise, set it to \"},{\"code\":1,\"text\":\"false\"},{\"text\":\".\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[14,12,74],\"widthMode\":\"percentage\"},{\"id\":\"-vOD85z2L6YSTXsdovOrN\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.8113\",\"type\":\"h4\"},{\"id\":\"vuc6t_3CzQxb65C2ISNlJ\",\"autoWrap\":false,\"children\":[{\"id\":\"9LRBTbhiQMKMhbQIKgXij\",\"children\":[{\"text\":\"// Turn on mic\"}],\"type\":\"code-line\"},{\"id\":\"bs-hjjHauaIh87EsDAC51\",\"children\":[{\"text\":\"context.EnableMic(true);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"qMh4blCNQlSWqC0oV9yPR\",\"children\":[{\"text\":\"Getting the mic status\"}],\"nodeId\":\".E9.BA.A6.E5.85.8B.E9.A3.8E.E7.8A.B6.E6.80.81.E8.8E.B7.E5.8F.96\",\"type\":\"h3\"},{\"id\":\"lO4uOhdDCQrIDuIEJIoXC\",\"children\":[{\"text\":\"This API is used to get the mic status. The returned value 0 indicates that the mic is off, while 1 is on.\"}],\"type\":\"p\"},{\"id\":\"4BJHiT6iLihNq5E36ZLvo\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\".E6.8E.A5.E5.8F.A3.E5.8E.9F.E5.9E.8B14\",\"type\":\"h4\"},{\"id\":\"s-LKLcF0w89qghCfxrvov\",\"autoWrap\":false,\"children\":[{\"id\":\"NDBTVdeKVszgzRGWZ11k1\",\"children\":[{\"text\":\"GetMicState() :number\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"3XcUibXH-rAj-XSMdHTO2\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.8114\",\"type\":\"h4\"},{\"id\":\"VX2Nt5123Rg5aZK2s3fQo\",\"autoWrap\":false,\"children\":[{\"id\":\"t8Wvh50_1jBYhPrpT-mca\",\"children\":[{\"text\":\"context.GetMicState();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"30K2x_DI_8sSgt1jv3I9p\",\"children\":[{\"text\":\"Enabling or disabling capturing device\"}],\"nodeId\":\".E5.BC.80.E5.90.AF.E6.88.96.E5.85.B3.E9.97.AD.E9.87.87.E9.9B.86.E8.AE.BE.E5.A4.87\",\"type\":\"h3\"},{\"id\":\"jkI1amuoM4dMSCyIZgjTq\",\"children\":[{\"text\":\"This API is used to enable/disable a capturing device. The device is not enabled by default after room entry.\"}],\"type\":\"p\"},{\"id\":\"r7ty5tavUfSMEtrJi4t-x\",\"children\":[{\"text\":\"This API can only be called after room entry. The device will be disabled automatically after room exit.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"j8LyPdXmrdtZsJq1azO6R\",\"children\":[{\"text\":\"Operations such as permission application and volume type adjustment will generally be performed when a capturing device is enabled on a mobile device.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"uvSyLfPCk-ZmkYHZNXJIN\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\".E6.8E.A5.E5.8F.A3.E5.8E.9F.E5.9E.8B15\",\"type\":\"h4\"},{\"id\":\"08tHGRPLq_DhTjAq_KWyw\",\"autoWrap\":false,\"children\":[{\"id\":\"12Q2dh7bl2gCNy82gzt7N\",\"children\":[{\"text\":\"EnableAudioCaptureDevice(enable:boolean) :number\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"W76ohEg9yjrQId8ZAYbfR\",\"children\":[{\"id\":\"u72JXL1KclcOKn24wvQx2\",\"children\":[{\"id\":\"91lxDF4arEgGXrXXS8xUM\",\"children\":[{\"id\":\"YiqqPkd2C0o7XbA3ZES7X\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"mQQw-fFw_QfjFaamNwhXr\",\"children\":[{\"id\":\"1BEES5l-kZi3LDoOgFRCU\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"HvIxx8Xeiil3JbzvqJNNC\",\"children\":[{\"id\":\"Br7inX1AWkqGSgNUPhIGs\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"VRv0n14rp1AQQiG8qhRli\",\"children\":[{\"id\":\"BtrLqFeiEjdPrLcYT7pmK\",\"children\":[{\"id\":\"w9qRaE3ojbdzY648mPKfX\",\"children\":[{\"id\":\"LLi7lsSxhJxg5lCEPs9mg\",\"children\":[{\"text\":\"enable\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"4Qod9D3NBqwVKv35Rpg7W\",\"children\":[{\"id\":\"IsT8CCK_RbqGIaAZ9vzPE\",\"children\":[{\"id\":\"-tbnyBsvgOj6K5awkixPi\",\"children\":[{\"text\":\"boolean\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"KaT8s3WDyXHG7F7HBydBP\",\"children\":[{\"id\":\"DHXwLSCva9NmeJ5fFe0UP\",\"children\":[{\"id\":\"2Om6Wa7O3tjIeqK46WIjU\",\"children\":[{\"text\":\"To enable the capturing device, set this parameter to \"},{\"code\":1,\"text\":\"true\"},{\"text\":\", otherwise, set it to \"},{\"code\":1,\"text\":\"false\"},{\"text\":\".\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[12,10,78],\"widthMode\":\"percentage\"},{\"id\":\"sqK1eDwHElk1nuYh2bgv9\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.8115\",\"type\":\"h4\"},{\"id\":\"MN_Sk_XtetXbX6LEB70kT\",\"autoWrap\":false,\"children\":[{\"id\":\"Fs7YOpITs3ysSVMxNUyTC\",\"children\":[{\"text\":\"// Enable capturing device\"}],\"type\":\"code-line\"},{\"id\":\"p_VIlLK_ASQ25gWrWncg0\",\"children\":[{\"text\":\"context.EnableAudioCaptureDevice(true);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"dDedSkbkRc3Iy6TWZo2bU\",\"children\":[{\"text\":\"Getting the capturing device status\"}],\"nodeId\":\".E9.87.87.E9.9B.86.E8.AE.BE.E5.A4.87.E7.8A.B6.E6.80.81.E8.8E.B7.E5.8F.96\",\"type\":\"h3\"},{\"id\":\"y97F2osP43sMhV9HBZTMi\",\"children\":[{\"text\":\"This API is used to get the status of a capturing device.\"}],\"type\":\"p\"},{\"id\":\"rrSKYkUPbBw7rVk_Bj8ez\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\".E6.8E.A5.E5.8F.A3.E5.8E.9F.E5.9E.8B16\",\"type\":\"h4\"},{\"id\":\"aqKEdaGn8JZC6fZpXLaPZ\",\"autoWrap\":false,\"children\":[{\"id\":\"nYoFd_iiIfFBK5wy2m1AV\",\"children\":[{\"text\":\"IsAudioCaptureDeviceEnabled():boolean\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"dwyVpDhH_BGrjfQ34yHRn\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.8116\",\"type\":\"h4\"},{\"id\":\"nVgEqZOY1Kt0syH2LqYpG\",\"autoWrap\":false,\"children\":[{\"id\":\"IEjeVzzgwKXr6IDiNrKJz\",\"children\":[{\"text\":\"boolean IsAudioCaptureDevice = context.IsAudioCaptureDeviceEnabled();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"AelBJKnqnUNcCUhlWB_wm\",\"children\":[{\"text\":\"Enabling or disabling audio upstreaming\"}],\"nodeId\":\".E6.89.93.E5.BC.80.E6.88.96.E5.85.B3.E9.97.AD.E9.9F.B3.E9.A2.91.E4.B8.8A.E8.A1.8C\",\"type\":\"h3\"},{\"id\":\"1UYx0VHpF_FX_MzHQ7SSl\",\"children\":[{\"text\":\"This API is used to enable/disable audio upstreaming. If a capturing device is already enabled, it will send captured audio data; otherwise, it will remain muted. For more information on how to enable/disable the capturing device, see the \"},{\"code\":1,\"text\":\"EnableAudioCaptureDevice\"},{\"text\":\" API.\"}],\"type\":\"p\"},{\"id\":\"YysyNqCbTMfYM3eDWtLzC\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\".E6.8E.A5.E5.8F.A3.E5.8E.9F.E5.9E.8B17\",\"type\":\"h4\"},{\"id\":\"zqgkJPevjydEq1NkPVR1r\",\"autoWrap\":false,\"children\":[{\"id\":\"5v1DjDwpFDuMZArrjylpy\",\"children\":[{\"text\":\"EnableAudioSend(bEnable: boolean) :number\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"-QyZykht1LdVcD0Rt7mEs\",\"children\":[{\"id\":\"-K7W6kNFieLqZOQM2c-1u\",\"children\":[{\"id\":\"sChqk6Yumi-4xLzngZlcO\",\"children\":[{\"id\":\"zlmi5G4CC6vV1qqnVQ4co\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"NuVDnMq8-XrquiT8xZEFu\",\"children\":[{\"id\":\"M48UVFkx2S0lRhBkb0Fz7\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"mUH6Pu1dwcfzv3YmPS4VX\",\"children\":[{\"id\":\"mL8tj0lh9WuhXGGo0wphr\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"Z86GsTnnC4RTpBLg_K3PP\",\"children\":[{\"id\":\"N3nXrdi88gzbNgKLZ08L-\",\"children\":[{\"id\":\"jEdTR33dFN1xit-ZzKYqy\",\"children\":[{\"id\":\"Z9lZ5h_-HgaLyHA6TopQH\",\"children\":[{\"text\":\"isEnabled\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"BLmTbUOhPygKu6drwL3PB\",\"children\":[{\"id\":\"mEKe9ZApI_l-zjBKRpRCK\",\"children\":[{\"id\":\"KZV8k0HCdlcGA_rvD0yq4\",\"children\":[{\"text\":\"boolean\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"CuuLiFIY7evHoGTTvELCx\",\"children\":[{\"id\":\"cFJvPKOATabsK0VvFMd4Z\",\"children\":[{\"id\":\"-ALpkiUfav7q4JUidcsae\",\"children\":[{\"text\":\"To enable audio upstreaming, set this parameter to \"},{\"code\":1,\"text\":\"true\"},{\"text\":\"; otherwise, set it to \"},{\"code\":1,\"text\":\"false\"},{\"text\":\".\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[12,10,78],\"widthMode\":\"percentage\"},{\"id\":\"hxxkdYk4mnJM_vsHszw5_\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.8117\",\"type\":\"h4\"},{\"id\":\"kYWdXpX7ZgGw7_TiP-yhK\",\"autoWrap\":false,\"children\":[{\"id\":\"qYPItyLxec5hhdij00Jmb\",\"children\":[{\"text\":\"context.EnableAudioSend(true);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"V0Gm4OEvV9FsTWUgxZgl3\",\"children\":[{\"text\":\"Getting audio upstreaming status\"}],\"nodeId\":\".E9.9F.B3.E9.A2.91.E4.B8.8A.E8.A1.8C.E7.8A.B6.E6.80.81.E8.8E.B7.E5.8F.96\",\"type\":\"h3\"},{\"id\":\"Qc60bx46wLyCY5bptNjOW\",\"children\":[{\"text\":\"This API is used to get the status of audio upstreaming.\"}],\"type\":\"p\"},{\"id\":\"3Rqe719rUOO9DutfglUwk\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\".E6.8E.A5.E5.8F.A3.E5.8E.9F.E5.9E.8B18\",\"type\":\"h4\"},{\"id\":\"aCfvViuP0bNMgEdh0kMh-\",\"autoWrap\":false,\"children\":[{\"id\":\"dongIiYdbpsYKUdDA4N5b\",\"children\":[{\"text\":\"IsAudioSendEnabled():boolean\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"ZvUFyAOGa1y5YUSVJ_dvY\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.8118\",\"type\":\"h4\"},{\"id\":\"uQyUiLYf5G0gt30twkyTD\",\"autoWrap\":false,\"children\":[{\"id\":\"w4oVJzMf-6EAsqjkTFREi\",\"children\":[{\"text\":\"boolean IsAudioSend = context.IsAudioSendEnabled();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"8_u-nyRhdF3N0zqVg7y9f\",\"children\":[{\"text\":\"Getting the real-time mic volume\"}],\"nodeId\":\".E8.8E.B7.E5.8F.96.E9.BA.A6.E5.85.8B.E9.A3.8E.E5.AE.9E.E6.97.B6.E9.9F.B3.E9.87.8F\",\"type\":\"h3\"},{\"id\":\"NTgjylQUUtNitcimeTThU\",\"children\":[{\"text\":\"This API is used to get the real-time mic volume level. A number-type value in the range of 0–100 will be returned. We recommend that you call this API once every 20 ms.\"}],\"type\":\"p\"},{\"id\":\"fvdZqP1qOg0k4u8FuPc0Y\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\".E6.8E.A5.E5.8F.A3.E5.8E.9F.E5.9E.8B19\",\"type\":\"h4\"},{\"id\":\"L8wfjISu_w9Xt3Hju5yAh\",\"autoWrap\":false,\"children\":[{\"id\":\"fGRue-OK3EG-7mn1oMKzb\",\"children\":[{\"text\":\"GetMicLevel():number\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"i9tnkmUXJ3eiFBVXHPB-s\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.8119\",\"type\":\"h4\"},{\"id\":\"DdO1M2yMJk2jsylRQOl7k\",\"autoWrap\":false,\"children\":[{\"id\":\"3lP4xvmVzM0SCfbIRk-c3\",\"children\":[{\"text\":\"context.GetMicLevel();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"kvqtKUoCR3sV94vRFAnCD\",\"children\":[{\"text\":\"Getting the real-time audio upstreaming volume\"}],\"nodeId\":\".E8.8E.B7.E5.8F.96.E9.9F.B3.E9.A2.91.E4.B8.8A.E8.A1.8C.E5.AE.9E.E6.97.B6.E9.9F.B3.E9.87.8F\",\"type\":\"h3\"},{\"id\":\"EEUJypdNoLwBoPbFceLNe\",\"children\":[{\"text\":\"This API is used to get the local real-time audio upstreaming volume level. A number-type value in the range of 0–100 will be returned.\"}],\"type\":\"p\"},{\"id\":\"05hFEdjmpJ9GPCd5C4zcN\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\".E6.8E.A5.E5.8F.A3.E5.8E.9F.E5.9E.8B20\",\"type\":\"h4\"},{\"id\":\"ezTcW2owf8Mur1Y_shFz1\",\"autoWrap\":false,\"children\":[{\"id\":\"bcD5zLU6WnF0sXsLhzZIx\",\"children\":[{\"text\":\"GetSendStreamLevel() :number\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"aR9oAcRuzQfuS31OJG2W_\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.8120\",\"type\":\"h4\"},{\"id\":\"Gd5cKZk4R-CxKmut368xM\",\"autoWrap\":false,\"children\":[{\"id\":\"5NxHcJnMaFqqqmaP3GN4C\",\"children\":[{\"text\":\"context.GetSendStreamLevel();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"kiWEPdJj2D6XdXslaXr_N\",\"children\":[{\"text\":\"Setting the mic software volume\"}],\"nodeId\":\".E8.AE.BE.E7.BD.AE.E9.BA.A6.E5.85.8B.E9.A3.8E.E8.BD.AF.E4.BB.B6.E9.9F.B3.E9.87.8F\",\"type\":\"h3\"},{\"id\":\"FPS6GjN397xpRvlxXy2dm\",\"children\":[{\"text\":\"This API is used to set the mic volume level. The corresponding parameter is \"},{\"code\":1,\"text\":\"volume\"},{\"text\":\", which is equivalent to attenuating or gaining the captured sound.\"}],\"type\":\"p\"},{\"id\":\"ma3qHiJj2ngeYuhVAwXbD\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\".E6.8E.A5.E5.8F.A3.E5.8E.9F.E5.9E.8B21\",\"type\":\"h4\"},{\"id\":\"55aQj7Jl_NCOgme9UKh85\",\"autoWrap\":false,\"children\":[{\"id\":\"07LWsRXZpAhz4ed9N2JWW\",\"children\":[{\"text\":\"SetMicVolume(volume:number) :number\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"m3Xh1V2VF_24a2ESP-tpR\",\"children\":[{\"id\":\"ze4-BEk0f6YQ6irYWyO2i\",\"children\":[{\"id\":\"1ZsC7vlidoNOr0Muzdmm6\",\"children\":[{\"id\":\"r5A-NfRyWht5JXMyPVaTA\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"2qrkBgDaH-4gXh-1odX-f\",\"children\":[{\"id\":\"vuVCRz0vQQvnhIXnYJAPt\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"yA72xh7VYmMt-5YBWUbwU\",\"children\":[{\"id\":\"bkRqQ0PoIjxOAmqPHeNxP\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"biUGgI_U9vt1pbD8O-BEY\",\"children\":[{\"id\":\"titZgo3cbz_uFuafdSxCn\",\"children\":[{\"id\":\"3ibR8oFMKTo5P69xDqX3O\",\"children\":[{\"id\":\"ZF62Dts-V9ew33UDfe4Qq\",\"children\":[{\"text\":\"volume\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"dxCZfg5NYeWe55AQo-GuI\",\"children\":[{\"id\":\"sdDiBKDDEuHSIxm3C9VGA\",\"children\":[{\"id\":\"u9JzMZuhUFP_LAB4CXfaq\",\"children\":[{\"text\":\"number\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"gdtjkWvncRR0u8RtmW-ys\",\"children\":[{\"id\":\"YYZWQ8weIBY9N59F0eJBt\",\"children\":[{\"id\":\"uQkTLhAQi4ekHEZBIMoVz\",\"children\":[{\"text\":\"Value range: 0-200. Default value: \"},{\"code\":1,\"text\":\"100\"},{\"text\":\". \"},{\"code\":1,\"text\":\"0\"},{\"text\":\" indicates that the audio is muted, while \"},{\"code\":1,\"text\":\"100\"},{\"text\":\" indicates that the volume level remains unchanged.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[12,12,76],\"widthMode\":\"percentage\"},{\"id\":\"87acJK7ZR6RpyvgQQHmq3\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.8121\",\"type\":\"h4\"},{\"id\":\"3V86TGA1PaIcnerennxdD\",\"autoWrap\":false,\"children\":[{\"id\":\"oC8sReoGAbqv2zfY4vBpi\",\"children\":[{\"text\":\"number micVol = (value * 100);\"}],\"type\":\"code-line\"},{\"id\":\"ptliHvzBeGFA-CE4vRGzj\",\"children\":[{\"text\":\"context.SetMicVolume (micVol);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"fzUoRGkYoOuP4WruM3t8x\",\"children\":[{\"text\":\"Getting the mic software volume\"}],\"nodeId\":\".E8.8E.B7.E5.8F.96.E9.BA.A6.E5.85.8B.E9.A3.8E.E8.BD.AF.E4.BB.B6.E9.9F.B3.E9.87.8F\",\"type\":\"h3\"},{\"id\":\"lFSAWcXtA28xVSLYuneF_\",\"children\":[{\"text\":\"This API is used to get the mic volume level. A number-type value will be returned. \"},{\"code\":1,\"text\":\"101\"},{\"text\":\" indicates that the \"},{\"code\":1,\"text\":\"SetMicVolume\"},{\"text\":\" API has not been called.\"}],\"type\":\"p\"},{\"id\":\"4yEkB9n-dM3EhLGitWh8t\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\".E6.8E.A5.E5.8F.A3.E5.8E.9F.E5.9E.8B22\",\"type\":\"h4\"},{\"id\":\"Z7K61SQJkxSE-FjbgueeW\",\"autoWrap\":false,\"children\":[{\"id\":\"tKBMsOI9QPeP0E1XDmIYy\",\"children\":[{\"text\":\"GetMicVolume()\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"FgMJXttWIqVmaWpzfh8ed\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.8122\",\"type\":\"h4\"},{\"id\":\"BFkiD4QaxE9mHJ1T4_y05\",\"autoWrap\":false,\"children\":[{\"id\":\"wHl7pS_yb2SAATYvcXFNl\",\"children\":[{\"text\":\"context.GetMicVolume();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"LbbFi5pMYetGeu4l8E-1k\",\"children\":[{\"text\":\"Voice Chat Playback APIs\"}],\"nodeId\":\".E5.AE.9E.E6.97.B6.E8.AF.AD.E9.9F.B3.E6.92.AD.E6.94.BE.E7.9B.B8.E5.85.B3.E6.8E.A5.E5.8F.A3\",\"type\":\"h2\"},{\"id\":\"NAb7X4R1Zz3-BLdg3mvIt\",\"children\":[{\"id\":\"UtdZGz5XZovL27M6szJig\",\"children\":[{\"id\":\"PbgkdJn1TegL3YGhq6xfN\",\"children\":[{\"id\":\"_A_VBL_OplLf61dTX_NAk\",\"children\":[{\"text\":\"API\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"WCYGCRQF4qajo7o-t8Ak3\",\"children\":[{\"id\":\"Ry8W4ZFxMMiZzU3HNOPJ3\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"GdkQReTbn06pkuReyxjiV\",\"children\":[{\"id\":\"NZR-h2IqsfP3oYUHhAI0y\",\"children\":[{\"id\":\"4P7Ks2U9yG1aR8B6fTcf9\",\"children\":[{\"id\":\"RqyMQeXnh2ZA3dxQy-w-_\",\"children\":[{\"text\":\"EnableSpeaker\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"KZjvsDDkOcvQrsYsi1arF\",\"children\":[{\"id\":\"idckJ3Cc61a11baJGk1HJ\",\"children\":[{\"id\":\"85Lz_9sxB0ejsesAeOEDd\",\"children\":[{\"text\":\"Enables/Disables the speaker.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"1PN8G4tkgLOezgezUCp7h\",\"children\":[{\"id\":\"EhCIwq_ltkd6IfEXVFsyX\",\"children\":[{\"id\":\"F0M_VR6uLibO91qeWqVvq\",\"children\":[{\"id\":\"ie6X3iP7kh2_FGJgPaSuM\",\"children\":[{\"text\":\"GetSpeakerState\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"U2sV8tkVDBnwX6xNvtiBs\",\"children\":[{\"id\":\"H4E7aMRxVYZQn0QWlWjSK\",\"children\":[{\"id\":\"IQPqVOi9JiQ8wpEbcWKvh\",\"children\":[{\"text\":\"Gets the speaker status.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"UnDSlA5G7NaRTWOMr__NK\",\"children\":[{\"id\":\"4eK5AkJXPTPNqZCLctUZr\",\"children\":[{\"id\":\"mr2PzfbVDBnWEs7-hQRzP\",\"children\":[{\"id\":\"snaOStIstYMnvUXmTEe-l\",\"children\":[{\"text\":\"EnableAudioPlayDevice\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"FRb5tQCas-UPfOCGTiXk3\",\"children\":[{\"id\":\"9J9S0Ib0GpRPaOA9Cff3D\",\"children\":[{\"id\":\"8BfOrQbh2ur3ZdY-C2wZo\",\"children\":[{\"text\":\"Enables/Disables the playback device.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"2O-1nbPxa72EVUEC4qsb1\",\"children\":[{\"id\":\"jYUsUUq4MZrO3DMKR5AUQ\",\"children\":[{\"id\":\"D0akgHRsYU241MA2dE3e3\",\"children\":[{\"id\":\"dexBfSd0IVShRWeezBm0g\",\"children\":[{\"text\":\"IsAudioPlayDeviceEnabled\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"UOioVu_YVKUyc-pnzf8Pz\",\"children\":[{\"id\":\"wTx5WI-IYoTZ2vKt4QZQF\",\"children\":[{\"id\":\"DkOdv_v5Hf1ym9huNNi0S\",\"children\":[{\"text\":\"Gets the playback device status.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"uDgEVHvqGGBr61d6RobqP\",\"children\":[{\"id\":\"nEposZkMqIoIHO_LcH-xN\",\"children\":[{\"id\":\"z7q64-2bZEZYymWb8YpFf\",\"children\":[{\"id\":\"MdmWsVR2L3qexVjJxRmWt\",\"children\":[{\"text\":\"EnableAudioRecv\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"kFlBecAmlBK1zZ2zzii36\",\"children\":[{\"id\":\"5caJdVm3d-pNfwQWzR_3x\",\"children\":[{\"id\":\"DUDQLUqVtBgWGvJiDnjYm\",\"children\":[{\"text\":\"Enables/Disables audio downstreaming.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"yjkpKLL4FUNJCjtcMCXpb\",\"children\":[{\"id\":\"gA1_jw7KnRlMW_WhDQQyG\",\"children\":[{\"id\":\"XLep-x6RsLfXH6IjqcIMO\",\"children\":[{\"id\":\"vbIEJSHS-YtVeUlWfoowS\",\"children\":[{\"text\":\"IsAudioRecvEnabled\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"knWjXtTICgQWsPR6R3zHN\",\"children\":[{\"id\":\"fQFd2RTaUBIMm_mhplP-E\",\"children\":[{\"id\":\"QX8KGsR9FZqo0_-CTsaLw\",\"children\":[{\"text\":\"Gets the audio downstreaming status.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"jyHBzBvOf70WAGK0Ex-jX\",\"children\":[{\"id\":\"j9pP1UePjAPc0JRl76y0K\",\"children\":[{\"id\":\"6LrR799QtiW8WdCMh-rvk\",\"children\":[{\"id\":\"QkMJt-MeMtziPR2s3mScC\",\"children\":[{\"text\":\"GetSpeakerLevel\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Dw0u09FWnyA-x3PXYokfo\",\"children\":[{\"id\":\"IQKfy2pdG7Bp2zfyBGO7_\",\"children\":[{\"id\":\"bLzXqvBHgcRBbIkRm4De9\",\"children\":[{\"text\":\"Gets the real-time speaker volume level.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"3VMwt5olMG1Rwf7WjDPxG\",\"children\":[{\"id\":\"9OXFpoMo0nNrzo8tCB6sl\",\"children\":[{\"id\":\"NsUkM8uAcsPYIF_1kh9Pz\",\"children\":[{\"id\":\"WZbrjou9RIigodFPlTQXh\",\"children\":[{\"text\":\"GetRecvStreamLevel\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"KkNlqh7N7zL0SWy-F-EAe\",\"children\":[{\"id\":\"NC7TapiQCZ3gvq_PGP9tE\",\"children\":[{\"id\":\"AwudDRLrVqKq_X9oVYLOf\",\"children\":[{\"text\":\"Gets the real-time downstreaming audio levels of other members in the room.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"TSxnG5Gvo0JX0nGzs1gNN\",\"children\":[{\"id\":\"7N2g0-wfySSiguGKwse_P\",\"children\":[{\"id\":\"LuaSopyZmSwmMHd1PG7Dq\",\"children\":[{\"id\":\"M77BAQPAhAc1dys3XYCIN\",\"children\":[{\"text\":\"SetSpeakerVolume\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"6STOU-tHsF7vR4PBhp8xQ\",\"children\":[{\"id\":\"bAzzUGvqaxuZXT5fIXyqG\",\"children\":[{\"id\":\"cp7pD8CfEY9Tqs0YuJe_W\",\"children\":[{\"text\":\"Sets the speaker volume level.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"yzmRSLvRZ7rs0d50ivHIZ\",\"children\":[{\"id\":\"LzzKxtp9hvCtoGwOPCtzv\",\"children\":[{\"id\":\"WD0yh7EpQuo8ZXVOyOwkG\",\"children\":[{\"id\":\"8_yhmHe-0hB0hi6wG2BC-\",\"children\":[{\"text\":\"GetSpeakerVolume\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"_yCpb6nDmz1A9bzYR6uae\",\"children\":[{\"id\":\"SK6PChnne8ighKTsUFALA\",\"children\":[{\"text\":\"Gets the speaker volume level.\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[28,72],\"widthMode\":\"percentage\"},{\"id\":\"gjMM_9HEFeBPeAzBNV5_V\",\"children\":[{\"text\":\"Enabling or disabling speaker\"}],\"nodeId\":\".E5.BC.80.E5.90.AF.E6.88.96.E5.85.B3.E9.97.AD.E6.89.AC.E5.A3.B0.E5.99.A8\",\"type\":\"h3\"},{\"id\":\"rKjsTCvOBkT1b7HitwnHK\",\"children\":[{\"text\":\"This API is used to enable/disable the speaker. \"},{\"b\":1,\"text\":\"EnableSpeaker = EnableAudioPlayDevice + EnableAudioRecv\"}],\"nodeId\":\"EnableSpeaker\",\"type\":\"p\"},{\"id\":\"t_rxAAfmiq-7ADC8uk4pI\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\".E6.8E.A5.E5.8F.A3.E5.8E.9F.E5.9E.8B23\",\"type\":\"h4\"},{\"id\":\"-x9DR9HDQOB75Fso49VJe\",\"autoWrap\":false,\"children\":[{\"id\":\"NPq6Pc5nRoNCqvUKpmBPY\",\"children\":[{\"text\":\"EnableSpeaker(bEnable: boolean) : number;\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"aODLLhQb_4s2g-bd16dRA\",\"children\":[{\"id\":\"Lmw4Jopzx7vdIYM8fl5Nb\",\"children\":[{\"id\":\"VnX5HS3gyHushBoTDUZMZ\",\"children\":[{\"id\":\"wtqrv_Dm9a_p8axKUuK2W\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ki0n-omcTdRYxntXNbVEg\",\"children\":[{\"id\":\"dCDLWZZb_k7RAkm5uf3uB\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"iNcD2VHp9oYe-on5mWLqF\",\"children\":[{\"id\":\"M_w38_kc9mHxeKdrgTnxV\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"lUIS1t-CEF5TUDqXzmEEg\",\"children\":[{\"id\":\"YQGeNv1tTb_OJ-W-x69XV\",\"children\":[{\"id\":\"1bJknxIiXVuUo5pBHY2ob\",\"children\":[{\"id\":\"8TBl_The0RhH5cu4LbzQn\",\"children\":[{\"text\":\"bEnable\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"SaXH1zYBYffZuMsTpmQvR\",\"children\":[{\"id\":\"uzIQPIsZgq5cSIU71_Ka8\",\"children\":[{\"id\":\"Z3yBwXe10u8K2mKpERuRD\",\"children\":[{\"text\":\"boolean\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"tgsEnSrAe2zvS15ncNWdT\",\"children\":[{\"id\":\"yyDQZIyL0FjDWLbYFI0wk\",\"children\":[{\"id\":\"AS9MjGWlM286-37tQ54zb\",\"children\":[{\"text\":\"To disable the speaker, set this parameter to \"},{\"code\":1,\"text\":\"false\"},{\"text\":\"; otherwise, set it to \"},{\"code\":1,\"text\":\"true\"},{\"text\":\".\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[13,11,76],\"widthMode\":\"percentage\"},{\"id\":\"kBeuOrpl7p7bq0TvvKl0B\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.8123\",\"type\":\"h4\"},{\"id\":\"YOr7AU7cM_teknHuOsZzG\",\"autoWrap\":false,\"children\":[{\"id\":\"OtGCMrTvd2q7weVJXO-gi\",\"children\":[{\"text\":\"// Turn on the speaker\"}],\"type\":\"code-line\"},{\"id\":\"_EIn-A8JeOVIRXS93j44L\",\"children\":[{\"text\":\"context.EnableSpeaker(true);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"8SUirIa4dgfsMxILOF9Lz\",\"children\":[{\"text\":\"Getting the speaker status\"}],\"nodeId\":\".E6.89.AC.E5.A3.B0.E5.99.A8.E7.8A.B6.E6.80.81.E8.8E.B7.E5.8F.96\",\"type\":\"h3\"},{\"id\":\"24GSsWV3_fNzNWveAumo1\",\"children\":[{\"text\":\"This API is used to get the speaker status. 0 indicates that the speaker is off, and 1 is on.\"}],\"type\":\"p\"},{\"id\":\"PLjstBi7uo2GX13DwLLjf\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\".E6.8E.A5.E5.8F.A3.E5.8E.9F.E5.9E.8B24\",\"type\":\"h4\"},{\"id\":\"YNVo-Wdr11KvW7kI1HFUs\",\"autoWrap\":false,\"children\":[{\"id\":\"_ajc1wNjrZorZ02dMNtC7\",\"children\":[{\"text\":\"GetSpeakerState() :number\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"Pk2Kq42LUxoAte0XOE94f\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.8124\",\"type\":\"h4\"},{\"id\":\"8itXyrPjku1vZLjRkFZOd\",\"autoWrap\":false,\"children\":[{\"id\":\"Eyx8BtAJSsZ8fIO0HO2Hm\",\"children\":[{\"text\":\"context.GetSpeakerState();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"1QnwohLEZTd6qxVdyNuUM\",\"children\":[{\"text\":\"Enabling or disabling playback device\"}],\"nodeId\":\".E5.BC.80.E5.90.AF.E6.88.96.E5.85.B3.E9.97.AD.E6.92.AD.E6.94.BE.E8.AE.BE.E5.A4.87\",\"type\":\"h3\"},{\"id\":\"_NkLkJTx8D9Vi2hrWGtwv\",\"children\":[{\"text\":\"This API is used to enable/disable a playback device.\"}],\"type\":\"p\"},{\"id\":\"Ri5_Q9MJB50rOYoQaUOOR\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\".E6.8E.A5.E5.8F.A3.E5.8E.9F.E5.9E.8B25\",\"type\":\"h4\"},{\"id\":\"P27Ti4oCsoDbuyWe_bnlF\",\"autoWrap\":false,\"children\":[{\"id\":\"O7T67BRT2C8tC_m0-3xG5\",\"children\":[{\"text\":\"EnableAudioPlayDevice(enable:boolean) :number\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"1SW_VlMYtuCIWPdA-C3bz\",\"children\":[{\"id\":\"I5vmsNPSokZSDKzQ_8H3B\",\"children\":[{\"id\":\"blR0dH3iIrXie3XXW77Uu\",\"children\":[{\"id\":\"iHJfw0JMSFkE54tk0sy6Z\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"4oF5ZqI90mWpuwDj2jocC\",\"children\":[{\"id\":\"jU-okK6WdWiHePYRoZNE0\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"kemVmLZ_x8dnuxOHgBFzm\",\"children\":[{\"id\":\"lAo3rGbKXIru42WFKOWm6\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"XFQizcztSjQmHbSKwgekK\",\"children\":[{\"id\":\"7IhmDMAKXrIjEC74k0eCu\",\"children\":[{\"id\":\"y625JpZjtRhf6slC5DeC9\",\"children\":[{\"id\":\"-yZ-zKN-bPZ8hvHakgQHA\",\"children\":[{\"text\":\"enable\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"VH9lrVwlZIrnjjp2cWWvn\",\"children\":[{\"id\":\"pvGBJXhCUy651SCgP6VVh\",\"children\":[{\"id\":\"6k9juNGRFLEdPYSnIt_68\",\"children\":[{\"text\":\"boolean\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"N5Dw6vDks4BGuS9GFCMAh\",\"children\":[{\"id\":\"HbsXKwcUwsyIwH9plwMQt\",\"children\":[{\"id\":\"10SF5oTnlDDFuAboxp49K\",\"children\":[{\"text\":\"To disable the playback device, set this parameter to \"},{\"code\":1,\"text\":\"false\"},{\"text\":\"; otherwise, set it to \"},{\"code\":1,\"text\":\"true\"},{\"text\":\".\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[12,10,78],\"widthMode\":\"percentage\"},{\"id\":\"Tq1vbeQDGEaWrCJ1nLUsx\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.8125\",\"type\":\"h4\"},{\"id\":\"DOk0T-XYgA0LH9U05lsgN\",\"autoWrap\":false,\"children\":[{\"id\":\"7RVgrohcvMs5IdR2X9miy\",\"children\":[{\"text\":\"context.EnableAudioPlayDevice(true);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"_ZT25Ld5A7fpMnQDHjIXu\",\"children\":[{\"text\":\"Getting the playback device status\"}],\"nodeId\":\".E6.92.AD.E6.94.BE.E8.AE.BE.E5.A4.87.E7.8A.B6.E6.80.81.E8.8E.B7.E5.8F.96\",\"type\":\"h3\"},{\"id\":\"RYwRnuhTUjpk3F5EN9PaM\",\"children\":[{\"text\":\"This API is used to get the status of a playback device.\"}],\"type\":\"p\"},{\"id\":\"kN9_Gxb9qgilwjQZA_nSz\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\".E6.8E.A5.E5.8F.A3.E5.8E.9F.E5.9E.8B26\",\"type\":\"h4\"},{\"id\":\"17DbCP8AqLhAxSB-ggtnB\",\"autoWrap\":false,\"children\":[{\"id\":\"1zFske2YW9IoUDfXkeXCL\",\"children\":[{\"text\":\"IsAudioPlayDeviceEnabled() :boolean\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"4t4nV0py-o2MbKLRzzIaR\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.8126\",\"type\":\"h4\"},{\"id\":\"eh1ADFbuXlw6aWjCg9-uO\",\"autoWrap\":false,\"children\":[{\"id\":\"nD8_bQeJ-sX1jnMA06V6x\",\"children\":[{\"text\":\"boolean enable = context.IsAudioPlayDeviceEnabled();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"C0_T304F3rcw4eDDfiQgB\",\"children\":[{\"text\":\"Enabling or disabling audio downstreaming\"}],\"nodeId\":\".E6.89.93.E5.BC.80.E6.88.96.E5.85.B3.E9.97.AD.E9.9F.B3.E9.A2.91.E4.B8.8B.E8.A1.8C\",\"type\":\"h3\"},{\"id\":\"U8kKA3C2RpjmiVezRhhwv\",\"children\":[{\"text\":\"This API is used to enable/disable audio downstreaming. If a playback device is already enabled, it will play back audio data from other members in the room; otherwise, it will remain muted. For more information on how to enable/disable the playback device, see the \"},{\"code\":1,\"text\":\"EnableAudioPlayDevice\"},{\"text\":\" API.\"}],\"type\":\"p\"},{\"id\":\"96JnTgPAhA0ChU-N86vVD\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\".E6.8E.A5.E5.8F.A3.E5.8E.9F.E5.9E.8B27\",\"type\":\"h4\"},{\"id\":\"LAu2gG7rUxCXTaUdYup1D\",\"autoWrap\":false,\"children\":[{\"id\":\"7r6N6D_6FvrsPVTfXGxeN\",\"children\":[{\"text\":\"EnableAudioRecv(bEnable: boolean) :number\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"_lePdjfpNB4suGPDum3q6\",\"children\":[{\"id\":\"F5DCONIOwgXlSuGG6NLeW\",\"children\":[{\"id\":\"3rzdUMdwVx5wgvnJSm8-m\",\"children\":[{\"id\":\"vnm7nxq3wlkX9-r1rLY1C\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"O7dnmB0y_zo43IOdb4iYM\",\"children\":[{\"id\":\"NsLGTH6V63jECzTeQn3Rs\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"PcqEmJkHyNXHf5RBJiFLB\",\"children\":[{\"id\":\"xe62PD1qgNkBtEIA3mr5X\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"jG5A0bds0gXFxUwVWyPoa\",\"children\":[{\"id\":\"6L3VpL0pSCnBPnuYeCDUu\",\"children\":[{\"id\":\"hlQb5Cw-aAQ0_B3hR28p8\",\"children\":[{\"id\":\"d9hKmEVJyLSe9ZI6Qzz61\",\"children\":[{\"text\":\"isEnabled\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"zaURgUOHwVoWSaBdKw97J\",\"children\":[{\"id\":\"YjffHYSPZVO6DZLWmXzGX\",\"children\":[{\"id\":\"6jVYnxZgnsCBU_dHOL43y\",\"children\":[{\"text\":\"boolean\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"OQzcLAGq1z3l5UOndYJye\",\"children\":[{\"id\":\"S8RolP50APsvTj-2IyQ_e\",\"children\":[{\"id\":\"O5sEUE62YLmfTACWv6fya\",\"children\":[{\"text\":\"To enable audio downstreaming, set this parameter to \"},{\"code\":1,\"text\":\"true\"},{\"text\":\"; otherwise, set it to \"},{\"code\":1,\"text\":\"false\"},{\"text\":\".\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[12,10,78],\"widthMode\":\"percentage\"},{\"id\":\"068MoINkGSNTWUjHYYZo9\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.8127\",\"type\":\"h4\"},{\"id\":\"qKxAUC85cVsRq_VlorVON\",\"autoWrap\":false,\"children\":[{\"id\":\"8KcQAPqcEtXByGRDv4j9v\",\"children\":[{\"text\":\"context.EnableAudioRecv(true);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"eYMMybNBtOffdLJsP6rxc\",\"children\":[{\"text\":\"Getting audio downstreaming status\"}],\"nodeId\":\".E9.9F.B3.E9.A2.91.E4.B8.8B.E8.A1.8C.E7.8A.B6.E6.80.81.E8.8E.B7.E5.8F.96\",\"type\":\"h3\"},{\"id\":\"6XM5FjcG2es_49eqSglv3\",\"children\":[{\"text\":\"This API is used to get the status of audio downstreaming.\"}],\"type\":\"p\"},{\"id\":\"Ydsdzw0bv_po7HtZdoojS\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\".E6.8E.A5.E5.8F.A3.E5.8E.9F.E5.9E.8B28\",\"type\":\"h4\"},{\"id\":\"X1wKakFOjrgdzmt1ZtB0M\",\"autoWrap\":false,\"children\":[{\"id\":\"4hTdGomZswxxkvP4fWXOC\",\"children\":[{\"text\":\"IsAudioRecvEnabled():boolean\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"FyrlzYyoZsBTTjL_Cix8w\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.8128\",\"type\":\"h4\"},{\"id\":\"QnFt230ff6oU-pOx8Hqt4\",\"autoWrap\":false,\"children\":[{\"id\":\"VfSKTKlXxy5setDBmjw35\",\"children\":[{\"text\":\"boolean IsAudioRecv = context.IsAudioRecvEnabled();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"FNXg4hMLkrXf6z-IZLznq\",\"children\":[{\"text\":\"Getting the real-time speaker volume\"}],\"nodeId\":\".E8.8E.B7.E5.8F.96.E6.89.AC.E5.A3.B0.E5.99.A8.E5.AE.9E.E6.97.B6.E9.9F.B3.E9.87.8F\",\"type\":\"h3\"},{\"id\":\"RuV9Ngpn02fRvE4b4cP6B\",\"children\":[{\"text\":\"This API is used to get the real-time speaker volume level. A number-type value will be returned to indicate the volume level. We recommend that you call this API once every 20 ms.\"}],\"type\":\"p\"},{\"id\":\"pOuoFrlUG391Lj22aqtDW\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\".E6.8E.A5.E5.8F.A3.E5.8E.9F.E5.9E.8B29\",\"type\":\"h4\"},{\"id\":\"qzubRhfKq-Rv4fLCjYkGl\",\"autoWrap\":false,\"children\":[{\"id\":\"pbAvaQB0pWqkl03nhc0oJ\",\"children\":[{\"text\":\"GetSpeakerLevel():number\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"c11qf0VqGQ9cc8iuZiEYG\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.8129\",\"type\":\"h4\"},{\"id\":\"tBGVWd7HrTAXT3vI3fq3z\",\"autoWrap\":false,\"children\":[{\"id\":\"pmEZtWnit4N_DhbNKh_EI\",\"children\":[{\"text\":\"context.GetSpeakerLevel();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"uIkOksqctvrfMUxcQ-Bcj\",\"children\":[{\"text\":\"Getting the real-time downstreaming audio levels of other members in room\"}],\"nodeId\":\".E8.8E.B7.E5.8F.96.E6.88.BF.E9.97.B4.E5.86.85.E5.85.B6.E4.BB.96.E6.88.90.E5.91.98.E4.B8.8B.E8.A1.8C.E5.AE.9E.E6.97.B6.E9.9F.B3.E9.87.8F\",\"type\":\"h3\"},{\"id\":\"9GG3COffi-vqoeRo3n9eD\",\"children\":[{\"text\":\"This API is used to get the real-time audio downstreaming volume levels of other members in the room. A number-type value will be returned. Value range: 0–200.\"}],\"type\":\"p\"},{\"id\":\"MxtlZShqDaIgwoi9n_DPb\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\".E6.8E.A5.E5.8F.A3.E5.8E.9F.E5.9E.8B30\",\"type\":\"h4\"},{\"id\":\"dAOEl5-U7g7UHvzhVInPA\",\"autoWrap\":false,\"children\":[{\"id\":\"-DpWxWST9VBJfAinZ3M9O\",\"children\":[{\"text\":\"GetRecvStreamLevel(openId: string) :number\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"SAF6hLxKVguS2ZT9M13o_\",\"children\":[{\"id\":\"k8lilyHl9T42ZfyCe3Nls\",\"children\":[{\"id\":\"0DG3-THkbPpGW2zZgHRL0\",\"children\":[{\"id\":\"jpU_wqcpnEBiyCBT96O0k\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"r6rEp9OTvwiEDvebmd7Is\",\"children\":[{\"id\":\"USxlwtB8r2yLQ4mVv78k-\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"pxeEhJvd1zohsl6wFNgTE\",\"children\":[{\"id\":\"OEWwvK5HP0Okli_9-Bf2q\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"x7ptLBdTosHzinvc35S67\",\"children\":[{\"id\":\"mhA-onfjbJ8n4e0dTs1np\",\"children\":[{\"id\":\"Wp2UMpmlp-o0vUt-YfKnd\",\"children\":[{\"id\":\"EGyZSpAChgyBCT9uqMA_l\",\"children\":[{\"text\":\"openId\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"VGP0tPQ-_QTVqwK4Rg0tc\",\"children\":[{\"id\":\"wcSqjZyuEf9qL9ZCUotUO\",\"children\":[{\"id\":\"iPvVNhD67yXPM_4AffGwE\",\"children\":[{\"text\":\"string\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"uNl8ujcmC64mm1E17wgmB\",\"children\":[{\"id\":\"tPVRLXhKjk28Q37uTK6x4\",\"children\":[{\"id\":\"ORDI4W_B8w8h9l2DAKjP-\",\"children\":[{\"code\":1,\"text\":\"openId\"},{\"text\":\" of another member in the room\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[21,14,65],\"widthMode\":\"percentage\"},{\"id\":\"5bYlC954DOyAq8FsYXV-J\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.8130\",\"type\":\"h4\"},{\"id\":\"zsBlNDZQRpNyFmXjObI0i\",\"autoWrap\":false,\"children\":[{\"id\":\"czYLKprl_PqCC7Uvhegkn\",\"children\":[{\"text\":\"number level =GetRecvStreamLevel(openId);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"puipsJkdrIZtBnR5lsUKQ\",\"children\":[{\"text\":\"Dynamically setting the volume of a member of the room\"}],\"nodeId\":\".E5.8A.A8.E6.80.81.E8.AE.BE.E7.BD.AE.E6.88.BF.E9.97.B4.E5.86.85.E6.9F.90.E6.88.90.E5.91.98.E9.9F.B3.E9.87.8F\",\"type\":\"h3\"},{\"id\":\"_bJWBXzs6pqAL13sbkDF6\",\"children\":[{\"text\":\"This API is used to set the volume of a member in the room. It takes effect only on the local.\"}],\"type\":\"p\"},{\"id\":\"uHhWZTTNqQlrn3zBJXcw_\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\".E6.8E.A5.E5.8F.A3.E5.8E.9F.E5.9E.8B31\",\"type\":\"h4\"},{\"id\":\"TPTdhYP5VPV5NH0q4RE1h\",\"autoWrap\":false,\"children\":[{\"id\":\"q5ED5smbRevN9W8P7fvjR\",\"children\":[{\"text\":\"SetSpeakerVolumeByOpenID(openId: string, volume:number) :number;\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"tqNlm3K_tF-5ja5UZMCK5\",\"children\":[{\"id\":\"BsweYTtKo37G_yDG5FDiY\",\"children\":[{\"id\":\"jkdtT-g4CxsMLDTMtL6QH\",\"children\":[{\"id\":\"wkRsl9dpn1H6O9stAGkPP\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"i5TRO8wRUZMakQySadArG\",\"children\":[{\"id\":\"5rdTzCKSSK2Ypi20-9HWx\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"3C6BRYf_YHDS1Unt-OsLq\",\"children\":[{\"id\":\"Zcltatt56Bqq1f2_CMGm3\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"vk1jEbVEb7mNKly9K5-dr\",\"children\":[{\"id\":\"eXhfg2LA1qX1w1FzK7cuw\",\"children\":[{\"id\":\"6sKJfRaOw_wyGRZnBzTFP\",\"children\":[{\"id\":\"9ht8ZQ-VEFo9wfqJ0CNij\",\"children\":[{\"text\":\"openId\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"rrJ5sjFCoA5znxQr_TWzY\",\"children\":[{\"id\":\"aOqj17VKUrdbNft-Udovo\",\"children\":[{\"id\":\"pCYt2fjcYFDOqaM9-YMsd\",\"children\":[{\"text\":\"string\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"uadbTa0Oeiw3kc3emxf8e\",\"children\":[{\"id\":\"6CuaWleIBfB-fhJrVIthC\",\"children\":[{\"id\":\"brmBgT9BHLFP8pbYljeOh\",\"children\":[{\"code\":1,\"text\":\"OpenID\"},{\"text\":\" of the target user\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"yeMaO2rwXQ3fWEcrk2DDU\",\"children\":[{\"id\":\"YvBUq1Mn05itG6E-eiBk-\",\"children\":[{\"id\":\"MneNTRYQOj1U80elcwac2\",\"children\":[{\"id\":\"Ks2Kq0ylykHQ3RMeuY3sL\",\"children\":[{\"text\":\"volume\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"vXfoR3RRQ9wTz_2cgqi6P\",\"children\":[{\"id\":\"1QyWh5p53mkDBNxxoDcKu\",\"children\":[{\"id\":\"GGDUpt-0lH2xfHVZp4PFa\",\"children\":[{\"text\":\"number\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"zc1qEhbPXMF6adtU9Df-3\",\"children\":[{\"id\":\"-AoXqK5ayk0OtUDTIsidx\",\"children\":[{\"id\":\"JTmqIs0pGdBmKxacvzg8Q\",\"children\":[{\"text\":\"Percentage. Recommended value range: 0–200. Default value: \"},{\"code\":1,\"text\":\"100\"},{\"text\":\".\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[15,12,73],\"widthMode\":\"percentage\"},{\"id\":\"jv60IxwEroQ_01igb03kb\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.8131\",\"type\":\"h4\"},{\"id\":\"qYAshwa7JJCQOsF_FiC5O\",\"autoWrap\":false,\"children\":[{\"id\":\"gE3S0KG59KIyF2YZn6OCp\",\"children\":[{\"text\":\"context.SetSpeakerVolumeByOpenID(openId, 100);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"as7A4E64BAM1ZK4Qc8FPS\",\"children\":[{\"text\":\"Getting volume percentage\"}],\"nodeId\":\".E8.8E.B7.E5.8F.96.E8.AE.BE.E7.BD.AE.E7.9A.84.E5.A3.B0.E9.9F.B3.E7.99.BE.E5.88.86.E6.AF.94\",\"type\":\"h3\"},{\"id\":\"cFs13k6u6e722Plc6Nxbt\",\"children\":[{\"text\":\"This API is used to get the volume level set by \"},{\"code\":1,\"text\":\"SetSpeakerVolumeByOpenID\"},{\"text\":\".\"}],\"type\":\"p\"},{\"id\":\"-HaFXMzzhV6XncaVUxbjf\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\".E6.8E.A5.E5.8F.A3.E5.8E.9F.E5.9E.8B32\",\"type\":\"h4\"},{\"id\":\"0x0piSlXwxM1DawRLCLPF\",\"autoWrap\":false,\"children\":[{\"id\":\"LeuBRknSMfBJGZyNcQmBB\",\"children\":[{\"text\":\"GetSpeakerVolumeByOpenID(openId: string) :number;\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"xS8L7IEwVLGbDcLNiqtTw\",\"children\":[{\"id\":\"0jyFHgJ7S5hCenwrwKXcl\",\"children\":[{\"id\":\"5EBX1iIgfeS4r7uxggav2\",\"children\":[{\"id\":\"-OCxdGec2FAEY10nhhAoC\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"l6UmuN0yg9-mSvZKG8U5u\",\"children\":[{\"id\":\"wbKwr_vfMKeeTY9XCfh7e\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"kDoSHprBPuCuz4eYRoR3O\",\"children\":[{\"id\":\"GRE07BW_5M54hlmpv4bs0\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"T0CD9AJcOzJjN9FES_EMS\",\"children\":[{\"id\":\"8TtrAt3qjaVVw_n0WwlxE\",\"children\":[{\"id\":\"zr8sV3rOe8X2-_qrH4Kfn\",\"children\":[{\"id\":\"bU5FUYBhIVKeqlN9WKtOV\",\"children\":[{\"text\":\"openId\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"QYPIyfduiKpgFapq-KRPe\",\"children\":[{\"id\":\"qmfgi8QOeVGeNpWZ7wIwS\",\"children\":[{\"id\":\"hEg7MEEwFagoH7wD98h4F\",\"children\":[{\"text\":\"string\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"S3VEvjjHU89VuW3wDFMYF\",\"children\":[{\"id\":\"KiR3CpoCmbtanjVX44yEh\",\"children\":[{\"id\":\"_mjoa6YVoembzyRy8zwer\",\"children\":[{\"code\":1,\"text\":\"OpenID\"},{\"text\":\" of the target user\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[26,18,56],\"widthMode\":\"percentage\"},{\"id\":\"6Df9GiJv2J1VkLKbNZuD4\",\"children\":[{\"text\":\"Returned values\"}],\"nodeId\":\".E8.BF.94.E5.9B.9E.E5.80.BC2\",\"type\":\"h4\"},{\"id\":\"_AvOMkErT0nksb5Gtyvu5\",\"children\":[{\"text\":\"API returns volume percentage set by OpenID, where 100 is by default.\"}],\"type\":\"p\"},{\"id\":\"nYGEvr6SaOa14kLNzHj6X\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.8132\",\"type\":\"h4\"},{\"id\":\"uoE_BuQyQ0Gbp_qYGWz09\",\"autoWrap\":false,\"children\":[{\"id\":\"4iJQVRR9nfk5lGwsUGExR\",\"children\":[{\"text\":\"context.GetSpeakerVolumeByOpenID(openId);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"XySXbBfdDLKXwJNM-66Nb\",\"children\":[{\"text\":\"Setting the speaker volume\"}],\"nodeId\":\".E8.AE.BE.E7.BD.AE.E6.89.AC.E5.A3.B0.E5.99.A8.E7.9A.84.E9.9F.B3.E9.87.8F\",\"type\":\"h3\"},{\"id\":\"Yq8sQuIpYViWve-b1nKKp\",\"children\":[{\"text\":\"This API is used to set the speaker volume.\"}],\"type\":\"p\"},{\"id\":\"SnuwIj6pIm1VwpO4MSui4\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\".E6.8E.A5.E5.8F.A3.E5.8E.9F.E5.9E.8B33\",\"type\":\"h4\"},{\"id\":\"RahEoYznrkq6Go0BL-kAT\",\"autoWrap\":false,\"children\":[{\"id\":\"r40thvDbF7qpH9TmcurMA\",\"children\":[{\"text\":\"SetSpeakerVolume(volume:number) :number\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"QrTrXRcWnK90d1qHQuPb1\",\"children\":[{\"id\":\"7HO20Cyl-REZoA_7DP4ed\",\"children\":[{\"id\":\"mgtOZvjdjuKSQa5eN-P7M\",\"children\":[{\"id\":\"FF14G8asvzeaKXsmCJE04\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"EH_KKNzT2Q3ixAv_hH4ki\",\"children\":[{\"id\":\"GomK_kSbg10qlSr_m5E72\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"BlHdk83COcmsJi1BBDji3\",\"children\":[{\"id\":\"M1HH5C-D4TcL7NP7z9QLX\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"6hKfxEOaobeQV9hiMP6A2\",\"children\":[{\"id\":\"DQAduPBPy7xL6ieZN8USz\",\"children\":[{\"id\":\"0zwk4X8FCq-IwGrsbvQeQ\",\"children\":[{\"id\":\"Q2u0I9nftnAX_VILG1nh5\",\"children\":[{\"text\":\"volume\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"nJNB4ceIXiBTF10MFlipc\",\"children\":[{\"id\":\"ZrXNPH8ZrpKTY9Nl0WwQf\",\"children\":[{\"id\":\"UEzNEeIKH9F1avteQB7fk\",\"children\":[{\"text\":\"number\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"zOnyuhpZGx58-JyOp-zOr\",\"children\":[{\"id\":\"oDDC9_5XCtesPbi2Iywf7\",\"children\":[{\"id\":\"dayMGvWtiUFO_u6FgPtKj\",\"children\":[{\"text\":\"Volume level. Value range: 0–200. Default value: \"},{\"code\":1,\"text\":\"100\"},{\"text\":\". \"},{\"code\":1,\"text\":\"0\"},{\"text\":\" indicates that the audio is muted, while \"},{\"code\":1,\"text\":\"100\"},{\"text\":\" indicates that the volume level remains unchanged.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[12,11,77],\"widthMode\":\"percentage\"},{\"id\":\"pIdeO1Iu-gZI2C_MNm2_K\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.8133\",\"type\":\"h4\"},{\"id\":\"EYhNwyEfrHdjSVhNfYSoY\",\"autoWrap\":false,\"children\":[{\"id\":\"eNrveIO-0fudrMFC2_QYJ\",\"children\":[{\"text\":\"number vol = 100;\"}],\"type\":\"code-line\"},{\"id\":\"ZLUklQcX-WZya8vevHYkv\",\"children\":[{\"text\":\"context.SetSpeakerVolume(vol);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"9CUm_vCxXB45k3-G512MW\",\"children\":[{\"text\":\"Getting the speaker volume\"}],\"nodeId\":\".E8.8E.B7.E5.8F.96.E6.89.AC.E5.A3.B0.E5.99.A8.E7.9A.84.E9.9F.B3.E9.87.8F\",\"type\":\"h3\"},{\"id\":\"qqHm3HrADGHO7qAyioGZv\",\"children\":[{\"text\":\"This API is used to get the speaker volume. A number-type value will be returned to indicate the volume. \"},{\"code\":1,\"text\":\"101\"},{\"text\":\" indicates that the \"},{\"code\":1,\"text\":\"SetSpeakerVolume\"},{\"text\":\" API has not been called.\\n\\\"Level\\\" indicates the real-time volume, and \\\"Volume\\\" the speaker volume. The final volume = Level *\"},{\"text\":\" Volume%. For example, if the \\\"Level\\\" is 100 and \\\"Volume\\\" is 60, the final volume is \\\"60\\\".\"}],\"type\":\"p\"},{\"id\":\"-pi34NTaA9VNR7HBfs5M3\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\".E6.8E.A5.E5.8F.A3.E5.8E.9F.E5.9E.8B34\",\"type\":\"h4\"},{\"id\":\"MKrXx6F487PKtiyJNaiwk\",\"autoWrap\":false,\"children\":[{\"id\":\"eDzNtNfIQnyD2Ue-gnOL2\",\"children\":[{\"text\":\"GetSpeakerVolume() :number\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"WIPG9MAtw5NZJwjzt7kn5\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.8134\",\"type\":\"h4\"},{\"id\":\"TZKtp7UF_3yD0rFZHgvEZ\",\"autoWrap\":false,\"children\":[{\"id\":\"_XmXvLM1RYiPrkNd9Qdvi\",\"children\":[{\"text\":\"numbet volume = context.GetSpeakerVolume();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"7J1KEVZBcuckLmrSZ6CFp\",\"children\":[{\"text\":\"Device Selection APIs\"}],\"nodeId\":\".E8.AE.BE.E5.A4.87.E9.80.89.E6.8B.A9.E7.9B.B8.E5.85.B3.E6.8E.A5.E5.8F.A3\",\"type\":\"h2\"},{\"id\":\"X8Z4YNeyAou01p_EXyx4M\",\"children\":[{\"text\":\"Device selection APIs can be used only on PC.\"}],\"type\":\"p\"},{\"id\":\"LZjnyQ5fEgBNKmwAN2rP1\",\"children\":[{\"id\":\"eKMSTTeLidXc0kmOAa4OG\",\"children\":[{\"id\":\"a5phR2IKE7eqxuplAPwcx\",\"children\":[{\"id\":\"0q_j6WM8SiN65FDWTEyFn\",\"children\":[{\"text\":\"API\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"hwgO22mezjVi2QfpTGuTK\",\"children\":[{\"id\":\"8a_S5xOOn4IF2PHiOYby-\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"8Rzym2JKSjB07nTDKi_E-\",\"children\":[{\"id\":\"0eJevy1PpSkLHaOfmN7YX\",\"children\":[{\"id\":\"dB-YItSr-dMvYe7rHGOUo\",\"children\":[{\"id\":\"WgNMSqDsXr1zmbdlEtBpz\",\"children\":[{\"text\":\"GetMicListCount\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"or3AJs1cra4CMAQGjHl-k\",\"children\":[{\"id\":\"4sQ4--LbWSbRNNIf-ctoU\",\"children\":[{\"id\":\"_t-tRf757EvFJ5b2AQ1q0\",\"children\":[{\"text\":\"Gets the number of mics.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"pzwny6y12mNpZGYU43TKg\",\"children\":[{\"id\":\"sFYRdpH94NlRkr80uM_Xs\",\"children\":[{\"id\":\"ZEZZJ1DmKts_4QZfcs6kC\",\"children\":[{\"id\":\"yO76rKHK0wwBFY_xLJ04t\",\"children\":[{\"text\":\"GetMicList\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"507J4a_kP0wdl-Giwid3I\",\"children\":[{\"id\":\"GfZLOk9eE3NQNyQ89HLyP\",\"children\":[{\"id\":\"K300yuG5dJ74xBWl9cDR8\",\"children\":[{\"text\":\"Enumerates mics.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"ArpaG9RkpusakB664mkYe\",\"children\":[{\"id\":\"CuO-McmyENcLf1uUrUWIG\",\"children\":[{\"id\":\"Oz3En4cvl07CZtql25DW0\",\"children\":[{\"id\":\"ouJWeKmXBF5Wli4aPdwrx\",\"children\":[{\"text\":\"GetSpeakerListCount\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"aJU0FVhfdY0AAe8_KRQr_\",\"children\":[{\"id\":\"E0M6tFAvZmQwmDwfoO9cT\",\"children\":[{\"id\":\"xl2EDZ9jPTi3twYk98MS8\",\"children\":[{\"text\":\"Gets the number of speakers.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"aN9I7Dfl8B9G5Zj3q-TMU\",\"children\":[{\"id\":\"x19paGNGDOPFJ93tg757s\",\"children\":[{\"id\":\"5TNXTmeyjDT1YX_RoLv2o\",\"children\":[{\"id\":\"rQSrq6n8S3thfIMAoOerP\",\"children\":[{\"text\":\"GetSpeakerList\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Smf9zpG1VdMuk9Q7k1UME\",\"children\":[{\"id\":\"oqhfpXbOZN6urV8vfC7sy\",\"children\":[{\"id\":\"0axBDrPiOG-iB6m5fn8Qi\",\"children\":[{\"text\":\"Enumerates speakers.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"teIUNcXKIi2LFbtkYRQAu\",\"children\":[{\"id\":\"msG-rCW0LHxiqP6GV3gj8\",\"children\":[{\"id\":\"8RYGo1KvPE9gVet34-srg\",\"children\":[{\"id\":\"vf-Em1D3nbmkedeOjl2C4\",\"children\":[{\"text\":\"SelectMic\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"dlpTDGUK5fGWm0r-1FPiT\",\"children\":[{\"id\":\"afCZ5iF5tVnRhq7mu0BKW\",\"children\":[{\"id\":\"SjcgdwgZPFNS_YNt11p4B\",\"children\":[{\"text\":\"Selects a mic.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"sjv3ixJxg4Ms9pDRd9eUH\",\"children\":[{\"id\":\"ZgsJ1duptKJGeMMjJGuiB\",\"children\":[{\"id\":\"1qKFLgff-dj4doXcywPNN\",\"children\":[{\"id\":\"7IwZ2-IsWudBTuiFCzBkw\",\"children\":[{\"text\":\"SelectSpeaker\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"YTQIff0uLczrTiMfKSPUe\",\"children\":[{\"id\":\"RtQc1dTbGQtdHoOI12rNe\",\"children\":[{\"id\":\"deBRRXRy6yd3V1-VbeIwl\",\"children\":[{\"text\":\"Selects a speaker.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[43,57],\"widthMode\":\"percentage\"},{\"id\":\"l23x8WhM_xn06k3Bz_gqL\",\"children\":[{\"text\":\"Getting the number of mics\"}],\"nodeId\":\".E8.8E.B7.E5.8F.96.E9.BA.A6.E5.85.8B.E9.A3.8E.E8.AE.BE.E5.A4.87.E6.95.B0.E9.87.8F\",\"type\":\"h3\"},{\"id\":\"q6NCjQOZaQeh7ZKW47NT_\",\"children\":[{\"text\":\"This API is used to get the number of mics.\"}],\"type\":\"p\"},{\"id\":\"pbDPWl6Ck8Wec6iWFsaNA\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\".E5.87.BD.E6.95.B0.E5.8E.9F.E5.9E.8B\",\"type\":\"h4\"},{\"id\":\"sCvRSyS6vGnPo-iOtcLk6\",\"autoWrap\":false,\"children\":[{\"id\":\"1glU_Cy3VZ3wvXcoUc_uI\",\"children\":[{\"text\":\"GetMicListCount() :number\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"X5sicVEndY3BeE0HrBkLk\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.8135\",\"type\":\"h4\"},{\"id\":\"VSn9FkIc5q47v7RddtRhT\",\"autoWrap\":false,\"children\":[{\"id\":\"C5dCmww4KRxIakm1U3t1a\",\"children\":[{\"text\":\"var micListCount = context.GetMicListCount();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"Ci-u0lHRQKBmulHvp_W_B\",\"children\":[{\"text\":\"Enumerating mics\"}],\"nodeId\":\".E6.9E.9A.E4.B8.BE.E9.BA.A6.E5.85.8B.E9.A3.8E.E8.AE.BE.E5.A4.87\",\"type\":\"h3\"},{\"id\":\"TasR9Oct4LkEVYOZNS3CC\",\"children\":[{\"text\":\"This API is used together with the \"},{\"code\":1,\"text\":\"GetMicListCount\"},{\"text\":\" API to enumerate mics.\"}],\"type\":\"p\"},{\"id\":\"JUC_qnshKk4Cb47G2R4Mx\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\".E5.87.BD.E6.95.B0.E5.8E.9F.E5.9E.8B2\",\"type\":\"h4\"},{\"id\":\"f4u0DD1bFWMWV8aCnreaW\",\"autoWrap\":false,\"children\":[{\"id\":\"JgYlxhNBHZyqBM_aguxa7\",\"children\":[{\"text\":\"GetMicList() :GmeAudioDeviceInfo[];\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"zu7q1_CV94jjVgBC8Op8U\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.8136\",\"type\":\"h4\"},{\"id\":\"xk2SBC942WoVMDchS-HDR\",\"autoWrap\":false,\"children\":[{\"id\":\"Q-AqEgH2_GdrSn4VlnD0y\",\"children\":[{\"text\":\"var micList = context.GetMicList();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"jofX1r5oi9ViTmoH54WtX\",\"children\":[{\"text\":\"Selecting mic\"}],\"nodeId\":\".E9.80.89.E4.B8.AD.E9.BA.A6.E5.85.8B.E9.A3.8E.E8.AE.BE.E5.A4.87\",\"type\":\"h3\"},{\"id\":\"PGbQz_3Gw5N684TiD1gzG\",\"children\":[{\"text\":\"This API is used to select a mic. If this API is not called or \"},{\"code\":1,\"text\":\"DEVICEID_DEFAULT\"},{\"text\":\" is passed in, the default mic will be selected.\\nThe 0th device id returned in the GetMicList API is the default device of the call device. If there is a selected call device, it will be maintained by service. If it is unplugged, the call device will be changed back into the default device.\"}],\"type\":\"p\"},{\"id\":\"dXMqfxrHNxIEaqvi1WMSQ\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\".E5.87.BD.E6.95.B0.E5.8E.9F.E5.9E.8B3\",\"type\":\"h4\"},{\"id\":\"yfj9kpmHdF8dhEfrywU1-\",\"autoWrap\":false,\"children\":[{\"id\":\"WXgDPzrY1ZHpHaLNDX0U9\",\"children\":[{\"text\":\"SelectMic(micId: string) :number;\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"y9QzXb6vFzIYQ8eSreO91\",\"children\":[{\"id\":\"FkGcoeonDxlBPVNbfOJzh\",\"children\":[{\"id\":\"_tiWnlZY_NsTnb_3pyyeN\",\"children\":[{\"id\":\"baTAoLovCTlCVElJkq6eV\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"WCFFEm_46Lb3tCrLRvgsu\",\"children\":[{\"id\":\"Hb0tDMu3EMWAV1K-eWcI8\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"pI4lHiGWGmtKLix2QYCWR\",\"children\":[{\"id\":\"zod3TWqf4jSTOZVAajPtz\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"kJAL7RN_CQO-y1D4mK8v5\",\"children\":[{\"id\":\"OMqUfbaaC1qp9NrhwMhT0\",\"children\":[{\"id\":\"arJ3B_rjK0pwkyP_TTpJ-\",\"children\":[{\"id\":\"Btc9yLKWOzsCAmo38aoga\",\"children\":[{\"text\":\"micId\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Zc5V4GQrKwMJZDXFJdpk7\",\"children\":[{\"id\":\"xluacU3pdEUVyF5T8yTfB\",\"children\":[{\"id\":\"dhx7Q13Fq3O9LMwcrzm1e\",\"children\":[{\"text\":\"string\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"5Kefd5noHPG3M2SvW9pXD\",\"children\":[{\"id\":\"Za-JfixUqW7wpi0Cjl9Ma\",\"children\":[{\"id\":\"Pgw-Sfs8oW1-0VXgbXCBN\",\"children\":[{\"text\":\"Mic ID, which is from the list returned by \"},{\"code\":1,\"text\":\"GetMicList\"},{\"text\":\".\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[18,12,70],\"widthMode\":\"percentage\"},{\"id\":\"3bT_5B6Vl7r4pa5pNRgZ-\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.8137\",\"type\":\"h4\"},{\"id\":\"ZBypNWfPUzsIQCP8NIh0D\",\"autoWrap\":false,\"children\":[{\"id\":\"0H6F-mcqG8BfSbHeYJW_D\",\"children\":[{\"text\":\"context.SelectMic(deviceID);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"Wwx_iqNXk9UDevB7yX5yl\",\"children\":[{\"text\":\"This API is used to get the number of speakers.\"}],\"type\":\"p\"},{\"id\":\"qUgSzztz2e0ekOZXpNrSJ\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\".E5.87.BD.E6.95.B0.E5.8E.9F.E5.9E.8B4\",\"type\":\"h4\"},{\"id\":\"HlzzXuCIDme6sS3uDTQeF\",\"autoWrap\":false,\"children\":[{\"id\":\"R2Iu62fWWf0Blyl7u9oOI\",\"children\":[{\"text\":\" GetSpeakerListCount() :number;\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"YQ7hsaZMpJny8AY6Zzc_V\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.8138\",\"type\":\"h4\"},{\"id\":\"00IbUIqs7W2ErIV8DHmn1\",\"autoWrap\":false,\"children\":[{\"id\":\"QHoFJ09UP2z4f3AHlP0cC\",\"children\":[{\"text\":\"context.GetSpeakerListCount();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"fpkETfkE9J8DYheMcRPme\",\"children\":[{\"text\":\"Enumerating speakers\"}],\"nodeId\":\".E6.9E.9A.E4.B8.BE.E6.89.AC.E5.A3.B0.E5.99.A8.E8.AE.BE.E5.A4.87\",\"type\":\"h3\"},{\"id\":\"iZaQteCXnwuNuTOM45EHC\",\"children\":[{\"text\":\"This API is used together with the \"},{\"code\":1,\"text\":\"GetSpeakerListCount\"},{\"text\":\" API to enumerate speakers.\"}],\"type\":\"p\"},{\"id\":\"Z5CDA4j3Fhmbhe76jZ5sT\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\".E5.87.BD.E6.95.B0.E5.8E.9F.E5.9E.8B5\",\"type\":\"h4\"},{\"id\":\"Z8byKiQZHp8-ztTG2_Bam\",\"autoWrap\":false,\"children\":[{\"id\":\"BxwLGP4xK7OpBalmU40Wd\",\"children\":[{\"text\":\"GetSpeakerList(): GmeAudioDeviceInfo[]\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"QbG0DC8MQQk45mGSeighs\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.8139\",\"type\":\"h4\"},{\"id\":\"8kyPou6pJurGJzDjRyPGM\",\"autoWrap\":false,\"children\":[{\"id\":\"IIGFw2rGfs4tJl5Zh2-a6\",\"children\":[{\"text\":\"var speakList = GetSpeakerList();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"SaUvw_4WuGx9t0KzXhZpu\",\"children\":[{\"text\":\"Selecting speaker\"}],\"nodeId\":\".E9.80.89.E4.B8.AD.E6.89.AC.E5.A3.B0.E5.99.A8.E8.AE.BE.E5.A4.87\",\"type\":\"h3\"},{\"id\":\"xGqMpS4qwOsu1ucVfx_OL\",\"children\":[{\"text\":\"This API is used to select a playback device. If this API is not called or \"},{\"code\":1,\"text\":\"DEVICEID_DEFAULT\"},{\"text\":\" is passed in, the default playback device will be selected.\"}],\"type\":\"p\"},{\"id\":\"g-XH8RqSwF7rtSKgBzNtT\",\"children\":[{\"text\":\"Function prototype\"}],\"nodeId\":\".E5.87.BD.E6.95.B0.E5.8E.9F.E5.9E.8B6\",\"type\":\"h4\"},{\"id\":\"BlWa6aWL4SWUaxuQAcPEc\",\"autoWrap\":false,\"children\":[{\"id\":\"8l1MN0jwSjhErfoKK0URy\",\"children\":[{\"text\":\"SelectSpeaker(speakerId: string) :number\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"FcQ3awJjUKd1ByGgF92B4\",\"children\":[{\"id\":\"F0Rls4jDHnEFyDOvOLWiO\",\"children\":[{\"id\":\"LQvh6sX2uYg4OdF2LE0-w\",\"children\":[{\"id\":\"JuZxocB7Ojs97rptsg1OK\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ZAERAFpJVKHAltQB9S0vA\",\"children\":[{\"id\":\"RZkn2XvOSZfXCRb514Um3\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"s06Lq8Roe6yWmzTmxSRnh\",\"children\":[{\"id\":\"HbxKyUUsNX-EUMjJzKL6z\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"bVZRKdHIiV6raL0lG8z2N\",\"children\":[{\"id\":\"fcmJ1lGKDKS8gyX9EUxrQ\",\"children\":[{\"id\":\"rJ3JBiWZqg9bT66wolemw\",\"children\":[{\"id\":\"mSSRPe7EecyAf-kJdLn4H\",\"children\":[{\"text\":\"speakerId\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"z0sNh_8CoJp9xC__sA6bK\",\"children\":[{\"id\":\"HKSk05tV1mv8tpF2c3-ii\",\"children\":[{\"id\":\"eTJygUTEPNc-aKHHMONI7\",\"children\":[{\"text\":\"string\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"OEFNIkBpfs92HgDGyyHgY\",\"children\":[{\"id\":\"br4E_6mTjW4VL1stfNXVp\",\"children\":[{\"id\":\"Iz2aekeibW-F36BYsJGGY\",\"children\":[{\"text\":\"Speaker ID, which is from the list returned by \"},{\"code\":1,\"text\":\"GetSpeakerList\"},{\"text\":\".\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[16,11,73],\"widthMode\":\"percentage\"},{\"id\":\"_HYenXd5uFxSh_58gy7_B\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.8140\",\"type\":\"h4\"},{\"id\":\"YfDhFLpi3Tvhb_z89o_c4\",\"autoWrap\":false,\"children\":[{\"id\":\"emJFQyo_G41o57fRDVZg5\",\"children\":[{\"text\":\"var ret = SelectSpeaker(deviceID);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"DHTS1nVjfz9wB2vGbO2Px\",\"children\":[{\"text\":\"Advanced APIs\"}],\"nodeId\":\".E9.AB.98.E7.BA.A7-api\",\"type\":\"h2\"},{\"id\":\"5mTVakQ37AsphEtw4Wb-X\",\"children\":[{\"text\":\"Enabling in-ear monitoring\"}],\"nodeId\":\".E5.90.AF.E5.8A.A8.E8.80.B3.E8.BF.94\",\"type\":\"h3\"},{\"id\":\"YoxjUDuipd3YjQezYKo0V\",\"children\":[{\"text\":\"This API is used to enable in-ear monitoring. You need to call \"},{\"code\":1,\"text\":\"EnableLoopBack+EnableSpeaker\"},{\"text\":\" before you can hear your own voice.\"}],\"type\":\"p\"},{\"id\":\"FSC2hWoCaY2Lwqlq2fkNa\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\".E6.8E.A5.E5.8F.A3.E5.8E.9F.E5.9E.8B35\",\"type\":\"h4\"},{\"id\":\"UPFeYU1wdQq72Mk_tFMpn\",\"autoWrap\":false,\"children\":[{\"id\":\"4s0k9fWeR5khAZ8juXt3b\",\"children\":[{\"text\":\"EnableLoopBack(bEnable: boolean) :number\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"d_VxZPe_GyAPZgHMAsubx\",\"children\":[{\"id\":\"qrAMP4Dv5PKIY7pSO0s74\",\"children\":[{\"id\":\"FFOCVUO_0SKD9ixf4vM3S\",\"children\":[{\"id\":\"mzjRqs40bHur52kZXFre8\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Xd6WsPcMN6uq9xm7MWDqO\",\"children\":[{\"id\":\"-74D5sDmyj5xzEta7dhbz\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"UfQ04WkpBOfMg5M0sz7dd\",\"children\":[{\"id\":\"5dTKmJPbQtSOvFo9QdLsD\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"P3Cl8MXC0NCf0C2Tzx5_o\",\"children\":[{\"id\":\"AjC20YVCnXp_9epVJkRln\",\"children\":[{\"id\":\"F7XlabkqjrfKpTf3WrW4P\",\"children\":[{\"id\":\"oXCESWzdTZ2FrQhKVr_vT\",\"children\":[{\"text\":\"enable\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"d8quzTfiQiBJMAo8BGFz6\",\"children\":[{\"id\":\"4uNTckrUUGlwAnW2dm2Gb\",\"children\":[{\"id\":\"TyQQ4SJZP2CqmEt1UeQD8\",\"children\":[{\"text\":\"boolean\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"mLwS3VPuZYzbPx-527Srb\",\"children\":[{\"id\":\"Y5LAY8mkpRccOJ6wSTLTX\",\"children\":[{\"id\":\"w1YudGFl8mD0dA3vqvQdv\",\"children\":[{\"text\":\"Specifies whether to enable.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[25,21,54],\"widthMode\":\"percentage\"},{\"id\":\"E1HXM7qjuWDagIZGD6qZx\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.8141\",\"type\":\"h4\"},{\"id\":\"IS9BDaRCYrGI8iNC-gInF\",\"autoWrap\":false,\"children\":[{\"id\":\"bMc2gle5BPFWBFXxJUbRa\",\"children\":[{\"text\":\"context.EnableLoopBack(true);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"XMokDEVpemGWfwV_WnEvQ\",\"children\":[{\"text\":\"Getting user's room audio type\"}],\"nodeId\":\".E8.8E.B7.E5.8F.96.E7.94.A8.E6.88.B7.E6.88.BF.E9.97.B4.E9.9F.B3.E9.A2.91.E7.B1.BB.E5.9E.8B\",\"type\":\"h3\"},{\"id\":\"Y7cdxAFzMpw6f5rPXLSf_\",\"children\":[{\"text\":\"This API is used to get a user's room audio type. The returned value is the room audio type. Value 0 indicates that an error occurred while getting the user's room audio type. For room audio types, please see the \"},{\"code\":1,\"text\":\"EnterRoom\"},{\"text\":\" API.\"}],\"type\":\"p\"},{\"id\":\"bRzt9gMRHu4zR9m3FGLm0\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\".E6.8E.A5.E5.8F.A3.E5.8E.9F.E5.9E.8B36\",\"type\":\"h4\"},{\"id\":\"LRNv_c4sdBd6s3lqYvbKf\",\"autoWrap\":false,\"children\":[{\"id\":\"IGE_-GrM1bXHyXN-wW13i\",\"children\":[{\"text\":\"GetRoomType() :number\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"JUr1BCImj4omj1iQG17ln\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.8142\",\"type\":\"h4\"},{\"id\":\"7GTUoCFk5CKNbJUQmKqxb\",\"autoWrap\":false,\"children\":[{\"id\":\"sYeC9pJHqOS6qRQiPrdB4\",\"children\":[{\"text\":\"context.GetRoomType();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"iZTX2wTqzajoJf6whHWkU\",\"children\":[{\"text\":\"Changing the room type\"}],\"nodeId\":\".E6.88.BF.E9.97.B4.E7.B1.BB.E5.9E.8B.E4.BF.AE.E6.94.B9\",\"type\":\"h3\"},{\"id\":\"LRCn3EL0VsBYbCCmVrnDU\",\"children\":[{\"text\":\"This API is used to modify a user's room audio type. For the result, please see the callback event. The event type is \"},{\"code\":1,\"text\":\"ITMG_MAIN_EVENT_TYPE_CHANGE_ROOM_TYPE\"},{\"text\":\". The audio type of the room is determined by the first user to enter the room. After that, if a member in the room changes the room type, it will take effect for all members there.\"}],\"type\":\"p\"},{\"id\":\"5GA1qvkYXj3qEOnSwtMtO\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\".E6.8E.A5.E5.8F.A3.E5.8E.9F.E5.9E.8B37\",\"type\":\"h4\"},{\"id\":\"1H2saGruVNfYPBzsUhGfS\",\"autoWrap\":false,\"children\":[{\"id\":\"o5bu6TV-0NAquPH8tlLYB\",\"children\":[{\"text\":\"ChangeRoomType(roomType: number) :number\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"kgEWx1m5O8d8-riLwUQ60\",\"children\":[{\"id\":\"4GKIlc2McIbJomUQmWRsO\",\"children\":[{\"id\":\"Fw1QJkMNaTccD5zkAf5WG\",\"children\":[{\"id\":\"qsHQwsUKbfdtCRQI3tgd5\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"aYWUhsEdCLzij8rYMeZtz\",\"children\":[{\"id\":\"YAjfTnF7jOrNK9oPGE5SA\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"z_54J3NOqbqjXQodCk2lY\",\"children\":[{\"id\":\"FNFWVO4sbkIRE7_swJZDa\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"-XuE7_sxiGG5vb00Sr4T1\",\"children\":[{\"id\":\"y9VRhS5rz-NQwW0B8ePVQ\",\"children\":[{\"id\":\"GxYwA9UgxWSbu86CP034u\",\"children\":[{\"id\":\"4WC55SCq5ymrEXwHSl9N3\",\"children\":[{\"text\":\"roomtype\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"a_gf30UCYCEMwKxy32ruy\",\"children\":[{\"id\":\"OJ_lEk6SZwUMUTqbQ78kD\",\"children\":[{\"id\":\"7EJ7mJk59b2vdRbfqbmbF\",\"children\":[{\"text\":\"number\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"dWy0GJtH4WeLVtOFRMaw5\",\"children\":[{\"id\":\"73svealMR3gxaB2fEx8le\",\"children\":[{\"id\":\"L6vA_ExyzxxHWSzUGxOh6\",\"children\":[{\"text\":\"Room type to be switched to. For room audio types, see the \"},{\"code\":1,\"text\":\"EnterRoom\"},{\"text\":\" API.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[14,11,75],\"widthMode\":\"percentage\"},{\"id\":\"gtZsQY4cmg2ZP9gL-Wl2n\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.8143\",\"type\":\"h4\"},{\"id\":\"IyRjDcJ32jHHPx2H58JCI\",\"autoWrap\":false,\"children\":[{\"id\":\"XcS9J3Aqfu6HMy2_fbWDM\",\"children\":[{\"text\":\"context.ChangeRoomType(ITMG_ROOM_TYPE_FLUENCY);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"ENSmzWmN-_Pv561N0dhip\",\"children\":[{\"text\":\"Callback event\"}],\"nodeId\":\".E5.9B.9E.E8.B0.83.E4.BA.8B.E4.BB.B6\",\"type\":\"h4\"},{\"id\":\"L41fF82JW8sC9pu3aZUqa\",\"children\":[{\"text\":\"After the room type is set, the event message \"},{\"code\":1,\"text\":\"ITMG_MAIN_EVENT_TYPE_CHANGE_ROOM_TYPE\"},{\"text\":\" will be returned in the callback. The returned parameters include \"},{\"code\":1,\"text\":\"result\"},{\"text\":\", \"},{\"code\":1,\"text\":\"error_info\"},{\"text\":\", and \"},{\"code\":1,\"text\":\"new_room_type\"},{\"text\":\". The \"},{\"code\":1,\"text\":\"new_room_type\"},{\"text\":\" represents the following information. The event message will be identified in the \"},{\"code\":1,\"text\":\"OnEvent\"},{\"text\":\" function.\"}],\"type\":\"p\"},{\"id\":\"5yJKqjv3NHNVTitl79lb9\",\"children\":[{\"id\":\"NJ-AwI5IYUq3hOfUbyEt2\",\"children\":[{\"id\":\"1l-ZZM-NhCffqz7xXeYNQ\",\"children\":[{\"id\":\"GiDyWcLJyDIB6RINd2wnN\",\"children\":[{\"text\":\"Event Subtype\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"WZaUkZcFQMMOdA2SpHLDx\",\"children\":[{\"id\":\"jJYcY7yTgx42SuvcR1mnT\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"HZ-Nj-wA_fgKMfXe-0tfT\",\"children\":[{\"id\":\"HocR67dS8jibonHI6y8fW\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"lmO1dabG6s5D5Uu6IEl-J\",\"children\":[{\"id\":\"Plf8Euf0v7DD5_e0ovueB\",\"children\":[{\"id\":\"SPvLuIde9OzBG_2DHb8tO\",\"children\":[{\"id\":\"1Ko4So24aGzwwxTUH6aYU\",\"children\":[{\"text\":\"ITMG_ROOM_CHANGE_EVENT_ENTERROOM\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"34QSzuTCgDwsRktCbRJ6k\",\"children\":[{\"id\":\"rkA9jgd7ryC__QKin-gar\",\"children\":[{\"id\":\"BQjdV5VR1n9VEwnJqRn0P\",\"children\":[{\"text\":\"1\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"kyGd6nmVJw_Apkh7DaYPw\",\"children\":[{\"id\":\"OgQ-h9a0AoElWuXCQaECX\",\"children\":[{\"id\":\"S-Qjh8jAhQKbuq3ezjZuR\",\"children\":[{\"text\":\"The existing audio type is inconsistent with and changed to that of the entered room.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"VllBd0XCHnepbkjq6sect\",\"children\":[{\"id\":\"YPlQGaHPDL8rbAWI408l8\",\"children\":[{\"id\":\"zM38EN6hBGlsSaoJ5cm65\",\"children\":[{\"id\":\"n-2XHRiqWajbvMxJN3A1O\",\"children\":[{\"text\":\"ITMG_ROOM_CHANGE_EVENT_START\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"SqGIOD_g3wIvBMxmUBLKN\",\"children\":[{\"id\":\"UFZe-EXKiNdm4Q_bCNHNP\",\"children\":[{\"id\":\"64rGkDFj3XDdxSvLYDo8F\",\"children\":[{\"text\":\"2\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"YUeF7BhEVlXYhC_IZ5TTi\",\"children\":[{\"id\":\"BYqT7nxRFkZRCvJgE1cSc\",\"children\":[{\"id\":\"tZDM5GtUvBIcbSS5Imly7\",\"children\":[{\"text\":\"A user is already in the room and the audio type starts changing (e.g., calling the \"},{\"code\":1,\"text\":\"ChangeRoomType\"},{\"text\":\" API to change the audio type).\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"GFTSH4jU0zcE0La0TIO7R\",\"children\":[{\"id\":\"stY5mKfA3UmYmZdktCp-3\",\"children\":[{\"id\":\"Q4_b5hybQd7J0mfFe_e7o\",\"children\":[{\"id\":\"mjknGZQLN3lYdd-zDuBHF\",\"children\":[{\"text\":\"ITMG_ROOM_CHANGE_EVENT_COMPLETE\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"BM7xzIje3Ae5DUYu1mav8\",\"children\":[{\"id\":\"MvI37DrnvqzkDRX34InAb\",\"children\":[{\"id\":\"3hUmUBiaxHl_MY_vDcp0m\",\"children\":[{\"text\":\"3\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"03S76AKwTH727fuMyJQqC\",\"children\":[{\"id\":\"PN9ajcCPm1us_CDrrowmu\",\"children\":[{\"id\":\"1SH4rrYSPbGXxEUPBkkgE\",\"children\":[{\"text\":\"A user is already in the room, and the audio type has been changed.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"sckD3RNS1t77MpJoVci_s\",\"children\":[{\"id\":\"CTnoCHmuzkch0509XIY8F\",\"children\":[{\"id\":\"B-1oED5lPZm4sektQVKpa\",\"children\":[{\"id\":\"z0IO0C8R9HF06cPiuJjQo\",\"children\":[{\"text\":\"ITMG_ROOM_CHANGE_EVENT_REQUEST\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"9unwWZ_5zVgc4lJV3VrOg\",\"children\":[{\"id\":\"zxN1QgihJqlIXHJQVdJAI\",\"children\":[{\"id\":\"GiZUmKaRq9qlKK5M89JIG\",\"children\":[{\"text\":\"4\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"e2BLBNX6ZIF-0evk0Sx2T\",\"children\":[{\"id\":\"3dVsAggdYjheXNL7jkggR\",\"children\":[{\"id\":\"Se8FVZWCFMXkkmPqRe2lW\",\"children\":[{\"text\":\"A room member calls the \"},{\"code\":1,\"text\":\"ChangeRoomType\"},{\"text\":\" API to request a change of the room audio type.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[35,12,53],\"widthMode\":\"percentage\"},{\"id\":\"Jzp-GIh0Aiymb3oYOe4k4\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.8144\",\"type\":\"h4\"},{\"id\":\"HzPmpCUoBDeMAalqT8tc0\",\"autoWrap\":false,\"children\":[{\"id\":\"Y4U8MDog5T56vFEy9hmwi\",\"children\":[{\"text\":\"context.setTMGDelegate(function(eventId, msg){\"}],\"type\":\"code-line\"},{\"id\":\"6izfefBhda64ApL-LYCsE\",\"children\":[{\"text\":\" if (ITMGContext.ITMG_MAIN_EVENT_TYPE.ITMG_MAIN_EVENT_TYPE_CHANGE_ROOM_TYPE == type)\"}],\"type\":\"code-line\"},{\"id\":\"VLN1f5IoG2mtmm3WVfSk_\",\"children\":[{\"text\":\" {\"}],\"type\":\"code-line\"},{\"id\":\"FpxyMtYp_KxYVddNZ4fKe\",\"children\":[{\"text\":\" // Process room type events\"}],\"type\":\"code-line\"},{\"id\":\"fKHdO5ix2An5TKF_5GvUA\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"gNyVm-sFuKZJ6UFbLlpOx\",\"children\":[{\"text\":\"});\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"JgzNfzxLNRAXFzHwQgugf\",\"children\":[{\"text\":\"The monitoring event of room call quality\"}],\"nodeId\":\".E6.88.BF.E9.97.B4.E9.80.9A.E8.AF.9D.E8.B4.A8.E9.87.8F.E7.9B.91.E6.8E.A7.E4.BA.8B.E4.BB.B6\",\"type\":\"h3\"},{\"id\":\"CMtHBCKqWNNLgJdZ7x4Jb\",\"children\":[{\"text\":\"This is the quality monitoring event used to listen on the network quality. If your network conditions are poor, the business layer will ask you to switch the network through the UI. This event is triggered once every two seconds after room entry, and its message is \"},{\"code\":1,\"text\":\"ITMG_MAIN_EVENT_TYPE_CHANGE_ROOM_QUALITY\"},{\"text\":\". The returned parameters include \"},{\"code\":1,\"text\":\"weight\"},{\"text\":\", \"},{\"code\":1,\"text\":\"loss\"},{\"text\":\", and \"},{\"code\":1,\"text\":\"delay\"},{\"text\":\", which are as detailed below:\"}],\"type\":\"p\"},{\"id\":\"QrIiH0t1VO_IvePHWmHyd\",\"children\":[{\"id\":\"Xt8locbZm7zUXiDu3iOpQ\",\"children\":[{\"id\":\"BMG4VVWs3QdKL1h_4pKMW\",\"children\":[{\"id\":\"VLNkCEuNLxgiEfhHyDky8\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"3tQKkyPkxzgmTpXe3IJhj\",\"children\":[{\"id\":\"AlUMydu-h3eR6tLbTma91\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"2Rdz42o3tL0-aqSTFSE2j\",\"children\":[{\"id\":\"fs2s_pak8AjquhiltOgdt\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"wAciEpKFS1yvKijDw1WKQ\",\"children\":[{\"id\":\"OqJYk8YFbI1wiMe6UVVS8\",\"children\":[{\"id\":\"738t_zKusIxGZGo2VOX6c\",\"children\":[{\"id\":\"IoDCbjdcJ-Q4VXc72filQ\",\"children\":[{\"text\":\"weight\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"9hL5h1MyYfZ-eeSdmVcY_\",\"children\":[{\"id\":\"feAR-AHyB90GiDaK0nVW3\",\"children\":[{\"id\":\"aJCLRiTfqhtCT_DharNlX\",\"children\":[{\"text\":\"number\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"B71w2HGFXeOzSUgs5CK_-\",\"children\":[{\"id\":\"8SyP2WBt8vsSI4qizpyHG\",\"children\":[{\"id\":\"_T5VI8OK_iXWOhRlYMUIu\",\"children\":[{\"text\":\"Value range: 1–50. \"},{\"code\":1,\"text\":\"50\"},{\"text\":\" indicates excellent sound quality, \"},{\"code\":1,\"text\":\"1\"},{\"text\":\" indicates very poor (barely usable) sound quality, and \"},{\"code\":1,\"text\":\"0\"},{\"text\":\" represents an initial meaningless value. Generally, if the value is below 30, you can remind users that the network is poor and recommend them to switch the network.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"-2gACIdkWSl9O_kMbelVg\",\"children\":[{\"id\":\"utsI5u6N8TJjvFRWluFqz\",\"children\":[{\"id\":\"ozLOZONP07gBjWvbU8GQr\",\"children\":[{\"id\":\"Jp2BwKhNwTlSD3YrhjEor\",\"children\":[{\"text\":\"Loss\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"C6I9aPt-ms9vYFBcAUu85\",\"children\":[{\"id\":\"2T5koeU7Sq7D36DexlOho\",\"children\":[{\"id\":\"CKVnFWUQ26TLNqkmHx0pj\",\"children\":[{\"text\":\"var\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ryvYTrhnxmUOBsoZ96jFZ\",\"children\":[{\"id\":\"gS9WNRAx69D9HqOypJC4v\",\"children\":[{\"id\":\"eRwC_5SD95nG0xXAVZybI\",\"children\":[{\"text\":\"Upstream packet loss rate\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"xPu6faz8ZCSdomBaBzi8w\",\"children\":[{\"id\":\"qit4OufH0IIRSyToIe_Ep\",\"children\":[{\"id\":\"f1xiKjPvMhRxdYTXej5-n\",\"children\":[{\"id\":\"Qyf8ZNP42qk-ilnUNYhrV\",\"children\":[{\"text\":\"Delay\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"-N9Yq9HfZay-fjvOzK0x5\",\"children\":[{\"id\":\"H2_U7rjNYRNliMGsmBmW7\",\"children\":[{\"id\":\"UqJmTfWsJ93SV1vIKB9UM\",\"children\":[{\"text\":\"number\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"jVOgEhpXzVJ0GMVyqogan\",\"children\":[{\"id\":\"2bfj3QePhtMppYOyRRD-Y\",\"children\":[{\"id\":\"IVHx-cV6XIiZPZwCSXc2E\",\"children\":[{\"text\":\"Voice chat delay in ms\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[12,11,77],\"widthMode\":\"percentage\"},{\"id\":\"avsQbpf6ImcW0_3trolrw\",\"children\":[{\"text\":\"Getting version number\"}],\"nodeId\":\".E8.8E.B7.E5.8F.96.E7.89.88.E6.9C.AC.E5.8F.B7\",\"type\":\"h3\"},{\"id\":\"zNAQm3uJuocB3yIHRBhh1\",\"children\":[{\"text\":\"This API is used to get the SDK version number for analysis.\"}],\"type\":\"p\"},{\"id\":\"P4nTYYfdUiGWBpSypTqWj\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\".E6.8E.A5.E5.8F.A3.E5.8E.9F.E5.9E.8B38\",\"type\":\"h4\"},{\"id\":\"d7CDigwIZvqw_Xy4DMHfV\",\"autoWrap\":false,\"children\":[{\"id\":\"kbEqOlbipXEsyF8lLg1Nm\",\"children\":[{\"text\":\"GetSDKVersion() :string\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"qCQ_q7VdaN3fY-UWnlvS-\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.8145\",\"type\":\"h4\"},{\"id\":\"9lp8tEbrEDeX6HPxdeoiU\",\"autoWrap\":false,\"children\":[{\"id\":\"G5W9teYzm3uKdJrf_e7Fs\",\"children\":[{\"text\":\"context.GetSDKVersion();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"cEDwKW2gwkyqFFKTOnhSs\",\"children\":[{\"text\":\"Setting the application name and version\"}],\"nodeId\":\".E8.AE.BE.E7.BD.AE.E5.BA.94.E7.94.A8.E5.90.8D.E7.A7.B0.E5.92.8C.E7.89.88.E6.9C.AC\",\"type\":\"h3\"},{\"id\":\"Y8syhSTAWIv-x4AmCvStg\",\"children\":[{\"text\":\"This API is used to set the application name and version.\"}],\"type\":\"p\"},{\"id\":\"EW186oC0Mknl73Xc3wqr-\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\".E6.8E.A5.E5.8F.A3.E5.8E.9F.E5.9E.8B39\",\"type\":\"h4\"},{\"id\":\"-PhKCPsE3SU1N7-0fc6px\",\"autoWrap\":false,\"children\":[{\"id\":\"GBn7PbPDLMM8-JI-qzSiR\",\"children\":[{\"text\":\"SetAppVersion(appVersion: string) : number\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"5G0vjabNISl_grvi3LYN7\",\"children\":[{\"text\":\"Parameter description\"}],\"nodeId\":\".E5.8F.82.E6.95.B0.E5.90.AB.E4.B9.89\",\"type\":\"h4\"},{\"id\":\"8wzaXNn80cnKqt58I5dkX\",\"children\":[{\"id\":\"yJZuzTKX3EYvkou0RcGyl\",\"children\":[{\"id\":\"_7eNV9ZOyoT1UpNk1Ellg\",\"children\":[{\"id\":\"beFhjpEGuhjtdbPXKJ5Te\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"APhpjsy_cE3BX-cuW3IOj\",\"children\":[{\"id\":\"D3gFrVqcKCW_jiST4wzKP\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"_Cj9FM5y3qDxeQpQQ5kEy\",\"children\":[{\"id\":\"ONIrezC4hBxMFYR_E8xnw\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"SI_p0HcKK_MLbLekYTcoc\",\"children\":[{\"id\":\"yLhlfTEwke14zkrX5Tl_W\",\"children\":[{\"id\":\"1CMvYmaUToN0NSBuZvElT\",\"children\":[{\"id\":\"YcNDCbWzVL7JdpQBwuljL\",\"children\":[{\"text\":\"appVersion\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Idt8mSqeuEuWcnGQEktiG\",\"children\":[{\"id\":\"UzsMEfVx2yApOGZ8QePJy\",\"children\":[{\"id\":\"uA1WmmKhtu0z_ekeHAq0e\",\"children\":[{\"text\":\"string\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"_RHdAsX1sz3g7flU6mn_0\",\"children\":[{\"id\":\"6WrbnGKKVQlRuAxgFkvmD\",\"children\":[{\"id\":\"es_acoKdSPGPdzUKEHDf0\",\"children\":[{\"text\":\"Application name and version\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[26,17,57],\"widthMode\":\"percentage\"},{\"id\":\"0-3Imypa8Zqm2811ngvcr\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.8146\",\"type\":\"h4\"},{\"id\":\"QywrLlLlG8eMP0m14wjQF\",\"autoWrap\":false,\"children\":[{\"id\":\"nnRxvxQrbTlB4eKSfpGf1\",\"children\":[{\"text\":\"context.SetAppVersion(\\\"gme V2.0.0\\\");\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"HSUSqnmRHvYTLTqEhSGuH\",\"children\":[{\"text\":\"Setting log printing level\"}],\"nodeId\":\".E8.AE.BE.E7.BD.AE.E6.89.93.E5.8D.B0.E6.97.A5.E5.BF.97.E7.AD.89.E7.BA.A7\",\"type\":\"h3\"},{\"id\":\"PAkGkC0l1e7nLyOb3524w\",\"children\":[{\"text\":\"This API is used to set the level of logs to be printed, and needs to be called before the initialization. It is recommended to keep the default level.\"}],\"type\":\"p\"},{\"id\":\"g7uiIJTfg9PFtofF3oljI\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\".E6.8E.A5.E5.8F.A3.E5.8E.9F.E5.9E.8B40\",\"type\":\"h4\"},{\"id\":\"5bqgrTPtoqTPY0A7AvtqN\",\"autoWrap\":false,\"children\":[{\"id\":\"pOPw0Xn5j40LjzBkjYUie\",\"children\":[{\"text\":\"SetLogLevel(level: number) : number\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"ZPl5QQ-uZfH47yWTF2Np9\",\"children\":[{\"text\":\"Parameter description\"}],\"nodeId\":\".E5.8F.82.E6.95.B0.E5.90.AB.E4.B9.892\",\"type\":\"h4\"},{\"id\":\"H99SLOnQ7rvyotvhLsaFP\",\"children\":[{\"id\":\"4hAxtep6r46XmD74VVMRm\",\"children\":[{\"id\":\"GyLWrDuUWjUPPXDhBXF3p\",\"children\":[{\"id\":\"OwYEUC7OCGEjvlg2lj7Nd\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"-VdSuf-9envEPniuXh9hw\",\"children\":[{\"id\":\"ZF0v5oQkJy3ZIgUYHCiBb\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"-4J1-mDwIBH3c8UkQnLqo\",\"children\":[{\"id\":\"5wdW7uCY0KiqT8XSvLATk\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"jUZf8QD_n66PM4RcIK3PD\",\"children\":[{\"id\":\"eIZRE2NxPB2n_aAPw6n57\",\"children\":[{\"id\":\"BHGvvrGUSa0Kk4MRTa6ID\",\"children\":[{\"id\":\"LDTVwvwwih7jJephkNQZN\",\"children\":[{\"text\":\"level\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"l5D6Myi5ItBu9pCUrhhNP\",\"children\":[{\"id\":\"fnD1ZD4NlHx97limQ1Paa\",\"children\":[{\"id\":\"cddcJ1Tqwjf5OHe_ZDMx2\",\"children\":[{\"text\":\"number\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"-1mZ1x4WOuKKhZvClOqy7\",\"children\":[{\"id\":\"SbvX88e-BJX_3FONvOIlJ\",\"children\":[{\"id\":\"_2g4MsYWb1-FrNhbak2nj\",\"children\":[{\"text\":\"Sets the log level. \"},{\"code\":1,\"text\":\"TMG_LOG_LEVEL_NONE\"},{\"text\":\" indicates not to log. Default value: \"},{\"code\":1,\"text\":\"TMG_LOG_LEVEL_INFO\"},{\"text\":\".\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[11,9,80],\"widthMode\":\"percentage\"},{\"id\":\"DyyBFkNUxtQyDK8mSGLim\",\"children\":[{\"code\":1,\"text\":\"level\"},{\"text\":\" description:\"}],\"type\":\"p\"},{\"id\":\"dR2mI1bB16ikgPwdgANxI\",\"children\":[{\"id\":\"EQTBc6SjBPGKZXpV_OgsA\",\"children\":[{\"id\":\"81O5prPBf28OGhx1Zna3O\",\"children\":[{\"id\":\"WLeptVeQ-NJGpUItu9_VW\",\"children\":[{\"text\":\"level\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"xq7J1vE3u9MSGoHyWijHk\",\"children\":[{\"id\":\"TD0u08aETCHqjoqcZ1QT9\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"kixoM1BKQ71GxpruXuKiL\",\"children\":[{\"id\":\"k-M7EnMvnOTAeNJ6MP7Ib\",\"children\":[{\"id\":\"GDVI60oO0Z3geokXWuIyc\",\"children\":[{\"id\":\"D3D0ViQwS4EW4lmOC0krN\",\"children\":[{\"text\":\"TMG_LOG_LEVEL_NONE\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"DtgmyK8-29V08GxMpK979\",\"children\":[{\"id\":\"RRm3drp2yhdMKSeqv-gDE\",\"children\":[{\"id\":\"9QwaKFjfqkB4EqPZTglTG\",\"children\":[{\"text\":\"Does not print logs\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"owEWeoNtLTUBfK5FwxGoL\",\"children\":[{\"id\":\"2D-ITFFsdWbWjzEHkkHIa\",\"children\":[{\"id\":\"SR60s_2GyFrVqlcbXJi5i\",\"children\":[{\"id\":\"5z5wZ53OXRoPhUEEDAW48\",\"children\":[{\"text\":\"TMG_LOG_LEVEL_ERROR\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"SRd_0JleByXcN3g4Wq189\",\"children\":[{\"id\":\"w90dkt6-PbSncXSjAuTl4\",\"children\":[{\"id\":\"1Gl3E18JUPceh3awm8njM\",\"children\":[{\"text\":\"Prints error logs (default)\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"boN1so0I7z9Jp_g0zovT5\",\"children\":[{\"id\":\"itScGj8ShJi4bX7W6sjFw\",\"children\":[{\"id\":\"F6APjwmLk7xQT9xpiTrhK\",\"children\":[{\"id\":\"9-x8Hbg5D--rRPm9R2G1w\",\"children\":[{\"text\":\"TMG_LOG_LEVEL_INFO\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"EdzyYKl1DNvfcMhkBLCyU\",\"children\":[{\"id\":\"ryKHvTd8c5kV0TB---b0g\",\"children\":[{\"id\":\"QCvzGSpAH3ff69Ti-ksW-\",\"children\":[{\"text\":\"Prints info logs\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"yjjheI_PGoxlpN2VHKnl2\",\"children\":[{\"id\":\"bWHQK1eVl8eq6aKZmnTYj\",\"children\":[{\"id\":\"gA_S24f2IsDBOXOgwONDj\",\"children\":[{\"id\":\"z5YQT9ND7RNf93qWupofE\",\"children\":[{\"text\":\"TMG_LOG_LEVEL_DEBUG\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"p2p3rV3vqhScxMBch_77E\",\"children\":[{\"id\":\"fspujriY4YLvEyVTenxMh\",\"children\":[{\"id\":\"S7RdwuLPWoOLpJmjtFzOr\",\"children\":[{\"text\":\"Prints debug logs\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"fpTyGvlFWVeAWhlpVjv2a\",\"children\":[{\"id\":\"5-hOZrYZjy7lnmA755NSf\",\"children\":[{\"id\":\"6pzlY_41EHCuffNSsCoL-\",\"children\":[{\"id\":\"A_ZqqtnNA0u55sYbdsjX9\",\"children\":[{\"text\":\"TMG_LOG_LEVEL_VERBOSE\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"9XaKRLKh36FAEOUNbhHI4\",\"children\":[{\"id\":\"yUbfv2x7NbLI-df8xdh5D\",\"children\":[{\"id\":\"sgZoCSjRdWD4GnOsxLLbR\",\"children\":[{\"text\":\"Prints verbose logs\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[42,58],\"widthMode\":\"percentage\"},{\"id\":\"wxd1F1WMPzPDHuMGK16De\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.8147\",\"type\":\"h4\"},{\"id\":\"TeMT2AeHN3-F_iijyKPHk\",\"autoWrap\":false,\"children\":[{\"id\":\"VCKlNybG1yxWkGugF2iSg\",\"children\":[{\"text\":\"context.SetLogLevel(TMG_LOG_LEVEL_INFO);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"TeJwzLFVEI3AiQYHv3Rrh\",\"children\":[{\"text\":\"Setting the log printing path\"}],\"nodeId\":\".E8.AE.BE.E7.BD.AE.E6.89.93.E5.8D.B0.E6.97.A5.E5.BF.97.E8.B7.AF.E5.BE.84\",\"type\":\"h3\"},{\"id\":\"yklQ1E3mujdRgJciMh6Sj\",\"children\":[{\"text\":\"This API is used to set the log printing path. The default path is as follows. It needs to be called before Init.\"}],\"type\":\"p\"},{\"id\":\"py6VmDBUBGMLXtSUtPbUs\",\"children\":[{\"id\":\"5JAsZUPaJD8EvDgUiChtu\",\"children\":[{\"id\":\"FXr5hUF9S1L5Ni_xkVlbE\",\"children\":[{\"id\":\"sDRKONLfq8ZSepjXz4LQk\",\"children\":[{\"text\":\"Platform\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"z7V5AsMTJ65RhC9XP_IOl\",\"children\":[{\"id\":\"tW-PFetEieZ7L8Av3LlNF\",\"children\":[{\"text\":\"Path\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"ZFCd63EI0uE3VMognc4mF\",\"children\":[{\"id\":\"mbo0F1yCxiRCVjzSNkoOk\",\"children\":[{\"id\":\"zUVSGWIGUSZN0VztPSiWa\",\"children\":[{\"id\":\"GmYhv-_4VPGxLGYvsaNDo\",\"children\":[{\"text\":\"Windows\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"kYeSQg5EWR2_nS_GqLTdR\",\"children\":[{\"id\":\"o7LUz7emy9KiUW6a5W22J\",\"children\":[{\"id\":\"MkR0dWUaUqzZ1NtMcM2iL\",\"children\":[{\"text\":\"%appdata%\\\\GMEGLOBAL\\\\GME\\\\ProcessName\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[21,79],\"widthMode\":\"percentage\"},{\"id\":\"ATq3Q-1sSvWMH9z17A7Ha\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\".E6.8E.A5.E5.8F.A3.E5.8E.9F.E5.9E.8B41\",\"type\":\"h4\"},{\"id\":\"K_McwB7BEC0pya0dLHXP3\",\"autoWrap\":false,\"children\":[{\"id\":\"XOmg_25nPlGUgxD_aFnBS\",\"children\":[{\"text\":\"SetLogPath(logPath: string)\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"p2MYe5GlOoTh8h_gKCCTa\",\"children\":[{\"id\":\"CsYIp9l9ItzQ778UMv3QR\",\"children\":[{\"id\":\"iZBa3hR3Mu71eTiXUymR0\",\"children\":[{\"id\":\"bNZnX_Argl1z450VtSc_g\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"F8sn_YYxnWlj27P8IDG2V\",\"children\":[{\"id\":\"uL0jFeBB5nIqGt6nVr63P\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"17432ov1VbRWlcHf0U57P\",\"children\":[{\"id\":\"b_kIpoP9Mhfk83Y5RQPYR\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"nxb0Ry1KFuuaHZOjzUb0J\",\"children\":[{\"id\":\"YDxpUJ_IcCB9OmWdynhOj\",\"children\":[{\"id\":\"5llc6PM4LurROWN4VV24G\",\"children\":[{\"id\":\"rX6DuRsDhyzmyF96K4lBf\",\"children\":[{\"text\":\"logPath\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"_kL9oDB9-Mz18U541-dz5\",\"children\":[{\"id\":\"8nO7FRt7NnYMimT8D1-be\",\"children\":[{\"id\":\"sKG4I4wtRgKW1T4Pesf6M\",\"children\":[{\"text\":\"string\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"7EXrSUadCLT30UX9ArGcJ\",\"children\":[{\"id\":\"b-GHvUZ7DVm8vDHw5apnC\",\"children\":[{\"id\":\"PiRrFFHzRhZON58Xk4kmT\",\"children\":[{\"text\":\"Path\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[36,25,39],\"widthMode\":\"percentage\"},{\"id\":\"lZymZZbtVq-ej6jwTo8CH\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.8148\",\"type\":\"h4\"},{\"id\":\"HZg37Fjykw5jalXkv8JYe\",\"autoWrap\":false,\"children\":[{\"id\":\"Qjy8V2KEgTufpFFvQgiw-\",\"children\":[{\"text\":\"string logDir = \\\"\\\"// Set a path by yourself\"}],\"type\":\"code-line\"},{\"id\":\"nA6HO4W8WzkaiEt8VKY1f\",\"children\":[{\"text\":\"context.SetLogPath(logDir);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"uuu7EC9gkeE6Evn9XmaCq\",\"children\":[{\"text\":\"Getting the diagnostic messages\"}],\"nodeId\":\".E8.8E.B7.E5.8F.96.E8.AF.8A.E6.96.AD.E4.BF.A1.E6.81.AF\",\"type\":\"h3\"},{\"id\":\"zkQB-gapYRFpGt48iQXBt\",\"children\":[{\"text\":\"This API is used to get information on the quality of real-time audio/video calls, which is mainly used to view real-time call quality and troubleshoot and can be ignored on the business side.\"}],\"type\":\"p\"},{\"id\":\"LNW0DrtPEp8DE1tt2ti64\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\".E6.8E.A5.E5.8F.A3.E5.8E.9F.E5.9E.8B42\",\"type\":\"h4\"},{\"id\":\"GbgYzmAhVnJYcoHmhp1R6\",\"autoWrap\":false,\"children\":[{\"id\":\"pGNZnsTe6Fh1SnL0dHsX0\",\"children\":[{\"text\":\"GetQualityTips() :string\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"_iKQ8MoRyZ8u3Z9h5SaRl\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\".E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.8149\",\"type\":\"h4\"},{\"id\":\"vjqX_IqPXfK6A-WKdL27w\",\"autoWrap\":false,\"children\":[{\"id\":\"fkCaZMJ3oqSPaP9auRbjn\",\"children\":[{\"text\":\"string tips = context.GetQualityTips();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\"},{\"id\":\"qtyUtUMu6CwWrlEKVqXfd\",\"children\":[{\"text\":\"Callback message\"}],\"nodeId\":\".E5.9B.9E.E8.B0.83.E6.B6.88.E6.81.AF\",\"type\":\"h3\"},{\"id\":\"5MlwJJOA2aGakGVTPNTsR\",\"children\":[{\"id\":\"SIl5SNl94J9yTO41h1IL4\",\"children\":[{\"id\":\"IyaJroMMtTrQ3E_t6TfUN\",\"children\":[{\"id\":\"fLfcy5OQCyeEGe-pRnlhH\",\"children\":[{\"text\":\"Message\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"b4qLraEDO5Af6Ms8YzOBy\",\"children\":[{\"id\":\"QCGMBZPVToudHxDiHvz-G\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"whbFG-h0ziASFepAPGlof\",\"children\":[{\"id\":\"qmLylU0xLTufxSq2adyd0\",\"children\":[{\"text\":\"Data\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"nHkuUy9uiLiicjjSn2w3y\",\"children\":[{\"id\":\"OKHpwNVEGpedHo3VBducO\",\"children\":[{\"text\":\"Example\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"nlgvXmpe2v7mBztqX22Js\",\"children\":[{\"id\":\"HDyK7RnSWs8ZX5gsxbSHi\",\"children\":[{\"id\":\"OQ6h1TOwgvYXCEusZTnIu\",\"children\":[{\"id\":\"3NNtPBkEcgQMhbMUC7lqo\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_ENTER_ROOM\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"UZk2QqYw50byvrkpcgQM9\",\"children\":[{\"id\":\"TimfcbWinb22kCS9I4M0l\",\"children\":[{\"id\":\"OXBJnpuT_NrPr2eyS7i4P\",\"children\":[{\"text\":\"A member entered the audio room.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Ck75Tln8ZTOZpBC9pzf4B\",\"children\":[{\"id\":\"nLDkQmFG0lOokyy2vuXgJ\",\"children\":[{\"id\":\"7Fg_2AVSphsoPIjdE9TkO\",\"children\":[{\"text\":\"result; error_info\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"rxnG9RZxzFvzYH5SBB5W9\",\"children\":[{\"id\":\"dLua3sjg3VLfBsBJR4ZVr\",\"children\":[{\"id\":\"oWcpQMlUqM9TBi4mmZ0Hf\",\"children\":[{\"text\":\"{\\\"error_info\\\":\\\"\\\",\\\"result\\\":0}\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"zXsd-5UeMH5wC_sNrW3dE\",\"children\":[{\"id\":\"Vlcib6rp5zRMdfekLXlkJ\",\"children\":[{\"id\":\"ojyhpOlE2lLqz5TFAkNqO\",\"children\":[{\"id\":\"7k84An1KsgxCqnEaeQH0W\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_EXIT_ROOM\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"nYNN2n4DhdCxQYLk8cLBT\",\"children\":[{\"id\":\"gbaWbKOXlGvOAJ1WYI8AY\",\"children\":[{\"id\":\"KmFdwjt89BBssqkgNGAc-\",\"children\":[{\"text\":\"A member exited the audio room.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"-txr5WRF0K6H_TbGIzs9e\",\"children\":[{\"id\":\"iLuOX8MmY-omHzydSr2Ga\",\"children\":[{\"id\":\"2y8UUuRQbOXj-KwhEvIu3\",\"children\":[{\"text\":\"result; error_info\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"5ZxZ6oJCW477xUT5WOOTZ\",\"children\":[{\"id\":\"Y7LjX4UOkqhyN7zgSFiSJ\",\"children\":[{\"id\":\"OTPknWhQbQmbsIJ025AQr\",\"children\":[{\"text\":\"{\\\"error_info\\\":\\\"\\\",\\\"result\\\":0}\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"TYWy0lSGbTym_5lkiVwG1\",\"children\":[{\"id\":\"DBH8UOdbuKJD_ikmM_Cwa\",\"children\":[{\"id\":\"0NNmAev8QZGzMXkDpgACL\",\"children\":[{\"id\":\"_8IY0pkwPUtxzzT0uVNae\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_ROOM_DISCONNECT\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"fxRPMtsAceKgiiFYnvMYU\",\"children\":[{\"id\":\"yQbrhPoCK0QZ_I6lT59XS\",\"children\":[{\"id\":\"W1KhnAKDUWV7IgoIsFMPM\",\"children\":[{\"text\":\"The room was disconnected due to a network or another issue.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"aA-E8oaNM05PKGWlzetJz\",\"children\":[{\"id\":\"l0gGU8HjjW2WqDijro0ou\",\"children\":[{\"id\":\"JZfp7kGwUZJb5PTWw9hbO\",\"children\":[{\"text\":\"result; error_info\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"xRncR3lR7VxmHv5HirFor\",\"children\":[{\"id\":\"XOyaaIYEWvVCOvW5q49zE\",\"children\":[{\"id\":\"Iejy0RQqrK4cyothMSTUS\",\"children\":[{\"text\":\"{\\\"error_info\\\":\\\"waiting timeout, please check your network\\\",\\\"result\\\":0}\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"WdjKHOuFck_dWZ94ifW9P\",\"children\":[{\"id\":\"JgvNOuPOAuHUR-rXK5cKN\",\"children\":[{\"id\":\"vBeT2qpnh3fvI1_bwfBvt\",\"children\":[{\"id\":\"WTiiJ2kSCNSnOuCdNQF1Y\",\"children\":[{\"text\":\"ITMG_MAIN_EVNET_TYPE_USER_UPDATE\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"xe-_u6nJqVQYDuEM4OUH-\",\"children\":[{\"id\":\"IQ0ck7mkrkZMW7ZSgtql_\",\"children\":[{\"id\":\"VR5QVLicb-yTtMxeryGU2\",\"children\":[{\"text\":\"Room members were updated.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"c030d7H7prfNq_0CHSjp_\",\"children\":[{\"id\":\"r6hDd7oRAPPb6_CxkYFh-\",\"children\":[{\"id\":\"ED2hYfYd9uxQ0Xa_Ivigj\",\"children\":[{\"text\":\"user_list; event_id\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"yjgUVV6_mxb1nn23AvtRa\",\"children\":[{\"id\":\"OVCFkkcjRE_zGHHsMN3xH\",\"children\":[{\"id\":\"7wS_nuB096-pS-WA-s-2a\",\"children\":[{\"text\":\"{\\\"event_id\\\":1,\\\"user_list\\\":[\"},{\"text\":\"\\\"0\\\"\"},{\"text\":\"]}\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"Luxyh5w6a-plh8KAJLe-O\",\"children\":[{\"id\":\"Lrxzqnmijv-egWkT4pKzF\",\"children\":[{\"id\":\"qW3EP9ApS9nxGI4KI2VK2\",\"children\":[{\"id\":\"cJVjXl8QWb4UNwR5-T0Y5\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_RECONNECT_START\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"n-MZZpDK1HOVLDphaoP5d\",\"children\":[{\"id\":\"dDLYnoTSfeRUxhgl5JbGI\",\"children\":[{\"id\":\"mBmNyLI6vvY0CNciHC59A\",\"children\":[{\"text\":\"The reconnection to the room started.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Qy7W7HSRsq8aLREjLU9qO\",\"children\":[{\"id\":\"7Cx47SeW0vgGDeZLGOxfu\",\"children\":[{\"id\":\"F9QMO8YaEvqT4OBT35oIR\",\"children\":[{\"text\":\"result; error_info\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"bswiCRW9NDfIiuCvWrSsk\",\"children\":[{\"id\":\"x4MUDcDTu_f8idQIWzSJ9\",\"children\":[{\"id\":\"Ii6CfsXOC3Pk_Xzs3QHQf\",\"children\":[{\"text\":\"{\\\"error_info\\\":\\\"\\\",\\\"result\\\":0}\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"efWZBVcjvv1h2smNdMc05\",\"children\":[{\"id\":\"v4Wirk1hOGVC4rX1QLmM8\",\"children\":[{\"id\":\"TI4XNncrR_cQUWc3iHyon\",\"children\":[{\"id\":\"o7GCvvtibXlxT7Z0BfI3Y\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_RECONNECT_SUCCESS\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Q5SYMoWMTrOhV0eLy4Gdg\",\"children\":[{\"id\":\"FqgzcCVeEiuzzqjKToRYQ\",\"children\":[{\"id\":\"vnSi6Jw6DaU4Acw9jpDOS\",\"children\":[{\"text\":\"The reconnection to the room succeeded.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"9Ul6OSSXgSp6WfhsFDt86\",\"children\":[{\"id\":\"Hrb4Wu-JRYdfj5qkzaiAU\",\"children\":[{\"id\":\"l0E4VqZilJsnZ5bSgBuit\",\"children\":[{\"text\":\"result; error_info\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"CE1wNglwPPkDTdxQmFLnH\",\"children\":[{\"id\":\"bo_oAFdlP6zeDiUwxZyGB\",\"children\":[{\"id\":\"2cnYNX3JoojLaJ5QMlkQu\",\"children\":[{\"text\":\"{\\\"error_info\\\":\\\"\\\",\\\"result\\\":0}\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"QqVYgci2PzNnSsNs_WVQe\",\"children\":[{\"id\":\"RLLxEEf-okrFZcv26pYLE\",\"children\":[{\"id\":\"P7cj0p883QK5knRpZ0yRB\",\"children\":[{\"id\":\"snw6Rbv6FiPddgiWoDZKd\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_SWITCH_ROOM\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"hzF_CkiW0e_jUwjRoqkHY\",\"children\":[{\"id\":\"iTCrmB5x5Qbk7SXa4gkXC\",\"children\":[{\"id\":\"8EpN9WC-n3mjFtCbIKOKB\",\"children\":[{\"text\":\"The room was quickly switched.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"xr2zYdxWtMKN_V3c6Eilo\",\"children\":[{\"id\":\"IIblVmMx-aPqCXIyNPJJW\",\"children\":[{\"id\":\"mTF8nADOyc5CZz1bwrcAm\",\"children\":[{\"text\":\"result; error_info\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"t5uijyb9y9Qp3qB4NJabz\",\"children\":[{\"id\":\"0SmUvzYs0Ehgld-Bhqj2E\",\"children\":[{\"id\":\"MVMrkKbwGMBFQ5f-y9k4O\",\"children\":[{\"text\":\"{\\\"error_info\\\":\\\"\\\",\\\"result\\\":0}\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"b6hZnKmHI7I9Pve3jZaOw\",\"children\":[{\"id\":\"nRYwN4UWzJkhmiBBT0sBM\",\"children\":[{\"id\":\"h8-sGYMTe_VM1d2NTp2c6\",\"children\":[{\"id\":\"iiu1E8pNPNhd2uLeTbryj\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_CHANGE_ROOM_TYPE\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"jwx6L8-ExAS7xaRvUGrWC\",\"children\":[{\"id\":\"15i6ToiDyAjCuNcKi7NJj\",\"children\":[{\"id\":\"XLgonb5LAN4u2sSOh8WfN\",\"children\":[{\"text\":\"The room status was changed.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"25KBEE_8gTyw0SyJC01dp\",\"children\":[{\"id\":\"dNBZXGKSFdNv_dZlWG9ZM\",\"children\":[{\"id\":\"_JJrU-IPY_UA1P26zF_B8\",\"children\":[{\"text\":\"result; error_info; sub_event_type; new_room_type\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"W8iVe4hwk4_lLr6fgPkkI\",\"children\":[{\"id\":\"PCZiFcfZoWRB3oyz-4-0J\",\"children\":[{\"id\":\"XoSz1l9uLsHMCfAWsx2pl\",\"children\":[{\"text\":\"{\\\"error_info\\\":\\\"\\\",\\\"new_room_type\\\":0,\\\"result\\\":0}\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"D0B8-3R4Mvf-cNbUVX_Qc\",\"children\":[{\"id\":\"RAPivzKJN0Jrq_W3J3rph\",\"children\":[{\"id\":\"XvMuDu4rs5tEOy1YJbOBV\",\"children\":[{\"id\":\"OuKhWyHgojPLslkf6dJmz\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_ROOM_SHARING_START\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"CVo1yNdS0t5iJbziWANU-\",\"children\":[{\"id\":\"PJrOyco3egIj9e9Iy0Fdh\",\"children\":[{\"id\":\"qP9ajd3Tw8ZYdfwliQf3R\",\"children\":[{\"text\":\"Cross-room mic connect started.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"EH1-o8N5lU5qoHmzdua4B\",\"children\":[{\"id\":\"7d_yDugcOUXjNXIzaQsTh\",\"children\":[{\"id\":\"m7cItQl2evAL3zTTgYmTo\",\"children\":[{\"text\":\"result;\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"QohupS-kCMVsakUJSWthP\",\"children\":[{\"id\":\"d3-16G3Rw8F469AzeTT6O\",\"children\":[{\"id\":\"L_d1izbBPp4W99RJXLVWh\",\"children\":[{\"text\":\"{\\\"result\\\":0}\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"6D1oVKgHlZlEfX5L4MQBH\",\"children\":[{\"id\":\"qzCYasOv9JJ9rtnRtxLRt\",\"children\":[{\"id\":\"yA8i9C36KMWXMf017moMb\",\"children\":[{\"id\":\"GI1s3C14Ti-UK7714QCS2\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_ROOM_SHARING_STOP\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"rPIqWl3v_9jIZOcL-Yaar\",\"children\":[{\"id\":\"uHGI_U4MqoJLInNjNahGw\",\"children\":[{\"id\":\"0lrQJezGXo9kvdv4GYX6Q\",\"children\":[{\"text\":\"Cross-room mic connect stopped.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"u0EMbc4k3uzM1z3yBtc_g\",\"children\":[{\"id\":\"9I4pyYUjx8n56PGOz9EaR\",\"children\":[{\"id\":\"hYnqacZBhcnRgH95ssYhh\",\"children\":[{\"text\":\"result;\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"TIGu8lTFVll9HBjxO_M7r\",\"children\":[{\"id\":\"mC-0oHZa05nLhN-HnnkST\",\"children\":[{\"id\":\"k9h8EQ-FPQErLoHK2TzA1\",\"children\":[{\"text\":\"{\\\"result\\\":0}\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"iD2r2iAHxP0SJXBMccEcD\",\"children\":[{\"id\":\"y0ciq66wE0tp0lHh0cRcf\",\"children\":[{\"id\":\"9bntiW5zkw9JJJu8QnkjU\",\"children\":[{\"id\":\"v_6vIZGAoi6M8e0pTrOSS\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_SPEAKER_DEFAULT_DEVICE_CHANGED\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"s9U_lwK8uAqXbEDySF3dj\",\"children\":[{\"id\":\"1Ahi5APgDrXQadcrR1ZxC\",\"children\":[{\"id\":\"Bg2MvjtRSLAIWDp0zGgia\",\"children\":[{\"text\":\"The default speaker was changed.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ifT6ftn3--IQMeqFM74sq\",\"children\":[{\"id\":\"Baq6T4fC1iaAT3OKPd1TY\",\"children\":[{\"id\":\"dDrPwHnLY3EihrTQkeNp-\",\"children\":[{\"text\":\"result; error_info\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"DW7oOIL5IQvE8BwL2rTga\",\"children\":[{\"id\":\"t8Pzx4-mdanbzhZaH2xmt\",\"children\":[{\"id\":\"kPXS3-UdGlM1_zG1poH29\",\"children\":[{\"text\":\"{\\\"deviceID\\\":\\\"{0.0.0.00000000}.{a4f1e8be-49fa-43e2-b8cf-dd00542b47ae}\\\",\\\"deviceName\\\":\\\"Speaker (Realtek High Definition Audio)\\\",\\\"error_info\\\":\\\"\\\",\\\"isNewDevice\\\":true,\\\"isUsedDevice\\\":false,\\\"result\\\":0}\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"EvMRrCXWunIhCU35-ubwx\",\"children\":[{\"id\":\"YA1W36cJTti0Hr1fUW3Xf\",\"children\":[{\"id\":\"yrB_2It8xA6GRvkxthHxX\",\"children\":[{\"id\":\"Tl8UUtfLvSTPIKFmVLUrq\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_SPEAKER_NEW_DEVICE\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"oyX3BfXD9E4bHZ_0sdRG8\",\"children\":[{\"id\":\"6B686SSrKGSIoz2Mv46j1\",\"children\":[{\"id\":\"-YkMxsTzCUcVCdf2Gj0of\",\"children\":[{\"text\":\"A new speaker was added.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ELSHdp9rcaBVM9HEDIyRT\",\"children\":[{\"id\":\"IqqwUTZ0NffoQl-14v0E8\",\"children\":[{\"id\":\"5VJvB6RWQSaXfRgGm0utf\",\"children\":[{\"text\":\"result; error_info\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"q9TL9Xu6c_HprAbgoUNmH\",\"children\":[{\"id\":\"i2FDepIMaOFEIbCB10Rjp\",\"children\":[{\"id\":\"nhRZjMTycgG2_UcRQHzZe\",\"children\":[{\"text\":\"{\\\"deviceID\\\":\\\"{0.0.0.00000000}.{a4f1e8be-49fa-43e2-b8cf-dd00542b47ae}\\\",\\\"deviceName\\\":\\\"Speaker (Realtek High Definition Audio)\\\",\\\"error_info\\\":\\\"\\\",\\\"isNewDevice\\\":true,\\\"isUsedDevice\\\":false,\\\"result\\\":0}\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"mTr7oPs0R67fjDKoDwztX\",\"children\":[{\"id\":\"UWRvCwgLuSoZ3kOgv0CL4\",\"children\":[{\"id\":\"8cFA1fslruaHGsRGKX2Se\",\"children\":[{\"id\":\"ZeUv9I1PoXsGY8I6fNJar\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_SPEAKER_LOST_DEVICE\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Vc0gufLDOasajMPm1_yxg\",\"children\":[{\"id\":\"e1sVoa5k54vsaDV6ZOHmA\",\"children\":[{\"id\":\"z3z-vL4nBV6o-mbvkBBkD\",\"children\":[{\"text\":\"A speaker was lost.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"RidnnM7kyJDdxQcvXEAb9\",\"children\":[{\"id\":\"IyzKm4Kg6IInjy1m_5g7_\",\"children\":[{\"id\":\"H-PasrSN32Tj1wpRvtVcC\",\"children\":[{\"text\":\"result; error_info\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Nba4nvUfdWHN9XHVOp5FQ\",\"children\":[{\"id\":\"tvRLEpTTM0vDJaz1LFXCz\",\"children\":[{\"id\":\"yV3qR-NjyHr9lj5nbmSSo\",\"children\":[{\"text\":\"{\\\"deviceID\\\":\\\"{0.0.0.00000000}.{a4f1e8be-49fa-43e2-b8cf-dd00542b47ae}\\\",\\\"deviceName\\\":\\\"Speaker (Realtek High Definition Audio)\\\",\\\"error_info\\\":\\\"\\\",\\\"isNewDevice\\\":false,\\\"isUsedDevice\\\":false,\\\"result\\\":0}\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"2p_YXj9JZVOZI0A_wErGd\",\"children\":[{\"id\":\"sSVaH6yXK8vHYge3gTnuf\",\"children\":[{\"id\":\"1tJ5dk357-2PDt2zCKzUU\",\"children\":[{\"id\":\"PzNnsAziNUhzLs7JhtH6g\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_MIC_NEW_DEVICE\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"mdjCKu5crwnU5LhnpCp-3\",\"children\":[{\"id\":\"zFQn0bYFHFwForpsj-9AW\",\"children\":[{\"id\":\"XrjchGUrwmY_VihMb3BbB\",\"children\":[{\"text\":\"A new mic was added.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"UMJpWyVwWqSSMMrQfqsll\",\"children\":[{\"id\":\"mLN9QIk6cwNcDB2uIiAFc\",\"children\":[{\"id\":\"4mnojMaJ4f1qNf432dvYP\",\"children\":[{\"text\":\"result; error_info\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"zo97CFldZnbac6Rnqbgji\",\"children\":[{\"id\":\"tPZzgsnUTC00mXynIrqZN\",\"children\":[{\"id\":\"zYVdsB6N0B2nIP4mOuJq2\",\"children\":[{\"text\":\"{\\\"deviceID\\\":\\\"{0.0.1.00000000}.{5fdf1a5b-f42d-4ab2-890a-7e454093f229}\\\",\\\"deviceName\\\":\\\"Mic (Realtek High Definition Audio)\\\",\\\"error_info\\\":\\\"\\\",\\\"isNewDevice\\\":true,\\\"isUsedDevice\\\":true,\\\"result\\\":0}\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"CwWRKMFC1a8RB2fFQPLkD\",\"children\":[{\"id\":\"E-isvZTFhsPWcsBzXYquV\",\"children\":[{\"id\":\"xUOzA5f6YGc44O8ndEKS0\",\"children\":[{\"id\":\"gfD_Vc-lYcbABHGlqCu8W\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_MIC_LOST_DEVICE\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"gaIk1l2OLnr05YNqhvsld\",\"children\":[{\"id\":\"bOX--RCmK5K7PkE6waMgB\",\"children\":[{\"id\":\"PliUGe7q6oxnPl0QkF5CN\",\"children\":[{\"text\":\"A mic was lost.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"qkN7Xops1wf_3OzS1Psnq\",\"children\":[{\"id\":\"traXowPrpMb-kY78fVByw\",\"children\":[{\"id\":\"BsySDZ92cOMdu-PdkMq80\",\"children\":[{\"text\":\"result; error_info\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"aRVDS9YOaBHXGXZpI0rbk\",\"children\":[{\"id\":\"_tumOVEzEjYJpAKSVatfG\",\"children\":[{\"id\":\"0lbBdE2BjQwxc--kEnfr6\",\"children\":[{\"text\":\"{\\\"deviceID\\\":\\\"{0.0.1.00000000}.{5fdf1a5b-f42d-4ab2-890a-7e454093f229}\\\",\\\"deviceName\\\":\\\"Mic (Realtek High Definition Audio)\\\",\\\"error_info\\\":\\\"\\\",\\\"isNewDevice\\\":false,\\\"isUsedDevice\\\":true,\\\"result\\\":0}\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"LCt0HeeVmXpUGVqxT-XDZ\",\"children\":[{\"id\":\"B-GkVuSeuwt7bLGpCfo6v\",\"children\":[{\"id\":\"EJjGG64dyKeLZd_T7IxFS\",\"children\":[{\"id\":\"E5TOcQRcGbGGMNnuhzmRn\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_MIC_DEFAULT_DEVICE_CHANGED\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"gED1389aXtuPWY6AZTN2B\",\"children\":[{\"id\":\"l1rr3yBnU-uE21SkTZF7k\",\"children\":[{\"id\":\"fX-rxW632vkdm90nKBNt1\",\"children\":[{\"text\":\"The default mic was changed.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"lAwXGJPAmyIrBfLRpbnsu\",\"children\":[{\"id\":\"Wf5zMlYA_fr8lRngGbE9R\",\"children\":[{\"id\":\"XF6My4NdyrxYU-pwoMDu3\",\"children\":[{\"text\":\"result; error_info\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"UOCrfF_RcEjEoLaVVsOJ7\",\"children\":[{\"id\":\"WYdGQM8owd20aO8_xbuzX\",\"children\":[{\"id\":\"8OmtjOGtxhiG5hrw4bs-4\",\"children\":[{\"text\":\"{\\\"deviceID\\\":\\\"{0.0.1.00000000}.{5fdf1a5b-f42d-4ab2-890a-7e454093f229}\\\",\\\"deviceName\\\":\\\"Mic (Realtek High Definition Audio)\\\",\\\"error_info\\\":\\\"\\\",\\\"isNewDevice\\\":false,\\\"isUsedDevice\\\":true,\\\"result\\\":0}\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"31-u8PxvEgkEHH8gnha7j\",\"children\":[{\"id\":\"QL2QluAZTiLmZd6p52jAa\",\"children\":[{\"id\":\"w14pSbnxFebg3kP9i0jDC\",\"children\":[{\"id\":\"h-YxNeyzK7vb541x3vyiH\",\"children\":[{\"text\":\"ITMG_MAIN_EVENT_TYPE_CHANGE_ROOM_QUALITY\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"fAJYquZTB7e8LV1kCNazb\",\"children\":[{\"id\":\"BqkjZWZI1LcYp1KDfV6f5\",\"children\":[{\"id\":\"15vazK2mSYR54iIRhZVnk\",\"children\":[{\"text\":\"The room network quality changed.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"in-rRaFVhSfq8AL7xMnCD\",\"children\":[{\"id\":\"tS0Wg4RXliJD_OsaniBiP\",\"children\":[{\"id\":\"wUOdO8sYw0BsrZuxFrO50\",\"children\":[{\"text\":\"weight; loss; delay\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"-oSaw2mEojwjtscYUZ6yd\",\"children\":[{\"id\":\"Omubvh8pt3iKuY-JgQpk3\",\"children\":[{\"id\":\"k1Gy0aSDvJbb3tIA2z_o6\",\"children\":[{\"text\":\"{\\\"weight\\\":5,\\\"loss\\\":0.1,\\\"delay\\\":1}\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"QECaQhKVLs_B-vu4DB6Y5\",\"children\":[{\"id\":\"cjnhADowkKLdKEbRSFk3N\",\"children\":[{\"id\":\"wnypHZop0pSdLqmVM3V-F\",\"children\":[{\"id\":\"J7OjFwFWcsn6PRxegG0ey\",\"children\":[{\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_RECORD_COMPLETE\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"CzH5SzZJS2qAj_Wf08QG1\",\"children\":[{\"id\":\"qybfqqX8q5uoaGzXSVKfS\",\"children\":[{\"id\":\"85W1PnRQzulW6bOW62BAK\",\"children\":[{\"text\":\"Voice message recording was completed.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"3xFrz3y68mcyyvN-Jtiye\",\"children\":[{\"id\":\"gF-umkc4u-ZekS_KuUPq3\",\"children\":[{\"id\":\"fVXrz7Q04jUKbPK6P2zT6\",\"children\":[{\"text\":\"result; file_path\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"H37FqB2YARLPHs5TXxs8t\",\"children\":[{\"id\":\"TkymRUf5OYwVO-klJVWh8\",\"children\":[{\"id\":\"rErdOQNx8kmuDbfcBuTtQ\",\"children\":[{\"text\":\"{\\\"file_path\\\":\\\"\\\",\\\"result\\\":0}\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"r03zmiDP5cUJkYxAnlG9k\",\"children\":[{\"id\":\"pL76s4l5LotvlEjo-wYdS\",\"children\":[{\"id\":\"UTdsOYVV31a6YqWldmmYp\",\"children\":[{\"id\":\"5m-0hLx1eDPyUthhKXW8q\",\"children\":[{\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_UPLOAD_COMPLETE\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"KkFnl6nCltR1J95oNDj0s\",\"children\":[{\"id\":\"106sN0ZQ_eBVe_H850RCf\",\"children\":[{\"id\":\"2Wh3v2z-i3YhXQ8V7UXHa\",\"children\":[{\"text\":\"Voice message upload was completed.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"H7MyGcG7hebF0lgX97__g\",\"children\":[{\"id\":\"B2e1rm6K3uSrBPGSj_2Cy\",\"children\":[{\"id\":\"9XiQnIhcolFElyMtkPwLI\",\"children\":[{\"text\":\"result; file_path;file_id\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"uGW2ljt39370j6Gi2K6Ms\",\"children\":[{\"id\":\"ITkWEhnVC55dso4D2nQy2\",\"children\":[{\"id\":\"ePkZfELQrMQbba0t0guvP\",\"children\":[{\"text\":\"{\\\"file_id\\\":\\\"\\\",\\\"file_path\\\":\\\"\\\",\\\"result\\\":0}\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"EyfOmIgBJFgkda1Oad4E9\",\"children\":[{\"id\":\"6WcnvmUi2Pe0iwacsdr4T\",\"children\":[{\"id\":\"m81Y2o5KNQ9Yp2_NwhucO\",\"children\":[{\"id\":\"cjZ-IKFerfGLkHcANZzSX\",\"children\":[{\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_DOWNLOAD_COMPLETE\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ctFsjq9ilqxxOskpJ-iJJ\",\"children\":[{\"id\":\"3o7rxw2hYdT2e5vr_BC44\",\"children\":[{\"id\":\"BAn4rmLcS0Fff-s8jPvmE\",\"children\":[{\"text\":\"Voice message download was completed.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"5ZgMUlszbpj57pLizasym\",\"children\":[{\"id\":\"9HV33cvDD2E0q4Q9Jny90\",\"children\":[{\"id\":\"DMLfDNl7v_2GnhsIyvjKp\",\"children\":[{\"text\":\"result; file_path;file_id\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Xuzg-rGC91WkXYQ7S1Tuy\",\"children\":[{\"id\":\"_fX-MnAvkkq4AcTKqXSKg\",\"children\":[{\"id\":\"PQJQuJRE1ytyjZhCn5345\",\"children\":[{\"text\":\"{\\\"file_id\\\":\\\"\\\",\\\"file_path\\\":\\\"\\\",\\\"result\\\":0}\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"EdOg6JQZzQTvFL8tuJVFr\",\"children\":[{\"id\":\"SJn5Uh-vI-nbfMIwL6Zis\",\"children\":[{\"id\":\"ZzsV3DQ5vuaFkCuEjyHx0\",\"children\":[{\"id\":\"EGItUmOTdH35z3poeGws0\",\"children\":[{\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_PLAY_COMPLETE\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"SWDgNOdq1hifFKYqpTOF3\",\"children\":[{\"id\":\"pSAUKof4l44NWwxv4nvWT\",\"children\":[{\"id\":\"7XE87UTaWbBXyySkMvsk4\",\"children\":[{\"text\":\"Voice message playback was completed.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"mE6XszuQifzywappEDOAC\",\"children\":[{\"id\":\"6Epz-d-PaJZ9puQoNhFty\",\"children\":[{\"id\":\"yGLVX0kU8AIbBSYyzeVuL\",\"children\":[{\"text\":\"result; file_path\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"W5RWVKM3WeQTnku-9n6Hx\",\"children\":[{\"id\":\"AAuCPeO5ElGDNM07JjKFt\",\"children\":[{\"id\":\"2pN6rGElX8yrYn32-hwTA\",\"children\":[{\"text\":\"{\\\"file_path\\\":\\\"\\\",\\\"result\\\":0}\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"EF07mtab8olitpN_NyTIh\",\"children\":[{\"id\":\"hus31uKo2Rvb8DkZsROe8\",\"children\":[{\"id\":\"nCSL63CnIMYJGiCqGUCGi\",\"children\":[{\"id\":\"Yd-Si9azfoTgA3GybvAUF\",\"children\":[{\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_SPEECH2TEXT_COMPLETE\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"CiLGG7vIQJIZencSRhgTe\",\"children\":[{\"id\":\"ian7UQJNPIMlO77yAZisJ\",\"children\":[{\"id\":\"Vo7uJWFWD3ZpxkKhwSqXv\",\"children\":[{\"text\":\"Fast speech-to-text conversion was completed.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"rlj_botBxEOkr4rlJS9gV\",\"children\":[{\"id\":\"fNMI081qVNjnJjJHVd3qN\",\"children\":[{\"id\":\"90q6UNKFbDyYWJdNUlx0u\",\"children\":[{\"text\":\"result; text;file_id\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"V-uZCXV_jyCG_cCwb7SHz\",\"children\":[{\"id\":\"whLa7aMilj_UonSeyna6M\",\"children\":[{\"id\":\"IefNa3Ew3Maa5EaNrh87L\",\"children\":[{\"text\":\"{\\\"file_id\\\":\\\"\\\",\\\"text\\\":\\\"\\\",\\\"result\\\":0}\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"NS5Y-jmr0RNNBhjQth5u_\",\"children\":[{\"id\":\"byggiVb2mkxC5F-pEvxFo\",\"children\":[{\"id\":\"2SMvv2YvoIeybPYoMrC7j\",\"children\":[{\"id\":\"YmGxd9L9Pg9kDoQyxtr7N\",\"children\":[{\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRECOGNITION_COMPLETE\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"6TzsP-AjpVZ7AUyCZgRK9\",\"children\":[{\"id\":\"VRG6HSl6h-PGkcf2KicR-\",\"children\":[{\"id\":\"J8iUKxYGeAsO7zBrYrCs3\",\"children\":[{\"text\":\"Streaming speech-to-text conversion was completed.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"1LIdN3zkmNzigkoMy4RtI\",\"children\":[{\"id\":\"YbXDPV_aEkhY2006riPoW\",\"children\":[{\"id\":\"b0dGelaG3SmmErkYOJ1_3\",\"children\":[{\"text\":\"result; file_path; text;file_id\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"G9Oyd-u3HADlwGl04Knxj\",\"children\":[{\"id\":\"1WdRC8Hqe90-7Bi3cNzmN\",\"children\":[{\"id\":\"ucel7kRYkidgbeee7BNUi\",\"children\":[{\"text\":\"{{\\\"file_id\\\":\\\"\\\",\\\"file_path\\\":\\\",\\\"text\\\":\\\"\\\",\\\"result\\\":0}}\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"nD3l_6gXU-TmBpW6FZGpm\",\"children\":[{\"id\":\"5kKJAdcjiMlfxisk5HaIv\",\"children\":[{\"id\":\"bKyV7VWfJJsYtxfZgKJam\",\"children\":[{\"id\":\"Po4uDmGv7lqiZsF4m8Ge8\",\"children\":[{\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRECOGNITION_IS_RUNNING\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"UMnknc9C6bDKIb7aj8vN7\",\"children\":[{\"id\":\"ECe_HZAjKvxxDHsZGW0ft\",\"children\":[{\"id\":\"qoSADzmbttqC6OPUsA7DQ\",\"children\":[{\"text\":\"Streaming speech-to-text conversion is in progress.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"EHRxDZumfvF486UXGId0q\",\"children\":[{\"id\":\"WdQF2-vtpZftdZeJzSh_m\",\"children\":[{\"id\":\"dBv865zffFpxPTTopaJzC\",\"children\":[{\"text\":\"result; file_path; text;file_id\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"TnblLMI91-dreunYGqHVY\",\"children\":[{\"id\":\"qzzEN86K9CYnuZzxMVZM_\",\"children\":[{\"id\":\"7h58TDaulJYKBj66IehU_\",\"children\":[{\"text\":\"{{\\\"file_id\\\":\\\"\\\",\\\"file_path\\\":\\\",\\\"text\\\":\\\"\\\",\\\"result\\\":0}}\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"Vxx_iEjtP_KkcnvrAygb6\",\"children\":[{\"id\":\"cpBQRQ57AU0MGdOEpzs7x\",\"children\":[{\"id\":\"zXpRjsEYdNqKMI_b1cJ0a\",\"children\":[{\"id\":\"TshLMqgjVX8jCvRqgExUv\",\"children\":[{\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_TEXT2SPEECH_COMPLETE\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"_gR13yk5S41mwU2OoI7_z\",\"children\":[{\"id\":\"aW9pRdlshNn4WvsPPWf2y\",\"children\":[{\"id\":\"46wxG18Yrsuzw-eYqFUrV\",\"children\":[{\"text\":\"Text-to-speech conversion was completed.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"phYBofggOc3MEZhJA3A3N\",\"children\":[{\"id\":\"r3JIPZeBc-VYstXrZjXvw\",\"children\":[{\"id\":\"_PUSPAzlgRA7-WIS5uFpB\",\"children\":[{\"text\":\"result; text;file_id\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"uqijzqL_hbWizJ_IcNcc-\",\"children\":[{\"id\":\"b4C7KjQ_Do7qoCvukD1YM\",\"children\":[{\"id\":\"7TqOvctRyfzYkRRfu_ayi\",\"children\":[{\"text\":\"{{\\\"file_id\\\":\\\"\\\",\\\"text\\\":\\\"\\\",\\\"result\\\":0}}\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"3Hd-Foihi9w2LieR4b8Um\",\"children\":[{\"id\":\"w3rGYV_bqgrr0UCqJO38s\",\"children\":[{\"id\":\"UH6763M7tVVrTXU_U_ekP\",\"children\":[{\"id\":\"x7P8mSpmk5rv6ALWUY4eX\",\"children\":[{\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_TRANSLATE_TEXT_COMPLETE\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"I-5CY05q9yGsp9-U-gZYO\",\"children\":[{\"id\":\"En6E9mVPOLsIh4flRv2kX\",\"children\":[{\"id\":\"nvDXeVcKLRXPdae5p1Irt\",\"children\":[{\"text\":\"Text translation was completed.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"I3wXZWxEPpWsDYDfy23mh\",\"children\":[{\"id\":\"i_rjfPgc6QHYWuEeIFOEP\",\"children\":[{\"id\":\"wErLjtVZI5c4uqq7jkCJb\",\"children\":[{\"text\":\"result; text;file_id\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"I1Opsz9VUoQh6UMN_hv_m\",\"children\":[{\"id\":\"nBoLrCENUK64CrqFXIohP\",\"children\":[{\"id\":\"3AhVMgT-j1agSUYEIZ8Bk\",\"children\":[{\"text\":\"{{\\\"file_id\\\":\\\"\\\",\\\"text\\\":\\\"\\\",\\\"result\\\":0}}\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[24,24,21,31],\"widthMode\":\"percentage\"},{\"type\":\"p\",\"children\":[{\"text\":\"\"}],\"id\":\"3AmCFaf4tpWCVWOLarjrp\"}]"}},"54040":{"categoryId":607,"weight":70,"type":"page","extension":"","pid":54037,"id":54040,"lang":"en","title":"Speech-to-Text Service","pdfUrl":"","docType":"default","children":[],"firstReleaseTime":"2023-03-13 22:33:21","recentReleaseTime":"2023-03-13 22:33:21","content":{"title":"Speech-to-Text Service","body":"
This document describes how to integrate with and debug GME client APIs for the voice messaging and speech-to-text services for Electron.

Key Considerations for Using GME

GME provides the real-time voice service and voice messaging and speech-to-text services, which all depend on core APIs such as Init and Poll.

Notes

You have created a GME application and obtained the SDK AppID and key. For more information, see Activating Services.
You have activated GME real-time voice service and voice messaging and speech-to-text services. For more information, see Activating Services.
Configure your project before using GME; otherwise, the SDK will not take effect.
After a GME API is called successfully, GmeError.AV_OK will be returned with the value being 0.
GME APIs should be called in the same thread.
The Poll API should be called periodically for GME to trigger event callbacks.
For detailed error codes, see Error Codes.
Note:
There is a default call rate limit for speech-to-text APIs. For more information on how calls are billed within the limit, see Purchase Guide. If you want to increase the limit or learn more about how excessive calls are billed, submit a ticket.
Non-streaming speech-to-text API PttSpeechToText(): There can be up to 10 concurrent requests per account.
Streaming speech-to-text API PttStartRecordingWithStreamingRecognition(): There can be up to 50 concurrent requests per account.

Integrating the SDK

Directions

Key processes involved in SDK integration are as follows:

\"\"



TS class

`GmeContext`: GME business implementation APIs
`GmeError`: GME error code definition class

Core APIs

API
Description
Init
Initializes GME
Poll
Triggers event callback
Uninit
Uninitializes GME

Importing the GME module

const { GmeContext } = require('gme-electron-sdk');

Getting an instance

var m_context = new GmeContext();

Initializing the SDK

You need to initialize the SDK through the Init API before you can use the real-time voice, voice message, and speech-to-text services. The Init API must be called in the same thread as other APIs. We recommend you call all APIs in the main thread.

API prototype

Init(appid: string, openid: string): number;
Parameter
Type
Description
sdkAppId
string
AppID provided in the GME console, which can be obtained as instructed in Activating Services.
openID
string
openID can only be in Int64 type, which is passed in after being converted to a string. You can customize its rules, and it must be unique in the application. To pass in openID as a string, submit a ticket for application.

Returned values

Returned Value
Description
GmeError.AV_OK= 0
Initialized the SDK successfully.
AV_ERR_SDK_NOT_FULL_UPDATE=7015
Checks whether the SDK file is complete. It is recommended to delete it and then import the SDK again.
Notes on 7015 error code
The 7015 error code is judged by MD5. If this error is reported during integration, please check the integrity and version of the SDK file as prompted.
The returned value AV_ERR_SDK_NOT_FULL_UPDATE is only a reminder but will not cause an initialization failure.

Sample code

number ret = m_context.Init(sdkAppId, openID);
// Determine whether the initialization is successful by the returned value
if (ret != GmeError.AV_OK)
{
console.log("Failed to initialize the SDK:");
return;
}

Triggering event callback

Event callbacks can be triggered by calling the Poll API in the timer. The Poll API is GME's message pump and should be called periodically for GME to trigger event callbacks; otherwise, the entire SDK service will run abnormally. For more information, see the EnginePollHelper file in SDK Download Guide.
Note:
The Poll API must be called periodically and in the main thread to avoid abnormal API callbacks.

API prototype

Poll();

Sample code

setInterval(function () {
m_context.Poll();
}, 50);

Uninitializing SDK

This API is used to uninitialize the SDK to make it uninitialized. If the game business account is bound to openid, switching game account requires uninitializing GME and then using the new openid to initialize again.

API prototype

Uninit() : number

Voice Messaging and Speech-to-Text Services

Note:
The speech-to-text service consists of fast recording-to-text conversion and streaming speech-to-text conversion.
You do not need to enter a voice chat room when using the voice messaging service.
The maximum recording duration of a voice message is 58 seconds by default, and the minimum recording duration cannot be less than 1 second. If you want to customize the recording duration, for example, to modify the maximum recording duration to 10 seconds, call the SetMaxMessageLength API to set it after initialization.

Flowchart for using the voice message service


\"\"



Flowchart for using the speech-to-text service


\"\"


API
Description
GenAuthBuffer
Gets the authentication information
SetMaxMessageLength
Specifies the maximum length of voice message

Generating the local authentication key

Generate AuthBuffer for encryption and authentication of relevant features. For release in the production environment, use the backend deployment key as detailed in Authentication Key.

API prototype

GenAuthBuffer(appId: string,roomId: string, openId:string, appKey: string) :string
Parameter
Type
Description
appId
string
AppId from the Tencent Cloud console.
roomId
string
Enter null or an empty string
openId
string
User ID, which is the same as OpenId during initialization.
key
string
Permission key from the Tencent Cloud console.

Application authentication

After the authentication information is generated, the authentication is assigned to the SDK.

API prototype

ApplyPTTAuthbuffer(authBuffer: string) :number
Parameter
Type
Description
authBuffer
string
Authentication information

Sample code

var authBuffer = m_context.GetAuthBuffer(UserConfig.GetAppID(), UserConfig.GetUserID(), null,UserConfig.GetAuthKey());
m_context.ApplyPTTAuthbuffer(authBuffer);

Specifying the maximum duration of voice message

This API is used to specify the maximum duration of a voice message, which can be up to 58 seconds.

API prototype

PttSetMaxMessageLength(msTime: number) :number
Parameter
Type
Description
msTime
number
Audio duration in ms. Value range: 1000 < msTime <= 58000

Sample code

m_context.PttSetMaxMessageLength(58000);

Streaming Speech Recognition

Voice messaging and speech-to-text APIs

API
Description
PttStartRecordingWithStreamingRecognition
Starts streaming recording
PttStopRecording
Stops recording

Starting streaming speech recognition

This API is used to start streaming speech recognition. Text obtained from speech-to-text conversion will be returned in real time in its callback. It can specify a language for recognition or translate the information recognized in speech into a specified language and return the translation. To stop recording, call Stop recording.

API prototype

PttStartRecordingWithStreamingRecognition(filePath: string, speechLanguage: string, translateLanguage: string) :number
Parameter
Type
Description
filePath
string
Path of stored audio file
speechLanguage
string
The language in which the audio file is to be converted to text. For parameters, see Language Parameter Reference List.
translateLanguage
string
The language in which the audio file is to be translated to text. For parameters, see Language Parameter Reference List.

Sample code

string filePath = "xx/xxx/xxx.silk"
var ret = m_context.StartRecordingWithStreamingRecognition(filePath,"cmn-Hans-CN","cmn-Hans-CN");
if (ret == 0) {
this.currentStatus = "Start streaming recording";
} else {
this.currentStatus = "Failed to start streaming recording";
}
Note:
Translation incurs additional fees. For more information, see Purchase Guide.

Callback for streaming speech recognition

After streaming speech recognition is started, you need to listen on callback messages in the OnEvent notification, which is as detailed below:
ITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRECOGNITION_COMPLETE returns text after the recording is stopped and the recognition is completed, which is equivalent to returning the recognized text after a paragraph of speech.\nITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRECOGNITION_IS_RUNNING returns the recognized text in real time during the recording, which is equivalent to returning the recognized text while speaking.
The event message will be identified in the callback notification based on the actual needs. The passed parameters include the following four messages.
Message Name
Description
result
Return code indicating whether streaming speech recognition is successful
text
Text converted from speech
file_path
Local path of stored recording file
file_id
Backend URL address of recording file, which will be retained for 90 days
Note:
The file_id is empty when the 'ITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRecognition_IS_RUNNING' message is listened.

Error codes

Error Code
Description
Suggested Solution
32775
Streaming speech-to-text conversion failed, but recording succeeded.
Call the UploadRecordedFile API to upload the recording file and then call the SpeechToText API to perform speech-to-text conversion.
32777
Streaming speech-to-text conversion failed, but recording and upload succeeded.
The message returned contains a backend URL after successful upload. Call the SpeechToText API to perform speech-to-text conversion.
32786
Streaming speech-to-text conversion failed.
During streaming recording, wait for the execution result of the streaming recording API to return.
32787
Speech-to-text conversion succeeded, but the text translation service was not activated.
Activate the text translation service in the console.
32788
Speech-to-text conversion succeeded, but the language parameter of the text translation service was invalid.
Check the parameter passed in.
If the error code 4098 is reported, see Speech-to-text Conversion for solutions.

Sample code

m_context.setTMGDelegate(function(eventId, msg){
switch (eventType) {
case ITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRECOGNITION_COMPLETE:
{
HandleSTREAM2TEXTComplete(data,true);
break;
}
...
case ITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRECOGNITION_IS_RUNNING:
{
HandleSTREAM2TEXTComplete(data, false);
break;
}
}
});


Voice Message Recording

The recording process is as follows: start recording > stop recording > return recording callback > start the next recording.

Voice messaging and speech-to-text APIs

API
Description
PttStartRecording
Starts recording
PttPauseRecording
Pauses recording
PttResumeRecording
Resumes recording
PttStopRecording
Stops recording
PttCancelRecording
Cancels recording

Starting recording

This API is used to start recording.

API prototype

PttStartRecording(filePath: string) : number;
Parameter
Type
Description
filePath
string
Path of stored audio file

Sample code

string filepath = "xxxx/xxx.silk";
var ret = m_context.PttStartRecording(filepath);

Stopping recording

This API is used to stop recording. It is async, and a callback for recording completion will be returned after recording stops. A recording file will be available only after recording succeeds.

API prototype

PttStopRecording() :number;

Sample code

m_context.PttStopRecording();

Callback for recording start

A callback will be executed through a delegate function to pass a message when recording is completed.
To stop recording, call StopRecording. The callback for recording start will be returned after the recording is stopped.
Parameter
Type
Description
code
string
0: Recording is completed
filepath
string
Path of stored recording file, which must be accessible and cannot be the fileid

Error codes

Error Code Value
Cause
Suggested Solution
4097
Parameter is empty.
Check whether the API parameters in the code are correct.
4098
Initialization error.
Check whether the device is being used, whether the permissions are normal, and whether the initialization is normal.
4099
Recording is in progress.
Ensure that the SDK recording feature is used at the right time.
4100
Audio data is not captured.
Check whether the mic is working properly.
4101
An error occurred while accessing the file during recording.
Ensure the existence of the file and the validity of the file path.
4102
The mic is not authorized.
Mic permission is required for using the SDK. To add the permission, see the SDK project configuration document for the corresponding engine or platform.
4103
The recording duration is too short.
The recording duration should be in ms and longer than 1,000 ms.
4104
No recording operation is started.
Check whether the recording starting API has been called.

Sample code

m_context.setTMGDelegate(function(eventId, msg){
switch (eventType) {
case ITMG_MAIN_EVENT_TYPE_ENTER_ROOM:
{
// Process
break;
}
...
case ITMG_MAIN_EVNET_TYPE_PTT_RECORD_COMPLETE:
{
// Process
break;
}
}
});



Pausing recording

This API is used to pause recording. If you want to resume recording, call the PttResumeRecording API.

API prototype

PttPauseRecording() : number

Sample code

number ret = m_context.PttPauseRecording();

Resuming recording

This API is used to resume recording.

API prototype

PttResumeRecording() : number;

Sample code

number ret = m_context.PttResumeRecording();

Canceling recording

This API is used to cancel recording. There is no callback after cancellation.

API prototype

PttCancelRecording() : number

Sample code

m_context.PttCancelRecording();

Voice Message Upload, Download, and Playback

API
Description
PttUploadRecordedFile
Uploads an audio file
PttDownloadRecordedFile
Downloads an audio file
PttPlayRecordedFile
Plays back an audio file
PttStopPlayFile
Stops playing back an audio file
PttGetFileSize
Gets the audio file size
PttGetVoiceFileDuration
Gets the audio file duration

Uploading an audio file

This API is used to upload an audio file.

API prototype

PttUploadRecordedFile(filePath: string) : number
Parameter
Type
Description
filePath
String
Path of uploaded audio file, which is a local path.

Sample code

var ret = m_context.PttUploadRecordedFile(filePath);

Callback for audio file upload completion

After the audio file is uploaded, the event message ITMG_MAIN_EVNET_TYPE_PTT_UPLOAD_COMPLETE will be returned, which will be identified in the OnEvent function.\nThe passed parameters include result, file_path, and file_id.
Parameter
Type
Description
result
number
0: Recording is completed
filepath
string
Path of stored recording file
fileid
string
File URL

Error codes

Error Code Value
Cause
Suggested Solution
8193
An error occurred while accessing the file during upload.
Ensure the existence of the file and the validity of the file path.
8194
Signature verification failed.
Check whether the authentication key is correct and whether the voice message and speech-to-text feature is initialized.
8195
A network error occurred.
Check whether the device can access the internet.
8196
The network failed while getting the upload parameters.
Check whether the authentication is correct and whether the device can access the internet.
8197
The packet returned during the process of getting the upload parameters is empty.
Check whether the authentication is correct and whether the device network can normally access the internet.
8198
Failed to decode the packet returned during the process of getting the upload parameters.
Check whether the authentication is correct and whether the device can access the internet.
8200
No appinfo is set.
Check whether the apply API is called or whether the input parameters are empty.

Sample code

m_context.setTMGDelegate(function(eventId, msg){
switch (eventType) {
case ITMG_MAIN_EVENT_TYPE_ENTER_ROOM:
{
// Process
break;
}
...
case ITMG_MAIN_EVNET_TYPE_PTT_UPLOAD_COMPLETE:
{
// Process
break;
}
}
});

Downloading the audio file

This API is used to download an audio file.

API prototype

PttDownloadRecordedFile(fileId: string, filePath: string) : number
Parameter
Type
Description
fileId
string
File URL
filePath
string
Local path of saved file, which must be accessible and cannot be the fileid

Sample code

var ret = m_context.PttDownloadRecordedFile(fileID,filePath);

Callback for audio file download completion

After the audio file is downloaded, the event message ITMG_MAIN_EVNET_TYPE_PTT_DOWNLOAD_COMPLETE will be returned, which will be identified in the OnEvent function.\nThe passed parameters include result, file_path, and file_id.
Parameter
Type
Description
result
number
0: Download is completed
filepath
string
Path of stored recording file
fileid
string
URL of recording file, which will be retained on the server for 90 days.

Error codes

Error Code Value
Cause
Suggested Solution
12289
An error occurred while accessing the file during download.
Check whether the file path is valid.
12290
Signature verification failed.
Check whether the authentication key is correct and whether the voice message and speech-to-text feature is initialized.
12291
Network storage system exception.
The server failed to get the audio file. Check whether the API parameter fileid is correct, whether the network is normal, and whether the file exists in COS.
12292
Server file system error.
Check whether the device can access the internet and whether the file exists on the server.
12293
The HTTP network failed during the process of getting the download parameters.
Check whether the device can access the internet.
12294
The packet returned during the process of getting the download parameters is empty.
Check whether the device can access the internet.
12295
Failed to decode the packet returned during the process of getting the download parameters.
Check whether the device can access the internet.
12297
No appinfo is set.
Check whether the authentication key is correct and whether the voice message and speech-to-text feature is initialized.

Sample code

m_context.setTMGDelegate(function(eventId, msg){
switch (eventType) {
case ITMG_MAIN_EVENT_TYPE_ENTER_ROOM:
{
// Process
break;
}
}
});

Playing back audio

This API is used to play back audio.

API prototype

PttPlayRecordedFile(filePath: string, voiceType: ITMG_VOICE_TYPE) : number
Parameter
Type
Description
filePath
string
Local audio file path
voicetype
ITMG_VOICE_TYPE
Voice changer type. For more information, see Voice Changing.

Error codes

Error Code Value
Cause
Suggested Solution
20485
Playback is not started.
Ensure the existence of the file and the validity of the file path.

Sample code

m_context.PlayRecordedFile(filePath);

Callback for audio playback

After the audio is played back, the event message ITMG_MAIN_EVNET_TYPE_PTT_PLAY_COMPLETE will be returned, which will be identified in the OnEvent function.\nThe passed parameter includes result and file_path.
Parameter
Type
Description
code
number
0: Playback is completed
filepath
string
Path of stored recording file

Error codes

Error Code Value
Cause
Suggested Solution
20481
Initialization error.
Check whether the device is being used, whether the permissions are normal, and whether the initialization is normal.
20482
During playback, the client tried to interrupt and play back the next one but failed (which should succeed normally).
Check whether the code logic is correct.
20483
Parameter is empty.
Check whether the API parameters in the code are correct.
20484
Internal error.
An error occurred while initializing the player. This error code is generally caused by failure in decoding, and the error should be located with the aid of logs.

Sample code

m_context.setTMGDelegate(function(eventId, msg){
switch (eventType) {
case ITMG_MAIN_EVNET_TYPE_PTT_PLAY_COMPLETE:
{
// Process
break;
}
}
});

Stopping audio playback

This API is used to stop audio playback. There will be a callback for playback completion when the playback stops.

API prototype

PttStopPlayFile() : number

Sample code

m_context.PttStopPlayFile();

Getting audio file size

This API is used to get the size of an audio file.

API prototype

PttGetFileSize(filePath: string) : number
Parameter
Type
Description
filePath
string
Path of audio file, which is a local path

Sample code

m_context.PttGetFileSize(filePath);

Getting audio file duration

This API is used to get the duration of an audio file in milliseconds.

API prototype

PttGetVoiceFileDuration(filePath: string) : number
Parameter
Type
Description
filePath
string
Path of audio file, which is a local path

Sample code

number fileDuration = m_context.PttGetVoiceFileDuration(filePath);

Fast Recording-to-Text Conversion

Translating audio file into text in specified language

This API can specify a language for recognition or translate the information recognized in speech into a specified language and return the translation.
Note:
Translation incurs additional fees. For more information, see Purchase Guide.

API prototype

PttSpeechToText(fileID: string, speechLanguage: string, translateLanguage: string) : number
Parameter
Type
Description
fileID
string
URL of audio file, which will be retained on the server for 90 days
speechLanguage
string
The language in which the audio file is to be converted to text. For parameters, see Language Parameter Reference List.
translatelanguage
string
The language in which the audio file is to be translated to text. For parameters, see Language Parameter Reference List.

Sample code

m_context.PttSpeechToText(filePath,"cmn-Hans-CN","cmn-Hans-CN");

Callback for recognition

After the specified audio file is converted to text, the event message ITMG_MAIN_EVNET_TYPE_PTT_SPEECH2TEXT_COMPLETE will be returned, which will be identified in the OnEvent function.\nThe passed parameters include result, file_path and text (recognized text).
Parameter
Type
Description
result
number
0: Recording is completed
fileid
string
URL of recording file, which will be retained on the server for 90 days
text
string
Converted text

Error codes

Error Code Value
Cause
Suggested Solution
32769
An internal error occurred.
Analyze logs, get the actual error code returned from the backend to the client, and ask backend personnel for assistance.
32770
Network failed.
Check whether the device can access the internet.
32772
Failed to decode the returned packet.
Analyze logs, get the actual error code returned from the backend to the client, and ask backend personnel for assistance.
32774
No appinfo is set.
Check whether the authentication key is correct and whether the voice messaging and speech-to-text feature is initialized.
32776
authbuffer check failed.
Check whether authbuffer is correct.
32784
Incorrect speech-to-text conversion parameter.
Check whether the API parameter fileid in the code is empty.
32785
Speech-to-text translation returned an error.
Error with the backend of voice messaging and speech-to-text feature. Analyze logs, get the actual error code returned from the backend to the client, and ask backend personnel for assistance.
32787
Speech-to-text conversion succeeded, but the text translation service was not activated.
Activate the text translation service in the console.
32788
Speech-to-text conversion succeeded, but the language parameter of the text translation service was invalid.
Check the parameter passed in.

Sample code

m_context.setTMGDelegate(function(eventId, msg){
switch (eventType) {
case ITMG_MAIN_EVENT_TYPE_ENTER_ROOM:
{
// Process
break;
}
...
case ITMG_MAIN_EVNET_TYPE_PTT_SPEECH2TEXT_COMPLETE:
{
// Process
break;
}
});

Voice Message Volume Level APIs

API
Description
PttGetMicLevel
Gets real-time mic volume level
PttSetMicVolume
Sets recording volume level
PttGetMicVolume
Gets recording volume level
PttGetSpeakerLevel
Gets real-time speaker volume level
PttSetSpeakerVolume
Sets playback volume
PttGetSpeakerVolume
Gets playback volume level

Getting the real-time mic volume of voice message

This API is used to get the real-time mic volume. A number-type value will be returned. Value range: 0–200.

API prototype

PttGetMicLevel():number

Sample code

m_context.PttGetMicLevel();

Setting the recording volume of voice message

This API is used to set the recording volume of voice message. Value range: 0-200.

API prototype

PttSetMicVolume(vol:number) :number
Parameter
Type
Description
vol
number
Value range: 0–200. Default value: 100. 0 indicates that the audio is mute, while 100 indicates that the volume level remains unchanged.

Sample code

m_context.PttSetMicVolume(vol);

Getting the recording volume of voice message

This API is used to get the recording volume of voice message. A number-type value will be returned. Value range: 0–200.

API prototype

PttGetMicVolume() : number

Sample code

m_context.PttGetMicVolume();

Getting the real-time speaker volume of voice message

This API is used to get the real-time speaker volume. A number-type value will be returned. Value range: 0-200.

API prototype

PttGetSpeakerLevel() : number;

Sample code

m_context.PttGetSpeakerLevel();

Setting the playback volume of voice message

This API is used to set the playback volume of voice message. Value range: 0-200.

API prototype

PttSetSpeakerVolume(vol: number) : number

Sample code

m_context.PttSetSpeakerVolume(100);

Getting the playback volume of voice message

This API is used to get the playback volume of voice message. A number-type value will be returned. Value range: 0-200.

API prototype

PttGetSpeakerVolume() : number

Sample code

m_context.PttGetSpeakerVolume();

Advanced APIs

Getting version number

This API is used to get the SDK version number for analysis.

API prototype

GetSDKVersion() :string

Sample code

string sdkVersion = m_context.GetSDKVersion();

Setting log printing level

This API is used to set the level of logs to be printed, and needs to be called before the initialization. It is recommended to keep the default level.

API prototype

SetLogLevel(level: number) : number

Parameter description

Parameter
Type
Description
level
ITMG_LOG_LEVEL
Sets the log level. TMG_LOG_LEVEL_NONE indicates not to log. Default value: TMG_LOG_LEVEL_INFO.
level description:
Value of level
Description
TMG_LOG_LEVEL_NONE
Does not print logs
TMG_LOG_LEVEL_ERROR
Prints error logs (default)
TMG_LOG_LEVEL_INFO
Prints info logs
TMG_LOG_LEVEL_DEBUG
Prints debug logs
TMG_LOG_LEVEL_VERBOSE
Prints verbose logs

Sample code

m_context.SetLogLevel(TMG_LOG_LEVEL_INFO);

Setting the log printing path

This API is used to set the log printing path. The default path is as follows. It needs to be called before Init.
OS
Path
Windows
%appdata%\\GMEGLOBAL\\GME\\ProcessName

API prototype

SetLogPath(logPath: string)
Parameter
Type
Description
logPath
string
Path

Sample code

string logDir = ""// Set a path by yourself
m_context.SetLogPath(logDir);

","recentReleaseTime":"2024-01-18 15:15:48","slate":"[{\"id\":\"g83jEkecLYZjrYW_EzYrH\",\"children\":[{\"text\":\"This document describes how to integrate with and debug GME client APIs for the voice messaging and speech-to-text services for Electron.\"}],\"type\":\"p\"},{\"id\":\"nRrjH1K_GTIM-p-Utm0zw\",\"children\":[{\"text\":\"Key Considerations for Using GME\"}],\"nodeId\":\"key-considerations-for-using-gme\",\"type\":\"h2\"},{\"id\":\"1_AWtKSmRV15MY2X2coNj\",\"children\":[{\"text\":\"GME provides the real-time voice service and voice messaging and speech-to-text services, which all depend on core APIs such as \"},{\"code\":1,\"text\":\"Init\"},{\"text\":\" and \"},{\"code\":1,\"text\":\"Poll\"},{\"text\":\".\"}],\"type\":\"p\"},{\"id\":\"2TuXZhLEn0vEA5bp4sQfY\",\"children\":[{\"text\":\"Notes\"}],\"nodeId\":\"notes\",\"type\":\"h4\"},{\"id\":\"Mabk5g0pcjxmmepT6W3xJ\",\"children\":[{\"text\":\"You have created a GME application and obtained the SDK \"},{\"code\":1,\"text\":\"AppID\"},{\"text\":\" and key. For more information, see \"},{\"id\":\"hYesecjw4eP58aVVc0zYe\",\"children\":[{\"text\":\"Activating Services\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://intl.cloud.tencent.com/document/product/607/10782\",\"props\":{\"type\":\"link\",\"url\":\"https://intl.cloud.tencent.com/document/product/607/10782\"},\"type\":\"ref\"},{\"text\":\".\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"ZtrTixr8QCUYQ7jef7yLt\",\"children\":[{\"text\":\"You have activated \"},{\"b\":1,\"text\":\"GME real-time voice service and voice messaging and speech-to-text services\"},{\"text\":\". For more information, see \"},{\"id\":\"wjyAO6L5xhrLwNVw8NcNl\",\"children\":[{\"text\":\"Activating Services\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://intl.cloud.tencent.com/document/product/607/10782\",\"props\":{\"type\":\"link\",\"url\":\"https://intl.cloud.tencent.com/document/product/607/10782\"},\"type\":\"ref\"},{\"text\":\".\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"GWTQ47frakFmiDqxBHdL4\",\"children\":[{\"text\":\"Configure your project before using GME; otherwise, the SDK will not take effect.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"ukfzAHz37NPaNqanx6q2t\",\"children\":[{\"text\":\"After a GME API is called successfully, \"},{\"code\":1,\"text\":\"GmeError.AV_OK\"},{\"text\":\" will be returned with the value being \"},{\"code\":1,\"text\":\"0\"},{\"text\":\".\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"wwHywWKkirlIg4PYtv9gQ\",\"children\":[{\"text\":\"GME APIs should be called in the same thread.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"5xPEfGhv3IvATyw7F6hyB\",\"children\":[{\"text\":\"The \"},{\"code\":1,\"text\":\"Poll\"},{\"text\":\" API should be called periodically for GME to trigger event callbacks.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"MDR1bj3w9yffpmWIo0emn\",\"children\":[{\"text\":\"For detailed error codes, see \"},{\"type\":\"ref\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/15173?from_cn_redirect=1\"},\"children\":[{\"text\":\"Error Codes\"}],\"id\":\"RMoKFDGd06j22sl2fq3hG\"},{\"text\":\".\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"QbiJr2IeuifELniUuIhgk\",\"children\":[{\"id\":\"cwLIbgJYME4aOJt5GU0jP\",\"children\":[{\"b\":1,\"color\":\"#04C8DC\",\"text\":\"Note: \"}],\"type\":\"p\"},{\"id\":\"H9TL3GRRIj3Q7eunmKu6W\",\"children\":[{\"text\":\"There is a default call rate limit for speech-to-text APIs. For more information on how calls are billed within the limit, see \"},{\"id\":\"yNJ_UH39mW-cwc2otDQ9E\",\"children\":[{\"text\":\"Purchase Guide\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://intl.cloud.tencent.com/document/product/607/50009\",\"props\":{\"type\":\"link\",\"url\":\"https://intl.cloud.tencent.com/document/product/607/50009\"},\"type\":\"ref\"},{\"text\":\". If you want to increase the limit or learn more about how excessive calls are billed, \"},{\"id\":\"9jiU9ZiHxNVsYsWgUDb2N\",\"children\":[{\"text\":\"submit a ticket\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://console.tencentcloud.com/workorder/category?level1_id=438&level2_id=445&source=0&data_title=%E6%B8%B8%E6%88%8F%E5%A4%9A%E5%AA%92%E4%BD%93%E5%BC%95%E6%93%8EGME&step=1\",\"props\":{\"type\":\"link\",\"url\":\"https://console.tencentcloud.com/workorder/category?level1_id=438&level2_id=445&source=0&data_title=%E6%B8%B8%E6%88%8F%E5%A4%9A%E5%AA%92%E4%BD%93%E5%BC%95%E6%93%8EGME&step=1\"},\"type\":\"ref\"},{\"text\":\".\"}],\"type\":\"p\"},{\"id\":\"khIltiHNJwmouIw4ASt6y\",\"children\":[{\"text\":\"Non-streaming speech-to-text API \"},{\"b\":1,\"text\":\"PttSpeechToText()\"},{\"text\":\": There can be up to 10 concurrent requests per account.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"mLURTQyysTzh5iOAg7ir8\",\"children\":[{\"text\":\"Streaming speech-to-text API \"},{\"b\":1,\"text\":\"PttStartRecordingWithStreamingRecognition()\"},{\"text\":\": There can be up to 50 concurrent requests per account.\"}],\"start\":false,\"type\":\"uli\"}],\"hintType\":\"alert\",\"type\":\"hint\"},{\"id\":\"XB0i7uU7QBP_oZbTrqC4C\",\"children\":[{\"text\":\"Integrating the SDK\"}],\"nodeId\":\"integrating-the-sdk\",\"type\":\"h2\"},{\"id\":\"chn7TLGshN-Wfzbni6kjF\",\"children\":[{\"text\":\"Directions\"}],\"nodeId\":\"directions\",\"type\":\"h3\"},{\"id\":\"sCDmte9YYKGyaBtOD5lbB\",\"children\":[{\"text\":\"Key processes involved in SDK integration are as follows:\"}],\"type\":\"p\"},{\"type\":\"p\",\"children\":[{\"text\":\"\"},{\"id\":\"ag25G9iEM95YglryQT_xA\",\"alt\":\"\",\"children\":[{\"text\":\"\"}],\"inline\":true,\"type\":\"image\",\"url\":\"https://cloudcache.intl.tencent-cloud.com/cms/backend-cms/2f896e21b35911ee9fd6525400bb593a.jpeg\",\"naturalSize\":[1560,1030],\"size\":[802,529]},{\"text\":\"\"}],\"id\":\"2ZunqEJ6gjFJxjLWghX0b\"},{\"type\":\"oli\",\"children\":[{\"text\":\"\"},{\"type\":\"ref\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/54040?!editLang=en&!preview#Init\"},\"children\":[{\"text\":\"Initializing GME, API: Init\"}],\"id\":\"zwA8lqJfKnEA9qVpojs3U\"},{\"text\":\"\"}],\"id\":\"fmYoRXFn7u82EU-l1s1ka\"},{\"type\":\"oli\",\"children\":[{\"text\":\"\"},{\"type\":\"ref\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/54040?!editLang=en&!preview#Poll\"},\"children\":[{\"text\":\"Calling Poll periodically to trigger event callbacks, API: Poll\"}],\"id\":\"TdFHH-GdEaQj5R9of2QZ7\"},{\"text\":\"\"}],\"id\":\"kpouYM7esnhtJGW4WONHL\"},{\"type\":\"oli\",\"children\":[{\"text\":\"\"},{\"type\":\"ref\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/54040?!editLang=en&!preview#ApplyPtt\"},\"children\":[{\"text\":\"Initializing authentication, API: ApplyPTTAuthbuffer\"}],\"id\":\"9weXlSUisKjo3Dvn99MXR\"},{\"text\":\"\"}],\"id\":\"dkmWlsiXQ4WpaFiiu56DL\"},{\"type\":\"oli\",\"children\":[{\"text\":\"\"},{\"type\":\"ref\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/54040?!editLang=en&!preview#StartRWSR\"},\"children\":[{\"text\":\"Starting streaming speech recognition, API: PttStartRecordingWithStreamingRecognition\"}],\"id\":\"cqjfkuGJm0D1Fv8J3Nquh\"},{\"text\":\"\"}],\"id\":\"H1-RF-VvFAlKDlZo0sGux\"},{\"type\":\"oli\",\"children\":[{\"text\":\"\"},{\"type\":\"ref\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/54040?!editLang=en&!preview#Stop\"},\"children\":[{\"text\":\"Stopping recording, API: PttStopRecording\"}],\"id\":\"O59uzYijzmu2WbrxqxVSl\"},{\"text\":\"\"}],\"id\":\"g80x5YW7x0i4nU2yJqF29\"},{\"type\":\"oli\",\"children\":[{\"text\":\"\"},{\"type\":\"ref\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/54040?!editLang=en&!preview#UnInit\"},\"children\":[{\"text\":\"Uninitializing GME, API: UnInit\"}],\"id\":\"eyntBDS17NMgBz2IMV0tq\"},{\"text\":\"\"}],\"id\":\"YR48AQEWAjn-lQ94R58Qr\"},{\"id\":\"wXOzZzWIv3UppfLnYCDWw\",\"children\":[{\"text\":\"TS class\"}],\"nodeId\":\"ts-class\",\"type\":\"h3\"},{\"id\":\"PsmSQ2TvUC-g97_WgVnu8\",\"children\":[{\"id\":\"CG4pJMhhdySy7JpGc0BAZ\",\"children\":[{\"text\":\"`GmeContext`: GME business implementation APIs\"}],\"type\":\"code-line\"},{\"id\":\"ghVJBIQk8mQSc4V6I5kze\",\"children\":[{\"text\":\"`GmeError`: GME error code definition class\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"QAoPutr__-gsxok2Z3ak3\",\"children\":[{\"text\":\"Core APIs\"}],\"nodeId\":\"core-apis\",\"type\":\"h2\"},{\"id\":\"EcOsFSKtqaDjMvKmjLnq8\",\"children\":[{\"id\":\"6W-bH82drozZIGKufvAYn\",\"children\":[{\"id\":\"sHVpXmfKJCl8fRLqxSHK3\",\"children\":[{\"id\":\"fFYCR7SlR_n4o6RGonYYh\",\"children\":[{\"text\":\"API\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"IEtvDvVFKjsS8hJdqidrS\",\"children\":[{\"id\":\"auwxKq94gn-R-BDiCKFxd\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"wqsHemXoGgbXGqEX9Etxs\",\"children\":[{\"id\":\"vnhosSpVBpfPjOMB7s9zJ\",\"children\":[{\"id\":\"7_XDGUWxrxW__ruHeO5kI\",\"children\":[{\"id\":\"S5Za8nC9hWk3MUH78Dzu0\",\"children\":[{\"text\":\"Init\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"qZvRy9kweLia253YX3uUm\",\"children\":[{\"id\":\"02jxrMNzr4v8Stm-4pLrx\",\"children\":[{\"id\":\"bERFJ7b6O9vidgsEz9L3d\",\"children\":[{\"text\":\"Initializes GME\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"xQphdBYHhw_NKDOpTqHT5\",\"children\":[{\"id\":\"cu10pkxAhXS64BtOABumZ\",\"children\":[{\"id\":\"gp1FLEX8mCVVSriAFCUsW\",\"children\":[{\"id\":\"6Y1F6G6zP5QCDyIfkYYa0\",\"children\":[{\"text\":\"Poll\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"HlZ-6AF3ysG-tL_ea8yq4\",\"children\":[{\"id\":\"vWNqbkEiG328pj10yHfEE\",\"children\":[{\"id\":\"a6QzpmTbeetWs6EfsFsc5\",\"children\":[{\"text\":\"Triggers event callback\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"waJKn7tmI-Ui-9UtaMI0L\",\"children\":[{\"id\":\"o4XJ1u4LKphabfpP3P47W\",\"children\":[{\"id\":\"vR8pCD1kyWlw3EkzJCIVc\",\"children\":[{\"id\":\"0LB4rWV4rsI92E6y43LHg\",\"children\":[{\"text\":\"Uninit\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"kuVFprpwGHxxW9Zyru04V\",\"children\":[{\"id\":\"3dJ3v2wmSjQT4KZxuzGmw\",\"children\":[{\"id\":\"B-Nrcro_i1aK8xyVMFcSM\",\"children\":[{\"text\":\"Uninitializes GME\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[28,72],\"widthMode\":\"percentage\"},{\"id\":\"9TJYkQt78Z1sMdoDaNz_5\",\"children\":[{\"text\":\"Importing the GME module\"}],\"nodeId\":\"importing-the-gme-module\",\"type\":\"h3\"},{\"id\":\"_KVp_H1Nvp-fk__eqZTMO\",\"children\":[{\"id\":\"hdwvvd91bZazoiTCBA7Fz\",\"children\":[{\"text\":\"const { GmeContext } = require('gme-electron-sdk');\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"D59VC2kzvwjUq8HRXxC8N\",\"children\":[{\"text\":\"Getting an instance\"}],\"nodeId\":\"getting-an-instance\",\"type\":\"h3\"},{\"id\":\"5VcXQDOFMEducmcM7MPo-\",\"children\":[{\"text\":\"var m_context = new GmeContext();\"}],\"type\":\"p\"},{\"id\":\"4b3DgYn6JuPBoIonp8myZ\",\"children\":[{\"text\":\"Initializing the SDK\"}],\"nodeId\":\"initializing-the-sdk\",\"type\":\"h3\"},{\"id\":\"kc7JBaoknOLPfWGuauTFX\",\"children\":[{\"b\":1,\"text\":\"You need to initialize the SDK through the \"},{\"b\":1,\"code\":1,\"text\":\"Init\"},{\"b\":1,\"text\":\" API\"},{\"text\":\" before you can use the real-time voice, voice message, and speech-to-text services. The \"},{\"code\":1,\"text\":\"Init\"},{\"text\":\" API must be called in the same thread as other APIs. We recommend you call all APIs in the main thread.\"}],\"nodeId\":\"Init\",\"type\":\"p\"},{\"id\":\"sJ0mW704IPmmy2Urk-pDX\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype\",\"type\":\"h4\"},{\"id\":\"EKV2vTk9aC3lCfV9VlOOL\",\"children\":[{\"id\":\"-qj0H887OIjAo8Zq3Krea\",\"children\":[{\"text\":\"Init(appid: string, openid: string): number;\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"mAllx-3awTuVo1y-wUU2q\",\"children\":[{\"id\":\"mZdVkH9d6f6yFDrhncjGm\",\"children\":[{\"id\":\"9RwKeiG6losMRXzJz_kaF\",\"children\":[{\"id\":\"T9UlQZqQbrBrYNnkhbaUX\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"o-_fVwDnVmC1mQ3EMHcB9\",\"children\":[{\"id\":\"biU4m-xPDg5pNyNGZHdED\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"U8NnuEMqObwma21J8zyIq\",\"children\":[{\"id\":\"iX_DT42lUNzFD7iCGba9E\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"RL7Ozwggpl_rpMutNe769\",\"children\":[{\"id\":\"JH7wfJlH-OdANSRDWzzx2\",\"children\":[{\"id\":\"rX3_Ijr9u_mSjWwZLog8h\",\"children\":[{\"id\":\"U3ZfZXc_5NYrwKGvDA8LR\",\"children\":[{\"text\":\"sdkAppId\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"cviosyiKBMZN2sS1jcp16\",\"children\":[{\"id\":\"7Ik1Fvq6xqOjskKqnt-v7\",\"children\":[{\"id\":\"u7vCOLIBBU_yoKXj17d5H\",\"children\":[{\"text\":\"string\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"SgtesOhAoPcQfcQxRnSdm\",\"children\":[{\"id\":\"xoFRRzhXJmygFWH4ywD1O\",\"children\":[{\"id\":\"-dpHhVMzi77cgxVfLU7d4\",\"children\":[{\"code\":1,\"text\":\"AppID\"},{\"text\":\" provided in the \"},{\"id\":\"fIsggegib23FN1ncIotGJ\",\"children\":[{\"text\":\"GME console\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://console.tencentcloud.com/gamegme\",\"props\":{\"type\":\"link\",\"url\":\"https://console.tencentcloud.com/gamegme\"},\"type\":\"ref\"},{\"text\":\", which can be obtained as instructed in \"},{\"id\":\"8vktq2qGEHJ6s6gRtS_60\",\"children\":[{\"text\":\"Activating Services\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://intl.cloud.tencent.com/document/product/607/10782#.E9.87.8D.E7.82.B9.E5.8F.82.E6.95.B0\",\"props\":{\"type\":\"link\",\"url\":\"https://intl.cloud.tencent.com/document/product/607/10782#.E9.87.8D.E7.82.B9.E5.8F.82.E6.95.B0\"},\"type\":\"ref\"},{\"text\":\".\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"8QufNGwdDmDo__2YO_Gx1\",\"children\":[{\"id\":\"hJ5wR5cX2K3dMTiqUKgUy\",\"children\":[{\"id\":\"OBXIHnFpPWFhKBmw43Bys\",\"children\":[{\"id\":\"TKBooPe-0HBKAXUDr2z0K\",\"children\":[{\"text\":\"openID\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"BbYRMVnbzkTBZjW9givIA\",\"children\":[{\"id\":\"nbsyE-dx4AHiD3crY0Lsx\",\"children\":[{\"id\":\"kwR8v4bCptktFhIPNi9qq\",\"children\":[{\"text\":\"string\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Yne4sPXX66o_9DAfhN-sy\",\"children\":[{\"id\":\"lYh6AU7NLngeBJ0ZF3g6s\",\"children\":[{\"id\":\"E8--2r-Gf9IZlxZu427U3\",\"children\":[{\"code\":1,\"text\":\"openID\"},{\"text\":\" can only be in \"},{\"code\":1,\"text\":\"Int64\"},{\"text\":\" type, which is passed in after being converted to a string. You can customize its rules, and it must be unique in the application. To pass in \"},{\"code\":1,\"text\":\"openID\"},{\"text\":\" as a string, \"},{\"id\":\"on8yd3Z8Ngpoi0dzpx8Hb\",\"children\":[{\"text\":\"submit a ticket\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://console.tencentcloud.com/workorder/category?level1_id=438&level2_id=445&source=0&data_title=%E6%B8%B8%E6%88%8F%E5%A4%9A%E5%AA%92%E4%BD%93%E5%BC%95%E6%93%8EGME&step=1\",\"props\":{\"type\":\"link\",\"url\":\"https://console.tencentcloud.com/workorder/category?level1_id=438&level2_id=445&source=0&data_title=%E6%B8%B8%E6%88%8F%E5%A4%9A%E5%AA%92%E4%BD%93%E5%BC%95%E6%93%8EGME&step=1\"},\"type\":\"ref\"},{\"text\":\" for application.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[12,10,78],\"widthMode\":\"percentage\"},{\"id\":\"RqTEY5HQ2D837pwMtu7Ol\",\"children\":[{\"text\":\"Returned values\"}],\"nodeId\":\"returned-values\",\"type\":\"h4\"},{\"id\":\"RAqB2cN57t0NecnWopN-v\",\"children\":[{\"id\":\"oJhsvAIs9iMCAJc5QhZ74\",\"children\":[{\"id\":\"70k0T3DZ-kcSIxN7PuXrD\",\"children\":[{\"id\":\"uzX3MCHWYw_y8ZKr1AY7W\",\"children\":[{\"text\":\"Returned Value\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"HnzDdTFBkpfQo9P3-5ESy\",\"children\":[{\"id\":\"3xpN-3JhCmleIMleYq-78\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"y3KpEA6y0-xM_iiEcpvox\",\"children\":[{\"id\":\"hcGGaNlLRBJYahQ3iNobP\",\"children\":[{\"id\":\"31pIO4B02Y_LCc2mmayTy\",\"children\":[{\"id\":\"W9TdsTuoN7LOxl2YYfXIe\",\"children\":[{\"text\":\"GmeError.AV_OK= 0\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"mRMOwmr0_CSxFJrAfEs5U\",\"children\":[{\"id\":\"iGrT9INV6flcGimoz5LMh\",\"children\":[{\"id\":\"IuELCO5Bzd9MGbxLQEOFp\",\"children\":[{\"text\":\"Initialized the SDK successfully.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"E55XZKKVYT-LGqm5y-zKi\",\"children\":[{\"id\":\"JU1dKiuxwh1cj9xn_54GW\",\"children\":[{\"id\":\"whddrnLcQjRXReCWMbSgH\",\"children\":[{\"id\":\"ZaLAMjj7JO-tddYB-QFuB\",\"children\":[{\"text\":\"AV_ERR_SDK_NOT_FULL_UPDATE=7015\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"0JvHCGY-VoBISojY1AQFA\",\"children\":[{\"id\":\"O9X3TX4Har1D59Mh-hYp6\",\"children\":[{\"id\":\"whBngy385IBvAd4_yGa8j\",\"children\":[{\"text\":\"Checks whether the SDK file is complete. It is recommended to delete it and then import the SDK again.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[36,64],\"widthMode\":\"percentage\"},{\"id\":\"2D5SqThBixh1FPYGFzzuv\",\"children\":[{\"id\":\"TZFmrGWLme28LIxvTAzyr\",\"children\":[{\"b\":1,\"color\":\"#04C8DC\",\"text\":\"Notes on 7015 error code\"}],\"type\":\"p\"},{\"id\":\"RrX9R_WLrAhdfrf9k6Clk\",\"children\":[{\"text\":\"The 7015 error code is judged by MD5. If this error is reported during integration, please check the integrity and version of the SDK file as prompted.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"MtLFPRorP6qIQ5ZiUcYPv\",\"children\":[{\"text\":\"The returned value \"},{\"code\":1,\"text\":\"AV_ERR_SDK_NOT_FULL_UPDATE\"},{\"text\":\" is \"},{\"b\":1,\"text\":\"only a reminder\"},{\"text\":\" but will not cause an initialization failure.\"}],\"start\":false,\"type\":\"uli\"}],\"hintType\":\"alert\",\"type\":\"hint\"},{\"id\":\"wOO9g7tmblm6feg9r0yBs\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code\",\"type\":\"h4\"},{\"id\":\"buBhQW7tWnzCwfygRdkXd\",\"children\":[{\"id\":\"ezc1af_t6iwyVqlMCNBID\",\"children\":[{\"text\":\"number ret = m_context.Init(sdkAppId, openID);\"}],\"type\":\"code-line\"},{\"id\":\"jVeApYlPOk822Zh9WE_Nc\",\"children\":[{\"text\":\"// Determine whether the initialization is successful by the returned value\"}],\"type\":\"code-line\"},{\"id\":\"HbSqNwwoVlZCjTKxMKr32\",\"children\":[{\"text\":\"if (ret != GmeError.AV_OK)\"}],\"type\":\"code-line\"},{\"id\":\"78fVgG3pbV838cYaVSD8D\",\"children\":[{\"text\":\"{\"}],\"type\":\"code-line\"},{\"id\":\"XRIIGqegljlGCkdMa7lR1\",\"children\":[{\"text\":\" console.log(\\\"Failed to initialize the SDK:\\\");\"}],\"type\":\"code-line\"},{\"id\":\"b9vUJoZRLusYKmPlhB4EN\",\"children\":[{\"text\":\" return;\"}],\"type\":\"code-line\"},{\"id\":\"xLv3EJnnOutIKlJHQdXCo\",\"children\":[{\"text\":\"}\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"wk2Vt2tOi-dQ9hc3BSeBo\",\"children\":[{\"text\":\"Triggering event callback\"}],\"nodeId\":\"triggering-event-callback\",\"type\":\"h3\"},{\"id\":\"m19UNNDMIApg9lbG7RNza\",\"children\":[{\"text\":\"Event callbacks can be triggered by calling the \"},{\"code\":1,\"text\":\"Poll\"},{\"text\":\" API in the timer. The \"},{\"code\":1,\"text\":\"Poll\"},{\"text\":\" API is GME's message pump and should be called periodically for GME to trigger event callbacks; otherwise, the entire SDK service will run abnormally. For more information, see the \"},{\"code\":1,\"text\":\"EnginePollHelper\"},{\"text\":\" file in \"},{\"id\":\"Bjua-Iw9Bmsgf7mXLCV9J\",\"children\":[{\"text\":\"SDK Download Guide\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://intl.cloud.tencent.com/document/product/607/18521\",\"props\":{\"type\":\"link\",\"url\":\"https://intl.cloud.tencent.com/document/product/607/18521\"},\"type\":\"ref\"},{\"text\":\".\"}],\"nodeId\":\"Poll\",\"type\":\"p\"},{\"id\":\"UIoR8FsaAfPzeDhDhIPkE\",\"children\":[{\"id\":\"FKoN_SDHJZCzfFD8DH57n\",\"children\":[{\"b\":1,\"color\":\"#04C8DC\",\"text\":\"Note: \"}],\"type\":\"p\"},{\"id\":\"hLC9-yL6JHA3gbqeK5eBT\",\"children\":[{\"text\":\"The \"},{\"code\":1,\"text\":\"Poll\"},{\"text\":\" API must be called periodically and in the main thread to avoid abnormal API callbacks.\"}],\"type\":\"p\"}],\"hintType\":\"alert\",\"type\":\"hint\"},{\"id\":\"22WUY887-TlHQxBDYt8kd\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype2\",\"type\":\"h4\"},{\"id\":\"KlaNozvPP4nTvbPtwCfka\",\"children\":[{\"id\":\"CRmSvaFGLrmOMScgBNT5p\",\"children\":[{\"text\":\"Poll();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"Bag36f65v3hpLbaPmHXa9\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code2\",\"type\":\"h4\"},{\"id\":\"17khg8seeoE6WVDAiDdtX\",\"children\":[{\"id\":\"H6r1vOuEx64REpo8J0icc\",\"children\":[{\"text\":\"setInterval(function () {\"}],\"type\":\"code-line\"},{\"id\":\"6_n7kNhpvGcm3MkIEYnTE\",\"children\":[{\"text\":\" m_context.Poll();\"}],\"type\":\"code-line\"},{\"id\":\"abNmT7epPZSyWUcF-6qf2\",\"children\":[{\"text\":\" }, 50);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"PgjKxayk_keIkVNnGOWOx\",\"children\":[{\"text\":\"Uninitializing SDK\"}],\"nodeId\":\"uninitializing-sdk\",\"type\":\"h3\"},{\"id\":\"rue5YGDXEgXtYSXjoGF4n\",\"children\":[{\"text\":\"This API is used to uninitialize the SDK to make it uninitialized. \"},{\"b\":1,\"text\":\"If the game business account is bound to \"},{\"b\":1,\"code\":1,\"text\":\"openid\"},{\"b\":1,\"text\":\", switching game account requires uninitializing GME and then using the new \"},{\"b\":1,\"code\":1,\"text\":\"openid\"},{\"b\":1,\"text\":\" to initialize again.\"}],\"nodeId\":\"UnInit\",\"type\":\"p\"},{\"id\":\"qzFUT55MoHsCwtieCwVFj\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype3\",\"type\":\"h4\"},{\"id\":\"fl7Quud4-UNtmq-B-cuUQ\",\"children\":[{\"id\":\"qWC7c2bfhsgbOXCRcSbDD\",\"children\":[{\"text\":\"Uninit() : number\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"SHwzg7jtlRsbpE6nXj6wV\",\"children\":[{\"text\":\"Voice Messaging and Speech-to-Text Services\"}],\"nodeId\":\"voice-messaging-and-speech-to-text-services\",\"type\":\"h2\"},{\"id\":\"Sdpzw3yAd9PWluCQTLc-e\",\"children\":[{\"id\":\"stWqcWivRqvlVflfXjSna\",\"children\":[{\"b\":1,\"color\":\"inherit\",\"text\":\"Note: \"}],\"type\":\"p\"},{\"id\":\"t_9VyCsaL6E_6bG7bp3Ut\",\"children\":[{\"text\":\"The speech-to-text service consists of fast recording-to-text conversion and streaming speech-to-text conversion.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"SS-ZPaqEM9-Pvg0ntqgF-\",\"children\":[{\"text\":\"You do not need to enter a voice chat room when using the voice messaging service.\"}],\"start\":false,\"type\":\"uli\"},{\"id\":\"Hn2YORbrEvBg3aMUmT8cq\",\"children\":[{\"text\":\"The maximum recording duration of a voice message is 58 seconds by default, and the minimum recording duration cannot be less than 1 second. If you want to customize the recording duration, for example, to modify the maximum recording duration to 10 seconds, call the \"},{\"code\":1,\"text\":\"SetMaxMessageLength\"},{\"text\":\" API to set it after initialization.\"}],\"start\":false,\"type\":\"uli\"}],\"hintType\":\"info\",\"type\":\"hint\"},{\"id\":\"UWbiVqmSzmqViNfK48MWx\",\"children\":[{\"text\":\"Flowchart for using the voice message service\"}],\"nodeId\":\"flowchart-for-using-the-voice-message-service\",\"type\":\"h3\"},{\"type\":\"p\",\"children\":[{\"text\":\"\"},{\"id\":\"ziry4FZpW9m4nUYJE6Y-6\",\"alt\":\"\",\"children\":[{\"text\":\"\"}],\"inline\":true,\"type\":\"image\",\"url\":\"https://cloudcache.intl.tencent-cloud.com/cms/backend-cms/2f93cb8ab35911ee9fd6525400bb593a.jpeg\",\"naturalSize\":[923,675],\"size\":[800,585]},{\"text\":\"\"}],\"id\":\"F0MLEl114EM7WfJcoZOJ5\"},{\"id\":\"diJQku5uN48SWSakn_gpS\",\"children\":[{\"text\":\"Flowchart for using the speech-to-text service\"}],\"nodeId\":\"flowchart-for-using-the-speech-to-text-service\",\"type\":\"h3\"},{\"type\":\"p\",\"children\":[{\"text\":\"\"},{\"id\":\"UTgzsVBfH1FoWh7b_52Lw\",\"alt\":\"\",\"children\":[{\"text\":\"\"}],\"inline\":true,\"type\":\"image\",\"url\":\"https://cloudcache.intl.tencent-cloud.com/cms/backend-cms/2f9dd21db35911ee9939525400461a83.jpeg\",\"naturalSize\":[1138,1043],\"size\":[801,734]},{\"text\":\"\"}],\"id\":\"gl0km1phCQneq9aphZbH_\"},{\"id\":\"mM8hv2Etc41FfW0aGdE4t\",\"children\":[{\"id\":\"moWbXIQl84yFszTMfpfuY\",\"children\":[{\"id\":\"KPc0zovpNMinQL3mes4ia\",\"children\":[{\"id\":\"5Vlkte67qUlWQ6yaZH4BR\",\"children\":[{\"text\":\"API\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"UcEZ7wh2TnIq_vC99h0Uv\",\"children\":[{\"id\":\"IkG4o4TEX51fpJdUMPNik\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"AFV5AyNjSTaszJy_48Ygg\",\"children\":[{\"id\":\"ZX8m9HvSb-zjKYduHxTn2\",\"children\":[{\"id\":\"DPUasUtJa4Wgb8DzNMM1Y\",\"children\":[{\"id\":\"OuWZkefRGXV-dc_ygbrZh\",\"children\":[{\"text\":\"GenAuthBuffer\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"XYhEJq1gkesYQ8SHIihP3\",\"children\":[{\"id\":\"RSlNzd1Mu2tiZrGZBg59-\",\"children\":[{\"id\":\"x4lOPbgo9n_kYRqHUsDsV\",\"children\":[{\"text\":\"Gets the authentication information\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"CjyOS5dYRHkB5I2Di7nsL\",\"children\":[{\"id\":\"OtRrp_RUYDY4sUEBqbfMj\",\"children\":[{\"id\":\"3iOCu35Y-n-TEEJzNkl5M\",\"children\":[{\"id\":\"cxExVtHsZ6ThqUipqvxZt\",\"children\":[{\"text\":\"SetMaxMessageLength\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"GaqCpF96pTuErlRlYr8RC\",\"children\":[{\"id\":\"sN7L8aT5-LvdKcJ2i6Yd_\",\"children\":[{\"id\":\"p_G1ewYvZ1F7fZC_ukhGg\",\"children\":[{\"text\":\"Specifies the maximum length of voice message\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[35,65],\"widthMode\":\"percentage\"},{\"id\":\"6Jihq8p91M1JFrKBbOMA9\",\"children\":[{\"text\":\"Generating the local authentication key\"}],\"nodeId\":\"generating-the-local-authentication-key\",\"type\":\"h3\"},{\"id\":\"OuTTQvx07E2VnisLR5VO-\",\"children\":[{\"text\":\"Generate \"},{\"code\":1,\"text\":\"AuthBuffer\"},{\"text\":\" for encryption and authentication of relevant features. For release in the production environment, use the backend deployment key as detailed in \"},{\"id\":\"5t07Qw0bLKOFXc_pa_PUq\",\"children\":[{\"text\":\"Authentication Key\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://intl.cloud.tencent.com/document/product/607/12218\",\"props\":{\"type\":\"link\",\"url\":\"https://intl.cloud.tencent.com/document/product/607/12218\"},\"type\":\"ref\"},{\"text\":\". \"}],\"type\":\"p\"},{\"id\":\"ZmdXYVgGlW-fdVYLHXTMU\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype4\",\"type\":\"h4\"},{\"id\":\"JwnzRK2U7Fm8EEusftECJ\",\"children\":[{\"id\":\"oEhHOaQ09O8MSdT-qqWLq\",\"children\":[{\"text\":\"GenAuthBuffer(appId: string,roomId: string, openId:string, appKey: string) :string\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"dpN1a4oSmnwcT1ss3uSSo\",\"children\":[{\"id\":\"rkO2pi8IA38LklJqnlPrd\",\"children\":[{\"id\":\"EXXeiYs_EnPJmL7zCnT3T\",\"children\":[{\"id\":\"lkUO4gFTmtjZcRlMBvgNr\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"7YvKQY0JIUtZN46tPF3Px\",\"children\":[{\"id\":\"_J_wPQ7doo7815E0oFODx\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Hg-1ch06V3ch-CdG1hVwu\",\"children\":[{\"id\":\"fPJf0e4ttut-QSLsb6vE_\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"xeWTXoon6912pKGck_71N\",\"children\":[{\"id\":\"fDaS-JYN1k-0ejmZPAHtc\",\"children\":[{\"id\":\"TIVeta-aPlIxSJVykypxE\",\"children\":[{\"id\":\"0LS4uHuqJH-7TjGI1kJiE\",\"children\":[{\"text\":\"appId\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"3YKf-YoCeynzUVWv0ocT9\",\"children\":[{\"id\":\"1EjTXHEJr5gs0W4LUqqEz\",\"children\":[{\"id\":\"4ALhHaFRYs3XOrmekSz97\",\"children\":[{\"text\":\"string\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"fFcV09L6H6p8rIi6BcPl_\",\"children\":[{\"id\":\"48TWRj9Szx7KvUeF0Weqm\",\"children\":[{\"id\":\"rG3RuIdl4A-JjeI4UoU0-\",\"children\":[{\"code\":1,\"text\":\"AppId\"},{\"text\":\" from the Tencent Cloud console.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"PJ4L54pc6wKZD8DwTKb6a\",\"children\":[{\"id\":\"qV8mxxallvs-48eZQkQ61\",\"children\":[{\"id\":\"lYqe9d-sx5mLKQhqWDWnd\",\"children\":[{\"id\":\"31xG_byMzjZfNeCqC1iV8\",\"children\":[{\"text\":\"roomId\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"H43FvKZ8toWWrw_UmS_Wf\",\"children\":[{\"id\":\"h7cCJj5q1CO-HlKwR5EK3\",\"children\":[{\"id\":\"5xd0omPtJewtN6rURLFqy\",\"children\":[{\"text\":\"string\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"4nxnMUEE-SpwVazug8RXT\",\"children\":[{\"id\":\"wGI478seE1QJuncnMKxUe\",\"children\":[{\"id\":\"b_RkUUnGWo7aqzGQhar66\",\"children\":[{\"text\":\"Enter \"},{\"code\":1,\"text\":\"null\"},{\"text\":\" or an empty string\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"k8NcjNloMK26s6w6WnonI\",\"children\":[{\"id\":\"51HbfjQg-Iss4L1vPmZbc\",\"children\":[{\"id\":\"o6h3VoXoYQXjDyVfrlc7I\",\"children\":[{\"id\":\"-aJHODmyn5TtA_7y_oNVR\",\"children\":[{\"text\":\"openId\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"7x46FJMOUCllDWsc6JM4Z\",\"children\":[{\"id\":\"UNU7NEtkp46FJyZRHkXGn\",\"children\":[{\"id\":\"LcqP6U3sNccl9J9hlEcNu\",\"children\":[{\"text\":\"string\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"N5uM3AWOMGCU8BE8tpHDS\",\"children\":[{\"id\":\"z0IYODgo0xYOLZ3hjTv2o\",\"children\":[{\"id\":\"TUvKEDkbZ4cOZkAbQn8ns\",\"children\":[{\"text\":\"User ID, which is the same as \"},{\"code\":1,\"text\":\"OpenId\"},{\"text\":\" during initialization.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"nwXqwumSevgsPmVOhc8XA\",\"children\":[{\"id\":\"T4iNy8qt3gIKx8I3KFTuF\",\"children\":[{\"id\":\"19Eul3euyj8i3I1Ms4Xsu\",\"children\":[{\"id\":\"rpCeOHYl1K3QHr6NVkOi3\",\"children\":[{\"text\":\"key\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"HPDOvaIm8a6lpjsibSkkH\",\"children\":[{\"id\":\"1aKd4m4KnaW2QhvTVh3Kd\",\"children\":[{\"id\":\"C5FBCtjhzUQSCzcTCSq9s\",\"children\":[{\"text\":\"string\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"WIxr41axWXlJdfn6Sr6J3\",\"children\":[{\"id\":\"dpuJpANI30962WeXXcrWw\",\"children\":[{\"id\":\"DqDjkA8h7-W3ZufQxVQWf\",\"children\":[{\"text\":\"Permission key from the Tencent Cloud \"},{\"id\":\"iL6C3k1FEGahI882uXnxR\",\"children\":[{\"text\":\"console\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://console.tencentcloud.com/gamegme\",\"props\":{\"type\":\"link\",\"url\":\"https://console.tencentcloud.com/gamegme\"},\"type\":\"ref\"},{\"text\":\".\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[17,11,72],\"widthMode\":\"percentage\"},{\"id\":\"6oGHPA6vlHril7pc7kiYq\",\"children\":[{\"text\":\"Application authentication\"}],\"nodeId\":\"application-authentication\",\"type\":\"h3\"},{\"id\":\"uvXFpanfLPcqbBeOBb8UB\",\"children\":[{\"text\":\"After the authentication information is generated, the authentication is assigned to the SDK. \"}],\"type\":\"p\"},{\"id\":\"9yB96rb2RabFKaJOYAp3i\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype5\",\"type\":\"h4\"},{\"id\":\"aDVe7Yn212ccPA3ennlRo\",\"children\":[{\"id\":\"eWKA7VFzAILOMCm3TsuTA\",\"children\":[{\"text\":\"ApplyPTTAuthbuffer(authBuffer: string) :number\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"8SFF3JKLQA2xpGAUAzakj\",\"children\":[{\"id\":\"6SuZC6Qkg_NEHkXMP6jnO\",\"children\":[{\"id\":\"we3FXCbYc3hqXk21nUAFN\",\"children\":[{\"id\":\"f4drEQnCjR_6JPZuoK9fV\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"PytABjWX65nYDlyuLVxrB\",\"children\":[{\"id\":\"0qx0-ylb5pF1vuMVoCMp6\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"bb0N6c4v3p6jTKtFnX8lY\",\"children\":[{\"id\":\"94kid8SG7mZKgUPh2_K49\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"Z-dOPmj1UlFj0aXVQmO_U\",\"children\":[{\"id\":\"R0bg535oqfufFTrrU34dn\",\"children\":[{\"id\":\"4Y1PSbZRebcmGMQugdXYy\",\"children\":[{\"id\":\"ekO70Rtkx4xTxvyTXnMJN\",\"children\":[{\"text\":\"authBuffer\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"gw3_RI88rnfeHg7ksuprb\",\"children\":[{\"id\":\"fmOYDgQSoeoxJKPInVKuk\",\"children\":[{\"id\":\"QB_CHybaSuHls0JIUPcj5\",\"children\":[{\"text\":\"string\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"bw85otplaUN4lh6eIJnoq\",\"children\":[{\"id\":\"Wgl2Ho5HP3N3QYKyvf3FP\",\"children\":[{\"id\":\"5BQCC5BvlFtsRIYtS3NJ9\",\"children\":[{\"text\":\"Authentication information\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[27,18,55],\"widthMode\":\"percentage\"},{\"id\":\"ofm-WFO97rFNOZpIg5YxG\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code3\",\"type\":\"h4\"},{\"id\":\"0eS0T_JerccZXkKfH5jKx\",\"children\":[{\"id\":\"mSrs4BAGinsqjSTuOi4Th\",\"children\":[{\"text\":\"var authBuffer = m_context.GetAuthBuffer(UserConfig.GetAppID(), UserConfig.GetUserID(), null,UserConfig.GetAuthKey());\"}],\"type\":\"code-line\"},{\"id\":\"rEyTLCyoDISR7X8SsJ0Nn\",\"children\":[{\"text\":\"m_context.ApplyPTTAuthbuffer(authBuffer);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"VOzd22_Qy8FU1usBUiQnp\",\"children\":[{\"text\":\"Specifying the maximum duration of voice message\"}],\"nodeId\":\"specifying-the-maximum-duration-of-voice-message\",\"type\":\"h3\"},{\"id\":\"zBX1gLigNAR5R2v2_Gud4\",\"children\":[{\"text\":\"This API is used to specify the maximum duration of a voice message, which can be up to 58 seconds.\"}],\"type\":\"p\"},{\"id\":\"l0QUjFgx8eCImCYeXAZhj\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype6\",\"type\":\"h4\"},{\"id\":\"qLRlHxB-eAavU2xXI5O1N\",\"children\":[{\"id\":\"J_Zp7z_4M9pnxhTs3iB-u\",\"children\":[{\"text\":\"PttSetMaxMessageLength(msTime: number) :number\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"AdWlJS2S5d6QtZ8w-UfKa\",\"children\":[{\"id\":\"l3XKdY88xbXWWEjovwPMu\",\"children\":[{\"id\":\"csTi5jl6sdvwm-5G2ezLU\",\"children\":[{\"id\":\"c2NPHk6bOkNcsz4Qd2ROH\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"C2sTgKH26br4vhhURtopx\",\"children\":[{\"id\":\"Z0PjOfHcN0GAzOjFR5BWY\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ltUXt19QrY04qXvjyv_Pi\",\"children\":[{\"id\":\"6Ei2r-YreIh2_nlRhAetA\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"S0uIMQl5rqKXWzLYpnWcV\",\"children\":[{\"id\":\"SNetbArmXFRW51oQlPnIK\",\"children\":[{\"id\":\"HgMI1gMzmjcjB-7kchga1\",\"children\":[{\"id\":\"Q2kzHdtr_5Jouqv_HwDU1\",\"children\":[{\"text\":\"msTime\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"mQf8KwsiGj4z18cwPA6Ex\",\"children\":[{\"id\":\"PduFEiiproOhtH6tNMm16\",\"children\":[{\"id\":\"ihSdaR75hUDmXlmgxOeto\",\"children\":[{\"text\":\"number\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"axI4yqenSZ2zXc4VpZKZ0\",\"children\":[{\"id\":\"0ozT8gQ96LpWP_kQUBdch\",\"children\":[{\"id\":\"zPhP2klq3VYNS7rnk1AWj\",\"children\":[{\"text\":\"Audio duration in ms. Value range: 1000 < \"},{\"code\":1,\"text\":\"msTime\"},{\"text\":\" <= 58000\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[16,13,71],\"widthMode\":\"percentage\"},{\"id\":\"In2vwnMPhP22Z2e1uLu6x\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code4\",\"type\":\"h4\"},{\"id\":\"noz1alGPthhRkp9y0x2FF\",\"children\":[{\"id\":\"plxfCp6WxdCipytvfAuz7\",\"children\":[{\"text\":\"m_context.PttSetMaxMessageLength(58000); \"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"AKl9sSp6l7afZd5OJIwhh\",\"children\":[{\"text\":\"Streaming Speech Recognition\"}],\"nodeId\":\"streaming-speech-recognition\",\"type\":\"h2\"},{\"id\":\"EcjPrCwOoBwcavjdcuBHp\",\"children\":[{\"text\":\"Voice messaging and speech-to-text APIs\"}],\"nodeId\":\"voice-messaging-and-speech-to-text-apis\",\"type\":\"h3\"},{\"id\":\"zUH7jdjV5dJgq5KUdnVcT\",\"children\":[{\"id\":\"viOtiOwYaQoqmPRBG1C_y\",\"children\":[{\"id\":\"7Ejgl0AkedDmIpOCbRy71\",\"children\":[{\"id\":\"_XUsldKNfO4hWybVK2xDG\",\"children\":[{\"text\":\"API\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"VvWDzrCBbXmyCamWQzBnA\",\"children\":[{\"id\":\"PHIyXLUU00Ctr4u25GJTE\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"zvI3qCEaBWQEinrzLhwJw\",\"children\":[{\"id\":\"okRYWJUM4s9SoxVjj7lSk\",\"children\":[{\"id\":\"73DqURN3sWA7c3jKt96EY\",\"children\":[{\"id\":\"IPAjEGFRHVlW9YVRMfusJ\",\"children\":[{\"text\":\"PttStartRecordingWithStreamingRecognition\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"BP6aOXSXBJF5Jx89VKJg9\",\"children\":[{\"id\":\"SVk1_o6CFNHgVbmiuglvE\",\"children\":[{\"id\":\"QF6h6k8GIFnlq-xyVRybA\",\"children\":[{\"text\":\"Starts streaming recording\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"YOo3c-2xTCZ1kZgH_LQUk\",\"children\":[{\"id\":\"dDBhZ_7_QG7K0tHFDAEFN\",\"children\":[{\"id\":\"zfjkVRtb8z0mtVHqdyMoz\",\"children\":[{\"id\":\"q1kR8__ngeemEoLnsy0c0\",\"children\":[{\"text\":\"PttStopRecording\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"pa_o7nFnTzr_ilDDhslXa\",\"children\":[{\"id\":\"tlXejysuHzpMfv4Yd91R0\",\"children\":[{\"text\":\"Stops recording\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[61,39],\"widthMode\":\"percentage\"},{\"id\":\"yGa6Jt5Fr9JfDTfpM8QSG\",\"children\":[{\"text\":\"Starting streaming speech recognition\"}],\"nodeId\":\"starting-streaming-speech-recognition\",\"type\":\"h3\"},{\"id\":\"cb8pfGHLZSO4UJfpHoMzv\",\"children\":[{\"text\":\"This API is used to start streaming speech recognition. Text obtained from speech-to-text conversion will be returned in real time in its callback. It can specify a language for recognition or translate the information recognized in speech into a specified language and return the translation. \"},{\"b\":1,\"text\":\"To stop recording, call \"},{\"type\":\"ref\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/54040?!editLang=en&!preview#Stop\"},\"children\":[{\"text\":\"Stop recording\"}],\"id\":\"toFHTPc3lFfRGcKrpHVBo\"},{\"text\":\".\"}],\"type\":\"p\"},{\"id\":\"h11sCg9HuJCHzXT0thM1s\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype7\",\"type\":\"h4\"},{\"id\":\"7QO1UA_Ki6f39QpFArnPR\",\"children\":[{\"id\":\"51WEdcCcamg-XW04VAcCj\",\"children\":[{\"text\":\"PttStartRecordingWithStreamingRecognition(filePath: string, speechLanguage: string, translateLanguage: string) :number\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"I4lD2kOe3oYOIftIsxBcc\",\"children\":[{\"id\":\"fsXwuUIzjSIYz1ZiDgBJA\",\"children\":[{\"id\":\"8unBLOPLUlfocRzpL1eCd\",\"children\":[{\"id\":\"60fHiTpXnAaDDl2AKCFaJ\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Or-HjarQK2pKSFcvS8XTb\",\"children\":[{\"id\":\"Zl-JIV5RYjqw4M7rQ7bIH\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"tF6NaLLfYDTRwK-61Aw3R\",\"children\":[{\"id\":\"BmVLJ_0e4XAFLqQz_k4ZU\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"jMjyIWVaLHHo-HIXqlOsP\",\"children\":[{\"id\":\"t3ytbC_b648CQ1uD-dPQr\",\"children\":[{\"id\":\"mb805aEqS-grYFwZi5W9x\",\"children\":[{\"id\":\"ChqNHAu06H1LU_xZqw5Pc\",\"children\":[{\"text\":\"filePath\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"VbPqttNrtqorDkKO-rxm4\",\"children\":[{\"id\":\"qModVZHTebNEz8rHPtvKc\",\"children\":[{\"id\":\"iiHF-pOulCHawm7Wx3rPL\",\"children\":[{\"text\":\"string\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"wtaBIUpAGY3tSyErRkE-w\",\"children\":[{\"id\":\"xXIkYaXMCva19sjpWsjBH\",\"children\":[{\"id\":\"6HY1it9_9Wp1__IMJR_j5\",\"children\":[{\"text\":\"Path of stored audio file\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"bUv5JODxUeIz8w7B96ctA\",\"children\":[{\"id\":\"Z1Lpw3ghHifUEakRxYR15\",\"children\":[{\"id\":\"F42_tEWWfaHaiLL68W_XS\",\"children\":[{\"id\":\"j_JrUBRrPxz4IynT0WIUe\",\"children\":[{\"text\":\"speechLanguage\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"h3s7wlf5RUFh6TOLeaDel\",\"children\":[{\"id\":\"D9CoHlJFNqGeJlkM2LS98\",\"children\":[{\"id\":\"d_E6czRhR7PqQK4Q76B7w\",\"children\":[{\"text\":\"string\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"P5gHQ6NO1wssJDWttqgoV\",\"children\":[{\"id\":\"MwnNrU--ZL1Tv31PJJUEz\",\"children\":[{\"id\":\"axTv8RW39kn1J11oZwBeJ\",\"children\":[{\"text\":\"The language in which the audio file is to be converted to text. For parameters, see \"},{\"id\":\"srANK5oKs94eWO43GHEv6\",\"children\":[{\"text\":\"Language Parameter Reference List\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://intl.cloud.tencent.com/document/product/607/30260\",\"props\":{\"type\":\"link\",\"url\":\"https://intl.cloud.tencent.com/document/product/607/30260\"},\"type\":\"ref\"},{\"text\":\".\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"6enR0YCtauossDgSXxLpR\",\"children\":[{\"id\":\"LZG7DN_1CHuwz8O-zhPeP\",\"children\":[{\"id\":\"6enOaXZ09IJCLES64WrxD\",\"children\":[{\"id\":\"VsbAqn2woadXjTDigGX0Q\",\"children\":[{\"text\":\"translateLanguage\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"uDrAOXtkaYOCzgSyyl8EM\",\"children\":[{\"id\":\"-u56q2xyuYAklG5WXQ1jH\",\"children\":[{\"id\":\"hNkOkVR088nOyFUjFuh4E\",\"children\":[{\"text\":\"string\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Z-3hpCjEkSy7181xe8vQR\",\"children\":[{\"id\":\"S9NISMkZ9dGNiiLjIYj5v\",\"children\":[{\"id\":\"iH_lLsiBy_h_qjGBOw5LB\",\"children\":[{\"text\":\"The language in which the audio file is to be translated to text. For parameters, see \"},{\"id\":\"x5mYmkXMnbXQxByeH1fL_\",\"children\":[{\"text\":\"Language Parameter Reference List\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://intl.cloud.tencent.com/document/product/607/30260\",\"props\":{\"type\":\"link\",\"url\":\"https://intl.cloud.tencent.com/document/product/607/30260\"},\"type\":\"ref\"},{\"text\":\".\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[18,11,71],\"widthMode\":\"percentage\"},{\"id\":\"50iBnlBa0reMCe-fxarAb\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code5\",\"type\":\"h4\"},{\"id\":\"6b4hcgP1SOH4oA1GoArmr\",\"children\":[{\"id\":\"huAvfSaJ69xEa15mVM6ig\",\"children\":[{\"text\":\"string filePath = \\\"xx/xxx/xxx.silk\\\"\"}],\"type\":\"code-line\"},{\"id\":\"gTbNzgbTvdbqGIUVw-vJ1\",\"children\":[{\"text\":\"var ret = m_context.StartRecordingWithStreamingRecognition(filePath,\\\"cmn-Hans-CN\\\",\\\"cmn-Hans-CN\\\");\"}],\"type\":\"code-line\"},{\"id\":\"MCZ2pkST2frBK7fSPdfss\",\"children\":[{\"text\":\"if (ret == 0) {\"}],\"type\":\"code-line\"},{\"id\":\"ea1bLd5m7PE2b1trD2jUO\",\"children\":[{\"text\":\" this.currentStatus = \\\"Start streaming recording\\\";\"}],\"type\":\"code-line\"},{\"id\":\"SiC1hvKBMe0kR1YxDWABm\",\"children\":[{\"text\":\"} else {\"}],\"type\":\"code-line\"},{\"id\":\"UktUh1U4tSiVmiNaDXxRK\",\"children\":[{\"text\":\" this.currentStatus = \\\"Failed to start streaming recording\\\";\"}],\"type\":\"code-line\"},{\"id\":\"wTFtZrVG8HMoImGi_1Zme\",\"children\":[{\"text\":\"}\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"N6ogVXelDc9CQuP-qLFbb\",\"children\":[{\"id\":\"X78rw-Uum-Tt4YAhcz4Zs\",\"children\":[{\"b\":1,\"color\":\"#04C8DC\",\"text\":\"Note: \",\"type\":\"text\"}],\"type\":\"p\"},{\"id\":\"yFTooqT-tyAp7Wmub9ydO\",\"children\":[{\"text\":\" Translation incurs additional fees. For more information, see \"},{\"id\":\"UkfzNLzQ_YAD_RcXk_qsp\",\"children\":[{\"text\":\"Purchase Guide\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://intl.cloud.tencent.com/document/product/607/50009\",\"props\":{\"type\":\"link\",\"url\":\"https://intl.cloud.tencent.com/document/product/607/50009\"},\"type\":\"ref\"},{\"text\":\".\"}],\"type\":\"p\"}],\"hintType\":\"alert\",\"type\":\"hint\"},{\"id\":\"u_8jvJqkYciFhtpONRQ3y\",\"children\":[{\"text\":\"Callback for streaming speech recognition\"}],\"nodeId\":\"callback-for-streaming-speech-recognition\",\"type\":\"h3\"},{\"id\":\"7gAzp0n8sGybHEKqWpskF\",\"children\":[{\"text\":\"After streaming speech recognition is started, you need to listen on callback messages in the \"},{\"code\":1,\"text\":\"OnEvent\"},{\"text\":\" notification, which is as detailed below:\"}],\"type\":\"p\"},{\"id\":\"CUELzlgSjQ524VojodnEK\",\"children\":[{\"code\":1,\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRECOGNITION_COMPLETE\"},{\"text\":\" returns text after the recording is stopped and the recognition is completed, which is equivalent to returning the recognized text after a paragraph of speech.\\n\"},{\"code\":1,\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRECOGNITION_IS_RUNNING\"},{\"text\":\" returns the recognized text in real time during the recording, which is equivalent to returning the recognized text while speaking.\"}],\"type\":\"p\"},{\"id\":\"3IlLwdDjh2HDJN0nea7mQ\",\"children\":[{\"text\":\"The event message will be identified in the callback notification based on the actual needs. The passed parameters include the following four messages.\"}],\"type\":\"p\"},{\"id\":\"uaCuUVVOyYedbpB3Anelk\",\"children\":[{\"id\":\"yq0S0mo9omaZqQTZIHBRp\",\"children\":[{\"id\":\"Qw1MpnrAuhxYmtXAwrMXP\",\"children\":[{\"id\":\"rhPuAc7H_M26dyV05Yo5J\",\"children\":[{\"text\":\"Message Name\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"K5jH3NjW_sEIhv9s_HCUr\",\"children\":[{\"id\":\"rGS25hUX9CfAsIp01Xk7L\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"VFwcCLSGcLKpHsP2YcjQp\",\"children\":[{\"id\":\"K9K3bLUs37cQxHdfYI1x2\",\"children\":[{\"id\":\"2lIQmkSUyuAQjL2RwqNph\",\"children\":[{\"id\":\"m-z3kGMRf4vB5vJH61fSH\",\"children\":[{\"text\":\"result\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"5QS6IPESEh7RErWufdAiT\",\"children\":[{\"id\":\"qykQWELf821cnY9Lw8hxS\",\"children\":[{\"id\":\"1Z1he3y-gMCT61O-bzH4Z\",\"children\":[{\"text\":\"Return code indicating whether streaming speech recognition is successful\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"6y8QTU0V0mK1OoMbAZjI2\",\"children\":[{\"id\":\"iq0nQtp4RuR8hJbRj30Ut\",\"children\":[{\"id\":\"guZ2ytFP9BinpRREg8_as\",\"children\":[{\"id\":\"YlqrQpDiFRlTYDJN4HCO9\",\"children\":[{\"text\":\"text\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"hT3nD55JI-k0ImYhcUQhc\",\"children\":[{\"id\":\"3xS6Nlhp6sVl0OafIUMCP\",\"children\":[{\"id\":\"7GX4nZNmiG_DZOvfplQoZ\",\"children\":[{\"text\":\"Text converted from speech\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"ND8J83BfHhN2zD9lhRy76\",\"children\":[{\"id\":\"vp_tp_79qjduEJUfZwj8F\",\"children\":[{\"id\":\"kMhhEQWwPcKX7rGcKr1Li\",\"children\":[{\"id\":\"MBSqMIl5xGsE7wVjFf68i\",\"children\":[{\"text\":\"file_path\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"6I2Oc_gTQun2WPWrpt-FJ\",\"children\":[{\"id\":\"F6jRVKvl5ocI5QY4q0Ejp\",\"children\":[{\"id\":\"bYioZ5yzBkvzKkfgwUIUi\",\"children\":[{\"text\":\"Local path of stored recording file\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"tcqiURjjz4unrCojlM6Tx\",\"children\":[{\"id\":\"11hHl3M2tbOUSRsw9O6JY\",\"children\":[{\"id\":\"m491nxil5oVjDEWzgsgNn\",\"children\":[{\"id\":\"IVHFcLhEbKy4DTP0j7f-F\",\"children\":[{\"text\":\"file_id\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Vbh7nDgUXrI2Ptq4mGqYm\",\"children\":[{\"id\":\"842HFgfPj-xOe1b7-IaFa\",\"children\":[{\"id\":\"98yDsmnlrCmLGZq0YfaZt\",\"children\":[{\"text\":\"Backend URL address of recording file, which will be retained for 90 days\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[20,80],\"widthMode\":\"percentage\"},{\"id\":\"shKt--Ul-hwP6nMMzRDM5\",\"children\":[{\"id\":\"YiD86grGufol_dKd1uj5o\",\"children\":[{\"b\":1,\"color\":\"#04C8DC\",\"text\":\"Note: \"}],\"type\":\"p\"},{\"id\":\"xE9sUM-0QxPHHCsu4HubM\",\"children\":[{\"text\":\"The file_id is empty when the 'ITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRecognition_IS_RUNNING' message is listened.\"}],\"type\":\"p\"}],\"hintType\":\"alert\",\"type\":\"hint\"},{\"id\":\"gxKgqtWbG4-eQq6Pf5w2e\",\"children\":[{\"text\":\"Error codes\"}],\"nodeId\":\"error-codes\",\"type\":\"h4\"},{\"id\":\"XfuowrGRlPHHPT9qF9Tve\",\"children\":[{\"id\":\"bjqqa7YRsen6S2kRswZFm\",\"children\":[{\"id\":\"3apOpvz-YJfw51_vc5GVR\",\"children\":[{\"id\":\"yorRHbgU7CQGrJgNhZax2\",\"children\":[{\"text\":\"Error Code\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"63LVmCLEpfUSX2OKxqp-Y\",\"children\":[{\"id\":\"cHb8E5bVGTkE6G1_r5uM7\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"3n0hfNTt-GSZZPAYyqbgF\",\"children\":[{\"id\":\"GbmoYjJG2YFFMQ5-tV2iH\",\"children\":[{\"text\":\"Suggested Solution\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"XkPC3kIVRJkaSMHJfXVWP\",\"children\":[{\"id\":\"9V_GqCtEmHfDc3jB_f4Hh\",\"children\":[{\"id\":\"ZUMA74t3KxMjRO56dxiXL\",\"children\":[{\"id\":\"KybGY_PkwCVex05RhzPsD\",\"children\":[{\"text\":\"32775\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"eWjFL9N64MYxaJZWTF1NU\",\"children\":[{\"id\":\"d9KJZNy8MDMAKorBF6lLA\",\"children\":[{\"id\":\"qvtp3zNiEt7sh02mQJf1Z\",\"children\":[{\"text\":\"Streaming speech-to-text conversion failed, but recording succeeded.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"X3CJyCLDIdiPWjkDWxMcz\",\"children\":[{\"id\":\"jV53DuYf5KWaezLlh9j3A\",\"children\":[{\"id\":\"4Smy81zaIW7NnZDx6W-88\",\"children\":[{\"text\":\"Call the \"},{\"code\":1,\"text\":\"UploadRecordedFile\"},{\"text\":\" API to upload the recording file and then call the \"},{\"code\":1,\"text\":\"SpeechToText\"},{\"text\":\" API to perform speech-to-text conversion.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"72kxZ3GNaWoHs4bX75DzU\",\"children\":[{\"id\":\"QSFHqzZmur7DsymUfebdU\",\"children\":[{\"id\":\"9qUrUuB8Hud9rAOhXsx5I\",\"children\":[{\"id\":\"uxW4s2hs3H4_OCb5or4MR\",\"children\":[{\"text\":\"32777\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ohsfBq-E_G81WanW7XmUg\",\"children\":[{\"id\":\"CsuyvxhaKpHaME1Ln3OOI\",\"children\":[{\"id\":\"TgBgoiI_vfw_SfOVT_ux5\",\"children\":[{\"text\":\"Streaming speech-to-text conversion failed, but recording and upload succeeded.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"GXFKo7hA5sucMD-7j_GeJ\",\"children\":[{\"id\":\"uXPAz3S_QCKNPPveo-Tf5\",\"children\":[{\"id\":\"CjOUhf4KSBjm6syx_4ku_\",\"children\":[{\"text\":\"The message returned contains a backend URL after successful upload. Call the \"},{\"code\":1,\"text\":\"SpeechToText\"},{\"text\":\" API to perform speech-to-text conversion.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"vCicpNKAI9Dc3iGVwgWJM\",\"children\":[{\"id\":\"Vha5gb54569tOsco1B3rp\",\"children\":[{\"id\":\"uSmdN6RlafncDGPOz5Xup\",\"children\":[{\"id\":\"ikW8nfEsDV_TpBIfqeYbl\",\"children\":[{\"text\":\"32786\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"bsCMROPJK0FMVUN3726Xc\",\"children\":[{\"id\":\"MkQxgy7WXDKbNcKHurb-7\",\"children\":[{\"id\":\"WRbQ541Xry9bw6AWpXpb4\",\"children\":[{\"text\":\"Streaming speech-to-text conversion failed.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"KQuwNM2LUJdlTrdFCJjHa\",\"children\":[{\"id\":\"aLCXzNM5vL-xFqg9XZTe7\",\"children\":[{\"id\":\"tAmMWut3vzrDI8w07-mkg\",\"children\":[{\"text\":\"During streaming recording, wait for the execution result of the streaming recording API to return.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"lYNHlPJbar7Wg-KUKcCO9\",\"children\":[{\"id\":\"Ayjjg-Tk52XX2BWix8jBA\",\"children\":[{\"id\":\"a6hlBRU-0GMo6k9ckhAnd\",\"children\":[{\"id\":\"PS04qOomPbvtjoygvvId5\",\"children\":[{\"text\":\"32787\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"aFivo1S8UNf416aBmvA3I\",\"children\":[{\"id\":\"9ZZx72kvZTN933JshKwWH\",\"children\":[{\"id\":\"XXJsRH4HH_E87rk8V6wG1\",\"children\":[{\"text\":\"Speech-to-text conversion succeeded, but the text translation service was not activated.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"iN_1m0bqBWeKFIaiuCvna\",\"children\":[{\"id\":\"3AiLwz3ei6x2h-E0bdAYV\",\"children\":[{\"id\":\"JsaFDRMUvr8vTm_ZMe_i_\",\"children\":[{\"text\":\"Activate the text translation service in the console.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"eVRs9lpZsQ2Jqm5pehVDN\",\"children\":[{\"id\":\"kCmC_SzXRNo-Bx9UbqmU7\",\"children\":[{\"id\":\"mf3Xl-3jgqbMUL3o5eWxY\",\"children\":[{\"id\":\"1NulcxaxL4Kjh7jRsA4Bz\",\"children\":[{\"text\":\"32788\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"PkYTRuY5528ZEuseCn7Cl\",\"children\":[{\"id\":\"KJIyCPBVc1J7N8pmOnocf\",\"children\":[{\"id\":\"sTOPkMFCB3kcQjNBHPHn4\",\"children\":[{\"text\":\"Speech-to-text conversion succeeded, but the language parameter of the text translation service was invalid.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"rU9CtUen9oLOFKNfhdZcS\",\"children\":[{\"id\":\"npIIaEnqJCYcYtkVYJv02\",\"children\":[{\"id\":\"1nGo5Z-oH4kVG6sHnvpsR\",\"children\":[{\"text\":\"Check the parameter passed in.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[12,37,51],\"widthMode\":\"percentage\"},{\"id\":\"Rzca0jBS7P6XU6eHvQ3SC\",\"children\":[{\"text\":\"If the error code 4098 is reported, see \"},{\"id\":\"Toxv3r4qF_RFPXSZUHbOe\",\"children\":[{\"text\":\"Speech-to-text Conversion\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://www.tencentcloud.com/document/product/607/39716\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/39716\"},\"type\":\"ref\"},{\"text\":\" for solutions.\"}],\"type\":\"p\"},{\"id\":\"g9omEcTbYX50QvRzJGm8M\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code6\",\"type\":\"h4\"},{\"id\":\"JW_mdvpWi61C0avrfZGTP\",\"children\":[{\"id\":\"5yJeJ1TAxo6VdVT73hTWV\",\"children\":[{\"text\":\"m_context.setTMGDelegate(function(eventId, msg){\"}],\"type\":\"code-line\"},{\"id\":\"PIeL-8XXZriCaa_KmdPYU\",\"children\":[{\"text\":\" switch (eventType) {\"}],\"type\":\"code-line\"},{\"id\":\"b8ZhUfsRrg8mBsof-ekIN\",\"children\":[{\"text\":\" case ITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRECOGNITION_COMPLETE:\"}],\"type\":\"code-line\"},{\"id\":\"j_E6w7ZEgTpBfm-rhmUd5\",\"children\":[{\"text\":\" {\"}],\"type\":\"code-line\"},{\"id\":\"fSScnLhWTv0XpizR-dhh2\",\"children\":[{\"text\":\" HandleSTREAM2TEXTComplete(data,true);\"}],\"type\":\"code-line\"},{\"id\":\"XHg7rEbptCFIZDPt0HDrR\",\"children\":[{\"text\":\" break;\"}],\"type\":\"code-line\"},{\"id\":\"WVw7Q1Z5LFkQ1KqBptaGk\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"ldmiB1jLd3umV72Qoco5B\",\"children\":[{\"text\":\" ...\"}],\"type\":\"code-line\"},{\"id\":\"Rz1_meW0HywIITCZkwPTg\",\"children\":[{\"text\":\" case ITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRECOGNITION_IS_RUNNING:\"}],\"type\":\"code-line\"},{\"id\":\"oo-33I8V6gx3iCoulpKRk\",\"children\":[{\"text\":\" {\"}],\"type\":\"code-line\"},{\"id\":\"HwcOplYbq4H9toYB2uhAF\",\"children\":[{\"text\":\" HandleSTREAM2TEXTComplete(data, false);\"}],\"type\":\"code-line\"},{\"id\":\"-vyL31DIWlvl1TP3N3gYJ\",\"children\":[{\"text\":\" break;\"}],\"type\":\"code-line\"},{\"id\":\"0lho0kRprOhp2NHhN9LXR\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"wr2NuuKyZrK8jVTbO3cBX\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"_ORgfOvIpaVLRHrimFEeQ\",\"children\":[{\"text\":\"});\"}],\"type\":\"code-line\"},{\"id\":\"dbNpFj6BRxxxhu5d9NEv8\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"qIIzM-x2-txswQT0GqvA5\",\"children\":[{\"text\":\"Voice Message Recording\"}],\"nodeId\":\"voice-message-recording\",\"type\":\"h2\"},{\"id\":\"m6f_UXDzeQ2kzhgnII31s\",\"children\":[{\"b\":1,\"text\":\"The recording process is as follows: start recording > stop recording > return recording callback > start the next recording.\"}],\"type\":\"p\"},{\"id\":\"fl4lXkW8KQGLWR2GGtNR0\",\"children\":[{\"text\":\"Voice messaging and speech-to-text APIs\"}],\"nodeId\":\"voice-messaging-and-speech-to-text-apis2\",\"type\":\"h3\"},{\"id\":\"apCL38-G9Z373EQuKru6O\",\"children\":[{\"id\":\"MVHJNmoc6HNpyg51oP78k\",\"children\":[{\"id\":\"hd8sfX1_vvi-BkffzRqLa\",\"children\":[{\"id\":\"3FTXwknmDFpshLlMWGleR\",\"children\":[{\"text\":\"API\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"RMPW7wEyfMup5edz25Idg\",\"children\":[{\"id\":\"wZjqjdJDgh8FAEyLjO6P_\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"td0iUSZnkpLNEI7cvqXEm\",\"children\":[{\"id\":\"KU45d6qgZC-_zd3xK6v7K\",\"children\":[{\"id\":\"KPkMooGbJmGfFjpnQb_py\",\"children\":[{\"id\":\"V_FAqJhIKKnvpCjXSD8oN\",\"children\":[{\"text\":\"PttStartRecording\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"cEaQer81UhZxCB8hcV-hK\",\"children\":[{\"id\":\"JF6PbWfGJoCjC0ihduLLo\",\"children\":[{\"id\":\"RL_Sqsrly6JnonDEvUi7W\",\"children\":[{\"text\":\"Starts recording\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"HdtpaPvWJwwObnQWW_A_K\",\"children\":[{\"id\":\"dHf7hz-5a38DxOe4Wwsrq\",\"children\":[{\"id\":\"BR7Oo1J4vvWBWbdw0d1aT\",\"children\":[{\"id\":\"115xcsuD3ZpGMDSBOuJQ3\",\"children\":[{\"text\":\"PttPauseRecording\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Tqmi6Np29NQcWv0718G3x\",\"children\":[{\"id\":\"Fhj0FpCN_Gae3AOZrHEJg\",\"children\":[{\"id\":\"_UJ_V6rfel5KHgDaN37WA\",\"children\":[{\"text\":\"Pauses recording\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"sRYXFDx4keuxn6DB_hWRn\",\"children\":[{\"id\":\"1pAl95f1qKjjl-cLLBDO1\",\"children\":[{\"id\":\"bLAd0nm2tF1XyK8QP745S\",\"children\":[{\"id\":\"ljFLKTjCiq2OeAu2n-6Kn\",\"children\":[{\"text\":\"PttResumeRecording\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"P02T8v-Cc5E6EbV6TkR0-\",\"children\":[{\"id\":\"en6rdyzEq4Mn2T8dLdJkk\",\"children\":[{\"id\":\"B7pWc_7MPSSuBQ3KUygPn\",\"children\":[{\"text\":\"Resumes recording\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"JMH5iirDuTQrEFf5yArze\",\"children\":[{\"id\":\"bvdAfSO20rN_X2r6m67O3\",\"children\":[{\"id\":\"ixPoOLQAqlMIE9CC6fNsk\",\"children\":[{\"id\":\"Ne4oXK6idQDAlioSAJlZM\",\"children\":[{\"text\":\"PttStopRecording\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"nDpa6Ho-VzGALw1AZmq3Q\",\"children\":[{\"id\":\"e4fYk6stea7sWo2u1Vpmi\",\"children\":[{\"id\":\"sp6Uo8V9YEQh_4neAcvZe\",\"children\":[{\"text\":\"Stops recording\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"iazcXgPipLeI_z0pmV5v2\",\"children\":[{\"id\":\"ObOot2Nm-gfn6mLDQ99ZK\",\"children\":[{\"id\":\"Pq2Af9sbfmnM9TjZDgXUG\",\"children\":[{\"id\":\"s0Yq8qZiVgSmuHdpM1XTI\",\"children\":[{\"text\":\"PttCancelRecording\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"49Wafdx8i__d7NRGVwDV-\",\"children\":[{\"id\":\"VC76Knc9LW8X4PkVDEemh\",\"children\":[{\"id\":\"oZI3zOTPR5pygwJm171vS\",\"children\":[{\"text\":\"Cancels recording\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[51,49],\"widthMode\":\"percentage\"},{\"id\":\"T-O5oWwMh8GOa-nvvM42-\",\"children\":[{\"text\":\"Starting recording\"}],\"nodeId\":\"starting-recording\",\"type\":\"h3\"},{\"id\":\"SB714JFl3K0sN2AQ6flqB\",\"children\":[{\"text\":\"This API is used to start recording.\"}],\"type\":\"p\"},{\"id\":\"iNpraYrqk8NbAx3KFBGAh\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype8\",\"type\":\"h4\"},{\"id\":\"K4Zm-IjnlbRflocNH-fos\",\"children\":[{\"id\":\"qDAsg9FImAZN9VAKsw2YI\",\"children\":[{\"text\":\"PttStartRecording(filePath: string) : number;\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"_VYsJuq7FYGtPvQ7B6v81\",\"children\":[{\"id\":\"_5Zlj_bzQDtXk1qn1WIQX\",\"children\":[{\"id\":\"9jsGSW0VAJpYazg2PsWi-\",\"children\":[{\"id\":\"xx1tX868fufUIYvUBuOE4\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"t-nUEfNxO-6EA9dZra82v\",\"children\":[{\"id\":\"_NB3eMTWD6NwJkGoS8Myl\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"6zQDthH4lUy2S2exyux6h\",\"children\":[{\"id\":\"QFPtZ1u4tle4A47E5uPZc\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"TMTzNrrEOBmcQHPdcfr53\",\"children\":[{\"id\":\"-2QVtdisuJaVozPDw_TPo\",\"children\":[{\"id\":\"5T21jZ-VaCUyFDIQen4ji\",\"children\":[{\"id\":\"3wdgubB9HljE5IKWngnLI\",\"children\":[{\"text\":\"filePath\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"VMmIohdXHWCf3_trpIXfK\",\"children\":[{\"id\":\"no66L2foyr6C_b1Fko_O5\",\"children\":[{\"id\":\"iV-mDQppr5bcEJpajBN3d\",\"children\":[{\"text\":\"string\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"v3EfwGae2PgObYxzsh4sY\",\"children\":[{\"id\":\"a2XHnqsdQmWRPWCiVVG7A\",\"children\":[{\"id\":\"FWnSPfE5thbi3XBC_D_fy\",\"children\":[{\"text\":\"Path of stored audio file\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[28,19,53],\"widthMode\":\"percentage\"},{\"id\":\"9fWWlBcA5uscB5-dmdpxj\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code7\",\"type\":\"h4\"},{\"id\":\"mRRQmbWRucVvznjTc25PA\",\"children\":[{\"id\":\"igvXEZxQM1upwqSPeXCqZ\",\"children\":[{\"text\":\"string filepath = \\\"xxxx/xxx.silk\\\";\"}],\"type\":\"code-line\"},{\"id\":\"6d24ti5odv63OKUKB6U9h\",\"children\":[{\"text\":\"var ret = m_context.PttStartRecording(filepath);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"lgd5LaslsUFvuJLVO82gw\",\"children\":[{\"text\":\"Stopping recording\"}],\"nodeId\":\"stopping-recording\",\"type\":\"h3\"},{\"id\":\"JcNFWV70Q23aRWcXFSp6b\",\"children\":[{\"text\":\"This API is used to stop recording. It is async, and a callback for recording completion will be returned after recording stops. A recording file will be available only after recording succeeds.\"}],\"nodeId\":\"Stop\",\"type\":\"p\"},{\"id\":\"yhCF1NJW5qXdv4TA3b-8p\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype9\",\"type\":\"h4\"},{\"id\":\"BFLXHNqO_rQ-gmZbtLVXv\",\"children\":[{\"id\":\"UI0RPZB29agwZy204HknS\",\"children\":[{\"text\":\"PttStopRecording() :number;\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"fTOsRqpUDEFfFzokFtHqd\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code8\",\"type\":\"h4\"},{\"id\":\"LWI0u3d91eQGW20s0hyqN\",\"children\":[{\"id\":\"GToAycDBUtsGmhg31TmDv\",\"children\":[{\"text\":\"m_context.PttStopRecording();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"XejyzJx02O5_1dkQ-bSYL\",\"children\":[{\"text\":\"Callback for recording start\"}],\"nodeId\":\"callback-for-recording-start\",\"type\":\"h3\"},{\"id\":\"uIpy4QNU8_jau3lGba9mO\",\"children\":[{\"text\":\"A callback will be executed through a delegate function to pass a message when recording is completed.\"}],\"type\":\"p\"},{\"id\":\"MntZ4038joXNehhaxlBAS\",\"children\":[{\"b\":1,\"text\":\"To stop recording, call \"},{\"b\":1,\"code\":1,\"text\":\"StopRecording\"},{\"text\":\". The callback for recording start will be returned after the recording is stopped.\"}],\"type\":\"p\"},{\"id\":\"zaV1XP9vB1h1sTzZsgG8f\",\"children\":[{\"id\":\"SfET803kNtJnZEB2lqRDV\",\"children\":[{\"id\":\"GF4bl0RsKUwapILgI_rK_\",\"children\":[{\"id\":\"SYsDHo-spx5sXR3enSie6\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"VagiW42k_VW4WaYitz-ff\",\"children\":[{\"id\":\"FXf7_XL-hNzgUsJ-589Ek\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"EjDODbgGXqUl2FyYPXRs1\",\"children\":[{\"id\":\"ZdiQqwBWeGbYAYjT4TkxP\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"nhjnonvSmlvULBUnVzVT9\",\"children\":[{\"id\":\"2EnH6oeHPOPDFAP-6x3QP\",\"children\":[{\"id\":\"w0-G-rydLo81V2Ywi1zV0\",\"children\":[{\"id\":\"E_5VX_59zuS4n94vxR8pA\",\"children\":[{\"text\":\"code\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"T51ESwZegcuPh-VXEdcW-\",\"children\":[{\"id\":\"KdA1NQoW0Dhx16bjN8zTN\",\"children\":[{\"id\":\"bdcWnOUWCtCZbRF0dZx1w\",\"children\":[{\"text\":\"string\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"bpTF0Wpds8aSXNs8NxmYx\",\"children\":[{\"id\":\"3dS9kkurk5St7ahUAsNEd\",\"children\":[{\"id\":\"nT8I8CrAl_RC9iUFKRQwz\",\"children\":[{\"text\":\"0: Recording is completed\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"AKin5zbxE6G_nfQuqvLSN\",\"children\":[{\"id\":\"sVvqvrJ1g1elPpfG480e1\",\"children\":[{\"id\":\"z5PGaZJUxonixOZC0sxm5\",\"children\":[{\"id\":\"sCI3WSaIOVO-GzXx5h2-I\",\"children\":[{\"text\":\"filepath\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ZlkM8b8_oCm1IgdXUWWjP\",\"children\":[{\"id\":\"zQq7PAdan3YlniGkh1vhZ\",\"children\":[{\"id\":\"v07J4lHLPR5sYVLvU4cY3\",\"children\":[{\"text\":\"string\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"wtMunRbOGeReIG_vZp1HG\",\"children\":[{\"id\":\"AK6OyRndXh_hLRS10LthB\",\"children\":[{\"id\":\"wOmLiACKumZanormx7Jlo\",\"children\":[{\"text\":\"Path of stored recording file, which must be accessible and cannot be the \"},{\"code\":1,\"text\":\"fileid\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[13,9,78],\"widthMode\":\"percentage\"},{\"id\":\"p-F9QFjA68FHdCPKb833y\",\"children\":[{\"text\":\"Error codes\"}],\"nodeId\":\"error-codes2\",\"type\":\"h4\"},{\"id\":\"tjptcb7wYpzD36zUVjx49\",\"children\":[{\"id\":\"5yuxBw7v50qWxB39qNaIW\",\"children\":[{\"id\":\"A-AZEYA0gbzWSEHNdgK3c\",\"children\":[{\"id\":\"j-a3XUcDHABVZ_Kq2GUpL\",\"children\":[{\"text\":\"Error Code Value\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"sqD8G_lp4iB-hpV2-IlNZ\",\"children\":[{\"id\":\"lbg6VrnrIXKanwF1vEFBF\",\"children\":[{\"text\":\"Cause\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Nv0S-J6Y2ididUXYozIUi\",\"children\":[{\"id\":\"snvsq-CkrsxfmAPJcdMGO\",\"children\":[{\"text\":\"Suggested Solution\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"UWqraFhDysISvfAUSZff1\",\"children\":[{\"id\":\"5izt5oZtgRL5AP8Vp20jU\",\"children\":[{\"id\":\"LfA6khu1u60LoUkWL469p\",\"children\":[{\"id\":\"RVLrjnCiWj_fGXGM3rhqL\",\"children\":[{\"text\":\"4097\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"sYh5zaB0r_rLzn7a2ckwf\",\"children\":[{\"id\":\"L6e_hPvU0W9PCnm-D_7On\",\"children\":[{\"id\":\"j8r60jRO-N_4XVPor2SPy\",\"children\":[{\"text\":\"Parameter is empty.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"tajs9oBNstpyHiELR8QT1\",\"children\":[{\"id\":\"WSK5jy8Z-8llZpfgWzrDx\",\"children\":[{\"id\":\"57nVUxxY3tlo-Y6OJzn32\",\"children\":[{\"text\":\"Check whether the API parameters in the code are correct.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"nqOFe-kGVH0sWUGz98zLu\",\"children\":[{\"id\":\"2RNMi2TvNaADSEWCZ8wLj\",\"children\":[{\"id\":\"7AyqEcu_hJGcXISR_9fy6\",\"children\":[{\"id\":\"oicsJd9pXtZxH-iflrdM7\",\"children\":[{\"text\":\"4098\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"JPXQTUN331aCJuc_4GTTT\",\"children\":[{\"id\":\"_AdiUTME0hoABpyPUdBvB\",\"children\":[{\"id\":\"lWluMWLFGfRmhbMB4demG\",\"children\":[{\"text\":\"Initialization error.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"MHTV6OS8SqqBuxaV2IV0W\",\"children\":[{\"id\":\"pYhkFUPW140xBQbzM4QHC\",\"children\":[{\"id\":\"KM2EVg7-afsapuOM-lVbU\",\"children\":[{\"text\":\"Check whether the device is being used, whether the permissions are normal, and whether the initialization is normal.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"jaopzjcOIhn8UhTUHBry_\",\"children\":[{\"id\":\"LSOzdSsUZYa8NMIuk0leg\",\"children\":[{\"id\":\"xCI8Kb_zyWBJTgWUHtZLx\",\"children\":[{\"id\":\"wvb8id1jHmuap7ERgdtQH\",\"children\":[{\"text\":\"4099\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"-9j01_c4Y9cjfzgnjxQ1t\",\"children\":[{\"id\":\"AWj3-zDJJ-vVBYJcGKDPu\",\"children\":[{\"id\":\"5lgXXgeEFGZKY47XOJ8R9\",\"children\":[{\"text\":\"Recording is in progress.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"cTKcKWojBQs0UqNpQ233J\",\"children\":[{\"id\":\"ppU0cykPMNeiP8Oape6Aj\",\"children\":[{\"id\":\"IFpAUsyA98haNNeIvxD72\",\"children\":[{\"text\":\"Ensure that the SDK recording feature is used at the right time.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"10ch3tb1URnXgxTSXBjMR\",\"children\":[{\"id\":\"TMIXdpKiaI7NiA3yT7ftF\",\"children\":[{\"id\":\"r9-2mZfkz0hKPZNPv7uso\",\"children\":[{\"id\":\"Pv_Is4IvNze3MLl64zR4P\",\"children\":[{\"text\":\"4100\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"AtCZJ-JxzMZipZPbvhN_A\",\"children\":[{\"id\":\"GQh_Z5aYPs3-FxCjzQWBL\",\"children\":[{\"id\":\"gPAPkuC-R8mPxcNT14AHU\",\"children\":[{\"text\":\"Audio data is not captured.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"NMrvP7mkKkxk4FLwIxImX\",\"children\":[{\"id\":\"1hNNYwUhsc_YpVexcntgp\",\"children\":[{\"id\":\"EL89J7DNs4zaMz5skH2Ux\",\"children\":[{\"text\":\"Check whether the mic is working properly.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"G8IUl1r6-GPSbpUfNbcjG\",\"children\":[{\"id\":\"s44lT0zMja8k3HmCCydPR\",\"children\":[{\"id\":\"nsY1lK5m_6lEEk8pFAezo\",\"children\":[{\"id\":\"QDFkmolE_KMzGPrMPqOKH\",\"children\":[{\"text\":\"4101\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"-Nq6JtUI8Gm0qd8tFpZlx\",\"children\":[{\"id\":\"rWE1UOFXbzKj39rk7aadm\",\"children\":[{\"id\":\"DFdyVZ0YMTsji-mVHAoUI\",\"children\":[{\"text\":\"An error occurred while accessing the file during recording.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"YSGrT6OVTkNfHZEs12vK0\",\"children\":[{\"id\":\"knhKenThpoNMfbBA42Gq7\",\"children\":[{\"id\":\"oRjnbav7lzCTjhQl0DFWz\",\"children\":[{\"text\":\"Ensure the existence of the file and the validity of the file path.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"vW_uCr5XDD-oJ2cs2HkoD\",\"children\":[{\"id\":\"XyzlE0J0pxd8qHh1CC1Jk\",\"children\":[{\"id\":\"Nnt4n2lndiKo0YrhtilKa\",\"children\":[{\"id\":\"gxAt9AWSxjMgS9BPIef0L\",\"children\":[{\"text\":\"4102\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"LCiNY5YWLGqrwTczoEy2R\",\"children\":[{\"id\":\"JwMlwndBmh-JQ6lDs8A7X\",\"children\":[{\"id\":\"PTWnoEix9Dx62IZ4frvrQ\",\"children\":[{\"text\":\"The mic is not authorized.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"RgSQwxhXJm4CZSP35sANW\",\"children\":[{\"id\":\"F5ysqDcbnqih58qRPrbA6\",\"children\":[{\"id\":\"7-ZtoQa4n5DamilnapDwN\",\"children\":[{\"text\":\"Mic permission is required for using the SDK. To add the permission, see the SDK project configuration document for the corresponding engine or platform.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"HyWpjCXkj07HsslDHgC-H\",\"children\":[{\"id\":\"d4HYRPmPsF0OiWtHq_X68\",\"children\":[{\"id\":\"TAuUaaVAMTKar6WO_uGzR\",\"children\":[{\"id\":\"D8eVD-KY0kvwaD-DFsx4C\",\"children\":[{\"text\":\"4103\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"FaqyOGB_Vm-wXHiIw18Z5\",\"children\":[{\"id\":\"PYsqzl2YU-UWb_yRGP5Ff\",\"children\":[{\"id\":\"7Xk8-WP4hOVFWjqDsP-kA\",\"children\":[{\"text\":\"The recording duration is too short.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"4hcgytouSCnu4vKd0-7jP\",\"children\":[{\"id\":\"TpSF_b4EjDlRyKqclVbst\",\"children\":[{\"id\":\"VfCjh36suXJE5lJFcEa5b\",\"children\":[{\"text\":\"The recording duration should be in ms and longer than 1,000 ms.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"JoQl4XNkFMnMKIXmX4ViB\",\"children\":[{\"id\":\"cr6qcT5c9D-BGX2Pqu3Oq\",\"children\":[{\"id\":\"tRzKHbr_NYsaHTihrYvIx\",\"children\":[{\"id\":\"3QSu5k6EdKFS5jpI06Uih\",\"children\":[{\"text\":\"4104\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"1DQQysLQIk_gQQzypGM5S\",\"children\":[{\"id\":\"vE5ZcC90umruTZcgeA_cq\",\"children\":[{\"id\":\"UFqS1Y8jsVR2MkJ7ZOpq3\",\"children\":[{\"text\":\"No recording operation is started.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"zQJ4y5BV29hZ1aVHrLsoA\",\"children\":[{\"id\":\"r6EodnVIcXuZK1ZSjhYiW\",\"children\":[{\"id\":\"MFJL9t-ZJxIyXwD1JomOQ\",\"children\":[{\"text\":\"Check whether the recording starting API has been called.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[17,29,54],\"widthMode\":\"percentage\"},{\"id\":\"9dSTX1OcIu1sAYdY8Pfrg\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code9\",\"type\":\"h4\"},{\"id\":\"8D7nPg9vhHSSOc_iyqNT_\",\"children\":[{\"id\":\"t2cnlOlP0LGRPw8odrvJA\",\"children\":[{\"text\":\"m_context.setTMGDelegate(function(eventId, msg){\"}],\"type\":\"code-line\"},{\"id\":\"mZS6TjZ8nLYQKcMY0o5XB\",\"children\":[{\"text\":\" switch (eventType) {\"}],\"type\":\"code-line\"},{\"id\":\"oedfJwykq67uygqvQPrW8\",\"children\":[{\"text\":\" case ITMG_MAIN_EVENT_TYPE_ENTER_ROOM:\"}],\"type\":\"code-line\"},{\"id\":\"fSRfjODHUTSeW39216jY2\",\"children\":[{\"text\":\" {\"}],\"type\":\"code-line\"},{\"id\":\"IxV8p7jvd5OG9-v2ozmXT\",\"children\":[{\"text\":\" // Process\"}],\"type\":\"code-line\"},{\"id\":\"DhV4DcU8wafdMRTKWFQHd\",\"children\":[{\"text\":\" break;\"}],\"type\":\"code-line\"},{\"id\":\"CvrpYukpLSjLHKm_xcL5y\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"EZD-YqQYViIKtEy49cDB1\",\"children\":[{\"text\":\" ...\"}],\"type\":\"code-line\"},{\"id\":\"leO4r5JT3c3s0PlQ7V57h\",\"children\":[{\"text\":\" case ITMG_MAIN_EVNET_TYPE_PTT_RECORD_COMPLETE:\"}],\"type\":\"code-line\"},{\"id\":\"_C9h-lUQwpelnyl5Fn5DA\",\"children\":[{\"text\":\" {\"}],\"type\":\"code-line\"},{\"id\":\"rAcqX50n6CBLzNcjlwOb_\",\"children\":[{\"text\":\" // Process\"}],\"type\":\"code-line\"},{\"id\":\"c7JyZsn6AYBKenNLY96u3\",\"children\":[{\"text\":\" break;\"}],\"type\":\"code-line\"},{\"id\":\"YMpiwmOFovp3oo9mAPPWL\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"7u3lM6UkytAVpCdC6Jra2\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"ETONp6H8W8TYR42PBb_J1\",\"children\":[{\"text\":\"});\"}],\"type\":\"code-line\"},{\"id\":\"VqvkBIob99r1sHfMk4usW\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"},{\"id\":\"8V146dR_BpAHZNO2KTDRz\",\"children\":[{\"text\":\"\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"v3sjv9w9tTBYqYrCOss6a\",\"children\":[{\"text\":\"Pausing recording\"}],\"nodeId\":\"pausing-recording\",\"type\":\"h3\"},{\"id\":\"Iq1f82pTDhxsxfr868gs2\",\"children\":[{\"text\":\"This API is used to pause recording. If you want to resume recording, call the \"},{\"code\":1,\"text\":\"PttResumeRecording\"},{\"text\":\" API.\"}],\"type\":\"p\"},{\"id\":\"O5x5tb1MdZoK5UYynvWJm\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype10\",\"type\":\"h4\"},{\"id\":\"bGdUt0PugOjAJ7Zl0Y81J\",\"children\":[{\"id\":\"aY_reUBurfmyTgebvj5ai\",\"children\":[{\"text\":\"PttPauseRecording() : number\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"8FYI2mhooGekuyEpHwEJq\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code10\",\"type\":\"h4\"},{\"id\":\"geZNwLgdXCkZiG_Y3GfNE\",\"children\":[{\"id\":\"DL9ywwR78f-oiwaLRjPy2\",\"children\":[{\"text\":\"number ret = m_context.PttPauseRecording();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"ysrMhoX1kDBXzkbIBmY0D\",\"children\":[{\"text\":\"Resuming recording\"}],\"nodeId\":\"resuming-recording\",\"type\":\"h3\"},{\"id\":\"LYZcSfssoD2uBNH-L4qfD\",\"children\":[{\"text\":\"This API is used to resume recording.\"}],\"type\":\"p\"},{\"id\":\"ZYnnnhTfpXV3AojtgIlUH\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype11\",\"type\":\"h4\"},{\"id\":\"mIVC6eMdsLkXzRiAGcdBH\",\"children\":[{\"id\":\"-v4VdpszkAUNdjyov4Swu\",\"children\":[{\"text\":\"PttResumeRecording() : number;\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"v4s1bfRRsTqBxEnCg0WC0\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code11\",\"type\":\"h4\"},{\"id\":\"CzSIAkPBpHrpD3f6Xy6Rw\",\"children\":[{\"id\":\"bSJ8ijw80ur6n98wQUaSV\",\"children\":[{\"text\":\"number ret = m_context.PttResumeRecording();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"bZa8h21xos-XUfas5XdTf\",\"children\":[{\"text\":\"Canceling recording\"}],\"nodeId\":\"canceling-recording\",\"type\":\"h3\"},{\"id\":\"xbFC-Q-QDfFwKNBoY3CNB\",\"children\":[{\"text\":\"This API is used to cancel recording. \"},{\"b\":1,\"text\":\"There is no callback after cancellation\"},{\"text\":\".\"}],\"type\":\"p\"},{\"id\":\"8y4xfPLjyc7Ez3CwCeSgz\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype12\",\"type\":\"h4\"},{\"id\":\"OHZ2XRiRWenycpZCFT5q1\",\"children\":[{\"id\":\"GwMdyC6-3DLoTu83sv9Eb\",\"children\":[{\"text\":\"PttCancelRecording() : number\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"y1iMSngmaMdf4MUtU8C3o\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code12\",\"type\":\"h4\"},{\"id\":\"Fvrfj8pfUbnMoq9rnMFDc\",\"children\":[{\"id\":\"apEwsdTOooD5JvZeAARMW\",\"children\":[{\"text\":\"m_context.PttCancelRecording();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"3eCZZgwsGFH1lVhBi1sFO\",\"children\":[{\"text\":\"Voice Message Upload, Download, and Playback\"}],\"nodeId\":\"voice-message-upload.2C-download.2C-and-playback\",\"type\":\"h2\"},{\"id\":\"5RYTwiBbLvgNFWHDp9Cvi\",\"children\":[{\"id\":\"n6TUQAiZLFKNqQEJoOf-P\",\"children\":[{\"id\":\"hnMi02xTouGSY0t8FDMkK\",\"children\":[{\"id\":\"PG1lhtQfbVpMkCi8l66RK\",\"children\":[{\"text\":\"API\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"uxW_yHfRu41Ba8O4hf7vS\",\"children\":[{\"id\":\"M_f_UIczfTmrOpLyFhSkd\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"PMfp-_oMaKXQKrgFVFTrD\",\"children\":[{\"id\":\"Wd1dXYUMHAlktPRtBrrZJ\",\"children\":[{\"id\":\"h4lI7TZn6VqIK-IkN0fHh\",\"children\":[{\"id\":\"OZgCNOyb1sFU3loWskkv7\",\"children\":[{\"text\":\"PttUploadRecordedFile\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"LN4o8S0f3GSGO0E9AGXKp\",\"children\":[{\"id\":\"DI3T-inW8wdyxGyPpx33s\",\"children\":[{\"id\":\"E1zkGZyGhjGFDQ3nPkwQQ\",\"children\":[{\"text\":\"Uploads an audio file\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"h3gTWf9rkCHNlN9j_ppyc\",\"children\":[{\"id\":\"QTyP-tT0gVe7bmGtsSPOb\",\"children\":[{\"id\":\"LY4bwqrJBIXWs9TjqZ6LG\",\"children\":[{\"id\":\"h2_amxsgXfSE1fYx0rWit\",\"children\":[{\"text\":\"PttDownloadRecordedFile\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Mx5RSkxTe-vsloyYQVVpf\",\"children\":[{\"id\":\"dO4ydoJEOAF6to1XEzHZS\",\"children\":[{\"id\":\"cIAvYPzoEQyJF4YiEN_oD\",\"children\":[{\"text\":\"Downloads an audio file\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"Az6DqG5UIEblse7SCwXuq\",\"children\":[{\"id\":\"3fVu1czHhOqvqAEuLE7OI\",\"children\":[{\"id\":\"dvX27yGz6DSEklEU0JQyd\",\"children\":[{\"id\":\"GUrZnMpmXSLE1C03bGMJT\",\"children\":[{\"text\":\"PttPlayRecordedFile\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"x5uc4QdnvNHdv8zNdVtcI\",\"children\":[{\"id\":\"4FgGSzwaNMZb9kjZVVHwQ\",\"children\":[{\"id\":\"GhVpS8PfGnxB53GsiFnxy\",\"children\":[{\"text\":\"Plays back an audio file\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"ZxD4gnv6e1u7XKlLbR0qT\",\"children\":[{\"id\":\"es-hNd9pHSxFXbF1Df0tp\",\"children\":[{\"id\":\"Kj6nzg7X63eixLD4iv1vr\",\"children\":[{\"id\":\"Wv0zN4R4bZrjrGuVBsdYh\",\"children\":[{\"text\":\"PttStopPlayFile\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"8A9ERGVtDguQgRe1uPCbg\",\"children\":[{\"id\":\"hSoYn-jhM4PwPcK236trD\",\"children\":[{\"id\":\"IpWI78Cg2ADGfMjR8fkEP\",\"children\":[{\"text\":\"Stops playing back an audio file\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"FvHLs2nvun6Ho75NKgXBa\",\"children\":[{\"id\":\"jhB6m2gJjxPyrXgmVG4WH\",\"children\":[{\"id\":\"cSo5uJFRLjJvAafAfeiW1\",\"children\":[{\"id\":\"mfz-P79vCpNGXZ3zNFWXl\",\"children\":[{\"text\":\"PttGetFileSize\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"5ZyOn1F0J0IbrNfTWGx_9\",\"children\":[{\"id\":\"EyH3e0vMLs--y8r4Key-D\",\"children\":[{\"id\":\"ohxZsz_XKyMOyldTmP2BV\",\"children\":[{\"text\":\"Gets the audio file size\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"FVSvHzyqtpJkI2-vdvSsf\",\"children\":[{\"id\":\"DQFi2ieXPjIid1c1lHcme\",\"children\":[{\"id\":\"oBzAU0Kp4EKJh5Dcw0JRs\",\"children\":[{\"id\":\"ND8G0ZsFnixdQDilTJ2Sp\",\"children\":[{\"text\":\"PttGetVoiceFileDuration\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"OP8sCeVGfW3J8yHJw3YQc\",\"children\":[{\"id\":\"EYPoLnokU1dmyds1ZRKqU\",\"children\":[{\"id\":\"5o4uBGADlD_schQ5qD2IK\",\"children\":[{\"text\":\"Gets the audio file duration\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[45,55],\"widthMode\":\"percentage\"},{\"id\":\"znEK8pUM7hFR8-NmjbqqF\",\"children\":[{\"text\":\"Uploading an audio file\"}],\"nodeId\":\"uploading-an-audio-file\",\"type\":\"h3\"},{\"id\":\"a27bo8wgJUqmlqpWnQl-s\",\"children\":[{\"text\":\"This API is used to upload an audio file.\"}],\"type\":\"p\"},{\"id\":\"oO12kC200P6jYYN9mjEhs\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype13\",\"type\":\"h4\"},{\"id\":\"wEvD1kSS53953kl4j7u9I\",\"children\":[{\"id\":\"aiBxvMJEgy9YDZUUZ9cNN\",\"children\":[{\"text\":\"PttUploadRecordedFile(filePath: string) : number\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"yr3jUnfgwKjiirXCz-RNe\",\"children\":[{\"id\":\"lrHYsecY3nkVFjwIGqZCf\",\"children\":[{\"id\":\"DSxUXtosEWSCCGQoEgpPs\",\"children\":[{\"id\":\"FPuDbdaoKoEf2LHKlF2kc\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"9tTVL1rCVje_9RQwE-gkS\",\"children\":[{\"id\":\"GtLIlvVgLQ_78kE42S0y_\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"CZcKZljW4rpDbz3zLEUuk\",\"children\":[{\"id\":\"_MdSHQM_diUdi0bJ3vv8H\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"P8rV6usRlRl1N-sd2agtI\",\"children\":[{\"id\":\"Tz-RZpltWeLKu3uBSDxlL\",\"children\":[{\"id\":\"WJtPXCOgbt1EoLqWehFaQ\",\"children\":[{\"id\":\"LgOsHngOK3jYOGHJB9JgL\",\"children\":[{\"text\":\"filePath\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"JAqKFj7WTxC1vTa_KBe0N\",\"children\":[{\"id\":\"km4yFvkj1WT6RsIEg2KtU\",\"children\":[{\"id\":\"eVJU5Z4zwl0wNZO_LjliD\",\"children\":[{\"text\":\"String\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"EvZtM5Jb_TB_I-6oGTR4N\",\"children\":[{\"id\":\"rfjZVNEXzwud0gYzkEH2K\",\"children\":[{\"id\":\"M2WfHrzjDQP81jOhIV8hJ\",\"children\":[{\"text\":\"Path of uploaded audio file, which is a local path.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[19,13,68],\"widthMode\":\"percentage\"},{\"id\":\"S-WsRC-W2-qf6zFpHvVmz\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code13\",\"type\":\"h4\"},{\"id\":\"ryBTTrG-mYOmFftjiqXEE\",\"children\":[{\"id\":\"SSbEgBANxb_G6YfSuIroa\",\"children\":[{\"text\":\"var ret = m_context.PttUploadRecordedFile(filePath);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"wzgqlEffNsoKuWgstJp0e\",\"children\":[{\"text\":\"Callback for audio file upload completion\"}],\"nodeId\":\"callback-for-audio-file-upload-completion\",\"type\":\"h3\"},{\"id\":\"ok7pluFBDVDs7hhPVNVYg\",\"children\":[{\"text\":\"After the audio file is uploaded, the event message \"},{\"code\":1,\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_UPLOAD_COMPLETE\"},{\"text\":\" will be returned, which will be identified in the \"},{\"code\":1,\"text\":\"OnEvent\"},{\"text\":\" function.\\nThe passed parameters include \"},{\"code\":1,\"text\":\"result\"},{\"text\":\", \"},{\"code\":1,\"text\":\"file_path\"},{\"text\":\", and \"},{\"code\":1,\"text\":\"file_id\"},{\"text\":\".\"}],\"type\":\"p\"},{\"id\":\"xK9WT1RGbVzfg0sbAYCL8\",\"children\":[{\"id\":\"tSbCnKKVJaq5fpZ12rcQ2\",\"children\":[{\"id\":\"3iLmengFCzLArCsoUH8Vl\",\"children\":[{\"id\":\"OiBKV0K7EqXu4TN4hgqS-\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"T_e2O7pqwWnW0obbWs4Kb\",\"children\":[{\"id\":\"XvJQZHdBArzZy-BfPdstb\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"nnrodU3cnhSFrVyPZk4Au\",\"children\":[{\"id\":\"Rd_hYs-ZVs6Hlcgat7twD\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"nDIJzLYz77zyicQ9tcqjm\",\"children\":[{\"id\":\"INk5ryfj7wNSNGICidWpJ\",\"children\":[{\"id\":\"J23jauUGbmH_v1pqUFQ-D\",\"children\":[{\"id\":\"aaVA3q12tlD66dXvxKj1u\",\"children\":[{\"text\":\"result\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"1lMxGUVKcFEcGpJPI9ieV\",\"children\":[{\"id\":\"a_2WWTzq2WFpaZPuO3Qk8\",\"children\":[{\"id\":\"6Lbp1dILILQGzalesiytR\",\"children\":[{\"text\":\"number\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"UAxfwdxunUf1tVA184Rp0\",\"children\":[{\"id\":\"OAXtFIZfc530cDaq1cd-4\",\"children\":[{\"id\":\"JXDkhyO5WxHF154BqS38H\",\"children\":[{\"code\":1,\"text\":\"0\"},{\"text\":\": Recording is completed\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"Qx0fKeQr-XmpHWqYSqp_F\",\"children\":[{\"id\":\"1h_aNpj5t8qr58n9PYkim\",\"children\":[{\"id\":\"0BN3YDsZ3hizj4LfTLmT6\",\"children\":[{\"id\":\"p6Dp56PhOqBX__51624Fx\",\"children\":[{\"text\":\"filepath\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"d5u9OCa3PrQFZYQJ3SF7S\",\"children\":[{\"id\":\"pWKEjxNIW7TD8PHNJIOT6\",\"children\":[{\"id\":\"dEIHdzLjgL-OitqUKthtL\",\"children\":[{\"text\":\"string\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"vESWXZNKPua41J4B8oclf\",\"children\":[{\"id\":\"he5-qcfK1OjQ1_HiqJ57B\",\"children\":[{\"id\":\"Kjr3QItbTEWmOUv2xGood\",\"children\":[{\"text\":\"Path of stored recording file\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"6fmkDucP6NYeSJLVg_hnF\",\"children\":[{\"id\":\"iH4Hm8gwH6Xkf8Llez8yp\",\"children\":[{\"id\":\"4vaQs_u-NNhSHNIPOLqLd\",\"children\":[{\"id\":\"UDw1JHVM8mJnPkZO4sfoo\",\"children\":[{\"text\":\"fileid\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Mreqx20AK_d0T4cviqjJV\",\"children\":[{\"id\":\"KaD9zxiyT886hE1A0zr_T\",\"children\":[{\"id\":\"SR6oSINU6Y1svTG-_YbHS\",\"children\":[{\"text\":\"string\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"jk31FTF3csKlMWToDaWe-\",\"children\":[{\"id\":\"t7nkhniQs93YdTJKr_5Q5\",\"children\":[{\"id\":\"qFD8AuGDIdTnz7KuiL5nm\",\"children\":[{\"text\":\"File URL\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[25,20,55],\"widthMode\":\"percentage\"},{\"id\":\"xYPiITkyRXeHYNNxq09nn\",\"children\":[{\"text\":\"Error codes\"}],\"nodeId\":\"error-codes3\",\"type\":\"h4\"},{\"id\":\"QZrD8c_nE_5x24Tt8VPrV\",\"children\":[{\"id\":\"QoxuXG4eQELPzL1qxeEbT\",\"children\":[{\"id\":\"E-AMX-B4XnpxGnWtRWq5d\",\"children\":[{\"id\":\"PFFbbqKUxu7ERjMmyBxb8\",\"children\":[{\"text\":\"Error Code Value\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"SNO6Y-R8yYKZkqDnmzMGU\",\"children\":[{\"id\":\"gLWyHXNmDpk_iy2c2Wdbi\",\"children\":[{\"text\":\"Cause\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"fVLspeY1VMnJWeiR2FN4_\",\"children\":[{\"id\":\"4J0p_qLYTeYTDu6JYM4Wz\",\"children\":[{\"text\":\"Suggested Solution\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"pir6nuq9rSv1iXJCZmNpk\",\"children\":[{\"id\":\"1GQ-Q_m0XL3mXYxE3Nf3N\",\"children\":[{\"id\":\"w2GGwWypy-5xZ9a7qB1WO\",\"children\":[{\"id\":\"ydtrCY40-yMQ8SOBzQRnl\",\"children\":[{\"text\":\"8193\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"nEAXtkjFXTHIj5PZbtyLu\",\"children\":[{\"id\":\"t1pBcaax6qYIgkh7Vc38Z\",\"children\":[{\"id\":\"P-nWnYeXe6DlcwnuvJXlK\",\"children\":[{\"text\":\"An error occurred while accessing the file during upload.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"G2iPN0nmcgJTJ40Yy0SSa\",\"children\":[{\"id\":\"Y7FhGsL0MlD6N2a2BP46R\",\"children\":[{\"id\":\"UUz1ZEG1bzQc32OasQG9D\",\"children\":[{\"text\":\"Ensure the existence of the file and the validity of the file path.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"QCh9aZNRfguvqAprIMRuq\",\"children\":[{\"id\":\"-Jq3BfZOix7T7Nvrpt90L\",\"children\":[{\"id\":\"uGJgf4_5jn4fCHrUHWQXl\",\"children\":[{\"id\":\"NCDYl9kkRsBkiOfJBtnBY\",\"children\":[{\"text\":\"8194\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"6g30DSLxssVb_PvqYVvSc\",\"children\":[{\"id\":\"FRVyOIkO1Tj1iWwSChEYy\",\"children\":[{\"id\":\"T9lBUtg7Aciqku-tHK0lb\",\"children\":[{\"text\":\"Signature verification failed.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"T9caH8PyZ4TYwleI9mARr\",\"children\":[{\"id\":\"tRB_Nf4ZTPd40wGAIP9EX\",\"children\":[{\"id\":\"MLYSYcbbCooMzmQF02ek7\",\"children\":[{\"text\":\"Check whether the authentication key is correct and whether the voice message and speech-to-text feature is initialized.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"dekouI3A3nKGYcRX8vG1r\",\"children\":[{\"id\":\"2YQWJTGJBfOywiHU5IJuu\",\"children\":[{\"id\":\"Lcfy9kNC6G_4B0K00K8M5\",\"children\":[{\"id\":\"5ct7lJCgvt_7RnqKhyt_S\",\"children\":[{\"text\":\"8195\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"IQQ784Ch9TJU7cNDwaLTC\",\"children\":[{\"id\":\"Lm2HzBirCmeEHu0ruQzmR\",\"children\":[{\"id\":\"-ssfXIDd9F6B43l1bnY4z\",\"children\":[{\"text\":\"A network error occurred.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"pI6yK21ScmpiiTwH4iWU0\",\"children\":[{\"id\":\"2R8YjMt7DQAsJcIjCd0K9\",\"children\":[{\"id\":\"fV9SF-rIUksjvKz1U_BkG\",\"children\":[{\"text\":\"Check whether the device can access the internet.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"jT3BQ-oeBzcNGimhm2OOg\",\"children\":[{\"id\":\"baCJlbBB04KTr02hN2PVx\",\"children\":[{\"id\":\"Gumv1K6nufoCiN5clLfOQ\",\"children\":[{\"id\":\"s_NAsDYtFC-u8cmoEWElX\",\"children\":[{\"text\":\"8196\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"A3s56nwCd4zkITRznL9zF\",\"children\":[{\"id\":\"uFmztlAk2DK8sha9or0wr\",\"children\":[{\"id\":\"uCqQrEhMcsaolzhNrPCw3\",\"children\":[{\"text\":\"The network failed while getting the upload parameters.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"GhNvUgqAGqWoyBdEvfxDe\",\"children\":[{\"id\":\"ZcufGDSUo_ecGf0qYIFlS\",\"children\":[{\"id\":\"zpfFnk6DoQxn46JM8vLyR\",\"children\":[{\"text\":\"Check whether the authentication is correct and whether the device can access the internet.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"jB3Y1vJkRXtGGozAL0BrJ\",\"children\":[{\"id\":\"diUbOjGtAAX1MjLg_otmE\",\"children\":[{\"id\":\"QGEqzySYH5vW8rbdJ5rKK\",\"children\":[{\"id\":\"-swFCMBt0kUB1xH-z6I0s\",\"children\":[{\"text\":\"8197\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"357KHI2rRzjSQcznjNawz\",\"children\":[{\"id\":\"vGhS97l5VqfX-5-NlREyh\",\"children\":[{\"id\":\"js3DtIl7hOqkJ6a9dUPV-\",\"children\":[{\"text\":\"The packet returned during the process of getting the upload parameters is empty.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"BEtiYTEp5YtfGQRuG2czn\",\"children\":[{\"id\":\"bu_yXGxEZpzRqn4vtk504\",\"children\":[{\"id\":\"ccFGJvy1Gtk_RM1FfKNv-\",\"children\":[{\"text\":\"Check whether the authentication is correct and whether the device network can normally access the internet.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"-Z1ocyN4Jc-E2edQ8LSXs\",\"children\":[{\"id\":\"cgcCfSIclDFnLfhnrm6UC\",\"children\":[{\"id\":\"NUNrBUJQieOoRdeNXiSt-\",\"children\":[{\"id\":\"PtLuIRawE-0ZRRxP7Txsg\",\"children\":[{\"text\":\"8198\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"v2nk5yoGJ58zT_tnJGI6s\",\"children\":[{\"id\":\"NriS7qHcYCgO392cmEuED\",\"children\":[{\"id\":\"njWifus59jJXROfOv9qaS\",\"children\":[{\"text\":\"Failed to decode the packet returned during the process of getting the upload parameters.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"6uxsCX0J_NwcKQtYW61px\",\"children\":[{\"id\":\"WOhXT_mV_euMRx2InnMeL\",\"children\":[{\"id\":\"Ekwc5YdSnDGQaxFOo5eWN\",\"children\":[{\"text\":\"Check whether the authentication is correct and whether the device can access the internet.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"GauLvF_MU10OlxLT9wHgx\",\"children\":[{\"id\":\"B3u9MgS-xCWqYrgtebHgE\",\"children\":[{\"id\":\"H5QSUcKtZB6MkJgV2Dp1e\",\"children\":[{\"id\":\"HibSx7jjyQYFqWkFndAmr\",\"children\":[{\"text\":\"8200\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"DRNv_XBNu56TLESn1PGjC\",\"children\":[{\"id\":\"3YvK1OzYgT8LMJEJ-jQpd\",\"children\":[{\"id\":\"fE2IpJYHq2DKRj0RFWm7w\",\"children\":[{\"text\":\"No \"},{\"code\":1,\"text\":\"appinfo\"},{\"text\":\" is set.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"LerKejlCLjtnhih7qIvnX\",\"children\":[{\"id\":\"_X6LiLOi5SADbrsaIy4VL\",\"children\":[{\"id\":\"On0OnIqu-SZvhC4irCi6-\",\"children\":[{\"text\":\"Check whether the \"},{\"code\":1,\"text\":\"apply\"},{\"text\":\" API is called or whether the input parameters are empty.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[16,34,50],\"widthMode\":\"percentage\"},{\"id\":\"RoopeRCb25-OzY6-p3Oau\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code14\",\"type\":\"h4\"},{\"id\":\"jw6qUKog3tVu_fv8BfEZK\",\"children\":[{\"id\":\"0sN-7qu_t3ZXT0TP_-F6z\",\"children\":[{\"text\":\"m_context.setTMGDelegate(function(eventId, msg){\"}],\"type\":\"code-line\"},{\"id\":\"645FHl9XTKRc4iLg3OLmi\",\"children\":[{\"text\":\" switch (eventType) {\"}],\"type\":\"code-line\"},{\"id\":\"BxC7j2YXOKF0zPKKXAeWV\",\"children\":[{\"text\":\" case ITMG_MAIN_EVENT_TYPE_ENTER_ROOM:\"}],\"type\":\"code-line\"},{\"id\":\"qPlh9gxdRkR0FA5PJGIxv\",\"children\":[{\"text\":\" {\"}],\"type\":\"code-line\"},{\"id\":\"TmC-d4SYtbjOBNyxk_7QZ\",\"children\":[{\"text\":\" // Process\"}],\"type\":\"code-line\"},{\"id\":\"AtixGb6CqTop9n3cykZhg\",\"children\":[{\"text\":\" break;\"}],\"type\":\"code-line\"},{\"id\":\"vKgwMhXy1qFiBF9xfDZGt\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"9vln1_n3rNASwOyZGGxh6\",\"children\":[{\"text\":\" ...\"}],\"type\":\"code-line\"},{\"id\":\"ECick-FdfduRNCfGpkPjk\",\"children\":[{\"text\":\" case ITMG_MAIN_EVNET_TYPE_PTT_UPLOAD_COMPLETE:\"}],\"type\":\"code-line\"},{\"id\":\"zlHhcMPDxDq_XSdgmEtTT\",\"children\":[{\"text\":\" {\"}],\"type\":\"code-line\"},{\"id\":\"DbCTaYLZ5aTWKusd3IShf\",\"children\":[{\"text\":\" // Process\"}],\"type\":\"code-line\"},{\"id\":\"P8b0RyJO0SxxWaB9DmHaq\",\"children\":[{\"text\":\" break;\"}],\"type\":\"code-line\"},{\"id\":\"nRwjxHVbZOZvd2FXltP7q\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"ZsUttCis5_yNhtdUbZEMB\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"EIWp3MjRYVzveKbGnBS8M\",\"children\":[{\"text\":\"});\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"aCeotaafNvjA39I5Wu8zd\",\"children\":[{\"text\":\"Downloading the audio file\"}],\"nodeId\":\"downloading-the-audio-file\",\"type\":\"h3\"},{\"id\":\"9x3fnW-d1HpQ6YzuRvih6\",\"children\":[{\"text\":\"This API is used to download an audio file.\"}],\"type\":\"p\"},{\"id\":\"Uj7S6OkfNs6S_HKpWUIdX\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype14\",\"type\":\"h4\"},{\"id\":\"envZ9xJKeLMFmHkBawkoF\",\"children\":[{\"id\":\"VkBtZSvcE3pm72umjBH6M\",\"children\":[{\"text\":\"PttDownloadRecordedFile(fileId: string, filePath: string) : number\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"WG__G3T0-vW32erA_T_5n\",\"children\":[{\"id\":\"1JgyFhuxAUW-sKZs0aqDM\",\"children\":[{\"id\":\"34sprZWI1J2IdhEF1JSn9\",\"children\":[{\"id\":\"_-j1S75_B6J5d6oHIo6RN\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ParjWEFrAYphz6Cl7vW0X\",\"children\":[{\"id\":\"_SB0shIS3T2AK99O4F7VS\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"BZ7PtL7bAfZtdNkDFXDOK\",\"children\":[{\"id\":\"B2NC-lojE7chx98HXVAtL\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"QEsLdG_F7N5qwmV7HrA5G\",\"children\":[{\"id\":\"JFbSwzxCxHsxPfjGnHfVl\",\"children\":[{\"id\":\"A2EUaXenPXQrNa7rGRFmJ\",\"children\":[{\"id\":\"CXu2YYE6SHw-CzLeBe2X3\",\"children\":[{\"text\":\"fileId\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"C5JDnyUDjvWnQ_zy2xp7F\",\"children\":[{\"id\":\"YokSYb6HKXoyQaypjCFeJ\",\"children\":[{\"id\":\"pyYNRvL2FZIxLiCMqHbnS\",\"children\":[{\"text\":\"string\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"KafkX5PAcTBgyp7Ggq6Zr\",\"children\":[{\"id\":\"rooU7QC8CEqWYaEVHHGX_\",\"children\":[{\"id\":\"Kk4xzAgwu2GCQptkdC-mG\",\"children\":[{\"text\":\"File URL\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"Tp82ywDLvkKdt05uSzsZo\",\"children\":[{\"id\":\"whfbSPZwa9hsX6HiUKXCf\",\"children\":[{\"id\":\"huT9vC-BaHUJc4HyIkVWA\",\"children\":[{\"id\":\"ZUPlOORfQAiicPmPNueg9\",\"children\":[{\"text\":\"filePath\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"lBANEq9dgfQo144eq7xJ1\",\"children\":[{\"id\":\"oycTRZ2BQGIFfx_jpql98\",\"children\":[{\"id\":\"lRuMKl60c6Kkkn5EF2ZAB\",\"children\":[{\"text\":\"string\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"UcEzry_60w4wGRleKWm3h\",\"children\":[{\"id\":\"YBfYyqNIyPEjriFit-Y8P\",\"children\":[{\"id\":\"G1R1zFwU4Uo3mov1x_z18\",\"children\":[{\"text\":\"Local path of saved file, which must be accessible and cannot be the \"},{\"code\":1,\"text\":\"fileid\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[14,9,77],\"widthMode\":\"percentage\"},{\"id\":\"RKLq784y6k3VZMDsc3Q-H\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code15\",\"type\":\"h4\"},{\"id\":\"7WRaj08ogoRDL1TsTk5eS\",\"children\":[{\"id\":\"s9cPpxWV-6c7_XiT6hQjD\",\"children\":[{\"text\":\"var ret = m_context.PttDownloadRecordedFile(fileID,filePath);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"X7W3G8EJUkFvOJG5D_enn\",\"children\":[{\"text\":\"Callback for audio file download completion\"}],\"nodeId\":\"callback-for-audio-file-download-completion\",\"type\":\"h3\"},{\"id\":\"UUq8o6NwGcjtYsts-LLWq\",\"children\":[{\"text\":\"After the audio file is downloaded, the event message \"},{\"code\":1,\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_DOWNLOAD_COMPLETE\"},{\"text\":\" will be returned, which will be identified in the \"},{\"code\":1,\"text\":\"OnEvent\"},{\"text\":\" function.\\nThe passed parameters include \"},{\"code\":1,\"text\":\"result\"},{\"text\":\", \"},{\"code\":1,\"text\":\"file_path\"},{\"text\":\", and \"},{\"code\":1,\"text\":\"file_id\"},{\"text\":\".\"}],\"type\":\"p\"},{\"id\":\"LHwunq5VTYTw4b0z0W2kh\",\"children\":[{\"id\":\"x2OkIvEK1ysBzFGIplXii\",\"children\":[{\"id\":\"3zA1gQXop9CxFU_z2zVfC\",\"children\":[{\"id\":\"tY9XX8vMDMd32eB3V2uLY\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"PDxVS94JSp-hiXBTk5A0F\",\"children\":[{\"id\":\"FhM8UtSXdtjBdFNjABkrc\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"lDk3wqT23uZf204X3NGIT\",\"children\":[{\"id\":\"f0cLKKXIvTO4PAgt2K8Zx\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"qxxMnSPCMhniR7Ta9M6UC\",\"children\":[{\"id\":\"qAbe8OAhDgvAwZdta-g4A\",\"children\":[{\"id\":\"ICSnO9l96eO9JuuFl8eoS\",\"children\":[{\"id\":\"QnstUmcuEKOMScjAVMVod\",\"children\":[{\"text\":\"result\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"1qM0DZnFLj65B6CNYCpCE\",\"children\":[{\"id\":\"k7xd-vgrUEoD2ir55grrF\",\"children\":[{\"id\":\"jPRVFSifiwKRn33mlbtEV\",\"children\":[{\"text\":\"number\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Sg-O8IIDEWOGhRG_mOb9L\",\"children\":[{\"id\":\"wNX-vvJtxhKzi0JixOB7b\",\"children\":[{\"id\":\"45CoyKC8g9V2U40rlkwg2\",\"children\":[{\"code\":1,\"text\":\"0\"},{\"text\":\": Download is completed\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"TzmiuYGkmASCsJjbs43HP\",\"children\":[{\"id\":\"JpCTStK5zvPBQwAABBPw-\",\"children\":[{\"id\":\"kXBL-0iqZwv0kCVIiGNL0\",\"children\":[{\"id\":\"zu4aZlusF-a-u6QI3_CTE\",\"children\":[{\"text\":\"filepath\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"PvOp45-VHJpFpWClYr8mN\",\"children\":[{\"id\":\"dum9g75FAxN8TqCukaSKZ\",\"children\":[{\"id\":\"YHd5MbTmFl_Rn3RQW0R6q\",\"children\":[{\"text\":\"string\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"NxfomN-RAj_yNIEbW26lH\",\"children\":[{\"id\":\"38t7ayczzaDA9rNQvgjzn\",\"children\":[{\"id\":\"lvDXBGyh7n7-oJpqTD_6p\",\"children\":[{\"text\":\"Path of stored recording file\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"wbKGvq23CvIZFnQu-x7rI\",\"children\":[{\"id\":\"KNFjx-0sxyj37Wcanbe1g\",\"children\":[{\"id\":\"ygrNU15K6eFLZdxle8Y7T\",\"children\":[{\"id\":\"A6D86REEAP8UglVZxO_dv\",\"children\":[{\"text\":\"fileid\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"fXDEmnCZIu5uYGnRCLKpe\",\"children\":[{\"id\":\"A7qPMimdV0qk6P8_A1rLR\",\"children\":[{\"id\":\"M8tOdL4jS1LUzf5-BKfj4\",\"children\":[{\"text\":\"string\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"VpgmZZHhvf8wZPQD69b9v\",\"children\":[{\"id\":\"7eOzxuuY3Qna6NMhp7dqT\",\"children\":[{\"id\":\"un8O0_yEfmJC5lMG5pIQW\",\"children\":[{\"text\":\"URL of recording file, which will be retained on the server for 90 days.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[15,12,73],\"widthMode\":\"percentage\"},{\"id\":\"b9pbJjnCdlGvQxoIoR8s4\",\"children\":[{\"text\":\"Error codes\"}],\"nodeId\":\"error-codes4\",\"type\":\"h4\"},{\"id\":\"sQJ6AaaUIkRbM15Egs-5D\",\"children\":[{\"id\":\"1Vrbm3_ie5IE8foHWHSIV\",\"children\":[{\"id\":\"nHAjZhP3p0KkvRC8cx9Qm\",\"children\":[{\"id\":\"JEr9nyDBLXQnq4UD2ybW0\",\"children\":[{\"text\":\"Error Code Value\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"xctIZdwf1BpMqB0OSTvnm\",\"children\":[{\"id\":\"8enkzPrwPdR6kOmzYMNw9\",\"children\":[{\"text\":\"Cause\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"M8AX9T-SytmrPuXfmZkyI\",\"children\":[{\"id\":\"oiLJMrnd3u03j69tEI0DS\",\"children\":[{\"text\":\"Suggested Solution\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"_4vAFPgRcFbd379bbtOJE\",\"children\":[{\"id\":\"bFNtxpgYere9UPxBXQb2_\",\"children\":[{\"id\":\"Yl75-pej2IZjq7705AwI1\",\"children\":[{\"id\":\"NTM_ukQfFq9nWzEX5FJ1N\",\"children\":[{\"text\":\"12289\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"T601GB7yAk7Qa1Cp5c_es\",\"children\":[{\"id\":\"YMT7tkih7epx71SxRajz8\",\"children\":[{\"id\":\"TgVax9Y8vdmV1_EHTO0DK\",\"children\":[{\"text\":\"An error occurred while accessing the file during download.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"bt_uGQcpdwBSp46DoHo-a\",\"children\":[{\"id\":\"sjYCdB2cBFwtW_8Yy_TsJ\",\"children\":[{\"id\":\"scnuIO_jZ-vVVrF98utW6\",\"children\":[{\"text\":\"Check whether the file path is valid.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"khklqGdfXGf7fS4_5byEd\",\"children\":[{\"id\":\"RC161T_hrCJUjBKLwpUEu\",\"children\":[{\"id\":\"nUrJc_5nBwxTSdoAPUPZ1\",\"children\":[{\"id\":\"BX9zozJ3YoW0ERtaE4VIM\",\"children\":[{\"text\":\"12290\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"mfzxXC5QBLOTbI-DkJrhg\",\"children\":[{\"id\":\"XlxvSeuZAP6NlwIz2IPv1\",\"children\":[{\"id\":\"kNN3OhS9t-cHRoF0u7Pjg\",\"children\":[{\"text\":\"Signature verification failed.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"TzS8i0UrcMr5qOg7olLKn\",\"children\":[{\"id\":\"zJltws4NhtH4oNZRW_Mob\",\"children\":[{\"id\":\"tfqjSV_mxPm4x24Cjh1xz\",\"children\":[{\"text\":\"Check whether the authentication key is correct and whether the voice message and speech-to-text feature is initialized.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"3rnGyUGK7--6OlofX7eCH\",\"children\":[{\"id\":\"9AMRDYVG071_TR50DRy3r\",\"children\":[{\"id\":\"k6DHAsUv6uFXpeoefEbAP\",\"children\":[{\"id\":\"FUposUyJ8zAt33YqASb_d\",\"children\":[{\"text\":\"12291\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Z9iz3Xtxsgg29yCLOFz_a\",\"children\":[{\"id\":\"ksIssC3c5x1TaLBtV2rta\",\"children\":[{\"id\":\"z0Bf_JH920c65sy9eEyN2\",\"children\":[{\"text\":\"Network storage system exception.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"fPR231cNSRNyBdw2z_Sao\",\"children\":[{\"id\":\"3XJ783IV-QeD8vKXIne4d\",\"children\":[{\"id\":\"hgsOXran1QP4hUWBKRAkn\",\"children\":[{\"text\":\"The server failed to get the audio file. Check whether the API parameter \"},{\"code\":1,\"text\":\"fileid\"},{\"text\":\" is correct, whether the network is normal, and whether the file exists in COS.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"LnCeZOeLJuP5v74CMdH7f\",\"children\":[{\"id\":\"7ADE3QVXRT_ov0I0gVUFJ\",\"children\":[{\"id\":\"7XaOalE7yFiu2Af7NrWbX\",\"children\":[{\"id\":\"Ye2OJk9FmBGGiH3iT0H9D\",\"children\":[{\"text\":\"12292\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"4yN9M8ZuYM3aVKa0Z8Gyj\",\"children\":[{\"id\":\"k5mV_h_nn9lPkWwY_4-WC\",\"children\":[{\"id\":\"GYv27S6X4th6VZobnk9Cx\",\"children\":[{\"text\":\"Server file system error.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"MUu930hYHAkIVEtlD3usZ\",\"children\":[{\"id\":\"F1fUYFKu8atkh9eZ_eYB5\",\"children\":[{\"id\":\"bTbImvPViQEVTvTKtZDwb\",\"children\":[{\"text\":\"Check whether the device can access the internet and whether the file exists on the server.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"W98WoGiS5i4SJ_JWPyI2Z\",\"children\":[{\"id\":\"3uL-UawjoW7KjuA2BYsOg\",\"children\":[{\"id\":\"ozIphCOj9Ak73Q40ufhJS\",\"children\":[{\"id\":\"kN-wYD1MtwiA_76Hyo2Cr\",\"children\":[{\"text\":\"12293\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"G2O91FTauTV4H9Onq3vdc\",\"children\":[{\"id\":\"KfIILdT9Uh1A-vgnFFJDy\",\"children\":[{\"id\":\"kSb0zBGxSkxbGj16Gsn3r\",\"children\":[{\"text\":\"The HTTP network failed during the process of getting the download parameters.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ilQSy54DW0Wr4WzBW9TNr\",\"children\":[{\"id\":\"qVGOfWcrp0YQHSZnqJ6Y1\",\"children\":[{\"id\":\"tgCeC_i8x1SKLGEOP-2Al\",\"children\":[{\"text\":\"Check whether the device can access the internet.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"2lRQPd96wuhSuSAX7bQvx\",\"children\":[{\"id\":\"QaBRtSJN9pQGWxy7V-dUK\",\"children\":[{\"id\":\"8H-SWmHu9-uCssEuvXtt7\",\"children\":[{\"id\":\"CXIZ5mgrVX4uU9W1PXrJ8\",\"children\":[{\"text\":\"12294\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"j5njkm2bXDLT2UpzEsTig\",\"children\":[{\"id\":\"Z-Git2bQEPEfouowqWe-I\",\"children\":[{\"id\":\"GcU0nlWyhb3zkITWOgodl\",\"children\":[{\"text\":\"The packet returned during the process of getting the download parameters is empty.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"uDvckFmDV5hU32jqcPnGu\",\"children\":[{\"id\":\"GfehPpIGu1dPoreEEL8Fu\",\"children\":[{\"id\":\"_WbHs556Dh6_LLSRWgvRw\",\"children\":[{\"text\":\"Check whether the device can access the internet.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"RmDhdN3WGzLTWXZatOaY0\",\"children\":[{\"id\":\"m43hcMdgDg-RiVHjxo1sG\",\"children\":[{\"id\":\"PF9gkh9T3Xe2TA4-9HNzk\",\"children\":[{\"id\":\"5dmI_SwgFNQqpLf8OeReg\",\"children\":[{\"text\":\"12295\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"jMM9osGdQ-4D8LbLKjfJZ\",\"children\":[{\"id\":\"jDmq3ZaNmIyG270JCwGoV\",\"children\":[{\"id\":\"Eajbks_ZNeCZMdMa_Se_j\",\"children\":[{\"text\":\"Failed to decode the packet returned during the process of getting the download parameters.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"-BqVu4GZECqMd6cnvohi0\",\"children\":[{\"id\":\"hvWqP9DNOgu1OUWFD_qwd\",\"children\":[{\"id\":\"MvZkaN9arZpIaMRGQXjK7\",\"children\":[{\"text\":\"Check whether the device can access the internet.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"SUiRemmZSSF2DCr5wfJK0\",\"children\":[{\"id\":\"RvC9IHJ7h2pQJ18HNOF8-\",\"children\":[{\"id\":\"3oMdgspV-VkjV9dUcIy4X\",\"children\":[{\"id\":\"0mMacPLnpkzcCiW1NtVPX\",\"children\":[{\"text\":\"12297\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"0TycGxW4ZgSWd1A8Cbbum\",\"children\":[{\"id\":\"uhRBQ4LD4YeEYwm6eePLD\",\"children\":[{\"id\":\"iDfHG0KrQEqF-gprr1YQR\",\"children\":[{\"text\":\"No \"},{\"code\":1,\"text\":\"appinfo\"},{\"text\":\" is set.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"YcI3nsOmtb8GOJaS3Lbk0\",\"children\":[{\"id\":\"YcME71yAfGSezRcGNJEkW\",\"children\":[{\"id\":\"V_iqAsKPGpMbka6f68euG\",\"children\":[{\"text\":\"Check whether the authentication key is correct and whether the voice message and speech-to-text feature is initialized.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[16,36,48],\"widthMode\":\"percentage\"},{\"id\":\"9CtkXaDhlBInQifpkMvuG\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code16\",\"type\":\"h4\"},{\"id\":\"7JMrXpZ7bDW98XopPtMwf\",\"children\":[{\"id\":\"8t8J5gXTAbyzBuUCAbsVa\",\"children\":[{\"text\":\"m_context.setTMGDelegate(function(eventId, msg){\"}],\"type\":\"code-line\"},{\"id\":\"j17a9TmtyJ0CgEaYsREbh\",\"children\":[{\"text\":\" switch (eventType) {\"}],\"type\":\"code-line\"},{\"id\":\"BR_f9g2zF_rJkn4ULfgCU\",\"children\":[{\"text\":\" case ITMG_MAIN_EVENT_TYPE_ENTER_ROOM:\"}],\"type\":\"code-line\"},{\"id\":\"lb8nN3sQSkm76MExjdikv\",\"children\":[{\"text\":\" {\"}],\"type\":\"code-line\"},{\"id\":\"IrCBv87CF50jIQPreKvpx\",\"children\":[{\"text\":\" // Process\"}],\"type\":\"code-line\"},{\"id\":\"jBfw_ErrjCMzKEqj7nVcF\",\"children\":[{\"text\":\" break;\"}],\"type\":\"code-line\"},{\"id\":\"wWY1b9RYzEXded1rPUmWR\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"_XBE-9SrmF08Tc-NSJHOo\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"2Y1vSlNvsVdGii6oN-Nl8\",\"children\":[{\"text\":\"});\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"kBB-2nyKmvcfFg6hTz1zH\",\"children\":[{\"text\":\"Playing back audio\"}],\"nodeId\":\"playing-back-audio\",\"type\":\"h3\"},{\"id\":\"ugFsi-LajhqQBGY-jwd0P\",\"children\":[{\"text\":\"This API is used to play back audio.\"}],\"type\":\"p\"},{\"id\":\"YGQZ4tA4fPiWqCvLfATjB\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype15\",\"type\":\"h4\"},{\"id\":\"J21ekM66nJmrmvSIcvMqe\",\"children\":[{\"id\":\"LyB3XLVgLFbNHb2kVjHcr\",\"children\":[{\"text\":\"PttPlayRecordedFile(filePath: string, voiceType: ITMG_VOICE_TYPE) : number\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"Wq5PKqnbBegN8E2W-H1TW\",\"children\":[{\"id\":\"vA7eI1x6gcqg3nRgUSX_b\",\"children\":[{\"id\":\"lyB_Mms3UHnXM0T6w4FHl\",\"children\":[{\"id\":\"cEGrEtfidW-fHynz6b3pp\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ovqy3ChNzh0bfn6ReVRSW\",\"children\":[{\"id\":\"7GY0FcGMnXaUnaFu8qY3y\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"UZwyg-QrO3aBgBv9UsSgH\",\"children\":[{\"id\":\"MIcAQJSHkDd3_jZhIQFdU\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"nET6WdxhcICOgQ_dP1p1s\",\"children\":[{\"id\":\"saQmJS78qpA6CdNrjNolK\",\"children\":[{\"id\":\"SfSUVAwqBlIv6Lqwqixly\",\"children\":[{\"id\":\"Xw3a7mH0ym3HRkzbM162E\",\"children\":[{\"text\":\"filePath\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"SMIFD-I6XT5Q2StOnZNup\",\"children\":[{\"id\":\"tEYl-mDsd2Do1QYPqgtEU\",\"children\":[{\"id\":\"DLZAny-5yLlPRXI73_sLf\",\"children\":[{\"text\":\"string\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"jjMlrlPXRZBqMf3gpBZr8\",\"children\":[{\"id\":\"hfKqfLSisqT0RtgbQY-3J\",\"children\":[{\"id\":\"2jbblXJBal-gW_fJLRPCe\",\"children\":[{\"text\":\"Local audio file path\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"lBcVN72YDbin8snrZspvb\",\"children\":[{\"id\":\"70zhEzqp0OluZMsK-ODBl\",\"children\":[{\"id\":\"7_Iu0Qzdnqx0pkquqmYx8\",\"children\":[{\"id\":\"7Ry6jfzeP5rjOJrWzn3D-\",\"children\":[{\"text\":\"voicetype\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"D2L1tf7m4Fg6LCeQ8Hx_h\",\"children\":[{\"id\":\"68ODkww8qtMyMd2Jv6l2H\",\"children\":[{\"id\":\"SIr2LQUTInKYGfRT9eikT\",\"children\":[{\"text\":\"ITMG_VOICE_TYPE\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"V2tVsUi3UIoMZp2FMo_ES\",\"children\":[{\"id\":\"kH0XA8g4EgpOzok3nbA4Y\",\"children\":[{\"id\":\"y-9QEON_hUsGgqTQuy_KN\",\"children\":[{\"text\":\"Voice changer type. For more information, see \"},{\"id\":\"yH_M2kJvzi6WIIDJSVSDJ\",\"children\":[{\"text\":\"Voice Changing\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://www.tencentcloud.com/document/product/607/44995\",\"props\":{\"type\":\"link\",\"url\":\"https://www.tencentcloud.com/document/product/607/44995\"},\"type\":\"ref\"},{\"text\":\".\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[14,23,63],\"widthMode\":\"percentage\"},{\"id\":\"ghCJqMOODhEKUvIbfuU5e\",\"children\":[{\"text\":\"Error codes\"}],\"nodeId\":\"error-codes5\",\"type\":\"h4\"},{\"id\":\"gfPtm9L7CKxgL4OFyV8uP\",\"children\":[{\"id\":\"vok0jJ444ZtaOMEXnFLCi\",\"children\":[{\"id\":\"L8q7wjurkzW1FGQKAeJ6D\",\"children\":[{\"id\":\"DETKTyuPFG-y5QfEGph8h\",\"children\":[{\"text\":\"Error Code Value\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"RHYoqnXR6lVD73I4gHnY3\",\"children\":[{\"id\":\"93J9VADaNhll1xlJLcoO7\",\"children\":[{\"text\":\"Cause\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"0S82_TonL1m9cO29asKuY\",\"children\":[{\"id\":\"gYV6sfXuqa89iFbt84UE7\",\"children\":[{\"text\":\"Suggested Solution\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"7bfeJnR0uLCvFGvwNEljJ\",\"children\":[{\"id\":\"14jcMJKosZ5Ivsk7D9jfP\",\"children\":[{\"id\":\"vIapCEqkKFhmRkMY22upi\",\"children\":[{\"id\":\"2ky36hlZvxRoMYMcm61Lo\",\"children\":[{\"text\":\"20485\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"FLvISIgtkVMg0zLZM6q37\",\"children\":[{\"id\":\"p2xTNuyWStXJA1YDsg6xd\",\"children\":[{\"id\":\"ba221hMaOvPpNUxoRpFnN\",\"children\":[{\"text\":\"Playback is not started.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"oLHJUptk3TMxDFJDiFNhD\",\"children\":[{\"id\":\"IyUaetgAf-Z68POZ7xhFZ\",\"children\":[{\"id\":\"y70UVXSS9YNWechXlScNH\",\"children\":[{\"text\":\"Ensure the existence of the file and the validity of the file path.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[19,24,57],\"widthMode\":\"percentage\"},{\"id\":\"8n2v05-h1nB_9K0jXgwUh\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code17\",\"type\":\"h4\"},{\"id\":\"sfv03CTyxaPcb8TIm0PC5\",\"children\":[{\"id\":\"Injgnwo9U5rO5r9JnLLCm\",\"children\":[{\"text\":\"m_context.PlayRecordedFile(filePath); \"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"kgpg81kzZGpaZELXgFgJg\",\"children\":[{\"text\":\"Callback for audio playback\"}],\"nodeId\":\"callback-for-audio-playback\",\"type\":\"h3\"},{\"id\":\"_SAoz7cC2T5Y33_KvVUzv\",\"children\":[{\"text\":\"After the audio is played back, the event message \"},{\"code\":1,\"text\":\"ITMG_MAIN_EVNET_TYPE_PTT_PLAY_COMPLETE\"},{\"text\":\" will be returned, which will be identified in the \"},{\"code\":1,\"text\":\"OnEvent\"},{\"text\":\" function.\\nThe passed parameter includes \"},{\"code\":1,\"text\":\"result\"},{\"text\":\" and \"},{\"code\":1,\"text\":\"file_path\"},{\"text\":\".\"}],\"type\":\"p\"},{\"id\":\"rgdFXpjwHxJ1U71VR64iT\",\"children\":[{\"id\":\"R0DcLWWYjRYBk_L__Fzxv\",\"children\":[{\"id\":\"I1HfKw4cw095fmd7zECTH\",\"children\":[{\"id\":\"XbqFx-_dU6S16R5X5At7r\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"JzfXXBwk8Bf-M4S82y-qi\",\"children\":[{\"id\":\"Q73GvPJ6U2MG0UDqhnuT1\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"8N6IXgSGSn3METlRJ-G42\",\"children\":[{\"id\":\"-M7RodlwA6fFGkGoSWf-R\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"y-6NSgvkFLtCrxzu-ojfk\",\"children\":[{\"id\":\"eSmnZpJFKqXy6e-mUM1Ft\",\"children\":[{\"id\":\"yQiPKAU79xNrjEZMsd2AE\",\"children\":[{\"id\":\"83j3jdOvVOKCQkWeVuduq\",\"children\":[{\"text\":\"code\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"HUdApmf5uVphQFQ0EvsVn\",\"children\":[{\"id\":\"ybvT2ks-9ABDRa5dMbzmr\",\"children\":[{\"id\":\"XJV6G3gXQPe2T_Q3JIprG\",\"children\":[{\"text\":\"number\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"3zgqP9lksti6v5py7YonG\",\"children\":[{\"id\":\"V2tJsCMw5hGJo4vbis2W2\",\"children\":[{\"id\":\"mGYpa2fqE8ojD0I4IWBBi\",\"children\":[{\"code\":1,\"text\":\"0\"},{\"text\":\": Playback is completed\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"JcMNMhU7LhdYDLDsfSf-5\",\"children\":[{\"id\":\"KMfbyjRsWd_wvRp0VhwPJ\",\"children\":[{\"id\":\"cOMzu92XPeMiD2RZkpbt2\",\"children\":[{\"id\":\"ZztKMY1Aka8IVTHNHbBZ6\",\"children\":[{\"text\":\"filepath\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"smrmFTLrNSnaaqNuE6pin\",\"children\":[{\"id\":\"16CDuHIw3Bgx6TOMTX_8Z\",\"children\":[{\"id\":\"fTOVFupncMT1naIT9uNyn\",\"children\":[{\"text\":\"string\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"0LyeCbJWpyBGQ5THWANG2\",\"children\":[{\"id\":\"PDYp7KrMSvrM0j5uGpTM_\",\"children\":[{\"id\":\"Kt9Hm4IL_2ocENm4-WoqG\",\"children\":[{\"text\":\"Path of stored recording file\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[25,20,55],\"widthMode\":\"percentage\"},{\"id\":\"KTB3SXUswsPUhkMjGv3gj\",\"children\":[{\"text\":\"Error codes\"}],\"nodeId\":\"error-codes6\",\"type\":\"h4\"},{\"id\":\"iLzjBv5wmOBZh8hOpT_Ch\",\"children\":[{\"id\":\"oMJG1ffJbaprlEfakOhvL\",\"children\":[{\"id\":\"1JnmyqGhy7yB-8CIPpKd5\",\"children\":[{\"id\":\"Ku_2EeozrrFepEJ_X8cxh\",\"children\":[{\"text\":\"Error Code Value\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"TngBOI1rAAEubbq0DumLm\",\"children\":[{\"id\":\"r5Hp-cqB9Tm-A8b0UmeTo\",\"children\":[{\"text\":\"Cause\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"DoUNMnOlTviFEdcBuWoRn\",\"children\":[{\"id\":\"heZMN2OosDg4axanVsQ5S\",\"children\":[{\"text\":\"Suggested Solution\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"_MruAfLzJ2_8YvTSZN5DS\",\"children\":[{\"id\":\"0nx6t0-yn7UqWO2UyuJGw\",\"children\":[{\"id\":\"4Phg7Qc1AB_ZSzIwqXr2w\",\"children\":[{\"id\":\"22_T2FhXSBRsK37_x8Ce-\",\"children\":[{\"text\":\"20481\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"c3se4GHWhfCZQskc3MfMW\",\"children\":[{\"id\":\"nC0aXEbYFVKRTLPbYPEJt\",\"children\":[{\"id\":\"9L2rJOUaF86HLo7iY6yYb\",\"children\":[{\"text\":\"Initialization error.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ZWSFz9IPrWkXjkcQtPdJk\",\"children\":[{\"id\":\"WqRM8bcv47O1s4-U0djRM\",\"children\":[{\"id\":\"8aHbr7e3srzXu_NRL4UEh\",\"children\":[{\"text\":\"Check whether the device is being used, whether the permissions are normal, and whether the initialization is normal.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"wnaLIh-hjOApBS-5Wi4kR\",\"children\":[{\"id\":\"OS7pXvdR8hxUty93wnw6-\",\"children\":[{\"id\":\"8jZVkMq-SpX5-JBwtE4ts\",\"children\":[{\"id\":\"vy7j0P9IIVrMkKgo6p77F\",\"children\":[{\"text\":\"20482\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"cZ2cNSON1QpJiD8kwt84O\",\"children\":[{\"id\":\"R7Z0BPkZl7B-WcqxUUfu0\",\"children\":[{\"id\":\"OH6GovUoptuSylghmSiac\",\"children\":[{\"text\":\"During playback, the client tried to interrupt and play back the next one but failed (which should succeed normally).\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"F1yCnOLS2wQwZeEBy3u3a\",\"children\":[{\"id\":\"1xgLl9Q_-JBA5H69BVA9K\",\"children\":[{\"id\":\"VgscHl0Y7CwKx_e5DJxY8\",\"children\":[{\"text\":\"Check whether the code logic is correct.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"NNY8o6dDN2XWvLdz3aknr\",\"children\":[{\"id\":\"q_cg7lG2t5S0BFsezruGB\",\"children\":[{\"id\":\"oATuScw14pyOu7TQqrVvn\",\"children\":[{\"id\":\"qOfpTafpl2AGwm8tLDldP\",\"children\":[{\"text\":\"20483\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"FCWTYtVpvG8CLRooyDe7F\",\"children\":[{\"id\":\"vJ0hXLKfvP2-VE8zfdy7n\",\"children\":[{\"id\":\"QGniktqAcH_85G3M-okGv\",\"children\":[{\"text\":\"Parameter is empty.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"CGIuryIgCqvkNuPm9Cwto\",\"children\":[{\"id\":\"yeK9Q-nH3413OnAUlkULm\",\"children\":[{\"id\":\"QVJnjv54UBkaOjZ1ENBsG\",\"children\":[{\"text\":\"Check whether the API parameters in the code are correct.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"DVfIHkPykx5r2_aaxHiSw\",\"children\":[{\"id\":\"O3-wfiGbwgDbF9K5If399\",\"children\":[{\"id\":\"AIkCBU_aBNPLOAApW8pyr\",\"children\":[{\"id\":\"W4cAHmWfAlv9FD6nQtIfG\",\"children\":[{\"text\":\"20484\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"XVRnw5_Bb0bNTn6s8Lpf5\",\"children\":[{\"id\":\"dh8Uip6mAsrU4A0kbxkGz\",\"children\":[{\"id\":\"j9JTEdWqAEohy0F8pvc3h\",\"children\":[{\"text\":\"Internal error.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"lEbR8n9WFF5AaV4fN8cds\",\"children\":[{\"id\":\"tXJMQ4-DyyNxixXC1QTDG\",\"children\":[{\"id\":\"avmWqruz1dbMXo1hFy8xU\",\"children\":[{\"text\":\"An error occurred while initializing the player. This error code is generally caused by failure in decoding, and the error should be located with the aid of logs.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[17,37,46],\"widthMode\":\"percentage\"},{\"id\":\"jABY3f8XWHSnKQjSTZMLN\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code18\",\"type\":\"h4\"},{\"id\":\"DpRnDwgn3-388K1JqDIt6\",\"children\":[{\"id\":\"p0XhF0zWwXDjlK-vMTKM1\",\"children\":[{\"text\":\"m_context.setTMGDelegate(function(eventId, msg){\"}],\"type\":\"code-line\"},{\"id\":\"gQ02ls5Anl9oQbSpo78lk\",\"children\":[{\"text\":\" switch (eventType) {\"}],\"type\":\"code-line\"},{\"id\":\"FXQNZFnfYLz-efNgm1yC1\",\"children\":[{\"text\":\" case ITMG_MAIN_EVNET_TYPE_PTT_PLAY_COMPLETE:\"}],\"type\":\"code-line\"},{\"id\":\"Qi8pvZfZUM6_VP4t8x4zK\",\"children\":[{\"text\":\" {\"}],\"type\":\"code-line\"},{\"id\":\"9WH96Jo9ZSjHHhRK8_AW5\",\"children\":[{\"text\":\" // Process\"}],\"type\":\"code-line\"},{\"id\":\"jE52V3CzYgmAFv8vrSXas\",\"children\":[{\"text\":\" break;\"}],\"type\":\"code-line\"},{\"id\":\"d5u3jU2HWtSoBD16vJ3dq\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"IYQoZFqH12XQUyMe9a6ag\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"rehOUo1pssCF7L1UD6W6T\",\"children\":[{\"text\":\"});\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"EI1dOa4de2ntyyRII3X4G\",\"children\":[{\"text\":\"Stopping audio playback\"}],\"nodeId\":\"stopping-audio-playback\",\"type\":\"h3\"},{\"id\":\"1O7Wvn-8934qeXSgi_MSY\",\"children\":[{\"text\":\"This API is used to stop audio playback. There will be a callback for playback completion when the playback stops.\"}],\"type\":\"p\"},{\"id\":\"a-fhYpfilxii2UJCcQvwm\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype16\",\"type\":\"h4\"},{\"id\":\"4mzy1WALOMmUjnvBgl-Ar\",\"children\":[{\"id\":\"9WXgXfy-FptlE4gatctik\",\"children\":[{\"text\":\"PttStopPlayFile() : number\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"TIZ3W_y1MnFMbkdNZeB2r\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code19\",\"type\":\"h4\"},{\"id\":\"EBy5RAgrIVLcNKpvv1rQD\",\"children\":[{\"id\":\"wBxKXLcoPQfQshnvCQv9r\",\"children\":[{\"text\":\"m_context.PttStopPlayFile();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"yNIerOsgBajzOx7oBZ_P0\",\"children\":[{\"text\":\"Getting audio file size\"}],\"nodeId\":\"getting-audio-file-size\",\"type\":\"h3\"},{\"id\":\"rA3keTvUnDMhSjTnGG87o\",\"children\":[{\"text\":\"This API is used to get the size of an audio file.\"}],\"type\":\"p\"},{\"id\":\"cRbk8P-xkBILnLCERtDXq\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype17\",\"type\":\"h4\"},{\"id\":\"Q3VqzyjjqYkfSuc3iiCfb\",\"children\":[{\"id\":\"4J1d0jHWaBmcqS2ibYV1D\",\"children\":[{\"text\":\"PttGetFileSize(filePath: string) : number\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"vcIxC6PiT6Oo6CztgsBpo\",\"children\":[{\"id\":\"tUqgVFc7UZm-1BblAS_EF\",\"children\":[{\"id\":\"9XpiNrfvKWLgMIDCaXAa0\",\"children\":[{\"id\":\"9t4TQ4rGLB57kWw9GdtJ-\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"L_vLZnlCY4rjP26n4877c\",\"children\":[{\"id\":\"DqkIv-jCnA_lrEmOQSEGO\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"n4t6IfaCbQvRdyImg0m_a\",\"children\":[{\"id\":\"x_1SmzbTpMyDegsQRK7Zv\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"t8iex-cMcrdJrjxfTIomw\",\"children\":[{\"id\":\"q9cMkm237zEKnZhu0PzlQ\",\"children\":[{\"id\":\"Ul_dE9dL1BCQocH6VC72Z\",\"children\":[{\"id\":\"LImiruLHGhRexufBerCcK\",\"children\":[{\"text\":\"filePath\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"e-eobKVTKv_JuezuGC2LZ\",\"children\":[{\"id\":\"i_Xl8rCKvkWbRpfRvnZS7\",\"children\":[{\"id\":\"4Pqdlh0EEYhOAGWgdy6-s\",\"children\":[{\"text\":\"string\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"TIZ9iiL5NFW0RawuKaSyc\",\"children\":[{\"id\":\"I-O7jBLLjKtZ30i5yPvzE\",\"children\":[{\"id\":\"UODrht5zrk8Nk1lBjRApA\",\"children\":[{\"text\":\"Path of audio file, which is a local path\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[22,15,63],\"widthMode\":\"percentage\"},{\"id\":\"zIcIss5dgA9mZmZ_gBN8y\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code20\",\"type\":\"h4\"},{\"id\":\"nT9O72LhNFrUTBx5rqYWN\",\"children\":[{\"id\":\"Nacp5xp9ubQkxa7gMVELo\",\"children\":[{\"text\":\"m_context.PttGetFileSize(filePath);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"QSh0LDnvPo3NKu3GmEtYV\",\"children\":[{\"text\":\"Getting audio file duration\"}],\"nodeId\":\"getting-audio-file-duration\",\"type\":\"h3\"},{\"id\":\"OfsgNZXLj-AF8VPhviYnZ\",\"children\":[{\"text\":\"This API is used to get the duration of an audio file in milliseconds.\"}],\"type\":\"p\"},{\"id\":\"ontbZVqEfjUnCfgyUnab0\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype18\",\"type\":\"h4\"},{\"id\":\"rmYjDkl6PF6ZhnvzqL_Rm\",\"children\":[{\"id\":\"M8mN-ROw0kSbHuUd03Oq2\",\"children\":[{\"text\":\"PttGetVoiceFileDuration(filePath: string) : number\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"cocwkeQ2jxHyPrvKpuATw\",\"children\":[{\"id\":\"4fAoMPM0vl-ZupXjQ9oNF\",\"children\":[{\"id\":\"lNWJIX-jy3FYatUDw6XlV\",\"children\":[{\"id\":\"P_lgUuByMZvleg5trWexH\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"we2nemtnKIuWdflJVXnjU\",\"children\":[{\"id\":\"ezdjzligxq_DxVPxTtIk-\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"owYQDcAixgIAuz0Y1zt7i\",\"children\":[{\"id\":\"GTvM5zMJ1WNi7d4HSWJmr\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"wH2R5e_Kng5_-ogSnuuyO\",\"children\":[{\"id\":\"N0ZmBFxN8A8lvXbE9SE2a\",\"children\":[{\"id\":\"D5U7iMHIf5bVCW8KZxS4C\",\"children\":[{\"id\":\"CalAr3Sq6f2AcYv9c8Og4\",\"children\":[{\"text\":\"filePath\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"2KrvPjqINlmI2yCNQODsR\",\"children\":[{\"id\":\"37MBsXgeZpAXbKCzj1jEa\",\"children\":[{\"id\":\"C7sM7egR1Bhh-BLsqhYaZ\",\"children\":[{\"text\":\"string\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"UxvzlkNQ0EBzl1XJrpZcv\",\"children\":[{\"id\":\"r9pFN7TN9KN1jr0dVJgsX\",\"children\":[{\"id\":\"9qkWSn6XOf9BPXBWGYFZc\",\"children\":[{\"text\":\"Path of audio file, which is a local path\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[22,15,63],\"widthMode\":\"percentage\"},{\"id\":\"Lc_nxPOErJhJgt-9xxPD8\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code21\",\"type\":\"h4\"},{\"id\":\"wpcp08gF9l4vsytL1GgL4\",\"children\":[{\"id\":\"6BpWOAfz28cuhhY5-42YK\",\"children\":[{\"text\":\"number fileDuration = m_context.PttGetVoiceFileDuration(filePath);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"_SqClZW_Cfcwphrt8qYKI\",\"children\":[{\"text\":\"Fast Recording-to-Text Conversion\"}],\"nodeId\":\"fast-recording-to-text-conversion\",\"type\":\"h2\"},{\"id\":\"Mg64KTUYc8DpS--WTo15z\",\"children\":[{\"text\":\"Translating audio file into text in specified language\"}],\"nodeId\":\"translating-audio-file-into-text-in-specified-language\",\"type\":\"h3\"},{\"id\":\"RuKxyOhBmgbVmpZBDO0en\",\"children\":[{\"text\":\"This API can specify a language for recognition or translate the information recognized in speech into a specified language and return the translation.\"}],\"type\":\"p\"},{\"id\":\"ncAYUp_8qV6Buhc3P4P2Z\",\"children\":[{\"id\":\"JVUHNFnYafLv7v4WPCJG3\",\"children\":[{\"b\":1,\"color\":\"#04C8DC\",\"text\":\"Note: \",\"type\":\"text\"}],\"type\":\"p\"},{\"id\":\"syPcq6JfWxX81bCOsMPlN\",\"children\":[{\"text\":\"Translation incurs additional fees. For more information, see \"},{\"id\":\"kB5b5Gy2Cnz8yoIrSHeo0\",\"children\":[{\"text\":\"Purchase Guide\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://intl.cloud.tencent.com/document/product/607/50009\",\"props\":{\"type\":\"link\",\"url\":\"https://intl.cloud.tencent.com/document/product/607/50009\"},\"type\":\"ref\"},{\"text\":\".\"}],\"type\":\"p\"}],\"hintType\":\"alert\",\"type\":\"hint\"},{\"type\":\"h4\",\"children\":[{\"text\":\"API prototype\"}],\"id\":\"1PXDzXLZIIgRV16irPnKS\",\"nodeId\":\"c1604476-4492-435a-84ea-f8713b5dae82\"},{\"id\":\"OksyAx9H6xhK-P54nSdAn\",\"children\":[{\"id\":\"5nVhkux1Ud9zDeay82LGy\",\"children\":[{\"text\":\"PttSpeechToText(fileID: string, speechLanguage: string, translateLanguage: string) : number\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"LEQRSTaZT48F7XbXWVJNa\",\"children\":[{\"id\":\"-aLOlglpwFLPvk-1aE7Wm\",\"children\":[{\"id\":\"FQvNKGE67kqgnpSBYNLLV\",\"children\":[{\"id\":\"KcHumRQacHzynakubVSDT\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"1kA90MsTQhSdS-fsFr2cG\",\"children\":[{\"id\":\"PpIImMTqtGnhCo6-TD5AQ\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"aUMSi6vv_3wuxjq07wCc1\",\"children\":[{\"id\":\"PgaBcQnM5ONazBDM5r8Rp\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"bSW4Jwm7Gdg5Rb60bdl5U\",\"children\":[{\"id\":\"ICwWKA8SokRFb_VOODOCi\",\"children\":[{\"id\":\"fjGugOLp9pRQdV82rTTXM\",\"children\":[{\"id\":\"FMGRKrJIuK6hLCYUxwCQe\",\"children\":[{\"text\":\"fileID\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"H-I7NaJk8PCvnvV5loBlc\",\"children\":[{\"id\":\"PcYF96Z4SOasUuRmXMUfV\",\"children\":[{\"id\":\"p9MdUOhWuNX6RvF03glfR\",\"children\":[{\"text\":\"string\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"DnO_y0SZLbDqOLuO0qndZ\",\"children\":[{\"id\":\"Mb2hA1LYGWmPlqAd9NmFY\",\"children\":[{\"id\":\"-uzZmSbaxS-ZjqH7PDP19\",\"children\":[{\"text\":\"URL of audio file, which will be retained on the server for 90 days\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"USspyo9oGmB6zRp7N4Sok\",\"children\":[{\"id\":\"jVOsFBPJRGUjJrjODGfGW\",\"children\":[{\"id\":\"gGtd-3eECzyjQ_94Kny7s\",\"children\":[{\"id\":\"EGl1JnUfSmkmpRSZrQZaV\",\"children\":[{\"text\":\"speechLanguage\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"pwKYRCLCQi68OTOXYkyT8\",\"children\":[{\"id\":\"wd_1O9_Guj8En20SiYhrn\",\"children\":[{\"id\":\"nY_Ez4gmmiHifj-WXR2D_\",\"children\":[{\"text\":\"string\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"G2kqo-eQjQ1WxWYUTBwLT\",\"children\":[{\"id\":\"0b3m-XleZn0tMKNa77x12\",\"children\":[{\"id\":\"V7guzNnu6cpO_Ruy11QOH\",\"children\":[{\"text\":\"The language in which the audio file is to be converted to text. For parameters, see \"},{\"id\":\"JXhb2cHrwc-_Dg6SMlIaV\",\"children\":[{\"text\":\"Language Parameter Reference List\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://intl.cloud.tencent.com/document/product/607/30260\",\"props\":{\"type\":\"link\",\"url\":\"https://intl.cloud.tencent.com/document/product/607/30260\"},\"type\":\"ref\"},{\"text\":\".\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"MCRphjAdHqb4jz1fiFU6o\",\"children\":[{\"id\":\"ZgF1yxA3TP_3YDc3EkiWv\",\"children\":[{\"id\":\"6BMZtZkT2BWmQ_dVYtc1h\",\"children\":[{\"id\":\"89USDQWVVHUYHKEKgk1zZ\",\"children\":[{\"text\":\"translatelanguage\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"gIoT7gUuxvaYCWWKpjbbe\",\"children\":[{\"id\":\"hyykdYWcq7HOt9bq2yVDa\",\"children\":[{\"id\":\"rJTiiJDi-5IJOQWx1aDlA\",\"children\":[{\"text\":\"string\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"rmvtYbEvWfGjdZe2XlUN3\",\"children\":[{\"id\":\"kxa9Gdo4ohl-VBSVeR-Gt\",\"children\":[{\"id\":\"Kyj9LYLhjgSS6EyqWTn1c\",\"children\":[{\"text\":\"The language in which the audio file is to be translated to text. For parameters, see \"},{\"id\":\"dvjm7H2wx1SEU23byjeEC\",\"children\":[{\"text\":\"Language Parameter Reference List\"}],\"linkTarget\":\"blank\",\"linkTitle\":\"https://intl.cloud.tencent.com/document/product/607/30260\",\"props\":{\"type\":\"link\",\"url\":\"https://intl.cloud.tencent.com/document/product/607/30260\"},\"type\":\"ref\"},{\"text\":\".\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[16,10,74],\"widthMode\":\"percentage\"},{\"id\":\"oiIAQP3LDsoAcTc08byzq\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code22\",\"type\":\"h4\"},{\"id\":\"9onZbM-nZyYdEMXyTvn5c\",\"children\":[{\"id\":\"XjgEL7Iyg2bKbjotQBD5x\",\"children\":[{\"text\":\"m_context.PttSpeechToText(filePath,\\\"cmn-Hans-CN\\\",\\\"cmn-Hans-CN\\\");\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"fNE8SFsvI3y03v6BCwfAt\",\"children\":[{\"text\":\"Callback for recognition\"}],\"nodeId\":\"callback-for-recognition\",\"type\":\"h3\"},{\"id\":\"3y28k4XeO8-_fkYOeclUW\",\"children\":[{\"text\":\"After the specified audio file is converted to text, the event message ITMG_MAIN_EVNET_TYPE_PTT_SPEECH2TEXT_COMPLETE will be returned, which will be identified in the \"},{\"code\":1,\"text\":\"OnEvent\"},{\"text\":\" function.\\nThe passed parameters include \"},{\"code\":1,\"text\":\"result\"},{\"text\":\", \"},{\"code\":1,\"text\":\"file_path\"},{\"text\":\" and \"},{\"code\":1,\"text\":\"text\"},{\"text\":\" (recognized text).\"}],\"type\":\"p\"},{\"id\":\"WQk9PJGo1aJa1HybA2bJV\",\"children\":[{\"id\":\"K0waPW3OuNaFpJwOvVR8z\",\"children\":[{\"id\":\"jYkRBOFS-FlLpu1WSq3HV\",\"children\":[{\"id\":\"Tv8J0rQIHwVrVY945Jz_U\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"_LHcFZF0DSGHdrsfxAUUw\",\"children\":[{\"id\":\"QhSrNRgITHhOapCTEVKeI\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"MYvlekcv2QPozXbrY9mO8\",\"children\":[{\"id\":\"LNU1ft9dDh1AGMq7uIgoA\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"ujhvJaWl8FlF-js54v4rh\",\"children\":[{\"id\":\"cuLVXk9j4YWh2wk6rSYWY\",\"children\":[{\"id\":\"fw3aZ3Qvskn_z3YCN1f5n\",\"children\":[{\"id\":\"nt9prvFWH26FrtUJcWgtL\",\"children\":[{\"text\":\"result\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"nrNW_yYmgX8ki56kFHE3r\",\"children\":[{\"id\":\"uhG-QUTOE899cOBCXU6l5\",\"children\":[{\"id\":\"Htf7huw7xXEDqtm0mKcUp\",\"children\":[{\"text\":\"number\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"zNfnvbBhWAUgpz1DSDaBz\",\"children\":[{\"id\":\"92E1pFDZRKwOHdMg4pZo4\",\"children\":[{\"id\":\"7wHrwLxi0KbjRPLq_4DJj\",\"children\":[{\"code\":1,\"text\":\"0\"},{\"text\":\": Recording is completed\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"1Ir3-qnvcFaHJ6FgGpAWP\",\"children\":[{\"id\":\"R6I1HyPJdqqMYauZpm3wu\",\"children\":[{\"id\":\"XY6_2EPulUwrBQcGXkXh4\",\"children\":[{\"id\":\"AKGg6kPpcl_ilps5yud0K\",\"children\":[{\"text\":\"fileid\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"NY-bK-2foQfLxX3wo2NT0\",\"children\":[{\"id\":\"wmMStv7sk7eNrJJF5l_kT\",\"children\":[{\"id\":\"KuB6ViblG0QOes89TAoe5\",\"children\":[{\"text\":\"string\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"dj2KTqPnJIZMD5PeFRq5j\",\"children\":[{\"id\":\"zbtfDFfTql-UqSW9eWUXO\",\"children\":[{\"id\":\"aOBlV9ZZyd5s7I8Tq93HB\",\"children\":[{\"text\":\"URL of recording file, which will be retained on the server for 90 days\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"r9eBIHAMyZZy9FEaHPYDv\",\"children\":[{\"id\":\"HA71C88EsJjvfWLhQKIBi\",\"children\":[{\"id\":\"Zm05TGQpu5oEMDEFh4eg0\",\"children\":[{\"id\":\"JcrTUShcFUFxgSZQ_0oDE\",\"children\":[{\"text\":\"text\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"gKWexD4r5d6jHfa1UcZNS\",\"children\":[{\"id\":\"cuU5QGLJnU2X2NDN3oiZx\",\"children\":[{\"id\":\"k7fMX4pJ66ORkCF9PH2YX\",\"children\":[{\"text\":\"string\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"9w6ZHGsKQNFQ0WBSDJAns\",\"children\":[{\"id\":\"p3XbHQ__lUdXwgvPl-2UK\",\"children\":[{\"id\":\"SwOIArDRI9cVYpzC9h8sk\",\"children\":[{\"text\":\"Converted text\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[15,12,73],\"widthMode\":\"percentage\"},{\"id\":\"ym3mS26nmXYL-gfK_Yp0d\",\"children\":[{\"text\":\"Error codes\"}],\"nodeId\":\"error-codes7\",\"type\":\"h4\"},{\"id\":\"Z2tsQsV0s2AhD2IFmSJIy\",\"children\":[{\"id\":\"n4IJY_xKSWYW8SQNAWwtx\",\"children\":[{\"id\":\"yi9E2m3pPzKffVaZV6RLl\",\"children\":[{\"id\":\"q3da8xxvmYzm0nBidafgn\",\"children\":[{\"text\":\"Error Code Value\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"cuDTuyo5SqFQjWsL9jdxy\",\"children\":[{\"id\":\"DHpIVdw5aplb-sLpZzuQg\",\"children\":[{\"text\":\"Cause\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Z2MyAH9D8tWMjlsQuB53-\",\"children\":[{\"id\":\"IUblqs98esLdiDw8rDzpf\",\"children\":[{\"text\":\"Suggested Solution\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"NFxgyKL09VC_pZMyXRbwd\",\"children\":[{\"id\":\"-CO0XRWYM7AyTzKlMC0Oq\",\"children\":[{\"id\":\"2wA8CKUulUECPbF39-qxS\",\"children\":[{\"id\":\"PZzs1U2aHHe-cQUKWqX29\",\"children\":[{\"text\":\"32769\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"D-M26TJozBAYej486WoDV\",\"children\":[{\"id\":\"QKrmtHO9PMLgiNSa5uimn\",\"children\":[{\"id\":\"PXLB7eFhDujhSODOkonpp\",\"children\":[{\"text\":\"An internal error occurred.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"qNcNvMQiffhzgxQCySJj_\",\"children\":[{\"id\":\"r4s_Gm113rzpzGK9n_sx9\",\"children\":[{\"id\":\"4hNjVa3aSTt0zVkajOZDl\",\"children\":[{\"text\":\"Analyze logs, get the actual error code returned from the backend to the client, and ask backend personnel for assistance.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"Ea3ULQxftjgw-Gl3Gjd1R\",\"children\":[{\"id\":\"kWOsTJ6gOYIgusq2NmJuh\",\"children\":[{\"id\":\"EIRdczskwnQY3rJbHijM7\",\"children\":[{\"id\":\"sJ-SIR80wyByTc8h81cIB\",\"children\":[{\"text\":\"32770\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Wem8021h3edkuUnhGKVSN\",\"children\":[{\"id\":\"G3dMzzrOVvyh1P_rfPBXx\",\"children\":[{\"id\":\"svp8xOjFzjXz8GWgbNw3C\",\"children\":[{\"text\":\"Network failed.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"m4tQ7FK9YLla6MAcw_a3c\",\"children\":[{\"id\":\"PU_9BxeVd3XyCfs0Vuq1D\",\"children\":[{\"id\":\"7OSmWQbeR5V0quEwknrec\",\"children\":[{\"text\":\"Check whether the device can access the internet.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"9X9vUnU1fdPfocGMIZD54\",\"children\":[{\"id\":\"RI2EVwXPO5QIub7IKgVR5\",\"children\":[{\"id\":\"HooTVQFFbIrMlaLaEcukz\",\"children\":[{\"id\":\"ALx0G60vqSywFtTIGid9g\",\"children\":[{\"text\":\"32772\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"4a3wSthiU8THun7XyOQbW\",\"children\":[{\"id\":\"_5OLUuJinWywKiPKTkUpd\",\"children\":[{\"id\":\"eewle2UpNwbZH5vZzbzp9\",\"children\":[{\"text\":\"Failed to decode the returned packet.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Ai5zc8-fh_Fu2PcJemcvY\",\"children\":[{\"id\":\"RWjg_B1Nx116fbkO1_bP6\",\"children\":[{\"id\":\"BnY4YVfQWH0lU-lkMkoPb\",\"children\":[{\"text\":\"Analyze logs, get the actual error code returned from the backend to the client, and ask backend personnel for assistance.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"8AHZHL5e5NN4ctoETooaP\",\"children\":[{\"id\":\"nypk4Aglo4cDXQMpoQxst\",\"children\":[{\"id\":\"MpDcqGNG0-YEZvJSPWVuU\",\"children\":[{\"id\":\"IwVDIB5SKBDYHpPrDhzH5\",\"children\":[{\"text\":\"32774\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"K1TFo6cMoGzTv4qPGFDhS\",\"children\":[{\"id\":\"3tdicTAd9DnHXMA3kXqoR\",\"children\":[{\"id\":\"E0Naltw2RokLB9ePBjJox\",\"children\":[{\"text\":\"No \"},{\"code\":1,\"text\":\"appinfo\"},{\"text\":\" is set.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"NscGnF6ESCpwIkjTv5wuz\",\"children\":[{\"id\":\"MjocmC4h0pHq5958KEcBH\",\"children\":[{\"id\":\"nkbxlUIXoUaJbOQkaqCMl\",\"children\":[{\"text\":\"Check whether the authentication key is correct and whether the voice messaging and speech-to-text feature is initialized.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"eEXN3i-ZaEODtzgbjszo8\",\"children\":[{\"id\":\"A-Ko0ioiBMsenfOBREgN-\",\"children\":[{\"id\":\"_nsgNmRxVNpbbaMmvnVNi\",\"children\":[{\"id\":\"uBaIcfpmzYONaFaljcaDy\",\"children\":[{\"text\":\"32776\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"DZ0-DXCZwBbAPgLO1b31m\",\"children\":[{\"id\":\"YwZl8EXUAfDeSLoihmX7V\",\"children\":[{\"id\":\"pLsJ0D9qb69V3yDjfY5Y0\",\"children\":[{\"code\":1,\"text\":\"authbuffer\"},{\"text\":\" check failed.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"IZvpwhfDm_NoyphF8S3dp\",\"children\":[{\"id\":\"4uDDBbpVKnNeOC9PLOZA1\",\"children\":[{\"id\":\"vI_N97WjOPmqnt8kt1hat\",\"children\":[{\"text\":\"Check whether \"},{\"code\":1,\"text\":\"authbuffer\"},{\"text\":\" is correct.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"DodYDgzt7xkF2JP8FTYpV\",\"children\":[{\"id\":\"8jrr0mpctvsZy6Bwm8dgQ\",\"children\":[{\"id\":\"maKf3oTPFly9-_XvkXY_n\",\"children\":[{\"id\":\"KcCkAnMHNo13KPNuh4evg\",\"children\":[{\"text\":\"32784\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"HNa9xR5BuRMO7f3S4TdAx\",\"children\":[{\"id\":\"UlTBZZfl8W5YtWFU7Q4hI\",\"children\":[{\"id\":\"AyGIPHcTa2gsrOvWSsO5J\",\"children\":[{\"text\":\"Incorrect speech-to-text conversion parameter.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"jpn9tb94BI7Aaib6GNSMR\",\"children\":[{\"id\":\"mtK26DkcgqXUpNZGdk6br\",\"children\":[{\"id\":\"2Fny3JuizY6R0K9FL_X3i\",\"children\":[{\"text\":\"Check whether the API parameter \"},{\"code\":1,\"text\":\"fileid\"},{\"text\":\" in the code is empty.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"z4MoIyfjhrSheC1eAzLZt\",\"children\":[{\"id\":\"W8Fguvxg4bCM6gcB7TOZw\",\"children\":[{\"id\":\"Yn2Mgqtlaub3wAAQP31f_\",\"children\":[{\"id\":\"tsjiAd59b3BSOg9hNeQxF\",\"children\":[{\"text\":\"32785\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"6UQLxUuTlG3W3u5vsckbP\",\"children\":[{\"id\":\"CggQ8u7J9NJm_LnbbpQml\",\"children\":[{\"id\":\"vrDgBl3TI-OYjbFhQ76bz\",\"children\":[{\"text\":\"Speech-to-text translation returned an error.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"QHe-MqtE_sNM9-jfe_ZMc\",\"children\":[{\"id\":\"VufUQCc2-NeVytcssdWJm\",\"children\":[{\"id\":\"lQeJQdYsYzo3Tt-c4T19d\",\"children\":[{\"text\":\"Error with the backend of voice messaging and speech-to-text feature. Analyze logs, get the actual error code returned from the backend to the client, and ask backend personnel for assistance.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"PxL4Vybjdr8B2-bBrVpTR\",\"children\":[{\"id\":\"Yld3R8Oec1FqWiEmr9JsE\",\"children\":[{\"id\":\"5WC1Sl59-4tLY0qbclrCc\",\"children\":[{\"id\":\"Sd7sPKwt98iK-wKQqUkQd\",\"children\":[{\"text\":\"32787\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"WxZsxfyxxSStwDLK7RehI\",\"children\":[{\"id\":\"94IvmxsYfElz5AV_O-Evq\",\"children\":[{\"id\":\"TzqOrZjOrzeJLsihDvqBn\",\"children\":[{\"text\":\"Speech-to-text conversion succeeded, but the text translation service was not activated.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"7TNlu44_Kh5EqzNgVrVoT\",\"children\":[{\"id\":\"LGWMF0fpkWsvHP2u3lBcf\",\"children\":[{\"id\":\"xm5spT32VrT9OeVOhXK87\",\"children\":[{\"text\":\"Activate the text translation service in the console.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"Jx-kBjBUOlmx4-wFAZYGK\",\"children\":[{\"id\":\"CAck0dkY4eGeJxt5a-juR\",\"children\":[{\"id\":\"afyKIfO6FGGEclHfEP258\",\"children\":[{\"id\":\"TnmNfp4BA_RiMLBMFzzZG\",\"children\":[{\"text\":\"32788\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"3TM3xBCZhoHWYMHdqKbvB\",\"children\":[{\"id\":\"t1Dxbr11kA9hRip-ACU9s\",\"children\":[{\"id\":\"WvoFKrPUQ_heHorfbWno7\",\"children\":[{\"text\":\"Speech-to-text conversion succeeded, but the language parameter of the text translation service was invalid.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"rCBWlYt_qE1VPa_HfJzcR\",\"children\":[{\"id\":\"8TrEMO2xKb0ExsPdj5t9-\",\"children\":[{\"id\":\"gPDqgLMoyybkMwRqyLcrY\",\"children\":[{\"text\":\"Check the parameter passed in.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[16,35,49],\"widthMode\":\"percentage\"},{\"id\":\"_wAe4tYdo2FjIgSf5lGqL\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code23\",\"type\":\"h4\"},{\"id\":\"uIjh1FGIbV8uvpi_KMfUQ\",\"children\":[{\"id\":\"5QyxRZ1V1NSgwoGWXqe-s\",\"children\":[{\"text\":\"m_context.setTMGDelegate(function(eventId, msg){\"}],\"type\":\"code-line\"},{\"id\":\"jjT1hleudhJ282JgY9wUV\",\"children\":[{\"text\":\" switch (eventType) {\"}],\"type\":\"code-line\"},{\"id\":\"5lZ1kOfT52at3bxINhew8\",\"children\":[{\"text\":\" case ITMG_MAIN_EVENT_TYPE_ENTER_ROOM:\"}],\"type\":\"code-line\"},{\"id\":\"5QVNPD_g4HToTuQ50LUyx\",\"children\":[{\"text\":\" {\"}],\"type\":\"code-line\"},{\"id\":\"IJJpaV9T3gdN_BAPwQPdT\",\"children\":[{\"text\":\" // Process\"}],\"type\":\"code-line\"},{\"id\":\"MX0cW7aN-F40gTLBeF1DB\",\"children\":[{\"text\":\" break;\"}],\"type\":\"code-line\"},{\"id\":\"NTOk_X7kIBMAIXc1laLhs\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"Z-CjgtbtVsbkxDuT1RyQa\",\"children\":[{\"text\":\" ...\"}],\"type\":\"code-line\"},{\"id\":\"T0vCfcnwpAXOJXCjESBs3\",\"children\":[{\"text\":\" case ITMG_MAIN_EVNET_TYPE_PTT_SPEECH2TEXT_COMPLETE:\"}],\"type\":\"code-line\"},{\"id\":\"vFXfzonvWlfBl5ZAzEeP2\",\"children\":[{\"text\":\" {\"}],\"type\":\"code-line\"},{\"id\":\"sh92MaLEbUnLMdRHyizXm\",\"children\":[{\"text\":\" // Process\"}],\"type\":\"code-line\"},{\"id\":\"7LPgDTcuWvYH618pduxC1\",\"children\":[{\"text\":\" break;\"}],\"type\":\"code-line\"},{\"id\":\"4AVIdkNOnvUH2X5T6v1fk\",\"children\":[{\"text\":\" }\"}],\"type\":\"code-line\"},{\"id\":\"P1sz7gmp419TYmTv_27Ct\",\"children\":[{\"text\":\"});\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"35FzvLu2o220BptBE-LNv\",\"children\":[{\"text\":\"Voice Message Volume Level APIs\"}],\"nodeId\":\"voice-message-volume-level-apis\",\"type\":\"h2\"},{\"id\":\"tnjM6xBI8UkJnqWQUlZo9\",\"children\":[{\"id\":\"KAknvwMi9TzZ9mHGXeXNE\",\"children\":[{\"id\":\"aVG_LFpamn4i7HnGXeBCL\",\"children\":[{\"id\":\"Vl-vNGHFrPCUh-xzDwTwp\",\"children\":[{\"text\":\"API\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"_pbFh0CvTr7A-Q0qrMyFe\",\"children\":[{\"id\":\"bn4dkQzUlsNzhCJRoeLwX\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"gKU1_MtU-1E1iyZw5ZOdQ\",\"children\":[{\"id\":\"Ar2kV5Jt5jn-M6px6O7Qf\",\"children\":[{\"id\":\"hMHRv07OxGffeFuEqCgN5\",\"children\":[{\"id\":\"H3_kp5xyLD2zUhC0vd9nI\",\"children\":[{\"text\":\"PttGetMicLevel\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"9s8TG1Ha6-msMsLTLK74o\",\"children\":[{\"id\":\"t_1z4HnjLiLZoGSKM4fuW\",\"children\":[{\"id\":\"v4wwT1i7o8AS9Tvd6OctZ\",\"children\":[{\"text\":\"Gets real-time mic volume level\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"kXuox8CZ7UGZ4RNQ3hAGx\",\"children\":[{\"id\":\"lKlKEWmKPChMZqdTYlQCn\",\"children\":[{\"id\":\"x7gA0YBqbg_O2je34NnKt\",\"children\":[{\"id\":\"K3GDBPfadMxSmxpPv_TKx\",\"children\":[{\"text\":\"PttSetMicVolume\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"TDgSaGHNX9E1DNvgYb0GV\",\"children\":[{\"id\":\"AGjAvU5Jr-b8xt8II4-AP\",\"children\":[{\"id\":\"ySFsafafjFqwyQG1X5meW\",\"children\":[{\"text\":\"Sets recording volume level\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"EthNHHS7zTwfvFuuC34WP\",\"children\":[{\"id\":\"nku0OQ5JEJeB_HLihEEl6\",\"children\":[{\"id\":\"mxTlkoG8D-uy_pCQjof9M\",\"children\":[{\"id\":\"PRcRkEDjaO62ONknpfIRO\",\"children\":[{\"text\":\"PttGetMicVolume\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"DYTQoK3mHh9Vgj79LKWs-\",\"children\":[{\"id\":\"6WX--2h4GORo3jHREboJs\",\"children\":[{\"id\":\"iV1t7adCdKfvgVHklozj6\",\"children\":[{\"text\":\"Gets recording volume level\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"aQoq9phsKULA2r3JRnYOS\",\"children\":[{\"id\":\"QfVllO34F8SYxi9JHCXrg\",\"children\":[{\"id\":\"LJVahExjJDBESbu13Y3lR\",\"children\":[{\"id\":\"9z7tJUG-Tq1WQJXjdYASS\",\"children\":[{\"text\":\"PttGetSpeakerLevel\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"h97QaMQiqBlSUyt6W-jyC\",\"children\":[{\"id\":\"iLSkqmyTSRgWi5BGQEx2W\",\"children\":[{\"id\":\"AqliyicvhT2GdOfsXzkH_\",\"children\":[{\"text\":\"Gets real-time speaker volume level\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"pyqDzsOh82XHOg_n-6acZ\",\"children\":[{\"id\":\"qhtmsFAlBqdKpoaUq6-Le\",\"children\":[{\"id\":\"LdBpcWoH8w4swKugObj-1\",\"children\":[{\"id\":\"tAbt8hxOHwsEPR8EK_Fqi\",\"children\":[{\"text\":\"PttSetSpeakerVolume\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"XzW1-LYarJpiC3hHeFvTN\",\"children\":[{\"id\":\"lZTPeMKFsWPC8Rnxio513\",\"children\":[{\"id\":\"HjrmdzbwYTJFRSdyVu3l2\",\"children\":[{\"text\":\"Sets playback volume\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"q4hUHHUciLEBUflGFz-AN\",\"children\":[{\"id\":\"3MLw_2PKvA5QiFOutga1i\",\"children\":[{\"id\":\"-9O1qeLjWzO31C6f1TV9V\",\"children\":[{\"id\":\"9xb3FovBqYXqlEotVRhTn\",\"children\":[{\"text\":\"PttGetSpeakerVolume\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"bk780_GIil_sJY5EQI6xe\",\"children\":[{\"id\":\"34J6urYrXAOtRstfJ9D-n\",\"children\":[{\"id\":\"TqcP2Orli2zWjm-W16xTn\",\"children\":[{\"text\":\"Gets playback volume level\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[40,60],\"widthMode\":\"percentage\"},{\"id\":\"WDWK9gx_NtubuLSz2M3F5\",\"children\":[{\"text\":\"Getting the real-time mic volume of voice message\"}],\"nodeId\":\"getting-the-real-time-mic-volume-of-voice-message\",\"type\":\"h3\"},{\"id\":\"Ns0Xk4R0Wr8cC_dh8CcpI\",\"children\":[{\"text\":\"This API is used to get the real-time mic volume. A number-type value will be returned. Value range: 0–200.\"}],\"type\":\"p\"},{\"id\":\"aR397qypLyyHvgWGB-Blq\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype20\",\"type\":\"h4\"},{\"id\":\"6c0v1qDPNsbJGcT2qFeCA\",\"children\":[{\"id\":\"rAYovgzqdvbEkk7zfRyEm\",\"children\":[{\"text\":\"PttGetMicLevel():number\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"ICdBWja6PlPKiy5_Je2E0\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code24\",\"type\":\"h4\"},{\"id\":\"eMspLsW3ATmCEZHQWB382\",\"children\":[{\"id\":\"Ale2qaLfJ-PNlBnDbk6UT\",\"children\":[{\"text\":\"m_context.PttGetMicLevel();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"CgN3EgU4tC2pZMPWQ1Mxi\",\"children\":[{\"text\":\"Setting the recording volume of voice message\"}],\"nodeId\":\"setting-the-recording-volume-of-voice-message\",\"type\":\"h3\"},{\"id\":\"obBRagU1HOIEwC5VChS-U\",\"children\":[{\"text\":\"This API is used to set the recording volume of voice message. Value range: 0-200.\"}],\"type\":\"p\"},{\"id\":\"IPmH7rxxcFg4lr2AytZMw\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype21\",\"type\":\"h4\"},{\"id\":\"Cp_GLtMwtbHb3aHtCA02I\",\"children\":[{\"id\":\"CqIzSnaKcslH-SuUs_3A1\",\"children\":[{\"text\":\"PttSetMicVolume(vol:number) :number\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"KnoVjSwDoSMjG2HZdbBb_\",\"children\":[{\"id\":\"kZvkXcd4cDc-vHUY7jgdE\",\"children\":[{\"id\":\"j-X8_yCGbeTj9-1S-HEje\",\"children\":[{\"id\":\"n7bcaoE3rJ-1Z0AoCLB0k\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"0S488I2paG03Xt912FrmF\",\"children\":[{\"id\":\"x1mq1KMstsN_2Teb3QOL-\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"zrGjgFxOe8kKO4ojWcEH-\",\"children\":[{\"id\":\"ANHMgqfSCFbqaQUd832Qw\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"aDt6Pk9JeBPcXpOk4Hzia\",\"children\":[{\"id\":\"znRMufiWuMuKAhYbhjQJd\",\"children\":[{\"id\":\"5WxiISGlWMFrntZqWreNW\",\"children\":[{\"id\":\"bI0ryBgpiazDtluNH9LHv\",\"children\":[{\"text\":\"vol\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"z4-w8tXDImlMKzp6P7n8M\",\"children\":[{\"id\":\"Iy6uFonFayleWFQX_ZuXu\",\"children\":[{\"id\":\"Y_q63txuw57hAbj8CRJdt\",\"children\":[{\"text\":\"number\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"zSglvDu83blhhjgjNtrwv\",\"children\":[{\"id\":\"u7p4GKfKoMkcjWErUv8Ep\",\"children\":[{\"id\":\"DRH-6J74621qsWQoL-_2f\",\"children\":[{\"text\":\"Value range: 0–200. Default value: \"},{\"code\":1,\"text\":\"100\"},{\"text\":\". \"},{\"code\":1,\"text\":\"0\"},{\"text\":\" indicates that the audio is mute, while \"},{\"code\":1,\"text\":\"100\"},{\"text\":\" indicates that the volume level remains unchanged.\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[13,12,75],\"widthMode\":\"percentage\"},{\"id\":\"zj-44Tvkcz5jvHmrRupu9\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code25\",\"type\":\"h4\"},{\"id\":\"WNhRcWwL8kVSy9ezX9QJN\",\"children\":[{\"id\":\"-yBuOkOk9wirMwkSSgcHi\",\"children\":[{\"text\":\"m_context.PttSetMicVolume(vol);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"f1HlvoqI4o1glLgFjw9hO\",\"children\":[{\"text\":\"Getting the recording volume of voice message\"}],\"nodeId\":\"getting-the-recording-volume-of-voice-message\",\"type\":\"h3\"},{\"id\":\"dFY4QF9yW_9Nes19-oTRL\",\"children\":[{\"text\":\"This API is used to get the recording volume of voice message. A number-type value will be returned. Value range: 0–200.\"}],\"type\":\"p\"},{\"id\":\"kkg-FaKQ2Tp9oVSH1oHI8\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype22\",\"type\":\"h4\"},{\"id\":\"zPzVv9YQ4Pv6HFH-0BP7k\",\"children\":[{\"id\":\"2X4INrPmvt7TS-rhoVJY_\",\"children\":[{\"text\":\"PttGetMicVolume() : number\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"Ay8vjiknvzzw7pK0OomLx\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code26\",\"type\":\"h4\"},{\"id\":\"FJYyuAkxIluROu6E7jU4U\",\"children\":[{\"id\":\"fwkN2t-2eRPR6b_yQmpHo\",\"children\":[{\"text\":\"m_context.PttGetMicVolume();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"yZKCohKPzcpUUha--TbB-\",\"children\":[{\"text\":\"Getting the real-time speaker volume of voice message\"}],\"nodeId\":\"getting-the-real-time-speaker-volume-of-voice-message\",\"type\":\"h3\"},{\"id\":\"OWmQh44vnx7_O7QI70VeC\",\"children\":[{\"text\":\"This API is used to get the real-time speaker volume. A number-type value will be returned. Value range: 0-200.\"}],\"type\":\"p\"},{\"id\":\"RItPaBAxZCDnXxiSOCgFD\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype23\",\"type\":\"h4\"},{\"id\":\"-ihf6YUs3AhJHjCFRslLX\",\"children\":[{\"id\":\"bp6MxtLRI4K-ihFvaRmgX\",\"children\":[{\"text\":\"PttGetSpeakerLevel() : number;\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"jiE_e9Xb7emZteB-maIn9\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code27\",\"type\":\"h4\"},{\"id\":\"sl1I4jhEDLk5qgzAODhXo\",\"children\":[{\"id\":\"WQ44bR9Y0FUQwMk0TJ9MV\",\"children\":[{\"text\":\"m_context.PttGetSpeakerLevel();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"9NdaNWcyFFYLXJypF_Qc4\",\"children\":[{\"text\":\"Setting the playback volume of voice message\"}],\"nodeId\":\"setting-the-playback-volume-of-voice-message\",\"type\":\"h3\"},{\"id\":\"n0tz1C41mS-leeY5k8Xad\",\"children\":[{\"text\":\"This API is used to set the playback volume of voice message. Value range: 0-200.\"}],\"type\":\"p\"},{\"id\":\"Ds14fdOEw7tYSKok3CkFY\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype24\",\"type\":\"h4\"},{\"id\":\"HvElRmf6bLCX86sUZFFoc\",\"children\":[{\"id\":\"Qsyu6LQgxZxDqvogByaQ-\",\"children\":[{\"text\":\"PttSetSpeakerVolume(vol: number) : number\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"NX2Ncsg7nD17SyLKb-3wQ\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code28\",\"type\":\"h4\"},{\"id\":\"JDjKQfO_xKIflbyVDIbBM\",\"children\":[{\"id\":\"CsvypZwctWQ4ABPnPhx3A\",\"children\":[{\"text\":\"m_context.PttSetSpeakerVolume(100);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"V2laMwhRaPrGnIsTm520m\",\"children\":[{\"text\":\"Getting the playback volume of voice message\"}],\"nodeId\":\"getting-the-playback-volume-of-voice-message\",\"type\":\"h3\"},{\"id\":\"ySLVYKxCOkO0ldLDOdGAI\",\"children\":[{\"text\":\"This API is used to get the playback volume of voice message. A number-type value will be returned. Value range: 0-200.\"}],\"type\":\"p\"},{\"id\":\"NEwu-09Toe0U4RE76ixaJ\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype25\",\"type\":\"h4\"},{\"id\":\"kb95IzAjMa8Z1hyd9oGqA\",\"children\":[{\"id\":\"0gN-vUpcll3UB5tBfKP6v\",\"children\":[{\"text\":\"PttGetSpeakerVolume() : number\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"PuccDsd97cnvP13SY48rC\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code29\",\"type\":\"h4\"},{\"id\":\"XZmKDUeP6a3o8X6CdpW4z\",\"children\":[{\"id\":\"Aq0nBNNvPCHqfag1FaHvd\",\"children\":[{\"text\":\"m_context.PttGetSpeakerVolume();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"629KswSN-8bG31MlAkBXX\",\"children\":[{\"text\":\"Advanced APIs\"}],\"nodeId\":\"advanced-apis\",\"type\":\"h2\"},{\"id\":\"E0W1-3u2Q-1RTscOTTc1u\",\"children\":[{\"text\":\"Getting version number\"}],\"nodeId\":\"getting-version-number\",\"type\":\"h3\"},{\"id\":\"3NaEfjHkGeqq93JFSNZ7i\",\"children\":[{\"text\":\"This API is used to get the SDK version number for analysis.\"}],\"type\":\"p\"},{\"id\":\"lTE6nZBeN30th0gkQYTE3\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype26\",\"type\":\"h4\"},{\"id\":\"Di1L0Zcr-YJKHAoCkPfTM\",\"children\":[{\"id\":\"vmEdSnCFOqW9i_aHe-duY\",\"children\":[{\"text\":\"GetSDKVersion() :string\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"TCNQ9ZtqLR5rYXkZjyEC6\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code30\",\"type\":\"h4\"},{\"id\":\"QLkOIrwq1zXJQ_jBccjCy\",\"children\":[{\"id\":\"faDzxQJcnJ-LWClm1aHdb\",\"children\":[{\"text\":\"string sdkVersion = m_context.GetSDKVersion();\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"V8fs6eKlHMjoB5lbq-rcl\",\"children\":[{\"text\":\"Setting log printing level\"}],\"nodeId\":\"setting-log-printing-level\",\"type\":\"h3\"},{\"id\":\"LTnaF07F8eH9Kd6tqJEGN\",\"children\":[{\"text\":\"This API is used to set the level of logs to be printed, and needs to be called before the initialization. It is recommended to keep the default level.\"}],\"type\":\"p\"},{\"id\":\"QJ457pfOWMhMnZzeeECGn\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype27\",\"type\":\"h4\"},{\"id\":\"byc0BCheBgtg9O41hM37R\",\"children\":[{\"id\":\"RRNHlcO468UpW8mTYEUpg\",\"children\":[{\"text\":\"SetLogLevel(level: number) : number\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"2PR4nH6ckpnfesNhq1KYX\",\"children\":[{\"text\":\"Parameter description\"}],\"nodeId\":\"parameter-description\",\"type\":\"h4\"},{\"id\":\"hw2eqh-lzkJ1e09jvj_mF\",\"children\":[{\"id\":\"VmM1pV3heKjVpGZM-aOJb\",\"children\":[{\"id\":\"e3XjElczpvYdDRJ9qGpZG\",\"children\":[{\"id\":\"-UBKIDYmlDKPJhOurmVbB\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"KtSVC_BFZ9edohPYrhIxX\",\"children\":[{\"id\":\"oyySy6Ve0b0FArFHau9Z1\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"ycGclK6LuweAieqdqYoL3\",\"children\":[{\"id\":\"qYE-p4xLJuPg-zo9MemzK\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"3OsM4RB--igHj5kuuD4Jw\",\"children\":[{\"id\":\"9f-QekpWNmRSwsrGMZ9jw\",\"children\":[{\"id\":\"Xg_ouBWQ-nuPHBuGCEiG5\",\"children\":[{\"id\":\"O_ULR5qi7sCrpZ8TuNCiU\",\"children\":[{\"text\":\"level\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"xb3bciyW6TdX80zfwtRMJ\",\"children\":[{\"id\":\"Kd42ANJw52jpNNeE2fdE2\",\"children\":[{\"id\":\"Jf0Y2TcOZjH0daWyTxWYM\",\"children\":[{\"text\":\"ITMG_LOG_LEVEL\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"q2LCc3y3AAfpv9i3We_31\",\"children\":[{\"id\":\"nUpmjzbc4riAdyH2EQmeP\",\"children\":[{\"id\":\"0aDUmD6GYMqmkFoz1RoHc\",\"children\":[{\"text\":\"Sets the log level. \"},{\"code\":1,\"text\":\"TMG_LOG_LEVEL_NONE\"},{\"text\":\" indicates not to log. Default value: \"},{\"code\":1,\"text\":\"TMG_LOG_LEVEL_INFO\"},{\"text\":\".\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[12,19,69],\"widthMode\":\"percentage\"},{\"id\":\"KdD6tNIGbDtJGCctYmrZS\",\"children\":[{\"code\":1,\"text\":\"level\"},{\"text\":\" description:\"}],\"type\":\"p\"},{\"id\":\"ZsL6yVh0PuQoTCsbD-r0w\",\"children\":[{\"id\":\"ANq-qMZ6IljX2fj4_XoFB\",\"children\":[{\"id\":\"gaEJYMufTU5DYbbzlM4KY\",\"children\":[{\"id\":\"5mvID7Yaw1qOVoPSgC7zd\",\"children\":[{\"text\":\"Value of \"},{\"code\":1,\"text\":\"level\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"PgT7iMtnwwQwHzZOoPrGm\",\"children\":[{\"id\":\"yL_yjkb8dUfPs-BSQJADA\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"GIzHlFsPxUcKAqdWBWi47\",\"children\":[{\"id\":\"T0DiLId8D5tbB7b2pg4io\",\"children\":[{\"id\":\"nAun2c4aWTWELhBKaDIYK\",\"children\":[{\"id\":\"lyBXtGIKVb6CPz6wNXyXe\",\"children\":[{\"text\":\"TMG_LOG_LEVEL_NONE\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Kl-4IW9HtzhI9N3q-z_C-\",\"children\":[{\"id\":\"Odx_7FQ7v7vOsBXvScQrc\",\"children\":[{\"id\":\"g6UchkWZIxeJCm9JCNDiw\",\"children\":[{\"text\":\"Does not print logs\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"tcEAjleDJgfWlviv789AN\",\"children\":[{\"id\":\"Yiqp0f0kP-AtudK1T4WfH\",\"children\":[{\"id\":\"kuIoj5l9WHoxIVN-cez5Q\",\"children\":[{\"id\":\"X5eXyXIEggm42mVRW0nsk\",\"children\":[{\"text\":\"TMG_LOG_LEVEL_ERROR\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"RdmtMTG2llxhjhnU_kTcf\",\"children\":[{\"id\":\"9DGELjXPGeMhMvhmTZD4i\",\"children\":[{\"id\":\"q7RJfBacjxkRAyB45MHti\",\"children\":[{\"text\":\"Prints error logs (default)\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"8NBIbQdze6vDInxrqGHVV\",\"children\":[{\"id\":\"S0-rW6jp06qiwEe9MWXy8\",\"children\":[{\"id\":\"R1DXhU1DncMTs2YCT2KL_\",\"children\":[{\"id\":\"sfnHpmfVU9L3bmMCDOV1n\",\"children\":[{\"text\":\"TMG_LOG_LEVEL_INFO\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"iPef9UE0-tPLnS65pJV0P\",\"children\":[{\"id\":\"MuvOis3hraQ2KV5J2oBvC\",\"children\":[{\"id\":\"huqZHfTONfEZ1CwFT_DuI\",\"children\":[{\"text\":\"Prints info logs\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"yaDsR2HynuafjpVMahpxx\",\"children\":[{\"id\":\"6HxkamUbL8GouBJh5kSRJ\",\"children\":[{\"id\":\"VcSw_Xq0JUspDRwsuspGk\",\"children\":[{\"id\":\"SJpOZkDLxgk7lcsFCSF6p\",\"children\":[{\"text\":\"TMG_LOG_LEVEL_DEBUG\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"taGAqasfVsxcSfoiU7MtV\",\"children\":[{\"id\":\"gdyPWYp5JVf-zVWkHBdun\",\"children\":[{\"id\":\"m49N9nQcCcpoapBbs-FmX\",\"children\":[{\"text\":\"Prints debug logs\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"Vym1W2qAXem-xpHzvMcM6\",\"children\":[{\"id\":\"CTgDYkz6ZIZxsW61AFCqI\",\"children\":[{\"id\":\"wFfaRlrRZiD9nsblU6lX2\",\"children\":[{\"id\":\"5Sb8CzF5_NhpXEw26RKST\",\"children\":[{\"text\":\"TMG_LOG_LEVEL_VERBOSE\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"eLCWzbDRs54-YpVCMlX5F\",\"children\":[{\"id\":\"PhRshk4CVfPIjCTkd2LQh\",\"children\":[{\"id\":\"C-65u2cUerMczJsym2i1m\",\"children\":[{\"text\":\"Prints verbose logs\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[38,62],\"widthMode\":\"percentage\"},{\"id\":\"zVjF2KFay5cvyPEBC5hhe\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code31\",\"type\":\"h4\"},{\"id\":\"fskSkydiX7-ScoQZf6jUa\",\"children\":[{\"id\":\"RDlwySYscTUWM0T0iSj2m\",\"children\":[{\"text\":\"m_context.SetLogLevel(TMG_LOG_LEVEL_INFO);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"hQINdSQQ_UnWpACy_L5WU\",\"children\":[{\"text\":\"Setting the log printing path\"}],\"nodeId\":\"setting-the-log-printing-path\",\"type\":\"h3\"},{\"id\":\"ZCK42MkKjFR_Z-3AxpXRI\",\"children\":[{\"text\":\"This API is used to set the log printing path. The default path is as follows. It needs to be called before Init.\"}],\"type\":\"p\"},{\"id\":\"q_m8dRtwPCRUSytsT3ik_\",\"children\":[{\"id\":\"Z4LHZX4RZVqnUhmHlR2hH\",\"children\":[{\"id\":\"Yz3J_hwb8yQvWrH7_y2Ks\",\"children\":[{\"id\":\"dXBYvALHDhOhvUbXZ7QlJ\",\"children\":[{\"text\":\"OS\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"dUOEDPpFiVx066loe6jxY\",\"children\":[{\"id\":\"HLiJudMSKUebpClVw3rKH\",\"children\":[{\"text\":\"Path\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"1RHlk5U4lqfb6lsdmMZAV\",\"children\":[{\"id\":\"uzukSFHPHXEjZZNrtCMeT\",\"children\":[{\"id\":\"yedJj4DLAhAZZpU3kkVNZ\",\"children\":[{\"id\":\"FiyaSWtclQZm-MWGW7XbS\",\"children\":[{\"text\":\"Windows\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"WhFTzQP0jRTr-EZDwkCZR\",\"children\":[{\"id\":\"mJa4I80tdyNsK61U6Y2kS\",\"children\":[{\"id\":\"qYUCt3sCkR1pz_1fxsfMq\",\"children\":[{\"text\":\"%appdata%\\\\GMEGLOBAL\\\\GME\\\\ProcessName\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\",\"widths\":[21,79],\"widthMode\":\"percentage\"},{\"id\":\"sd123mntfziu3GtUmWH-J\",\"children\":[{\"text\":\"API prototype\"}],\"nodeId\":\"api-prototype28\",\"type\":\"h4\"},{\"id\":\"VWYKQvF3pPIApl3KejDHn\",\"children\":[{\"id\":\"FW-Gu86o26Ure1JFclrGw\",\"children\":[{\"text\":\"SetLogPath(logPath: string)\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"id\":\"Z_0V7qfmW0jRSaKFm-9mk\",\"children\":[{\"id\":\"OCcbafQZrWf5rlg26PWFs\",\"children\":[{\"id\":\"ik6QiGc3Ag70wr2VxQhVN\",\"children\":[{\"id\":\"FCHorHIeXi-9EbgY2uwZ2\",\"children\":[{\"text\":\"Parameter\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"Yis_s0As51gWgJIVxpAei\",\"children\":[{\"id\":\"A9_e_yrn7ZLibP9w8uFOx\",\"children\":[{\"text\":\"Type\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"tiLC6-BUxuqLcqiJoq6hd\",\"children\":[{\"id\":\"tAGLU5yZxmNXaujlawoHZ\",\"children\":[{\"text\":\"Description\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"},{\"id\":\"1nyXXUIllDZZly3-djBsf\",\"children\":[{\"id\":\"kanyZWlhXpPdwa_SW2vfc\",\"children\":[{\"id\":\"9gW2CP90--J7KceTAWTO5\",\"children\":[{\"id\":\"V6l_vtoVRmBL3GUOJdDt1\",\"children\":[{\"text\":\"logPath\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"mDwqC0qnNlla7L3SSOgYC\",\"children\":[{\"id\":\"nqrAoN9EmnzWb6hkx1KVG\",\"children\":[{\"id\":\"d6Egx6w0-tj1DV5Hq6R34\",\"children\":[{\"text\":\"string\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"},{\"id\":\"NlMx7XucCmoWUKTXmGFl_\",\"children\":[{\"id\":\"bRZ3FJpcnevquHf-pNSqa\",\"children\":[{\"id\":\"BbLhC27i-7gBXN-_dYl-i\",\"children\":[{\"text\":\"Path\"}],\"type\":\"p\"}],\"type\":\"p\"}],\"type\":\"cell\"}],\"type\":\"row\"}],\"columnHeader\":false,\"rowHeader\":true,\"type\":\"table\"},{\"id\":\"ATg8RB9gTjyqm_CItTJDw\",\"children\":[{\"text\":\"Sample code\"}],\"nodeId\":\"sample-code32\",\"type\":\"h4\"},{\"id\":\"rVYIdB8lNdELNxc5SQ2Yu\",\"children\":[{\"id\":\"8KvwBm3BC_Gh5LgA4mP4X\",\"children\":[{\"text\":\"string logDir = \\\"\\\"// Set a path by yourself\"}],\"type\":\"code-line\"},{\"id\":\"JHg6XT9k8zAEUMm_Aj0aJ\",\"children\":[{\"text\":\"m_context.SetLogPath(logDir);\"}],\"type\":\"code-line\"}],\"language\":\"bash\",\"type\":\"code-block\",\"autoWrap\":false},{\"type\":\"p\",\"children\":[{\"text\":\"\"}],\"id\":\"G7Ne5ux3iAHw14Wd78RgK\"}]"}}} document.addEventListener('DOMContentLoaded', () => { function hasImages(data) { for (const node of data) { if (node.type === 'image') { return true; } if (node.children && node.children.length && hasImages(node.children)) { return true; } } return false; } function pollSlateRenderStatus(articleId, pollInterval = 100, timeout = 30000) { return new Promise((resolve) => { const startTime = Date.now(); let pollTimer; function checkAllImages() { const imgs = document.querySelectorAll(`#article-body-root-${articleId} .tea-editable .image[data-slate-node="element"]`); if (!imgs.length) { return false; } for (const img of imgs) { const { offsetWidth, offsetParent } = img; if (!offsetWidth) { return false; } if (offsetParent) { const styles = window.getComputedStyle(offsetParent); const validWidth = offsetParent.clientWidth - parseFloat(styles.paddingLeft) - parseFloat(styles.paddingRight); if (offsetWidth > validWidth) { return false; } } } return true; } function performCheck() { const result = checkAllImages(); if (result) { resolve({ success: true, }); return; } const elapsed = Date.now() - startTime; if (elapsed < timeout) { pollTimer = setTimeout(performCheck, pollInterval); } else { resolve({ success: false, reason: 'timeout', }); } } pollTimer = setTimeout(performCheck, pollInterval); }) } async function renderArticle(articleId, articleData) { return new Promise((resolve) => { try { window.TeaSlateSDK.render(`article-body-root-${articleId}`, articleData, { mode: 'print', link: { baseUrl: '/document/product/', defaultTarget: 'blank', }, locale: window.__LANG__, }); } catch(err) { console.log(`slate article[${articleId}] render failed: ${err}`); resolve(); return; } pollSlateRenderStatus(articleId, 100, 30000).then(result => { if (result.success) { console.log(`slate article[${articleId}] render success`); } else { console.log(`slate article[${articleId}] render failed: ${reason}`); } }).catch(error=> { console.error( error); }).finally(()=> { resolve() }) })} async function batchRenderArticles(items) { return Promise.all(items.map(item => { return renderArticle(item.articleId, item.articleData ) })) } const articleRoots = document.querySelectorAll(".article-body-root"); const batches = []; const articleMap = window.__SLATE_MAP__ || {}; for (const articleRoot of articleRoots){ const rootId = articleRoot.dataset.articleId; const articleData = articleMap[rootId]; const slateData = articleData && articleData.content && articleData.content.slate ? JSON.parse(articleData.content.slate) : null; if (!rootId || !slateData) { continue; } if (hasImages(slateData)) { const item = { articleId: rootId, articleData: slateData } //render tree articles in a batch if (!batches.length || batches[batches.length - 1].length >= 3) { batches.push([item]) } else { batches[batches.length - 1].push(item); } } } if (!batches.length) { window.__PAGE_RENDERED__ = true; return; } async function renderAll() { try { for (const batch of batches) { await batchRenderArticles(batch); } } catch (err) { console.error(err); } finally { window.__PAGE_RENDERED__ = true; console.log("slate render finished"); } } renderAll(); })