tinet-clink2-cli 0.0.2__tar.gz → 0.0.3__tar.gz
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.
- {tinet_clink2_cli-0.0.2 → tinet_clink2_cli-0.0.3}/MANIFEST.in +1 -1
- {tinet_clink2_cli-0.0.2 → tinet_clink2_cli-0.0.3}/PKG-INFO +33 -16
- {tinet_clink2_cli-0.0.2 → tinet_clink2_cli-0.0.3}/cli_anything/clink2/__init__.py +1 -1
- {tinet_clink2_cli-0.0.2 → tinet_clink2_cli-0.0.3}/cli_anything/clink2/clink2_cli.py +8 -9
- tinet_clink2_cli-0.0.3/cli_anything/clink2/commands/__init__.py +86 -0
- tinet_clink2_cli-0.0.3/cli_anything/clink2/commands/cdr_specs.py +336 -0
- tinet_clink2_cli-0.0.3/cli_anything/clink2/commands/options.py +47 -0
- tinet_clink2_cli-0.0.3/cli_anything/clink2/core/params.py +31 -0
- {tinet_clink2_cli-0.0.2 → tinet_clink2_cli-0.0.3}/pyproject.toml +5 -3
- tinet_clink2_cli-0.0.3/setup.py +47 -0
- {tinet_clink2_cli-0.0.2 → tinet_clink2_cli-0.0.3}/tinet_clink2_cli.egg-info/PKG-INFO +33 -16
- {tinet_clink2_cli-0.0.2 → tinet_clink2_cli-0.0.3}/tinet_clink2_cli.egg-info/SOURCES.txt +5 -1
- tinet_clink2_cli-0.0.2/README.md +0 -107
- {tinet_clink2_cli-0.0.2 → tinet_clink2_cli-0.0.3}/cli_anything/clink2/core/__init__.py +0 -0
- {tinet_clink2_cli-0.0.2 → tinet_clink2_cli-0.0.3}/cli_anything/clink2/core/auth.py +0 -0
- {tinet_clink2_cli-0.0.2 → tinet_clink2_cli-0.0.3}/cli_anything/clink2/core/config.py +0 -0
- {tinet_clink2_cli-0.0.2 → tinet_clink2_cli-0.0.3}/cli_anything/clink2/core/http.py +0 -0
- {tinet_clink2_cli-0.0.2 → tinet_clink2_cli-0.0.3}/cli_anything/clink2/core/logging.py +0 -0
- {tinet_clink2_cli-0.0.2 → tinet_clink2_cli-0.0.3}/setup.cfg +0 -0
- {tinet_clink2_cli-0.0.2 → tinet_clink2_cli-0.0.3}/tinet_clink2_cli.egg-info/dependency_links.txt +0 -0
- {tinet_clink2_cli-0.0.2 → tinet_clink2_cli-0.0.3}/tinet_clink2_cli.egg-info/entry_points.txt +0 -0
- {tinet_clink2_cli-0.0.2 → tinet_clink2_cli-0.0.3}/tinet_clink2_cli.egg-info/requires.txt +0 -0
- {tinet_clink2_cli-0.0.2 → tinet_clink2_cli-0.0.3}/tinet_clink2_cli.egg-info/top_level.txt +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: tinet-clink2-cli
|
|
3
|
-
Version: 0.0.
|
|
4
|
-
Summary: Clink2 OpenAPI CLI
|
|
3
|
+
Version: 0.0.3
|
|
4
|
+
Summary: Tinet Clink2 OpenAPI CLI
|
|
5
5
|
Requires-Python: >=3.10
|
|
6
6
|
Description-Content-Type: text/markdown
|
|
7
7
|
Requires-Dist: click>=8.0
|
|
@@ -10,10 +10,12 @@ Provides-Extra: dev
|
|
|
10
10
|
Requires-Dist: pytest>=7.0; extra == "dev"
|
|
11
11
|
Requires-Dist: responses>=0.25; extra == "dev"
|
|
12
12
|
Requires-Dist: build>=1.0; extra == "dev"
|
|
13
|
+
Dynamic: description
|
|
14
|
+
Dynamic: description-content-type
|
|
13
15
|
|
|
14
16
|
Clink2 命令行客户端,封装 OpenAPI 接口,与 [智慧服务平台开发者中心](https://develop.clink.cn) 中参数与响应一致,适合脚本化集成与 Agent 调用。
|
|
15
17
|
|
|
16
|
-
**当前版本:** `0.0.
|
|
18
|
+
**当前版本:** `0.0.3`
|
|
17
19
|
**PyPI:** https://pypi.org/project/tinet-clink2-cli/
|
|
18
20
|
|
|
19
21
|
## 功能概览
|
|
@@ -21,15 +23,18 @@ Clink2 命令行客户端,封装 OpenAPI 接口,与 [智慧服务平台开
|
|
|
21
23
|
| 子命令 | 说明 |
|
|
22
24
|
|--------|------|
|
|
23
25
|
| **`config`** | 本地凭证管理 |
|
|
24
|
-
| **`
|
|
25
|
-
| **`
|
|
26
|
+
| **`cdr-auto-task`** | 任务呼叫记录查询 |
|
|
27
|
+
| **`cdr-bot`** | 机器人话单查询 |
|
|
28
|
+
| **`cdr-ib`** | 呼入通话记录查询 |
|
|
29
|
+
| **`cdr-internal`** | 内部呼叫记录查询 |
|
|
30
|
+
| **`cdr-ob`** | 外呼通话记录查询 |
|
|
31
|
+
| **`ivr`** | 语音导航查询 |
|
|
32
|
+
| **`voicemail`** | 留言箱设置查询 |
|
|
26
33
|
|
|
27
34
|
所有出站 HTTP 请求自动附加:
|
|
28
35
|
- `X-Trace-Id: {UUID}`
|
|
29
36
|
- `X-Clink2-CLI-Version: {CLI 版本}`
|
|
30
37
|
|
|
31
|
-
本地默认写入 JSON Lines 日志:`~/.clink2/logs/clink2.log`(单文件最大 10MB,滚动保留 5 个)。
|
|
32
|
-
|
|
33
38
|
## 环境要求
|
|
34
39
|
|
|
35
40
|
- Python **≥ 3.10**
|
|
@@ -42,14 +47,14 @@ Clink2 命令行客户端,封装 OpenAPI 接口,与 [智慧服务平台开
|
|
|
42
47
|
|
|
43
48
|
```bash
|
|
44
49
|
pip install tinet-clink2-cli
|
|
45
|
-
tinet-clink2-cli --version # 0.0.
|
|
50
|
+
tinet-clink2-cli --version # 0.0.3
|
|
46
51
|
tinet-clink2-cli --help
|
|
47
52
|
```
|
|
48
53
|
|
|
49
54
|
指定版本或升级:
|
|
50
55
|
|
|
51
56
|
```bash
|
|
52
|
-
pip install 'tinet-clink2-cli==0.0.
|
|
57
|
+
pip install 'tinet-clink2-cli==0.0.3'
|
|
53
58
|
pip install --upgrade tinet-clink2-cli
|
|
54
59
|
```
|
|
55
60
|
|
|
@@ -67,8 +72,8 @@ pipx install tinet-clink2-cli
|
|
|
67
72
|
|
|
68
73
|
```bash
|
|
69
74
|
tinet-clink2-cli config set \
|
|
70
|
-
--
|
|
71
|
-
--
|
|
75
|
+
--access-key-id your_access_key_id \
|
|
76
|
+
--access-key-secret your_access_key_secret \
|
|
72
77
|
--endpoint https://api-bj.clink.cn \
|
|
73
78
|
--expires 60 \
|
|
74
79
|
--log true
|
|
@@ -80,22 +85,30 @@ tinet-clink2-cli config show
|
|
|
80
85
|
|
|
81
86
|
## 快速示例
|
|
82
87
|
|
|
83
|
-
顺序与上方「功能概览」一致。完整取值见各子命令 `--help` 或 [开发者中心](https://develop.clink.cn)。
|
|
84
|
-
|
|
85
88
|
```bash
|
|
86
89
|
# config
|
|
87
90
|
tinet-clink2-cli config show
|
|
88
91
|
|
|
89
92
|
# ivr
|
|
90
|
-
tinet-clink2-cli ivr nodes --
|
|
93
|
+
tinet-clink2-cli ivr nodes --ivr-name your_ivr_name
|
|
91
94
|
tinet-clink2-cli --json ivr list
|
|
92
95
|
|
|
96
|
+
# CDR(未传时间参数时使用服务端默认时间窗)
|
|
97
|
+
tinet-clink2-cli --json cdr-ib list
|
|
98
|
+
tinet-clink2-cli --json cdr-ib detail --main-unique-id medias_1-xxx
|
|
99
|
+
tinet-clink2-cli --json cdr-ob list --cnos 0001,0002
|
|
100
|
+
tinet-clink2-cli --json cdr-auto-task list
|
|
101
|
+
tinet-clink2-cli --json cdr-bot ib-list
|
|
102
|
+
tinet-clink2-cli --json cdr-internal list
|
|
103
|
+
|
|
93
104
|
# dry-run:仅校验入参与配置,不调用服务端(是否写日志取决于 config.log)
|
|
94
105
|
tinet-clink2-cli --dry-run ivr list
|
|
95
106
|
tinet-clink2-cli --dry-run voicemail list --offset 0 --limit 10
|
|
107
|
+
tinet-clink2-cli --dry-run cdr-ib list
|
|
96
108
|
|
|
97
109
|
# verbose:向 stderr 打印 url / method / 版本 Header / TraceId / result(不含 body)
|
|
98
110
|
tinet-clink2-cli --verbose --json voicemail list
|
|
111
|
+
tinet-clink2-cli --verbose --dry-run cdr-ob list
|
|
99
112
|
```
|
|
100
113
|
|
|
101
114
|
全局选项:
|
|
@@ -105,14 +118,18 @@ tinet-clink2-cli --verbose --json voicemail list
|
|
|
105
118
|
|
|
106
119
|
## 安全提示
|
|
107
120
|
|
|
108
|
-
- 勿将 AccessKeySecret
|
|
109
|
-
- `config set --log false` 为用户显式关闭本地审计;关闭后排障将缺少本地 JSON 日志。
|
|
121
|
+
- 勿将 AccessKeySecret 写入仓库、截图或日志外发渠道
|
|
110
122
|
|
|
111
123
|
## 帮助与 API 文档
|
|
112
124
|
|
|
113
125
|
```bash
|
|
114
126
|
tinet-clink2-cli --help
|
|
115
127
|
tinet-clink2-cli config --help
|
|
128
|
+
tinet-clink2-cli cdr-auto-task --help
|
|
129
|
+
tinet-clink2-cli cdr-bot --help
|
|
130
|
+
tinet-clink2-cli cdr-ib --help
|
|
131
|
+
tinet-clink2-cli cdr-internal --help
|
|
132
|
+
tinet-clink2-cli cdr-ob --help
|
|
116
133
|
tinet-clink2-cli ivr --help
|
|
117
134
|
tinet-clink2-cli voicemail --help
|
|
118
135
|
```
|
|
@@ -44,13 +44,13 @@ def config() -> None:
|
|
|
44
44
|
|
|
45
45
|
@config.command("set")
|
|
46
46
|
@click.option(
|
|
47
|
-
"--
|
|
47
|
+
"--access-key-id",
|
|
48
48
|
"access_key_id",
|
|
49
49
|
required=True,
|
|
50
50
|
help="访问密钥 ID",
|
|
51
51
|
)
|
|
52
52
|
@click.option(
|
|
53
|
-
"--
|
|
53
|
+
"--access-key-secret",
|
|
54
54
|
"access_key_secret",
|
|
55
55
|
required=True,
|
|
56
56
|
help="访问密钥 Secret",
|
|
@@ -295,7 +295,7 @@ def ivr_list(ctx: click.Context) -> None:
|
|
|
295
295
|
|
|
296
296
|
@ivr.command("nodes")
|
|
297
297
|
@click.option(
|
|
298
|
-
"--
|
|
298
|
+
"--ivr-name",
|
|
299
299
|
"ivr_name",
|
|
300
300
|
required=True,
|
|
301
301
|
help="语音导航名称",
|
|
@@ -329,12 +329,6 @@ def voicemail() -> None:
|
|
|
329
329
|
@click.pass_context
|
|
330
330
|
def voicemail_list(ctx: click.Context, offset: int, limit: int) -> None:
|
|
331
331
|
"""查看留言箱列表"""
|
|
332
|
-
if offset < 0 or offset > 99990:
|
|
333
|
-
raise click.ClickException("offset 超出范围 0-99990")
|
|
334
|
-
if limit < 10 or limit > 100:
|
|
335
|
-
raise click.ClickException("limit 超出范围 10-100")
|
|
336
|
-
if limit + offset > 100000:
|
|
337
|
-
raise click.ClickException("limit + offset 不允许超过 100000")
|
|
338
332
|
_run_api(
|
|
339
333
|
ctx,
|
|
340
334
|
"voicemail list",
|
|
@@ -344,5 +338,10 @@ def voicemail_list(ctx: click.Context, offset: int, limit: int) -> None:
|
|
|
344
338
|
)
|
|
345
339
|
|
|
346
340
|
|
|
341
|
+
from cli_anything.clink2.commands import register_cdr_commands
|
|
342
|
+
|
|
343
|
+
register_cdr_commands(cli)
|
|
344
|
+
|
|
345
|
+
|
|
347
346
|
if __name__ == "__main__":
|
|
348
347
|
cli()
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
"""CDR Click 命令组注册。"""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
import click
|
|
6
|
+
|
|
7
|
+
from cli_anything.clink2.commands.cdr_specs import SPECS
|
|
8
|
+
from cli_anything.clink2.commands.options import with_api_options
|
|
9
|
+
from cli_anything.clink2.core.params import build_query_params
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
def _register(group: click.Group, name: str, path: str, *, help_text: str) -> None:
|
|
13
|
+
"""在 group 上注册一个调用 ``_run_api`` 的子命令。
|
|
14
|
+
|
|
15
|
+
Args:
|
|
16
|
+
group: Click 命令组。
|
|
17
|
+
name: 子命令名。
|
|
18
|
+
path: OpenAPI path。
|
|
19
|
+
help_text: 命令说明。
|
|
20
|
+
"""
|
|
21
|
+
params = SPECS[path]
|
|
22
|
+
|
|
23
|
+
@group.command(name, help=help_text)
|
|
24
|
+
@with_api_options(params)
|
|
25
|
+
@click.pass_context
|
|
26
|
+
def _cmd(ctx: click.Context, **kwargs: object) -> None:
|
|
27
|
+
"""执行 CDR OpenAPI 查询。"""
|
|
28
|
+
from cli_anything.clink2.clink2_cli import _run_api
|
|
29
|
+
|
|
30
|
+
query = build_query_params(kwargs)
|
|
31
|
+
command = f"{group.name} {name}"
|
|
32
|
+
_run_api(ctx, command, "GET", path, params=query)
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
@click.group("cdr-ib")
|
|
36
|
+
def cdr_ib() -> None:
|
|
37
|
+
"""呼入通话记录查询"""
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
@click.group("cdr-ob")
|
|
41
|
+
def cdr_ob() -> None:
|
|
42
|
+
"""外呼通话记录查询"""
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
@click.group("cdr-auto-task")
|
|
46
|
+
def cdr_auto_task() -> None:
|
|
47
|
+
"""任务呼叫记录查询"""
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
@click.group("cdr-bot")
|
|
51
|
+
def cdr_bot() -> None:
|
|
52
|
+
"""机器人话单查询"""
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
@click.group("cdr-internal")
|
|
56
|
+
def cdr_internal() -> None:
|
|
57
|
+
"""内部呼叫记录查询"""
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
def register_cdr_commands(cli: click.Group) -> None:
|
|
61
|
+
"""将全部 CDR 命令组挂到根 CLI。
|
|
62
|
+
|
|
63
|
+
Args:
|
|
64
|
+
cli: 根 Click group。
|
|
65
|
+
"""
|
|
66
|
+
_register(cdr_ib, "list", "/cc/list_cdr_ib", help_text="查询客户来电记录列表")
|
|
67
|
+
_register(cdr_ib, "agent-list", "/cc/list_cdr_ib_agent", help_text="查询座席接听记录列表")
|
|
68
|
+
_register(cdr_ib, "detail", "/cc/detail_cdr_ib", help_text="查询客户来电记录详情")
|
|
69
|
+
|
|
70
|
+
_register(cdr_ob, "list", "/cc/list_cdr_ob", help_text="查询外呼记录列表")
|
|
71
|
+
_register(cdr_ob, "detail", "/cc/cdr_ob_details", help_text="查询外呼记录详情")
|
|
72
|
+
|
|
73
|
+
_register(cdr_auto_task, "list", "/cc/list_cdr_auto_task", help_text="查询任务呼叫记录列表")
|
|
74
|
+
|
|
75
|
+
_register(cdr_bot, "ib-list", "/cc/list_cdr_ib_intelligent_agent", help_text="查询呼入机器人记录列表")
|
|
76
|
+
_register(cdr_bot, "list", "/cc/list_cdr_intelligent_agent", help_text="查询机器人对话记录列表")
|
|
77
|
+
_register(cdr_bot, "detail", "/cc/detail_cdr_intelligent_agent", help_text="查询机器人对话记录详情")
|
|
78
|
+
|
|
79
|
+
_register(cdr_internal, "list", "/cc/list_cdr_ob_internal", help_text="查询内部呼叫记录列表")
|
|
80
|
+
_register(cdr_internal, "detail", "/cc/detail_cdr_ob_internal", help_text="查询内部呼叫记录详情")
|
|
81
|
+
|
|
82
|
+
cli.add_command(cdr_ib)
|
|
83
|
+
cli.add_command(cdr_ob)
|
|
84
|
+
cli.add_command(cdr_auto_task)
|
|
85
|
+
cli.add_command(cdr_bot)
|
|
86
|
+
cli.add_command(cdr_internal)
|
|
@@ -0,0 +1,336 @@
|
|
|
1
|
+
"""CDR OpenAPI 请求参数规格(从 develop/api/cc/*.adoc 提取)。"""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
SPECS: dict[str, list[dict]] = {
|
|
6
|
+
'/cc/list_cdr_ib': [
|
|
7
|
+
{'name': 'startTime', 'type': 'Long', 'required': False, 'help': '开始时间,时间戳格式精确到秒。默认值取当前月份第一天', 'default': None},
|
|
8
|
+
{'name': 'startTimeEnd', 'type': 'Long', 'required': False, 'help': '开始时间查询截止,时间戳格式精确到秒,开始时间和结束时间跨度不能超过一个月。默认值取当前时间', 'default': None},
|
|
9
|
+
{'name': 'answerTime', 'type': 'Long', 'required': False, 'help': '系统应答时间,时间戳格式精确到秒。', 'default': None},
|
|
10
|
+
{'name': 'answerTimeEnd', 'type': 'Long', 'required': False, 'help': '系统应答时间查询截止,时间戳格式精确到秒。', 'default': None},
|
|
11
|
+
{'name': 'bridgeTime', 'type': 'Long', 'required': False, 'help': '接听时间,时间戳格式精确到秒。', 'default': None},
|
|
12
|
+
{'name': 'bridgeTimeEnd', 'type': 'Long', 'required': False, 'help': '接听时间查询截止,时间戳格式精确到秒。', 'default': None},
|
|
13
|
+
{'name': 'endTime', 'type': 'Long', 'required': False, 'help': '结束时间,时间戳格式精确到秒。', 'default': None},
|
|
14
|
+
{'name': 'endTimeEnd', 'type': 'Long', 'required': False, 'help': '结束时间查询截止,时间戳格式精确到秒。', 'default': None},
|
|
15
|
+
{'name': 'hiddenType', 'type': 'Integer', 'required': False, 'help': '是否隐藏号码。 0: 不隐藏,1: 中间四位,2: 最后八位,3: 全部号码,4: 最后四位。默认值为 0', 'default': 0},
|
|
16
|
+
{'name': 'bridgeDuration', 'type': 'Integer', 'required': False, 'help': '通话时长范围查询最小值,和bridgeDurationEnd配合使用', 'default': None},
|
|
17
|
+
{'name': 'bridgeDurationEnd', 'type': 'Integer', 'required': False, 'help': '通话时长范围查询最大值', 'default': None},
|
|
18
|
+
{'name': 'totalDuration', 'type': 'Integer', 'required': False, 'help': '总时长范围查询最小值,和totalDurationEnd配合使用', 'default': None},
|
|
19
|
+
{'name': 'totalDurationEnd', 'type': 'Integer', 'required': False, 'help': '总时长范围查询最大值', 'default': None},
|
|
20
|
+
{'name': 'cnos', 'type': 'String[]', 'required': False, 'help': '座席号', 'default': None},
|
|
21
|
+
{'name': 'qnos', 'type': 'String[]', 'required': False, 'help': '队列号', 'default': None},
|
|
22
|
+
{'name': 'firstCallCno', 'type': 'String[]', 'required': False, 'help': '首呼座席', 'default': None},
|
|
23
|
+
{'name': 'firstCallQno', 'type': 'String[]', 'required': False, 'help': '首呼队列', 'default': None},
|
|
24
|
+
{'name': 'firstCallNumber', 'type': 'String', 'required': False, 'help': '首呼座席电话', 'default': None},
|
|
25
|
+
{'name': 'clientNumber', 'type': 'String', 'required': False, 'help': '座席电话', 'default': None},
|
|
26
|
+
{'name': 'customerNumber', 'type': 'String', 'required': False, 'help': '客户号码', 'default': None},
|
|
27
|
+
{'name': 'customerNumberMatchType', 'type': 'Integer', 'required': False, 'help': '客户号码匹配类型。需与customerNumber配合使用。1: 前缀匹配,2: 后缀匹配,3: 包含匹配', 'default': None},
|
|
28
|
+
{'name': 'hotlines', 'type': 'String[]', 'required': False, 'help': '热线号码', 'default': None},
|
|
29
|
+
{'name': 'hotlineName', 'type': 'String', 'required': False, 'help': '热线别名', 'default': None},
|
|
30
|
+
{'name': 'ivrIds', 'type': 'Integer[]', 'required': False, 'help': 'IVR', 'default': None},
|
|
31
|
+
{'name': 'xnumber', 'type': 'String[]', 'required': False, 'help': '虚拟号码', 'default': None},
|
|
32
|
+
{'name': 'statuses', 'type': 'Integer[]', 'required': False, 'help': '接听状态。取值范围如下: 1: 人工接听 2: 人工未接听 3: 系统应答 4: 系统未应答 默认全部', 'default': None},
|
|
33
|
+
{'name': 'statusResult', 'type': 'Integer[]', 'required': False, 'help': '呼叫结果。配合接听状态为人工未接听和系统应答时做级联查询,取值范围如下: 1: 已进入留言 2: 客户速挂 3: 座席拒接 4: 振铃未接 8: IVR中放弃 9: 已进IVR 10: 未进IVR 11: 队列中放弃 12: 队列中溢出 默认全部', 'default': None},
|
|
34
|
+
{'name': 'onHookSource', 'type': 'Integer[]', 'required': False, 'help': '挂断方,默认查询全部。说明参考<<通用字段>>', 'default': None},
|
|
35
|
+
{'name': 'callRemember', 'type': 'Integer[]', 'required': False, 'help': '主叫记忆。取值范围如下: 1: 外呼主叫记忆 2: 来电主叫记忆', 'default': None},
|
|
36
|
+
{'name': 'statusRobot', 'type': 'Integer[]', 'required': False, 'help': '机器人接听状态。取值范围如下: 1: 机器人未应答 2: 机器人应答', 'default': None},
|
|
37
|
+
{'name': 'investigationKeys', 'type': 'Integer', 'required': False, 'help': '满意度评价', 'default': None},
|
|
38
|
+
{'name': 'province', 'type': 'String', 'required': False, 'help': '客户归属地省份', 'default': None},
|
|
39
|
+
{'name': 'city', 'type': 'String', 'required': False, 'help': '客户归属地城市', 'default': None},
|
|
40
|
+
{'name': 'agentAnswerInTime', 'type': 'Integer', 'required': False, 'help': '首次及时应答。取值范围如下: 0: 否 1: 是 默认全部', 'default': None},
|
|
41
|
+
{'name': 'evaluation', 'type': 'Integer', 'required': False, 'help': '是否邀评。取值范围如下: 0: 否 1: 是 默认全部', 'default': None},
|
|
42
|
+
{'name': 'evaluationSolveResult', 'type': 'Integer[]', 'required': False, 'help': '会话评估问题是否解决。0: 未解决,1: 已解决,默认全部', 'default': None},
|
|
43
|
+
{'name': 'userField', 'type': 'String', 'required': False, 'help': '自定义字段', 'default': None},
|
|
44
|
+
{'name': 'userValue', 'type': 'String', 'required': False, 'help': '自定义字段值,与userField配合使用', 'default': None},
|
|
45
|
+
{'name': 'customerMos', 'type': 'Integer[]', 'required': False, 'help': '客户侧通话质量。取值范围 1-4,对应较差到优秀', 'default': None},
|
|
46
|
+
{'name': 'agentMos', 'type': 'Integer[]', 'required': False, 'help': '座席侧通话质量。取值范围 1-4,对应较差到优秀', 'default': None},
|
|
47
|
+
{'name': 'mainUniqueId', 'type': 'String', 'required': False, 'help': '通话记录唯一标识', 'default': None},
|
|
48
|
+
{'name': 'existTicket', 'type': 'Integer', 'required': False, 'help': '工单有无。取值范围如下: 0: 无 1: 有 默认全部', 'default': None},
|
|
49
|
+
{'name': 'existBusiness', 'type': 'Integer', 'required': False, 'help': '业务记录有无。取值范围如下: 0: 无 1: 有 默认全部', 'default': None},
|
|
50
|
+
{'name': 'isRtcCall', 'type': 'Integer', 'required': False, 'help': '是否为RTC通话。取值范围如下: 1: 是 0: 否 默认全部', 'default': None},
|
|
51
|
+
{'name': 'bindTypes', 'type': 'Integer[]', 'required': False, 'help': '接听设备。取值范围如下: 1: 手机 2: IP话机 3: 软电话 默认全部', 'default': None},
|
|
52
|
+
{'name': 'scrollSearch', 'type': 'boolean', 'required': False, 'help': '是否滚动查询。默认false,true代表使用滚动查询。', 'default': None},
|
|
53
|
+
{'name': 'scrollId', 'type': 'String', 'required': False, 'help': '滚动查询ID。配合scrollSearch使用,第一次查询时不需要传递此参数,后续查询可从返回列表中取值,并传参数。当scrollId为空时,代表滚动查询结束。', 'default': None},
|
|
54
|
+
{'name': 'offset', 'type': 'Integer', 'required': False, 'help': '偏移量,范围 0-99990。默认值为 0。注:limit + offset 不允许超过100000', 'default': 0},
|
|
55
|
+
{'name': 'limit', 'type': 'Integer', 'required': False, 'help': '查询条数,范围 10-100。默认值为 10。注:limit + offset 不允许超过100000', 'default': 10},
|
|
56
|
+
],
|
|
57
|
+
'/cc/list_cdr_ib_agent': [
|
|
58
|
+
{'name': 'startTime', 'type': 'Long', 'required': False, 'help': '开始时间,时间戳格式精确到秒。默认值取当前月份第一天', 'default': None},
|
|
59
|
+
{'name': 'startTimeEnd', 'type': 'Long', 'required': False, 'help': '开始时间查询截止,时间戳格式精确到秒,开始时间和结束时间跨度不能超过一个月。默认值取当前时间', 'default': None},
|
|
60
|
+
{'name': 'bridgeTime', 'type': 'Long', 'required': False, 'help': '接听时间,时间戳格式精确到秒。', 'default': None},
|
|
61
|
+
{'name': 'bridgeTimeEnd', 'type': 'Long', 'required': False, 'help': '接听时间查询截止,时间戳格式精确到秒。', 'default': None},
|
|
62
|
+
{'name': 'endTime', 'type': 'Long', 'required': False, 'help': '结束时间,时间戳格式精确到秒。', 'default': None},
|
|
63
|
+
{'name': 'endTimeEnd', 'type': 'Long', 'required': False, 'help': '结束时间查询截止,时间戳格式精确到秒。', 'default': None},
|
|
64
|
+
{'name': 'hiddenType', 'type': 'Integer', 'required': False, 'help': '是否隐藏号码。 0: 不隐藏,1: 中间四位,2: 最后八位,3: 全部号码,4: 最后四位。默认值为 0', 'default': 0},
|
|
65
|
+
{'name': 'detailCallType', 'type': 'Integer[]', 'required': False, 'help': '呼叫类型,默认查询全部。说明参考<<通用字段>>', 'default': None},
|
|
66
|
+
{'name': 'qno', 'type': 'String[]', 'required': False, 'help': '队列号', 'default': None},
|
|
67
|
+
{'name': 'cno', 'type': 'String[]', 'required': False, 'help': '座席号', 'default': None},
|
|
68
|
+
{'name': 'clientNumber', 'type': 'String', 'required': False, 'help': '座席号码', 'default': None},
|
|
69
|
+
{'name': 'bridgeStatus', 'type': 'Integer[]', 'required': False, 'help': '接听状态。取值范围如下: 0: 人工未接听 1: 人工接听 默认全部', 'default': None},
|
|
70
|
+
{'name': 'bridgeStatusDetail', 'type': 'Integer[]', 'required': False, 'help': '呼叫结果。人工未接听原因,配合接听状态为人工未接听时做级联查询,取值范围如下: 2: 座席拒接 3: 振铃未接 默认全部', 'default': None},
|
|
71
|
+
{'name': 'bridgeDuration', 'type': 'Integer', 'required': False, 'help': '通话时长范围查询最小值,和bridgeDurationEnd配合使用', 'default': None},
|
|
72
|
+
{'name': 'bridgeDurationEnd', 'type': 'Integer', 'required': False, 'help': '通话时长范围查询最大值', 'default': None},
|
|
73
|
+
{'name': 'onHookSource', 'type': 'Integer[]', 'required': False, 'help': '挂断方,默认查询全部。说明参考<<通用字段>>', 'default': None},
|
|
74
|
+
{'name': 'agentAnswerInTime', 'type': 'Integer', 'required': False, 'help': '及时应答。取值范围如下: 0: 否 1: 是 默认全部', 'default': None},
|
|
75
|
+
{'name': 'mainUniqueId', 'type': 'String', 'required': False, 'help': '通话记录唯一标识', 'default': None},
|
|
76
|
+
{'name': 'customerNumber', 'type': 'String', 'required': False, 'help': '客户号码', 'default': None},
|
|
77
|
+
{'name': 'customerNumberMatchType', 'type': 'Integer', 'required': False, 'help': '客户号码匹配类型。需与customerNumber配合使用。0: 精确匹配,1: 前缀匹配,2: 后缀匹配,3: 包含匹配', 'default': None},
|
|
78
|
+
{'name': 'hotlines', 'type': 'String[]', 'required': False, 'help': '热线号码', 'default': None},
|
|
79
|
+
{'name': 'hotlineName', 'type': 'String', 'required': False, 'help': '热线别名', 'default': None},
|
|
80
|
+
{'name': 'ivrIds', 'type': 'Integer[]', 'required': False, 'help': 'IVR', 'default': None},
|
|
81
|
+
{'name': 'displayNumbers', 'type': 'String[]', 'required': False, 'help': '呼转外显号码', 'default': None},
|
|
82
|
+
{'name': 'sipCauseCode', 'type': 'Integer', 'required': False, 'help': 'SIP状态码', 'default': None},
|
|
83
|
+
{'name': 'callRemember', 'type': 'Integer[]', 'required': False, 'help': '主叫记忆。取值范围如下: 1: 外呼主叫记忆 2: 来电主叫记忆 默认全部', 'default': None},
|
|
84
|
+
{'name': 'bindTypes', 'type': 'Integer[]', 'required': False, 'help': '接听设备。取值范围如下: 1: 手机 2: IP话机 3: 软电话 默认全部', 'default': None},
|
|
85
|
+
{'name': 'scrollSearch', 'type': 'boolean', 'required': False, 'help': '是否滚动查询。默认false,true代表使用滚动查询。', 'default': None},
|
|
86
|
+
{'name': 'scrollId', 'type': 'String', 'required': False, 'help': '滚动查询ID。配合scrollSearch使用,第一次查询时不需要传递此参数,后续查询可从返回列表中取值,并传参数。当scrollId为空时,代表滚动查询结束。', 'default': None},
|
|
87
|
+
{'name': 'offset', 'type': 'Integer', 'required': False, 'help': '偏移量,范围 0-99990。默认值为 0。注:limit + offset 不允许超过100000', 'default': 0},
|
|
88
|
+
{'name': 'limit', 'type': 'Integer', 'required': False, 'help': '查询条数,范围 10-100。默认值为 10。注:limit + offset 不允许超过100000', 'default': 10},
|
|
89
|
+
],
|
|
90
|
+
'/cc/detail_cdr_ib': [
|
|
91
|
+
{'name': 'mainUniqueId', 'type': 'String', 'required': True, 'help': '通话记录唯一标识', 'default': None},
|
|
92
|
+
{'name': 'hiddenType', 'type': 'Integer', 'required': False, 'help': '是否隐藏号码。 0: 不隐藏,1: 中间四位,2: 最后八位,3: 全部号码,4: 最后四位。默认值为 0', 'default': 0},
|
|
93
|
+
],
|
|
94
|
+
'/cc/list_cdr_ob': [
|
|
95
|
+
{'name': 'startTime', 'type': 'Long', 'required': False, 'help': '开始时间,时间戳格式精确到秒。默认值取当前月份第一天', 'default': None},
|
|
96
|
+
{'name': 'startTimeEnd', 'type': 'Long', 'required': False, 'help': '开始时间查询截止,时间戳格式精确到秒,开始时间和结束时间跨度不能超过一个月。默认值取当前时间', 'default': None},
|
|
97
|
+
{'name': 'bridgeTime', 'type': 'Long', 'required': False, 'help': '接听时间,时间戳格式精确到秒。', 'default': None},
|
|
98
|
+
{'name': 'bridgeTimeEnd', 'type': 'Long', 'required': False, 'help': '接听时间查询截止,时间戳格式精确到秒。', 'default': None},
|
|
99
|
+
{'name': 'endTime', 'type': 'Long', 'required': False, 'help': '结束时间,时间戳格式精确到秒。', 'default': None},
|
|
100
|
+
{'name': 'endTimeEnd', 'type': 'Long', 'required': False, 'help': '结束时间查询截止,时间戳格式精确到秒。', 'default': None},
|
|
101
|
+
{'name': 'hiddenType', 'type': 'Integer', 'required': False, 'help': '是否隐藏号码。 0: 不隐藏,1: 中间四位,2: 最后八位,3: 全部号码,4: 最后四位。默认值为 0', 'default': 0},
|
|
102
|
+
{'name': 'bridgeDuration', 'type': 'Integer', 'required': False, 'help': '通话时长范围查询最小值,和bridgeDurationEnd配合使用', 'default': None},
|
|
103
|
+
{'name': 'bridgeDurationEnd', 'type': 'Integer', 'required': False, 'help': '通话时长范围查询最大值', 'default': None},
|
|
104
|
+
{'name': 'totalDuration', 'type': 'Integer', 'required': False, 'help': '总时长范围查询最小值,和totalDurationEnd配合使用', 'default': None},
|
|
105
|
+
{'name': 'totalDurationEnd', 'type': 'Integer', 'required': False, 'help': '总时长范围查询最大值', 'default': None},
|
|
106
|
+
{'name': 'cnos', 'type': 'String[]', 'required': False, 'help': '座席工号', 'default': None},
|
|
107
|
+
{'name': 'qnos', 'type': 'String[]', 'required': False, 'help': '外呼组', 'default': None},
|
|
108
|
+
{'name': 'clientNumber', 'type': 'String', 'required': False, 'help': '座席电话', 'default': None},
|
|
109
|
+
{'name': 'customerNumber', 'type': 'String', 'required': False, 'help': '客户号码', 'default': None},
|
|
110
|
+
{'name': 'customerNumberMatchType', 'type': 'Integer', 'required': False, 'help': '客户号码匹配类型。需与customerNumber配合使用。1: 前缀匹配,2: 后缀匹配,3: 包含匹配', 'default': None},
|
|
111
|
+
{'name': 'callType', 'type': 'int[]', 'required': False, 'help': '通话类型 4: 预览外呼,6: 主叫外呼, 默认全部', 'default': None},
|
|
112
|
+
{'name': 'leftClid', 'type': 'String[]', 'required': False, 'help': '外显号码', 'default': None},
|
|
113
|
+
{'name': 'xnumber', 'type': 'String[]', 'required': False, 'help': '虚拟号码', 'default': None},
|
|
114
|
+
{'name': 'status', 'type': 'Integer[]', 'required': False, 'help': '接听状态。取值范围如下: 1: 客户未接听 2: 座席未接听 3: 客户接听 4: 座席接听 默认全部', 'default': None},
|
|
115
|
+
{'name': 'sipCauseType', 'type': 'int[]', 'required': False, 'help': '呼叫结果。取值范围如下: 0: 呼叫成功 1: 呼叫失败 2: 线路故障 3: 线路风控 默认全部', 'default': None},
|
|
116
|
+
{'name': 'sipCause', 'type': 'Integer[]', 'required': False, 'help': '呼叫失败原因。配合呼叫结果做级联查询,取值范围如下: -700: 客户无人接听 710: 客户占线 712: 客户拒接 713: 号码空号 714: 号码关机 715: 号码暂无法接听 716: 号码停机 默认全部', 'default': None},
|
|
117
|
+
{'name': 'sipCauseRaw', 'type': 'Integer[]', 'required': False, 'help': '被叫状态。取值范围如下: 710: 客户占线 711: 呼叫超时 712: 客户拒接 713: 号码空号 714: 关机 715: 号码暂无法接听 716: 号码停机 717: 呼叫受限 718: 无人接听 719: 正在通话中 720: 暂停服务 721: 来电提醒 722: 不再使用 723: 来电助手 724: 号码格式不正确 默认全部', 'default': None},
|
|
118
|
+
{'name': 'onHookSource', 'type': 'Integer[]', 'required': False, 'help': '挂断方,默认查询全部。说明参考<<通用字段>>', 'default': None},
|
|
119
|
+
{'name': 'investigationKeys', 'type': 'Integer', 'required': False, 'help': '满意度评价', 'default': None},
|
|
120
|
+
{'name': 'province', 'type': 'String', 'required': False, 'help': '客户归属地省份', 'default': None},
|
|
121
|
+
{'name': 'city', 'type': 'String', 'required': False, 'help': '客户归属地城市', 'default': None},
|
|
122
|
+
{'name': 'mainUniqueId', 'type': 'String', 'required': False, 'help': '通话记录唯一标识', 'default': None},
|
|
123
|
+
{'name': 'requestUniqueId', 'type': 'String', 'required': False, 'help': '请求唯一ID', 'default': None},
|
|
124
|
+
{'name': 'userField', 'type': 'String', 'required': False, 'help': '自定义字段', 'default': None},
|
|
125
|
+
{'name': 'userValue', 'type': 'String', 'required': False, 'help': '自定义字段值,与userField配合使用', 'default': None},
|
|
126
|
+
{'name': 'customerMos', 'type': 'Integer[]', 'required': False, 'help': '客户侧通话质量。取值范围 1-4,对应较差到优秀', 'default': None},
|
|
127
|
+
{'name': 'agentMos', 'type': 'Integer[]', 'required': False, 'help': '座席侧通话质量。取值范围 1-4,对应较差到优秀', 'default': None},
|
|
128
|
+
{'name': 'evaluation', 'type': 'Integer', 'required': False, 'help': '是否邀评。取值范围如下: 0: 否 1: 是 默认全部', 'default': None},
|
|
129
|
+
{'name': 'taskName', 'type': 'String', 'required': False, 'help': '外呼任务名称', 'default': None},
|
|
130
|
+
{'name': 'existTicket', 'type': 'Integer', 'required': False, 'help': '工单有无。取值范围如下: 0: 无 1: 有 默认全部', 'default': None},
|
|
131
|
+
{'name': 'existBusiness', 'type': 'Integer', 'required': False, 'help': '业务记录有无。取值范围如下: 0: 无 1: 有 默认全部', 'default': None},
|
|
132
|
+
{'name': 'isRtcCall', 'type': 'Integer', 'required': False, 'help': '是否为RTC通话。取值范围如下: 0: 否 1: 是 默认全部', 'default': None},
|
|
133
|
+
{'name': 'scrollSearch', 'type': 'boolean', 'required': False, 'help': '是否滚动查询。默认false,true代表使用滚动查询。', 'default': None},
|
|
134
|
+
{'name': 'scrollId', 'type': 'String', 'required': False, 'help': '滚动查询ID。配合scrollSearch使用,第一次查询时不需要传递此参数,后续查询可从返回列表中取值,并传参数。当scrollId为空时,代表滚动查询结束。', 'default': None},
|
|
135
|
+
{'name': 'offset', 'type': 'Integer', 'required': False, 'help': '偏移量,范围 0-99990。默认值为 0。注:limit + offset 不允许超过100000', 'default': 0},
|
|
136
|
+
{'name': 'limit', 'type': 'Integer', 'required': False, 'help': '查询条数,范围 10-100。默认值为 10。注:limit + offset 不允许超过100000', 'default': 10},
|
|
137
|
+
],
|
|
138
|
+
'/cc/cdr_ob_details': [
|
|
139
|
+
{'name': 'mainUniqueId', 'type': 'String', 'required': True, 'help': '通话记录唯一标识', 'default': None},
|
|
140
|
+
{'name': 'hiddenType', 'type': 'Integer', 'required': False, 'help': '是否隐藏号码。 0: 不隐藏,1: 中间四位,2: 最后八位,3: 全部号码,4: 最后四位。默认值为 0', 'default': 0},
|
|
141
|
+
],
|
|
142
|
+
'/cc/list_cdr_auto_task': [
|
|
143
|
+
{'name': 'startTime', 'type': 'Long', 'required': False, 'help': '开始时间,时间戳格式精确到秒。默认值取当前月份第一天', 'default': None},
|
|
144
|
+
{'name': 'startTimeEnd', 'type': 'Long', 'required': False, 'help': '开始时间查询截止,时间戳格式精确到秒,开始时间和结束时间跨度不能超过一个月。默认值取当前时间', 'default': None},
|
|
145
|
+
{'name': 'upTime', 'type': 'Long', 'required': False, 'help': '客户接听时间,时间戳格式精确到秒。', 'default': None},
|
|
146
|
+
{'name': 'upTimeEnd', 'type': 'Long', 'required': False, 'help': '客户接听时间查询截止,时间戳格式精确到秒。', 'default': None},
|
|
147
|
+
{'name': 'endTime', 'type': 'Long', 'required': False, 'help': '结束时间,时间戳格式精确到秒。', 'default': None},
|
|
148
|
+
{'name': 'endTimeEnd', 'type': 'Long', 'required': False, 'help': '结束时间查询截止,时间戳格式精确到秒。', 'default': None},
|
|
149
|
+
{'name': 'hiddenType', 'type': 'Integer', 'required': False, 'help': '是否隐藏号码。 0: 不隐藏,1: 中间四位,2: 最后八位,3: 全部号码,4: 最后四位。默认值为 0', 'default': 0},
|
|
150
|
+
{'name': 'customerBridgeDuration', 'type': 'Integer', 'required': False, 'help': '客户接听时长范围查询最小值,和customerBridgeDurationEnd配合使用', 'default': None},
|
|
151
|
+
{'name': 'customerBridgeDurationEnd', 'type': 'Integer', 'required': False, 'help': '客户接听时长范围查询最大值', 'default': None},
|
|
152
|
+
{'name': 'totalDuration', 'type': 'Integer', 'required': False, 'help': '总时长范围查询最小值,和totalDurationEnd配合使用', 'default': None},
|
|
153
|
+
{'name': 'totalDurationEnd', 'type': 'Integer', 'required': False, 'help': '总时长范围查询最大值', 'default': None},
|
|
154
|
+
{'name': 'cnos', 'type': 'String[]', 'required': False, 'help': '座席号', 'default': None},
|
|
155
|
+
{'name': 'qnos', 'type': 'String[]', 'required': False, 'help': '队列号', 'default': None},
|
|
156
|
+
{'name': 'clientNumber', 'type': 'String', 'required': False, 'help': '座席电话', 'default': None},
|
|
157
|
+
{'name': 'customerNumber', 'type': 'String', 'required': False, 'help': '首叫号码', 'default': None},
|
|
158
|
+
{'name': 'customerNumberMatchType', 'type': 'Integer', 'required': False, 'help': '客户号码匹配类型。需与customerNumber配合使用。1: 前缀匹配,2: 后缀匹配,3: 包含匹配', 'default': None},
|
|
159
|
+
{'name': 'hotlines', 'type': 'String[]', 'required': False, 'help': '外显号码', 'default': None},
|
|
160
|
+
{'name': 'xnumber', 'type': 'String[]', 'required': False, 'help': '虚拟号码', 'default': None},
|
|
161
|
+
{'name': 'status', 'type': 'Integer[]', 'required': False, 'help': '接听状态。取值范围如下: 40: 客户未接听 41: 客户接听 42: 转人工未接听 43: 转人工接听 默认全部', 'default': None},
|
|
162
|
+
{'name': 'sipCauseType', 'type': 'int[]', 'required': False, 'help': '呼叫结果。取值范围如下: 0: 呼叫成功 1: 呼叫失败 2: 线路故障 3: 线路风控 默认全部', 'default': None},
|
|
163
|
+
{'name': 'sipCause', 'type': 'Integer[]', 'required': False, 'help': '呼叫失败原因。配合呼叫结果做级联查询,取值范围如下: -700: 客户无人接听 710: 客户占线 712: 客户拒接 713: 号码空号 714: 号码关机 715: 号码暂无法接听 716: 号码停机 默认全部', 'default': None},
|
|
164
|
+
{'name': 'sipCauseRaw', 'type': 'Integer[]', 'required': False, 'help': '被叫状态。取值范围如下: 710: 客户占线 711: 呼叫超时 712: 客户拒接 713: 号码空号 714: 关机 715: 号码暂无法接听 716: 号码停机 717: 呼叫受限 718: 无人接听 719: 正在通话中 720: 暂停服务 721: 来电提醒 722: 不再使用 723: 来电助手 724: 号码格式不正确 默认全部', 'default': None},
|
|
165
|
+
{'name': 'onHookSource', 'type': 'Integer[]', 'required': False, 'help': '挂断方,默认查询全部。说明参考<<通用字段>>', 'default': None},
|
|
166
|
+
{'name': 'investigationKeys', 'type': 'Integer', 'required': False, 'help': '满意度评价', 'default': None},
|
|
167
|
+
{'name': 'province', 'type': 'String', 'required': False, 'help': '客户归属地省份', 'default': None},
|
|
168
|
+
{'name': 'city', 'type': 'String', 'required': False, 'help': '客户归属地城市', 'default': None},
|
|
169
|
+
{'name': 'mainUniqueId', 'type': 'String', 'required': False, 'help': '通话记录唯一标识', 'default': None},
|
|
170
|
+
{'name': 'requestUniqueId', 'type': 'String', 'required': False, 'help': '请求唯一ID', 'default': None},
|
|
171
|
+
{'name': 'evaluation', 'type': 'Integer', 'required': False, 'help': '是否邀评。取值范围如下: 0: 否 1: 是 默认全部', 'default': None},
|
|
172
|
+
{'name': 'taskIds', 'type': 'String[]', 'required': False, 'help': '外呼任务ID', 'default': None},
|
|
173
|
+
{'name': 'ivrIds', 'type': 'int[]', 'required': False, 'help': 'IVR', 'default': None},
|
|
174
|
+
{'name': 'degrade', 'type': 'Integer', 'required': False, 'help': '是否呼叫降级。取值范围如下: 1: 是 0: 否 默认全部', 'default': None},
|
|
175
|
+
{'name': 'telRetry', 'type': 'Integer', 'required': False, 'help': '是否重呼。取值范围如下: 1: 是 0: 否 默认全部', 'default': None},
|
|
176
|
+
{'name': 'abTaskGroupName', 'type': 'String', 'required': False, 'help': 'AB测试组名', 'default': None},
|
|
177
|
+
{'name': 'finishRetryFlag', 'type': 'Integer', 'required': False, 'help': '最终呼叫。取值范围如下: 1: 是 0: 否 默认全部', 'default': None},
|
|
178
|
+
{'name': 'businessTagNames', 'type': 'String[]', 'required': False, 'help': '业务标签名称', 'default': None},
|
|
179
|
+
{'name': 'userField', 'type': 'String', 'required': False, 'help': '自定义字段', 'default': None},
|
|
180
|
+
{'name': 'userValue', 'type': 'String', 'required': False, 'help': '自定义字段值,与userField配合使用', 'default': None},
|
|
181
|
+
{'name': 'customerMos', 'type': 'Integer[]', 'required': False, 'help': '客户侧通话质量。取值范围 1-4,对应较差到优秀', 'default': None},
|
|
182
|
+
{'name': 'agentMos', 'type': 'Integer[]', 'required': False, 'help': '座席侧通话质量。取值范围 1-4,对应较差到优秀', 'default': None},
|
|
183
|
+
{'name': 'intelligentBridgeTime', 'type': 'Long', 'required': False, 'help': '机器人接待时间,时间戳格式精确到秒。', 'default': None},
|
|
184
|
+
{'name': 'intelligentBridgeTimeEnd', 'type': 'Long', 'required': False, 'help': '机器人接待时间查询截止,时间戳格式精确到秒。', 'default': None},
|
|
185
|
+
{'name': 'intelligentEndTime', 'type': 'Long', 'required': False, 'help': '机器人结束时间,时间戳格式精确到秒。', 'default': None},
|
|
186
|
+
{'name': 'intelligentEndTimeEnd', 'type': 'Long', 'required': False, 'help': '机器人结束时间查询截止,时间戳格式精确到秒。', 'default': None},
|
|
187
|
+
{'name': 'intelligentBridgeDuration', 'type': 'Integer', 'required': False, 'help': '机器人通话时长范围查询最小值,和intelligentBridgeDurationEnd配合使用', 'default': None},
|
|
188
|
+
{'name': 'intelligentBridgeDurationEnd', 'type': 'Integer', 'required': False, 'help': '机器人通话时长范围查询最大值', 'default': None},
|
|
189
|
+
{'name': 'intelligentBotIds', 'type': 'String[]', 'required': False, 'help': '机器人ID', 'default': None},
|
|
190
|
+
{'name': 'intelligentStatus', 'type': 'Integer[]', 'required': False, 'help': '机器人接听状态。取值范围如下: 1: 机器人应答 2: 机器人未应答 默认全部', 'default': None},
|
|
191
|
+
{'name': 'intelligentStatusResult', 'type': 'int[]', 'required': False, 'help': '机器人接听结果。取值范围如下: 1: 正常应答 2: 对话轮次上限 3: 机器人异常 4: 机器人超并发 5: 桥接失败 默认全部', 'default': None},
|
|
192
|
+
{'name': 'intelligentRound', 'type': 'Integer', 'required': False, 'help': '对话轮次范围查询最小值,和intelligentRoundEnd配合使用', 'default': None},
|
|
193
|
+
{'name': 'intelligentRoundEnd', 'type': 'Integer', 'required': False, 'help': '对话轮次范围查询最大值', 'default': None},
|
|
194
|
+
{'name': 'intelligentInterruptCount', 'type': 'Integer', 'required': False, 'help': '打断次数范围查询最小值,和intelligentInterruptCountEnd配合使用', 'default': None},
|
|
195
|
+
{'name': 'intelligentInterruptCountEnd', 'type': 'Integer', 'required': False, 'help': '打断次数范围查询最大值', 'default': None},
|
|
196
|
+
{'name': 'intelligentTransfer', 'type': 'Integer', 'required': False, 'help': '是否转人工。取值范围如下: 1: 是 0: 否 默认全部', 'default': None},
|
|
197
|
+
{'name': 'intelligentGreeting', 'type': 'Integer', 'required': False, 'help': '开场白挂断点范围查询最小值,和intelligentInterruptCountEnd配合使用', 'default': None},
|
|
198
|
+
{'name': 'intelligentGreetingEnd', 'type': 'Integer', 'required': False, 'help': '开场白挂断点范围查询最大值', 'default': None},
|
|
199
|
+
{'name': 'intelligentEndFlow', 'type': 'String', 'required': False, 'help': '流程挂断点', 'default': None},
|
|
200
|
+
{'name': 'intelligentIntentionTag', 'type': 'String', 'required': False, 'help': '意向标签', 'default': None},
|
|
201
|
+
{'name': 'intelligentInfo', 'type': 'String', 'required': False, 'help': '信息捕获', 'default': None},
|
|
202
|
+
{'name': 'scrollSearch', 'type': 'boolean', 'required': False, 'help': '是否滚动查询。默认false,true代表使用滚动查询。', 'default': None},
|
|
203
|
+
{'name': 'scrollId', 'type': 'String', 'required': False, 'help': '滚动查询ID。配合scrollSearch使用,第一次查询时不需要传递此参数,后续查询可从返回列表中取值,并传参数。当scrollId为空时,代表滚动查询结束。', 'default': None},
|
|
204
|
+
{'name': 'offset', 'type': 'Integer', 'required': False, 'help': '偏移量,范围 0-99990。默认值为 0。注:limit + offset 不允许超过100000', 'default': 0},
|
|
205
|
+
{'name': 'limit', 'type': 'Integer', 'required': False, 'help': '查询条数,范围 10-100。默认值为 10。注:limit + offset 不允许超过100000', 'default': 10},
|
|
206
|
+
],
|
|
207
|
+
'/cc/list_cdr_ib_intelligent_agent': [
|
|
208
|
+
{'name': 'startTime', 'type': 'Long', 'required': False, 'help': '开始时间,时间戳格式精确到秒。默认值取当前月份第一天', 'default': None},
|
|
209
|
+
{'name': 'startTimeEnd', 'type': 'Long', 'required': False, 'help': '开始时间查询截止,时间戳格式精确到秒,开始时间和结束时间跨度不能超过一个月。默认值取当前时间', 'default': None},
|
|
210
|
+
{'name': 'endTime', 'type': 'Long', 'required': False, 'help': '机器人结束时间,时间戳格式精确到秒', 'default': None},
|
|
211
|
+
{'name': 'endTimeEnd', 'type': 'Long', 'required': False, 'help': '机器人结束时间查询截止,时间戳格式精确到秒', 'default': None},
|
|
212
|
+
{'name': 'bridgeTime', 'type': 'Long', 'required': False, 'help': '机器人接待时间,时间戳格式精确到秒', 'default': None},
|
|
213
|
+
{'name': 'bridgeTimeEnd', 'type': 'Long', 'required': False, 'help': '机器人接待时间查询截止,时间戳格式精确到秒', 'default': None},
|
|
214
|
+
{'name': 'bridgeDuration', 'type': 'Integer', 'required': False, 'help': '机器人通话时长范围查询最小值,和bridgeDurationEnd配合使用', 'default': None},
|
|
215
|
+
{'name': 'bridgeDurationEnd', 'type': 'Integer', 'required': False, 'help': '机器人通话时长范围查询最大值', 'default': None},
|
|
216
|
+
{'name': 'interruptCount', 'type': 'Integer', 'required': False, 'help': '打断次数范围查询最小值,和interruptCountEnd配合使用', 'default': None},
|
|
217
|
+
{'name': 'interruptCountEnd', 'type': 'Integer', 'required': False, 'help': '打断次数范围查询最大值', 'default': None},
|
|
218
|
+
{'name': 'callIntention', 'type': 'String', 'required': False, 'help': '进线意图', 'default': None},
|
|
219
|
+
{'name': 'frequentIntention', 'type': 'String', 'required': False, 'help': '高频意图', 'default': None},
|
|
220
|
+
{'name': 'intentionTag', 'type': 'String', 'required': False, 'help': '意向标签', 'default': None},
|
|
221
|
+
{'name': 'solve', 'type': 'Integer', 'required': False, 'help': '是否解决', 'default': None},
|
|
222
|
+
{'name': 'firstIbStatus', 'type': 'Integer', 'required': False, 'help': '首次来电', 'default': None},
|
|
223
|
+
{'name': 'firstIbSolveStatus', 'type': 'Integer', 'required': False, 'help': '首次来电解决', 'default': None},
|
|
224
|
+
{'name': 'transferReason', 'type': 'String', 'required': False, 'help': '转人工原因', 'default': None},
|
|
225
|
+
{'name': 'mainUniqueId', 'type': 'String', 'required': False, 'help': '通话记录唯一标识', 'default': None},
|
|
226
|
+
{'name': 'reviewStatus', 'type': 'Integer', 'required': False, 'help': '审阅状态。0: 未读,1: 已读', 'default': None},
|
|
227
|
+
{'name': 'customerNumber', 'type': 'String', 'required': False, 'help': '客户号码', 'default': None},
|
|
228
|
+
{'name': 'customerNumberMatchType', 'type': 'Integer', 'required': False, 'help': '客户号码匹配类型。需与customerNumber配合使用。1: 前缀匹配,2: 后缀匹配,3: 包含匹配', 'default': None},
|
|
229
|
+
{'name': 'status', 'type': 'int[]', 'required': False, 'help': '机器人接听状态', 'default': None},
|
|
230
|
+
{'name': 'statusResult', 'type': 'int[]', 'required': False, 'help': '机器人接听结果', 'default': None},
|
|
231
|
+
{'name': 'botIds', 'type': 'String[]', 'required': False, 'help': '机器人ID', 'default': None},
|
|
232
|
+
{'name': 'round', 'type': 'Integer', 'required': False, 'help': '对话轮次范围查询最小值,和roundEnd配合使用', 'default': None},
|
|
233
|
+
{'name': 'roundEnd', 'type': 'Integer', 'required': False, 'help': '对话轮次范围查询最大值', 'default': None},
|
|
234
|
+
{'name': 'transfer', 'type': 'Integer', 'required': False, 'help': '是否转人工。1: 是,0: 否,默认全部', 'default': None},
|
|
235
|
+
{'name': 'transferBridge', 'type': 'int[]', 'required': False, 'help': '转人工接听状态', 'default': None},
|
|
236
|
+
{'name': 'userField', 'type': 'String', 'required': False, 'help': '自定义字段', 'default': None},
|
|
237
|
+
{'name': 'userValue', 'type': 'String', 'required': False, 'help': '自定义字段值,与userField配合使用', 'default': None},
|
|
238
|
+
{'name': 'taskId', 'type': 'int[]', 'required': False, 'help': '任务ID', 'default': None},
|
|
239
|
+
{'name': 'greeting', 'type': 'Integer', 'required': False, 'help': '开场白挂断点范围查询最小值,和greetingEnd配合使用', 'default': None},
|
|
240
|
+
{'name': 'greetingEnd', 'type': 'Integer', 'required': False, 'help': '开场白挂断点范围查询最大值', 'default': None},
|
|
241
|
+
{'name': 'endFlow', 'type': 'String', 'required': False, 'help': '流程挂断点', 'default': None},
|
|
242
|
+
{'name': 'info', 'type': 'String', 'required': False, 'help': '信息捕获', 'default': None},
|
|
243
|
+
{'name': 'abTaskGroupName', 'type': 'String', 'required': False, 'help': 'AB测试组名', 'default': None},
|
|
244
|
+
{'name': 'onHookSource', 'type': 'Integer[]', 'required': False, 'help': '挂断方,默认查询全部。说明参考<<通用字段>>', 'default': None},
|
|
245
|
+
{'name': 'fieldToSort', 'type': 'String', 'required': False, 'help': '排序字段,默认cdrStartTime', 'default': None},
|
|
246
|
+
{'name': 'sortDesc', 'type': 'Boolean', 'required': False, 'help': '排序方向。true: 倒序,false: 正序。默认true', 'default': None},
|
|
247
|
+
{'name': 'businessTagNames', 'type': 'String[]', 'required': False, 'help': '业务标签', 'default': None},
|
|
248
|
+
{'name': 'hiddenType', 'type': 'Integer', 'required': False, 'help': '是否隐藏号码。0: 不隐藏,1: 中间四位,2: 最后八位,3: 全部号码,4: 最后四位。默认值为 0', 'default': 0},
|
|
249
|
+
{'name': 'scrollSearch', 'type': 'boolean', 'required': False, 'help': '是否滚动查询。默认false,true代表使用滚动查询', 'default': None},
|
|
250
|
+
{'name': 'scrollId', 'type': 'String', 'required': False, 'help': '滚动查询ID。配合scrollSearch使用,第一次查询时不需要传递此参数,后续查询可从返回列表中取值,并传参数。当scrollId为空时,代表滚动查询结束', 'default': None},
|
|
251
|
+
{'name': 'offset', 'type': 'Integer', 'required': False, 'help': '偏移量,范围 0-99990。默认值为 0。注:limit + offset 不允许超过100000', 'default': 0},
|
|
252
|
+
{'name': 'limit', 'type': 'Integer', 'required': False, 'help': '查询条数,范围 10-100。默认值为 10。注:limit + offset 不允许超过100000', 'default': 10},
|
|
253
|
+
],
|
|
254
|
+
'/cc/list_cdr_intelligent_agent': [
|
|
255
|
+
{'name': 'startTime', 'type': 'Long', 'required': False, 'help': '开始时间,时间戳格式精确到秒。默认值取当前月份第一天', 'default': None},
|
|
256
|
+
{'name': 'startTimeEnd', 'type': 'Long', 'required': False, 'help': '开始时间查询截止,时间戳格式精确到秒,开始时间和结束时间跨度不能超过一个月。默认值取当前时间', 'default': None},
|
|
257
|
+
{'name': 'endTime', 'type': 'Long', 'required': False, 'help': '机器人结束时间,时间戳格式精确到秒', 'default': None},
|
|
258
|
+
{'name': 'endTimeEnd', 'type': 'Long', 'required': False, 'help': '机器人结束时间查询截止,时间戳格式精确到秒', 'default': None},
|
|
259
|
+
{'name': 'bridgeTime', 'type': 'Long', 'required': False, 'help': '机器人接待时间,时间戳格式精确到秒', 'default': None},
|
|
260
|
+
{'name': 'bridgeTimeEnd', 'type': 'Long', 'required': False, 'help': '机器人接待时间查询截止,时间戳格式精确到秒', 'default': None},
|
|
261
|
+
{'name': 'bridgeDuration', 'type': 'Integer', 'required': False, 'help': '机器人通话时长范围查询最小值,和bridgeDurationEnd配合使用', 'default': None},
|
|
262
|
+
{'name': 'bridgeDurationEnd', 'type': 'Integer', 'required': False, 'help': '机器人通话时长范围查询最大值', 'default': None},
|
|
263
|
+
{'name': 'interruptCount', 'type': 'Integer', 'required': False, 'help': '打断次数范围查询最小值,和interruptCountEnd配合使用', 'default': None},
|
|
264
|
+
{'name': 'interruptCountEnd', 'type': 'Integer', 'required': False, 'help': '打断次数范围查询最大值', 'default': None},
|
|
265
|
+
{'name': 'callIntention', 'type': 'String', 'required': False, 'help': '进线意图', 'default': None},
|
|
266
|
+
{'name': 'frequentIntention', 'type': 'String', 'required': False, 'help': '高频意图', 'default': None},
|
|
267
|
+
{'name': 'intentionTag', 'type': 'String', 'required': False, 'help': '意向标签', 'default': None},
|
|
268
|
+
{'name': 'solve', 'type': 'Integer', 'required': False, 'help': '是否解决', 'default': None},
|
|
269
|
+
{'name': 'firstIbStatus', 'type': 'Integer', 'required': False, 'help': '首次来电', 'default': None},
|
|
270
|
+
{'name': 'firstIbSolveStatus', 'type': 'Integer', 'required': False, 'help': '首次来电解决', 'default': None},
|
|
271
|
+
{'name': 'transferReason', 'type': 'String', 'required': False, 'help': '转人工原因', 'default': None},
|
|
272
|
+
{'name': 'mainUniqueId', 'type': 'String', 'required': False, 'help': '通话记录唯一标识', 'default': None},
|
|
273
|
+
{'name': 'reviewStatus', 'type': 'Integer', 'required': False, 'help': '审阅状态。0: 未读,1: 已读', 'default': None},
|
|
274
|
+
{'name': 'customerNumber', 'type': 'String', 'required': False, 'help': '客户号码', 'default': None},
|
|
275
|
+
{'name': 'customerNumberMatchType', 'type': 'Integer', 'required': False, 'help': '客户号码匹配类型。需与customerNumber配合使用。1: 前缀匹配,2: 后缀匹配,3: 包含匹配', 'default': None},
|
|
276
|
+
{'name': 'status', 'type': 'int[]', 'required': False, 'help': '机器人接听状态', 'default': None},
|
|
277
|
+
{'name': 'statusResult', 'type': 'int[]', 'required': False, 'help': '机器人接听结果', 'default': None},
|
|
278
|
+
{'name': 'botIds', 'type': 'String[]', 'required': False, 'help': '机器人ID', 'default': None},
|
|
279
|
+
{'name': 'round', 'type': 'Integer', 'required': False, 'help': '对话轮次范围查询最小值,和roundEnd配合使用', 'default': None},
|
|
280
|
+
{'name': 'roundEnd', 'type': 'Integer', 'required': False, 'help': '对话轮次范围查询最大值', 'default': None},
|
|
281
|
+
{'name': 'transfer', 'type': 'Integer', 'required': False, 'help': '是否转人工。1: 是,0: 否,默认全部', 'default': None},
|
|
282
|
+
{'name': 'transferBridge', 'type': 'int[]', 'required': False, 'help': '转人工接听状态', 'default': None},
|
|
283
|
+
{'name': 'userField', 'type': 'String', 'required': False, 'help': '自定义字段', 'default': None},
|
|
284
|
+
{'name': 'userValue', 'type': 'String', 'required': False, 'help': '自定义字段值,与userField配合使用', 'default': None},
|
|
285
|
+
{'name': 'taskId', 'type': 'int[]', 'required': False, 'help': '任务ID', 'default': None},
|
|
286
|
+
{'name': 'greeting', 'type': 'Integer', 'required': False, 'help': '开场白挂断点范围查询最小值,和greetingEnd配合使用', 'default': None},
|
|
287
|
+
{'name': 'greetingEnd', 'type': 'Integer', 'required': False, 'help': '开场白挂断点范围查询最大值', 'default': None},
|
|
288
|
+
{'name': 'endFlow', 'type': 'String', 'required': False, 'help': '流程挂断点', 'default': None},
|
|
289
|
+
{'name': 'info', 'type': 'String', 'required': False, 'help': '信息捕获', 'default': None},
|
|
290
|
+
{'name': 'abTaskGroupName', 'type': 'String', 'required': False, 'help': 'AB测试组名', 'default': None},
|
|
291
|
+
{'name': 'onHookSource', 'type': 'Integer[]', 'required': False, 'help': '挂断方,默认查询全部。说明参考<<通用字段>>', 'default': None},
|
|
292
|
+
{'name': 'fieldToSort', 'type': 'String', 'required': False, 'help': '排序字段,默认cdrStartTime', 'default': None},
|
|
293
|
+
{'name': 'sortDesc', 'type': 'Boolean', 'required': False, 'help': '排序方向。true: 倒序,false: 正序。默认true', 'default': None},
|
|
294
|
+
{'name': 'businessTagNames', 'type': 'String[]', 'required': False, 'help': '业务标签', 'default': None},
|
|
295
|
+
{'name': 'hiddenType', 'type': 'Integer', 'required': False, 'help': '是否隐藏号码。0: 不隐藏,1: 中间四位,2: 最后八位,3: 全部号码,4: 最后四位。默认值为 0', 'default': 0},
|
|
296
|
+
{'name': 'scrollSearch', 'type': 'boolean', 'required': False, 'help': '是否滚动查询。默认false,true代表使用滚动查询', 'default': None},
|
|
297
|
+
{'name': 'scrollId', 'type': 'String', 'required': False, 'help': '滚动查询ID。配合scrollSearch使用,第一次查询时不需要传递此参数,后续查询可从返回列表中取值,并传参数。当scrollId为空时,代表滚动查询结束', 'default': None},
|
|
298
|
+
{'name': 'offset', 'type': 'Integer', 'required': False, 'help': '偏移量,范围 0-99990。默认值为 0。注:limit + offset 不允许超过100000', 'default': 0},
|
|
299
|
+
{'name': 'limit', 'type': 'Integer', 'required': False, 'help': '查询条数,范围 10-100。默认值为 10。注:limit + offset 不允许超过100000', 'default': 10},
|
|
300
|
+
],
|
|
301
|
+
'/cc/detail_cdr_intelligent_agent': [
|
|
302
|
+
{'name': 'mainUniqueId', 'type': 'String', 'required': True, 'help': '通话记录唯一标识', 'default': None},
|
|
303
|
+
{'name': 'hiddenType', 'type': 'Integer', 'required': False, 'help': '是否隐藏号码。0: 不隐藏,1: 中间四位,2: 最后八位,3: 全部号码,4: 最后四位。默认值为 0', 'default': 0},
|
|
304
|
+
{'name': 'requestId', 'type': 'String', 'required': False, 'help': '机器人记录唯一标识。传入后按 mainUniqueId + requestId 过滤,返回数组中至多 1 条记录', 'default': None},
|
|
305
|
+
],
|
|
306
|
+
'/cc/list_cdr_ob_internal': [
|
|
307
|
+
{'name': 'startTime', 'type': 'Long', 'required': False, 'help': '开始时间,时间戳格式精确到秒。默认值取当前月份第一天', 'default': None},
|
|
308
|
+
{'name': 'startTimeEnd', 'type': 'Long', 'required': False, 'help': '开始时间查询截止,时间戳格式精确到秒,开始时间和结束时间跨度不能超过一个月。默认值取当前时间', 'default': None},
|
|
309
|
+
{'name': 'bridgeTime', 'type': 'Long', 'required': False, 'help': '接通时间,时间戳格式精确到秒', 'default': None},
|
|
310
|
+
{'name': 'bridgeTimeEnd', 'type': 'Long', 'required': False, 'help': '接通时间查询截止,时间戳格式精确到秒', 'default': None},
|
|
311
|
+
{'name': 'endTime', 'type': 'Long', 'required': False, 'help': '结束时间,时间戳格式精确到秒', 'default': None},
|
|
312
|
+
{'name': 'endTimeEnd', 'type': 'Long', 'required': False, 'help': '结束时间查询截止,时间戳格式精确到秒', 'default': None},
|
|
313
|
+
{'name': 'bridgeDuration', 'type': 'Integer', 'required': False, 'help': '通话时长范围查询最小值,和bridgeDurationEnd配合使用', 'default': None},
|
|
314
|
+
{'name': 'bridgeDurationEnd', 'type': 'Integer', 'required': False, 'help': '通话时长范围查询最大值', 'default': None},
|
|
315
|
+
{'name': 'totalDuration', 'type': 'Integer', 'required': False, 'help': '总时长范围查询最小值,和totalDurationEnd配合使用', 'default': None},
|
|
316
|
+
{'name': 'totalDurationEnd', 'type': 'Integer', 'required': False, 'help': '总时长范围查询最大值', 'default': None},
|
|
317
|
+
{'name': 'cnos', 'type': 'String[]', 'required': False, 'help': '座席工号', 'default': None},
|
|
318
|
+
{'name': 'clientNumber', 'type': 'String', 'required': False, 'help': '座席电话', 'default': None},
|
|
319
|
+
{'name': 'internalType', 'type': 'Integer', 'required': False, 'help': '内部呼叫类型', 'default': None},
|
|
320
|
+
{'name': 'internalObj', 'type': 'String[]', 'required': False, 'help': '内部呼叫对象', 'default': None},
|
|
321
|
+
{'name': 'bridgeStatus', 'type': 'Integer[]', 'required': False, 'help': '接听状态', 'default': None},
|
|
322
|
+
{'name': 'mainUniqueId', 'type': 'String', 'required': False, 'help': '通话记录唯一标识', 'default': None},
|
|
323
|
+
{'name': 'requestUniqueId', 'type': 'String', 'required': False, 'help': '请求唯一ID', 'default': None},
|
|
324
|
+
{'name': 'fieldToSort', 'type': 'String', 'required': False, 'help': '排序字段,默认startTime', 'default': None},
|
|
325
|
+
{'name': 'sortDesc', 'type': 'Boolean', 'required': False, 'help': '排序方向。true: 倒序,false: 正序。默认true', 'default': None},
|
|
326
|
+
{'name': 'hiddenType', 'type': 'Integer', 'required': False, 'help': '是否隐藏号码。0: 不隐藏,1: 中间四位,2: 最后八位,3: 全部号码,4: 最后四位。默认值为 0', 'default': 0},
|
|
327
|
+
{'name': 'scrollSearch', 'type': 'boolean', 'required': False, 'help': '是否滚动查询。默认false,true代表使用滚动查询', 'default': None},
|
|
328
|
+
{'name': 'scrollId', 'type': 'String', 'required': False, 'help': '滚动查询ID。配合scrollSearch使用,第一次查询时不需要传递此参数,后续查询可从返回列表中取值,并传参数。当scrollId为空时,代表滚动查询结束', 'default': None},
|
|
329
|
+
{'name': 'offset', 'type': 'Integer', 'required': False, 'help': '偏移量,范围 0-99990。默认值为 0。注:limit + offset 不允许超过100000', 'default': 0},
|
|
330
|
+
{'name': 'limit', 'type': 'Integer', 'required': False, 'help': '查询条数,范围 10-100。默认值为 10。注:limit + offset 不允许超过100000', 'default': 10},
|
|
331
|
+
],
|
|
332
|
+
'/cc/detail_cdr_ob_internal': [
|
|
333
|
+
{'name': 'mainUniqueId', 'type': 'String', 'required': True, 'help': '通话记录唯一标识。非法mainUniqueId返回参数错误,查不到返回资源不存在', 'default': None},
|
|
334
|
+
{'name': 'hiddenType', 'type': 'Integer', 'required': False, 'help': '是否隐藏号码。0: 不隐藏,1: 中间四位,2: 最后八位,3: 全部号码,4: 最后四位。默认值为 0', 'default': 0},
|
|
335
|
+
],
|
|
336
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"""Click option 工厂:按 OpenAPI 规格生成 kebab-case 选项。"""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from collections.abc import Callable, Sequence
|
|
6
|
+
from typing import Any
|
|
7
|
+
|
|
8
|
+
import click
|
|
9
|
+
|
|
10
|
+
from cli_anything.clink2.core.params import camel_to_kebab
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
def _click_type(api_type: str) -> type | click.ParamType:
|
|
14
|
+
"""Map OpenAPI type name to Click type."""
|
|
15
|
+
if api_type in ("Integer", "Long", "Int"):
|
|
16
|
+
return int
|
|
17
|
+
return str
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
def with_api_options(params: Sequence[dict[str, Any]]) -> Callable[[Callable[..., Any]], Callable[..., Any]]:
|
|
21
|
+
"""按规格为命令追加 Click options(CLI kebab-case → 目标名 camelCase)。
|
|
22
|
+
|
|
23
|
+
Args:
|
|
24
|
+
params: ``cdr_specs`` 中的参数字典列表。
|
|
25
|
+
|
|
26
|
+
Returns:
|
|
27
|
+
装饰器,从下到上应用 option(Click 约定)。
|
|
28
|
+
"""
|
|
29
|
+
|
|
30
|
+
def decorator(func: Callable[..., Any]) -> Callable[..., Any]:
|
|
31
|
+
for p in reversed(list(params)):
|
|
32
|
+
name = p["name"]
|
|
33
|
+
kebab = camel_to_kebab(name)
|
|
34
|
+
kwargs: dict[str, Any] = {
|
|
35
|
+
"required": bool(p.get("required")),
|
|
36
|
+
"help": p.get("help") or name,
|
|
37
|
+
"type": _click_type(str(p.get("type") or "String")),
|
|
38
|
+
}
|
|
39
|
+
if not kwargs["required"]:
|
|
40
|
+
default = p.get("default")
|
|
41
|
+
kwargs["default"] = default
|
|
42
|
+
if default is not None:
|
|
43
|
+
kwargs["show_default"] = True
|
|
44
|
+
func = click.option(f"--{kebab}", name, **kwargs)(func)
|
|
45
|
+
return func
|
|
46
|
+
|
|
47
|
+
return decorator
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"""CLI 可选参数组装为 OpenAPI query(camelCase)。"""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
import re
|
|
6
|
+
from typing import Any, Mapping
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
def camel_to_kebab(name: str) -> str:
|
|
10
|
+
"""将 camelCase / PascalCase 转为 kebab-case。
|
|
11
|
+
|
|
12
|
+
Args:
|
|
13
|
+
name: OpenAPI 参数名,如 ``startTime``、``mainUniqueId``。
|
|
14
|
+
|
|
15
|
+
Returns:
|
|
16
|
+
kebab-case 字符串,如 ``start-time``、``main-unique-id``。
|
|
17
|
+
"""
|
|
18
|
+
s1 = re.sub(r"(.)([A-Z][a-z]+)", r"\1-\2", name)
|
|
19
|
+
return re.sub(r"([a-z0-9])([A-Z])", r"\1-\2", s1).lower()
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
def build_query_params(values: Mapping[str, Any]) -> dict[str, Any]:
|
|
23
|
+
"""过滤 ``None``,其余原样写入 query(含数组逗号串)。
|
|
24
|
+
|
|
25
|
+
Args:
|
|
26
|
+
values: camelCase 键到值的映射;未传 option 对应 ``None``。
|
|
27
|
+
|
|
28
|
+
Returns:
|
|
29
|
+
可交给 ``_run_api`` 的 params 字典。
|
|
30
|
+
"""
|
|
31
|
+
return {k: v for k, v in values.items() if v is not None}
|
|
@@ -4,9 +4,11 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "tinet-clink2-cli"
|
|
7
|
-
version = "0.0.
|
|
8
|
-
description = "Clink2 OpenAPI CLI"
|
|
9
|
-
|
|
7
|
+
version = "0.0.3"
|
|
8
|
+
description = "Tinet Clink2 OpenAPI CLI"
|
|
9
|
+
# long_description 由 setup.py 从 README.md(或 sdist 内 PKG-INFO)注入;
|
|
10
|
+
# 不在此声明 readme,以免 setuptools 强制要求归档内带有 README.md。
|
|
11
|
+
dynamic = ["readme"]
|
|
10
12
|
requires-python = ">=3.10"
|
|
11
13
|
dependencies = [
|
|
12
14
|
"click>=8.0",
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"""Build helper: embed README into metadata, omit README.md from sdist files."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from email.parser import Parser
|
|
6
|
+
from pathlib import Path
|
|
7
|
+
|
|
8
|
+
from setuptools import setup
|
|
9
|
+
from setuptools.command.sdist import sdist as _sdist
|
|
10
|
+
|
|
11
|
+
ROOT = Path(__file__).resolve().parent
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
def load_long_description() -> str:
|
|
15
|
+
"""Load Markdown long description from README.md or sdist PKG-INFO."""
|
|
16
|
+
readme = ROOT / "README.md"
|
|
17
|
+
if readme.is_file():
|
|
18
|
+
return readme.read_text(encoding="utf-8")
|
|
19
|
+
|
|
20
|
+
# `python -m build` rebuilds the wheel from an sdist that deliberately
|
|
21
|
+
# excludes README.md; recover the description already written into PKG-INFO.
|
|
22
|
+
pkg_info = ROOT / "PKG-INFO"
|
|
23
|
+
if pkg_info.is_file():
|
|
24
|
+
msg = Parser().parsestr(pkg_info.read_text(encoding="utf-8"))
|
|
25
|
+
payload = msg.get_payload()
|
|
26
|
+
if isinstance(payload, str) and payload.strip():
|
|
27
|
+
return payload
|
|
28
|
+
description = msg.get("Description")
|
|
29
|
+
if description:
|
|
30
|
+
return description
|
|
31
|
+
return ""
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
class sdist_without_readme(_sdist):
|
|
35
|
+
"""Drop README.md from the sdist file list (metadata already embeds its text)."""
|
|
36
|
+
|
|
37
|
+
def make_release_tree(self, base_dir, files): # type: ignore[no-untyped-def]
|
|
38
|
+
"""Build release tree without shipping README.md as a package file."""
|
|
39
|
+
filtered = [f for f in files if Path(f).name != "README.md"]
|
|
40
|
+
super().make_release_tree(base_dir, filtered)
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
setup(
|
|
44
|
+
cmdclass={"sdist": sdist_without_readme},
|
|
45
|
+
long_description=load_long_description(),
|
|
46
|
+
long_description_content_type="text/markdown",
|
|
47
|
+
)
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: tinet-clink2-cli
|
|
3
|
-
Version: 0.0.
|
|
4
|
-
Summary: Clink2 OpenAPI CLI
|
|
3
|
+
Version: 0.0.3
|
|
4
|
+
Summary: Tinet Clink2 OpenAPI CLI
|
|
5
5
|
Requires-Python: >=3.10
|
|
6
6
|
Description-Content-Type: text/markdown
|
|
7
7
|
Requires-Dist: click>=8.0
|
|
@@ -10,10 +10,12 @@ Provides-Extra: dev
|
|
|
10
10
|
Requires-Dist: pytest>=7.0; extra == "dev"
|
|
11
11
|
Requires-Dist: responses>=0.25; extra == "dev"
|
|
12
12
|
Requires-Dist: build>=1.0; extra == "dev"
|
|
13
|
+
Dynamic: description
|
|
14
|
+
Dynamic: description-content-type
|
|
13
15
|
|
|
14
16
|
Clink2 命令行客户端,封装 OpenAPI 接口,与 [智慧服务平台开发者中心](https://develop.clink.cn) 中参数与响应一致,适合脚本化集成与 Agent 调用。
|
|
15
17
|
|
|
16
|
-
**当前版本:** `0.0.
|
|
18
|
+
**当前版本:** `0.0.3`
|
|
17
19
|
**PyPI:** https://pypi.org/project/tinet-clink2-cli/
|
|
18
20
|
|
|
19
21
|
## 功能概览
|
|
@@ -21,15 +23,18 @@ Clink2 命令行客户端,封装 OpenAPI 接口,与 [智慧服务平台开
|
|
|
21
23
|
| 子命令 | 说明 |
|
|
22
24
|
|--------|------|
|
|
23
25
|
| **`config`** | 本地凭证管理 |
|
|
24
|
-
| **`
|
|
25
|
-
| **`
|
|
26
|
+
| **`cdr-auto-task`** | 任务呼叫记录查询 |
|
|
27
|
+
| **`cdr-bot`** | 机器人话单查询 |
|
|
28
|
+
| **`cdr-ib`** | 呼入通话记录查询 |
|
|
29
|
+
| **`cdr-internal`** | 内部呼叫记录查询 |
|
|
30
|
+
| **`cdr-ob`** | 外呼通话记录查询 |
|
|
31
|
+
| **`ivr`** | 语音导航查询 |
|
|
32
|
+
| **`voicemail`** | 留言箱设置查询 |
|
|
26
33
|
|
|
27
34
|
所有出站 HTTP 请求自动附加:
|
|
28
35
|
- `X-Trace-Id: {UUID}`
|
|
29
36
|
- `X-Clink2-CLI-Version: {CLI 版本}`
|
|
30
37
|
|
|
31
|
-
本地默认写入 JSON Lines 日志:`~/.clink2/logs/clink2.log`(单文件最大 10MB,滚动保留 5 个)。
|
|
32
|
-
|
|
33
38
|
## 环境要求
|
|
34
39
|
|
|
35
40
|
- Python **≥ 3.10**
|
|
@@ -42,14 +47,14 @@ Clink2 命令行客户端,封装 OpenAPI 接口,与 [智慧服务平台开
|
|
|
42
47
|
|
|
43
48
|
```bash
|
|
44
49
|
pip install tinet-clink2-cli
|
|
45
|
-
tinet-clink2-cli --version # 0.0.
|
|
50
|
+
tinet-clink2-cli --version # 0.0.3
|
|
46
51
|
tinet-clink2-cli --help
|
|
47
52
|
```
|
|
48
53
|
|
|
49
54
|
指定版本或升级:
|
|
50
55
|
|
|
51
56
|
```bash
|
|
52
|
-
pip install 'tinet-clink2-cli==0.0.
|
|
57
|
+
pip install 'tinet-clink2-cli==0.0.3'
|
|
53
58
|
pip install --upgrade tinet-clink2-cli
|
|
54
59
|
```
|
|
55
60
|
|
|
@@ -67,8 +72,8 @@ pipx install tinet-clink2-cli
|
|
|
67
72
|
|
|
68
73
|
```bash
|
|
69
74
|
tinet-clink2-cli config set \
|
|
70
|
-
--
|
|
71
|
-
--
|
|
75
|
+
--access-key-id your_access_key_id \
|
|
76
|
+
--access-key-secret your_access_key_secret \
|
|
72
77
|
--endpoint https://api-bj.clink.cn \
|
|
73
78
|
--expires 60 \
|
|
74
79
|
--log true
|
|
@@ -80,22 +85,30 @@ tinet-clink2-cli config show
|
|
|
80
85
|
|
|
81
86
|
## 快速示例
|
|
82
87
|
|
|
83
|
-
顺序与上方「功能概览」一致。完整取值见各子命令 `--help` 或 [开发者中心](https://develop.clink.cn)。
|
|
84
|
-
|
|
85
88
|
```bash
|
|
86
89
|
# config
|
|
87
90
|
tinet-clink2-cli config show
|
|
88
91
|
|
|
89
92
|
# ivr
|
|
90
|
-
tinet-clink2-cli ivr nodes --
|
|
93
|
+
tinet-clink2-cli ivr nodes --ivr-name your_ivr_name
|
|
91
94
|
tinet-clink2-cli --json ivr list
|
|
92
95
|
|
|
96
|
+
# CDR(未传时间参数时使用服务端默认时间窗)
|
|
97
|
+
tinet-clink2-cli --json cdr-ib list
|
|
98
|
+
tinet-clink2-cli --json cdr-ib detail --main-unique-id medias_1-xxx
|
|
99
|
+
tinet-clink2-cli --json cdr-ob list --cnos 0001,0002
|
|
100
|
+
tinet-clink2-cli --json cdr-auto-task list
|
|
101
|
+
tinet-clink2-cli --json cdr-bot ib-list
|
|
102
|
+
tinet-clink2-cli --json cdr-internal list
|
|
103
|
+
|
|
93
104
|
# dry-run:仅校验入参与配置,不调用服务端(是否写日志取决于 config.log)
|
|
94
105
|
tinet-clink2-cli --dry-run ivr list
|
|
95
106
|
tinet-clink2-cli --dry-run voicemail list --offset 0 --limit 10
|
|
107
|
+
tinet-clink2-cli --dry-run cdr-ib list
|
|
96
108
|
|
|
97
109
|
# verbose:向 stderr 打印 url / method / 版本 Header / TraceId / result(不含 body)
|
|
98
110
|
tinet-clink2-cli --verbose --json voicemail list
|
|
111
|
+
tinet-clink2-cli --verbose --dry-run cdr-ob list
|
|
99
112
|
```
|
|
100
113
|
|
|
101
114
|
全局选项:
|
|
@@ -105,14 +118,18 @@ tinet-clink2-cli --verbose --json voicemail list
|
|
|
105
118
|
|
|
106
119
|
## 安全提示
|
|
107
120
|
|
|
108
|
-
- 勿将 AccessKeySecret
|
|
109
|
-
- `config set --log false` 为用户显式关闭本地审计;关闭后排障将缺少本地 JSON 日志。
|
|
121
|
+
- 勿将 AccessKeySecret 写入仓库、截图或日志外发渠道
|
|
110
122
|
|
|
111
123
|
## 帮助与 API 文档
|
|
112
124
|
|
|
113
125
|
```bash
|
|
114
126
|
tinet-clink2-cli --help
|
|
115
127
|
tinet-clink2-cli config --help
|
|
128
|
+
tinet-clink2-cli cdr-auto-task --help
|
|
129
|
+
tinet-clink2-cli cdr-bot --help
|
|
130
|
+
tinet-clink2-cli cdr-ib --help
|
|
131
|
+
tinet-clink2-cli cdr-internal --help
|
|
132
|
+
tinet-clink2-cli cdr-ob --help
|
|
116
133
|
tinet-clink2-cli ivr --help
|
|
117
134
|
tinet-clink2-cli voicemail --help
|
|
118
135
|
```
|
|
@@ -1,13 +1,17 @@
|
|
|
1
1
|
MANIFEST.in
|
|
2
|
-
README.md
|
|
3
2
|
pyproject.toml
|
|
3
|
+
setup.py
|
|
4
4
|
cli_anything/clink2/__init__.py
|
|
5
5
|
cli_anything/clink2/clink2_cli.py
|
|
6
|
+
cli_anything/clink2/commands/__init__.py
|
|
7
|
+
cli_anything/clink2/commands/cdr_specs.py
|
|
8
|
+
cli_anything/clink2/commands/options.py
|
|
6
9
|
cli_anything/clink2/core/__init__.py
|
|
7
10
|
cli_anything/clink2/core/auth.py
|
|
8
11
|
cli_anything/clink2/core/config.py
|
|
9
12
|
cli_anything/clink2/core/http.py
|
|
10
13
|
cli_anything/clink2/core/logging.py
|
|
14
|
+
cli_anything/clink2/core/params.py
|
|
11
15
|
tinet_clink2_cli.egg-info/PKG-INFO
|
|
12
16
|
tinet_clink2_cli.egg-info/SOURCES.txt
|
|
13
17
|
tinet_clink2_cli.egg-info/dependency_links.txt
|
tinet_clink2_cli-0.0.2/README.md
DELETED
|
@@ -1,107 +0,0 @@
|
|
|
1
|
-
Clink2 命令行客户端,封装 OpenAPI 接口,与 [智慧服务平台开发者中心](https://develop.clink.cn) 中参数与响应一致,适合脚本化集成与 Agent 调用。
|
|
2
|
-
|
|
3
|
-
**当前版本:** `0.0.2`
|
|
4
|
-
**PyPI:** https://pypi.org/project/tinet-clink2-cli/
|
|
5
|
-
|
|
6
|
-
## 功能概览
|
|
7
|
-
|
|
8
|
-
| 子命令 | 说明 |
|
|
9
|
-
|--------|------|
|
|
10
|
-
| **`config`** | 本地凭证管理 |
|
|
11
|
-
| **`ivr`** | 语音导航查询:列表、节点列表 |
|
|
12
|
-
| **`voicemail`** | 留言箱设置:查看留言箱列表 |
|
|
13
|
-
|
|
14
|
-
所有出站 HTTP 请求自动附加:
|
|
15
|
-
- `X-Trace-Id: {UUID}`
|
|
16
|
-
- `X-Clink2-CLI-Version: {CLI 版本}`
|
|
17
|
-
|
|
18
|
-
本地默认写入 JSON Lines 日志:`~/.clink2/logs/clink2.log`(单文件最大 10MB,滚动保留 5 个)。
|
|
19
|
-
|
|
20
|
-
## 环境要求
|
|
21
|
-
|
|
22
|
-
- Python **≥ 3.10**
|
|
23
|
-
- 运行时需访问公有云接入地址,例如 `https://api-bj.clink.cn` / `https://api-sh.clink.cn`
|
|
24
|
-
- 需在管理后台获取 AccessKeyId / AccessKeySecret(系统管理 → 安全设置 → 接口密钥)
|
|
25
|
-
|
|
26
|
-
## 安装
|
|
27
|
-
|
|
28
|
-
从 [PyPI](https://pypi.org/project/tinet-clink2-cli/) 安装(推荐):
|
|
29
|
-
|
|
30
|
-
```bash
|
|
31
|
-
pip install tinet-clink2-cli
|
|
32
|
-
tinet-clink2-cli --version # 0.0.2
|
|
33
|
-
tinet-clink2-cli --help
|
|
34
|
-
```
|
|
35
|
-
|
|
36
|
-
指定版本或升级:
|
|
37
|
-
|
|
38
|
-
```bash
|
|
39
|
-
pip install 'tinet-clink2-cli==0.0.2'
|
|
40
|
-
pip install --upgrade tinet-clink2-cli
|
|
41
|
-
```
|
|
42
|
-
|
|
43
|
-
macOS 等受限环境可使用 [pipx](https://pipx.pypa.io/):
|
|
44
|
-
|
|
45
|
-
```bash
|
|
46
|
-
pipx install tinet-clink2-cli
|
|
47
|
-
```
|
|
48
|
-
|
|
49
|
-
## 配置凭证
|
|
50
|
-
|
|
51
|
-
**配置文件:** `~/.clink2/config.json`
|
|
52
|
-
|
|
53
|
-
配置示例:
|
|
54
|
-
|
|
55
|
-
```bash
|
|
56
|
-
tinet-clink2-cli config set \
|
|
57
|
-
--accessKeyId your_access_key_id \
|
|
58
|
-
--accessKeySecret your_access_key_secret \
|
|
59
|
-
--endpoint https://api-bj.clink.cn \
|
|
60
|
-
--expires 60 \
|
|
61
|
-
--log true
|
|
62
|
-
|
|
63
|
-
tinet-clink2-cli config show
|
|
64
|
-
```
|
|
65
|
-
|
|
66
|
-
默认接入地址为北京:`https://api-bj.clink.cn`。`config show` 会对 AccessKeySecret 脱敏。
|
|
67
|
-
|
|
68
|
-
## 快速示例
|
|
69
|
-
|
|
70
|
-
顺序与上方「功能概览」一致。完整取值见各子命令 `--help` 或 [开发者中心](https://develop.clink.cn)。
|
|
71
|
-
|
|
72
|
-
```bash
|
|
73
|
-
# config
|
|
74
|
-
tinet-clink2-cli config show
|
|
75
|
-
|
|
76
|
-
# ivr
|
|
77
|
-
tinet-clink2-cli ivr nodes --ivrName your_ivr_name
|
|
78
|
-
tinet-clink2-cli --json ivr list
|
|
79
|
-
|
|
80
|
-
# dry-run:仅校验入参与配置,不调用服务端(是否写日志取决于 config.log)
|
|
81
|
-
tinet-clink2-cli --dry-run ivr list
|
|
82
|
-
tinet-clink2-cli --dry-run voicemail list --offset 0 --limit 10
|
|
83
|
-
|
|
84
|
-
# verbose:向 stderr 打印 url / method / 版本 Header / TraceId / result(不含 body)
|
|
85
|
-
tinet-clink2-cli --verbose --json voicemail list
|
|
86
|
-
```
|
|
87
|
-
|
|
88
|
-
全局选项:
|
|
89
|
-
- `--json`:机器可读 stdout
|
|
90
|
-
- `--dry-run`:本地校验与预览,不发请求
|
|
91
|
-
- `--verbose`:stderr 排障
|
|
92
|
-
|
|
93
|
-
## 安全提示
|
|
94
|
-
|
|
95
|
-
- 勿将 AccessKeySecret 写入仓库、截图或日志外发渠道。
|
|
96
|
-
- `config set --log false` 为用户显式关闭本地审计;关闭后排障将缺少本地 JSON 日志。
|
|
97
|
-
|
|
98
|
-
## 帮助与 API 文档
|
|
99
|
-
|
|
100
|
-
```bash
|
|
101
|
-
tinet-clink2-cli --help
|
|
102
|
-
tinet-clink2-cli config --help
|
|
103
|
-
tinet-clink2-cli ivr --help
|
|
104
|
-
tinet-clink2-cli voicemail --help
|
|
105
|
-
```
|
|
106
|
-
|
|
107
|
-
OpenAPI 契约与字段说明见 [智慧服务平台开发者中心](https://develop.clink.cn)。
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{tinet_clink2_cli-0.0.2 → tinet_clink2_cli-0.0.3}/tinet_clink2_cli.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
{tinet_clink2_cli-0.0.2 → tinet_clink2_cli-0.0.3}/tinet_clink2_cli.egg-info/entry_points.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|