@tencent-rtc/mcp 1.0.1 → 1.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +38 -37
- package/package.json +1 -1
- package/resource/doc/chatuikit/android/client_api_Android.md +1373 -0
- package/resource/doc/chatuikit/android/generate_UserSig.md +306 -0
- package/resource/doc/chatuikit/android/integrarte_only_tuichat_Android.md +290 -0
- package/resource/doc/chatuikit/android/integrate_tuikit_Android.md +287 -0
- package/resource/doc/chatuikit/android/quick_start_Android.md +138 -0
- package/resource/doc/chatuikit/android/show_typing_Android.md +43 -0
- package/resource/doc/chatuikit/faq/faq_sdk.md +120 -0
- package/resource/doc/chatuikit/faq/generate_UserSig.md +306 -0
- package/resource/doc/chatuikit/flutter/client_api_Flutter.md +932 -0
- package/resource/doc/chatuikit/flutter/generate_UserSig.md +306 -0
- package/resource/doc/chatuikit/flutter/integrate_only_tuichat_Flutter.md +333 -0
- package/resource/doc/chatuikit/flutter/integrate_tuikit_Flutter.md +769 -0
- package/resource/doc/chatuikit/flutter/quick_start_Flutter.md +217 -0
- package/resource/doc/chatuikit/iOS/client_api_iOS.md +1121 -0
- package/resource/doc/chatuikit/iOS/generate_UserSig.md +306 -0
- package/resource/doc/chatuikit/iOS/integrate_only_tuichat_iOS.md +748 -0
- package/resource/doc/chatuikit/iOS/integrate_tuikit_iOS.md +852 -0
- package/resource/doc/chatuikit/iOS/quick_start_iOS.md +163 -0
- package/resource/doc/chatuikit/iOS/show_typing_iOS.md +52 -0
- package/resource/doc/chatuikit/react/generate_UserSig.md +306 -0
- package/resource/doc/chatuikit/react/integrate_tuichat_only_react.md +202 -0
- package/resource/doc/chatuikit/react/integrate_tuichat_react.md +279 -0
- package/resource/doc/chatuikit/vue/generate_UserSig.md +306 -0
- package/resource/doc/chatuikit/vue/integrate_only_tuichat_Vue_web.md +124 -0
- package/resource/doc/chatuikit/vue/integrate_tuikit_Vue_web.md +552 -0
- package/resource/doc/tuicallkit/react/how_to_integrated_react_callkit.md +84 -55
- package/server.js +51 -27
- package/server.js.map +1 -1
|
@@ -1,23 +1,13 @@
|
|
|
1
|
-
This article will guide you through the
|
|
2
|
-
<table>
|
|
3
|
-
<tr>
|
|
4
|
-
<td rowspan="1" colSpan="1" >Video Call</td>
|
|
1
|
+
This article will guide you through the quick integration of the TUICallKit component. You will complete several key steps within 10 minutes, ultimately obtaining a video call feature with a complete UI interface.
|
|
5
2
|
|
|
6
|
-
|
|
7
|
-
</tr>
|
|
3
|
+

|
|
8
4
|
|
|
9
|
-
|
|
10
|
-
|
|
5
|
+
## Prerequisites
|
|
6
|
+
- React version 18+.
|
|
11
7
|
|
|
12
|
-
<td rowspan="1" colSpan="1" ></td>
|
|
13
|
-
</tr>
|
|
14
|
-
</table>
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
## Environment Preparations
|
|
18
8
|
- [Node.js](https://nodejs.org/en/) version 16+.
|
|
19
9
|
|
|
20
|
-
-
|
|
10
|
+
- Modern browser, supporting WebRTC APIs.
|
|
21
11
|
|
|
22
12
|
|
|
23
13
|
## Step 1. Activate the service
|
|
@@ -25,13 +15,13 @@ This article will guide you through the process of integrating the TUICallKit co
|
|
|
25
15
|
Refer to [Activate the Service](https://trtc.io/document/59832?platform=web&product=call) to obtain `SDKAppID, SDKSecretKey`, which will be used as **Mandatory Parameters in **[Initialize the TUICallKit](https://write.woa.com/document/133160392291844096)**.**
|
|
26
16
|
|
|
27
17
|
## Step 2. Download the TUICallKit
|
|
28
|
-
1. Download the [@tencentcloud/call-uikit-react
|
|
18
|
+
1. Download the [@tencentcloud/call-uikit-react](https://www.npmjs.com/package/@tencentcloud/call-uikit-react) component.
|
|
29
19
|
|
|
30
20
|
|
|
31
21
|
|
|
32
22
|
【shell】
|
|
33
23
|
``` bash
|
|
34
|
-
|
|
24
|
+
npm install @tencentcloud/call-uikit-react
|
|
35
25
|
```
|
|
36
26
|
2. Copy the `debug` directory to your project directory `src/debug`, it is necessary when generating userSig locally.
|
|
37
27
|
|
|
@@ -41,45 +31,66 @@ Refer to [Activate the Service](https://trtc.io/document/59832?platform=web&prod
|
|
|
41
31
|
|
|
42
32
|
【MacOS】
|
|
43
33
|
``` bash
|
|
44
|
-
cp -r node_modules/@tencentcloud/call-uikit-react
|
|
34
|
+
cp -r node_modules/@tencentcloud/call-uikit-react/debug ./src
|
|
45
35
|
```
|
|
46
36
|
|
|
47
37
|
|
|
48
38
|
【Windows】
|
|
49
39
|
``` bash
|
|
50
|
-
xcopy node_modules\@tencentcloud\call-uikit-react\
|
|
40
|
+
xcopy node_modules\@tencentcloud\call-uikit-react\debug .\src\debug /i /e
|
|
51
41
|
```
|
|
52
42
|
|
|
53
43
|
|
|
54
|
-
## Step 3.
|
|
44
|
+
## Step 3. Initialize the TUICallKit
|
|
55
45
|
|
|
56
46
|
You can choose to import the sample code in the `/src/App.tsx` file.
|
|
57
47
|
1. Import the call uikit.
|
|
58
48
|
|
|
59
49
|
``` javascript
|
|
60
|
-
import {
|
|
50
|
+
import { useState } from 'react';
|
|
51
|
+
import { TUICallKit, TUICallKitServer, TUICallType } from "@tencentcloud/call-uikit-react";
|
|
61
52
|
import * as GenerateTestUserSig from "./debug/GenerateTestUserSig-es"; // Refer to Step 2.2
|
|
62
53
|
```
|
|
63
|
-
2. using the [TUICallKit
|
|
54
|
+
2. using the [<TUICallKit />](https://trtc.io/document/51015#call#tuicallkit), which contains the complete UI interaction during a call.
|
|
64
55
|
|
|
65
56
|
``` javascript
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
57
|
+
return (
|
|
58
|
+
<>
|
|
59
|
+
<span> caller's ID: </span>
|
|
60
|
+
<input type="text" placeholder='input caller userID' onChange={(event) => setCallerUserID(event.target.value)} />
|
|
61
|
+
<button onClick={init}> step1. init </button> <br />
|
|
62
|
+
<span> callee's ID: </span>
|
|
63
|
+
<input type="text" placeholder='input callee userID' onChange={(event) => setCalleeUserID(event.target.value)} />
|
|
64
|
+
<button onClick={call}> step2. call </button>
|
|
70
65
|
|
|
71
|
-
|
|
66
|
+
{/* 【1】Import the TUICallKit component: Call interface UI */}
|
|
67
|
+
<TUICallKit />
|
|
68
|
+
</>
|
|
69
|
+
);
|
|
70
|
+
```
|
|
71
|
+
3. using the [TUICallKitServer.init](https://trtc.io/document/51015#call#init) API to log in to the component, you need to `fill in``SDKAppID, SDKSecretKey `as two parameters in the code.
|
|
72
|
+
|
|
73
|
+
``` javascript
|
|
74
|
+
const SDKAppID = 0; // TODO: Replace with your SDKAppID (Notice: SDKAppID is of type number)
|
|
75
|
+
const SDKSecretKey = ''; // TODO: Replace with your SDKSecretKey
|
|
72
76
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
};
|
|
77
|
+
const [callerUserID, setCallerUserID] = useState('');
|
|
78
|
+
const [calleeUserID, setCalleeUserID] = useState('');
|
|
79
|
+
|
|
80
|
+
//【2】Initialize the TUICallKit component
|
|
81
|
+
const init = async () => {
|
|
82
|
+
const { userSig } = GenerateTestUserSig.genTestUserSig({
|
|
83
|
+
userID: callerUserID,
|
|
84
|
+
SDKAppID,
|
|
85
|
+
SecretKey: SDKSecretKey,
|
|
86
|
+
});
|
|
87
|
+
await TUICallKitServer.init({
|
|
88
|
+
userID: callerUserID,
|
|
89
|
+
userSig,
|
|
90
|
+
SDKAppID,
|
|
91
|
+
});
|
|
92
|
+
alert('TUICallKit init succeed');
|
|
93
|
+
}
|
|
83
94
|
```
|
|
84
95
|
<table>
|
|
85
96
|
<tr>
|
|
@@ -91,7 +102,7 @@ You can choose to import the sample code in the `/src/App.tsx` file.
|
|
|
91
102
|
</tr>
|
|
92
103
|
|
|
93
104
|
<tr>
|
|
94
|
-
<td rowspan="1" colSpan="1" >
|
|
105
|
+
<td rowspan="1" colSpan="1" >userID</td>
|
|
95
106
|
|
|
96
107
|
<td rowspan="1" colSpan="1" >String</td>
|
|
97
108
|
|
|
@@ -107,7 +118,7 @@ You can choose to import the sample code in the `/src/App.tsx` file.
|
|
|
107
118
|
</tr>
|
|
108
119
|
|
|
109
120
|
<tr>
|
|
110
|
-
<td rowspan="1" colSpan="1" >
|
|
121
|
+
<td rowspan="1" colSpan="1" >SDKSecretKey</td>
|
|
111
122
|
|
|
112
123
|
<td rowspan="1" colSpan="1" >String</td>
|
|
113
124
|
|
|
@@ -131,33 +142,51 @@ You can choose to import the sample code in the `/src/App.tsx` file.
|
|
|
131
142
|
|
|
132
143
|
|
|
133
144
|
## Step 4. Make your first call
|
|
134
|
-
1. using the [
|
|
145
|
+
1. using the [TUICallKitServer.calls API](https://trtc.io/document/51015#calls) to make a call.
|
|
135
146
|
|
|
136
147
|
``` javascript
|
|
137
148
|
//【3】Make a 1v1 video call
|
|
138
|
-
const users: string[] = ["mike"];
|
|
139
149
|
const call = async () => {
|
|
140
|
-
await
|
|
141
|
-
|
|
142
|
-
|
|
150
|
+
await TUICallKitServer.calls({
|
|
151
|
+
userIDIDList: [calleeUserID],
|
|
152
|
+
type: TUICallType.VIDEO_CALL,
|
|
143
153
|
});
|
|
144
154
|
};
|
|
145
155
|
```
|
|
146
|
-
2.
|
|
156
|
+
2. Run the project.
|
|
157
|
+
|
|
147
158
|
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
<td rowspan="1" colSpan="1" >Caller initiates an audio call</td>
|
|
159
|
+
> **Warning:**
|
|
160
|
+
>
|
|
151
161
|
|
|
152
|
-
|
|
153
|
-
|
|
162
|
+
> **For local environment, please access under localhost protocol. For public network experience, please access under HTTPS protocol. For details, see **[Description of Network Access Protocol](https://web.sdk.qcloud.com/trtc/webrtc/doc/en/tutorial-05-info-browser.html#h2-3)**.**
|
|
163
|
+
>
|
|
154
164
|
|
|
155
|
-
|
|
156
|
-
<td rowspan="1" colSpan="1" ><br></td>
|
|
165
|
+
3. Open two browser pages,** enter different userID (defined by you) **click `step1. init` to login (caller and callee).
|
|
157
166
|
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
167
|
+
|
|
168
|
+

|
|
169
|
+
|
|
170
|
+
4. **After both userID init to successfully**, click on` step2. call`to make a call. If you have a call problem, refer to [FAQs](https://trtc.io/document/51024?platform=android&product=call#create_userID).
|
|
171
|
+
|
|
172
|
+
|
|
173
|
+

|
|
174
|
+
|
|
175
|
+
|
|
176
|
+
## Additional Features
|
|
177
|
+
- [Setting Nickname, Avatar](https://trtc.io/document/59834?platform=web&product=call)
|
|
178
|
+
|
|
179
|
+
- [Group Call](https://trtc.io/document/59838?platform=web&product=call)
|
|
180
|
+
|
|
181
|
+
- [Floating Window](https://trtc.io/document/59842?platform=web&product=call)
|
|
182
|
+
|
|
183
|
+
- [Custom Ringtone](https://trtc.io/document/59847?platform=web&product=call)
|
|
184
|
+
|
|
185
|
+
- [Call Status Monitoring, Component Callback Event](https://trtc.io/document/59852?platform=web&product=call)
|
|
186
|
+
|
|
187
|
+
- [Setting Resolution, Fill Pattern](https://trtc.io/document/59835?platform=web&product=call)
|
|
188
|
+
|
|
189
|
+
- [Customize Interface](https://trtc.io/document/50997?platform=web&product=call)
|
|
161
190
|
|
|
162
191
|
|
|
163
192
|
## FAQs
|
package/server.js
CHANGED
|
@@ -21,9 +21,9 @@ function createServer() {
|
|
|
21
21
|
});
|
|
22
22
|
const framework = ['vue', 'react', 'flutter', 'android', 'ios'];
|
|
23
23
|
const toolDefinitions = {
|
|
24
|
-
'
|
|
25
|
-
name: '
|
|
26
|
-
description: 'Refer to the TUICallKit documentation corresponding to the input development framework.',
|
|
24
|
+
'read_tuicallkit_integrate_docs': {
|
|
25
|
+
name: 'read_tuicallkit_integrate_docs',
|
|
26
|
+
description: 'Refer to the TUICallKit integration documentation corresponding to the input development framework. ',
|
|
27
27
|
parameters: {
|
|
28
28
|
// @ts-ignore
|
|
29
29
|
framework: zod_1.z.enum(framework).optional().default('vue').describe('Development framework name (e.g., flutter, vue, react, android)'),
|
|
@@ -43,44 +43,68 @@ function createServer() {
|
|
|
43
43
|
sdkAppId: zod_1.z.string().describe("Your application's SDKAppID."),
|
|
44
44
|
},
|
|
45
45
|
},
|
|
46
|
+
'read_chatuikit_integrate_docs': {
|
|
47
|
+
name: 'read_chatuikit_integrate_docs',
|
|
48
|
+
description: 'Refer to the ChatUIKit integration documentation corresponding to the input development framework.',
|
|
49
|
+
parameters: {
|
|
50
|
+
// @ts-ignore
|
|
51
|
+
framework: zod_1.z.enum(framework).optional().default('vue').describe('Development framework name (e.g., flutter, vue, react, android)'),
|
|
52
|
+
// @ts-ignore
|
|
53
|
+
sdkAppId: zod_1.z.string().describe("Your application's SDKAppID."),
|
|
54
|
+
// @ts-ignore
|
|
55
|
+
secretKey: zod_1.z.string().describe("The SecretKey corresponding to your application's SDKAppID."),
|
|
56
|
+
},
|
|
57
|
+
},
|
|
58
|
+
'read_chatuikit_faq_docs': {
|
|
59
|
+
name: 'read_chatuikit_faq_docs',
|
|
60
|
+
description: 'Please enter any issues you encountered while using ChatUIKit.',
|
|
61
|
+
parameters: {
|
|
62
|
+
// @ts-ignore
|
|
63
|
+
question: zod_1.z.string().describe('Please describe your issue.'),
|
|
64
|
+
// @ts-ignore
|
|
65
|
+
sdkAppId: zod_1.z.string().describe("Your application's SDKAppID."),
|
|
66
|
+
},
|
|
67
|
+
},
|
|
46
68
|
};
|
|
47
|
-
const
|
|
48
|
-
if (!framework) {
|
|
49
|
-
throw new Error("The framework name is required.");
|
|
50
|
-
}
|
|
69
|
+
const readDocsWithConfig = async (docType, reportName, path, sdkAppId, reportExt2) => {
|
|
51
70
|
try {
|
|
52
|
-
aegis.report({ name:
|
|
53
|
-
const content = await readResourcesFiles(
|
|
71
|
+
aegis.report({ name: reportName, ext1: sdkAppId, ext2: reportExt2 });
|
|
72
|
+
const content = await readResourcesFiles(path);
|
|
54
73
|
return content;
|
|
55
74
|
}
|
|
56
75
|
catch (error) {
|
|
57
76
|
return {
|
|
58
77
|
content: [{
|
|
59
78
|
type: "text",
|
|
60
|
-
text: `An error occurred when reading
|
|
61
|
-
}]
|
|
79
|
+
text: `An error occurred when reading ${docType} document: ${error instanceof Error ? error.message : String(error)}`,
|
|
80
|
+
}]
|
|
62
81
|
};
|
|
63
82
|
}
|
|
64
83
|
};
|
|
65
|
-
const
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
const content = await readResourcesFiles('FAQ');
|
|
69
|
-
return content;
|
|
84
|
+
const readTUICallKitLocalIntegrateDocsHandler = async ({ framework, sdkAppId, secretKey }) => {
|
|
85
|
+
if (!framework) {
|
|
86
|
+
throw new Error("The framework name is required.");
|
|
70
87
|
}
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
88
|
+
return readDocsWithConfig("TUICallKit", "TUICallKitIntegrateTool", `tuicallkit/${framework}`, sdkAppId, framework);
|
|
89
|
+
};
|
|
90
|
+
const readTUICallKitResoureFaqHandler = async ({ question, sdkAppId }) => {
|
|
91
|
+
return readDocsWithConfig("TUICallKit", "TUICallKitFAQTool", "tuicallkit/FAQ", sdkAppId, question);
|
|
92
|
+
};
|
|
93
|
+
const readChatUIKitLocalIntegrateDocsHandler = async ({ framework, sdkAppId, secretKey }) => {
|
|
94
|
+
if (!framework) {
|
|
95
|
+
throw new Error("The framework name is required.");
|
|
78
96
|
}
|
|
97
|
+
return readDocsWithConfig('ChatUIKit', 'ChatUIKitIntegrateTool', `chatuikit/${framework}`, sdkAppId, framework);
|
|
98
|
+
};
|
|
99
|
+
const readChatUIKitResoureFaqHandler = async ({ question, sdkAppId }) => {
|
|
100
|
+
return readDocsWithConfig("ChatUIKit", "ChatUIKitFAQTool", "chatuikit/FAQ", sdkAppId, question);
|
|
79
101
|
};
|
|
80
102
|
// Define the handler for read_tencent_callkit_docs
|
|
81
103
|
const toolHandlers = {
|
|
82
|
-
'
|
|
83
|
-
'read_tuicallkit_faq_docs':
|
|
104
|
+
'read_tuicallkit_integrate_docs': readTUICallKitLocalIntegrateDocsHandler,
|
|
105
|
+
'read_tuicallkit_faq_docs': readTUICallKitResoureFaqHandler,
|
|
106
|
+
'read_chatuikit_integrate_docs': readChatUIKitLocalIntegrateDocsHandler,
|
|
107
|
+
'read_chatuikit_faq_docs': readChatUIKitResoureFaqHandler,
|
|
84
108
|
};
|
|
85
109
|
// Helper function to register all tools to a server instance
|
|
86
110
|
function registerAllTools(serverInstance) {
|
|
@@ -98,7 +122,7 @@ function createServer() {
|
|
|
98
122
|
// 读取 resources 某个 framework 下所有的 md 文档内容并返回
|
|
99
123
|
async function readResourcesFiles(framework) {
|
|
100
124
|
// 构建文档目录路径
|
|
101
|
-
const docPath = path_1.default.join(__dirname, 'resource', 'doc',
|
|
125
|
+
const docPath = path_1.default.join(__dirname, 'resource', 'doc', framework.toLowerCase());
|
|
102
126
|
// 检查目录是否存在
|
|
103
127
|
const stats = await fs_1.promises.stat(docPath);
|
|
104
128
|
if (!stats.isDirectory()) {
|
|
@@ -125,7 +149,7 @@ async function readResourcesFiles(framework) {
|
|
|
125
149
|
return {
|
|
126
150
|
content: [{
|
|
127
151
|
type: "text",
|
|
128
|
-
text: `#
|
|
152
|
+
text: `# ${framework} 的开发文档\n${documentContent}`,
|
|
129
153
|
}],
|
|
130
154
|
};
|
|
131
155
|
}
|
package/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":";;;;;AAYA,
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|