Loading...
Loading...
Compare original and translation side by side
pip install telnyxpip install telnyximport os
from telnyx import Telnyx
client = Telnyx(
api_key=os.environ.get("TELNYX_API_KEY"), # This is the default and can be omitted
)clientimport os
from telnyx import Telnyx
client = Telnyx(
api_key=os.environ.get("TELNYX_API_KEY"), # 这是默认配置,可以省略
)clientimport telnyx
try:
assistant = client.ai.assistants.create(
instructions="You are a helpful assistant.",
model="openai/gpt-4o",
name="my-resource",
)
except telnyx.APIConnectionError:
print("Network error — check connectivity and retry")
except telnyx.RateLimitError:
import time
time.sleep(1) # Check Retry-After header for actual delay
except telnyx.APIStatusError as e:
print(f"API error {e.status_code}: {e.message}")
if e.status_code == 422:
print("Validation error — check required fields and formats")401403404422429import telnyx
try:
assistant = client.ai.assistants.create(
instructions="You are a helpful assistant.",
model="openai/gpt-4o",
name="my-resource",
)
except telnyx.APIConnectionError:
print("Network error — check connectivity and retry")
except telnyx.RateLimitError:
import time
time.sleep(1) # 请查看Retry-After header获取实际需要延迟的时间
except telnyx.APIStatusError as e:
print(f"API error {e.status_code}: {e.message}")
if e.status_code == 422:
print("校验错误 — 请检查必填字段和格式")401403404422429+13125550001+for item in page_result:client.ai.assistants.list()openai/gpt-4oQwen/Qwen3-235B-A22B+13125550001+for item in page_result:client.ai.assistants.list()openai/gpt-4oQwen/Qwen3-235B-A22B## Additional Operations## 附加操作client.ai.assistants.create()POST /ai/assistants| Parameter | Type | Required | Description |
|---|---|---|---|
| string | Yes | |
| string | Yes | ID of the model to use. |
| string | Yes | System instructions for the assistant. |
| array[object] | No | The tools that the assistant can use. |
| array[string] | No | |
| string | No | |
| ... | +12 optional params in references/api-details.md |
assistant = client.ai.assistants.create(
instructions="You are a helpful assistant.",
model="openai/gpt-4o",
name="my-resource",
)
print(assistant.id)assistant.idassistant.nameassistant.modelassistant.instructionsassistant.created_atassistant.descriptionclient.ai.assistants.create()POST /ai/assistants| 参数 | 类型 | 必填 | 描述 |
|---|---|---|---|
| string | 是 | |
| string | 是 | 要使用的模型ID。 |
| string | 是 | 给助手的系统指令。 |
| array[object] | 否 | 助手可以使用的工具。 |
| array[string] | 否 | |
| string | 否 | |
| ... | 还有12个可选参数,详见references/api-details.md |
assistant = client.ai.assistants.create(
instructions="You are a helpful assistant.",
model="openai/gpt-4o",
name="my-resource",
)
print(assistant.id)assistant.idassistant.nameassistant.modelassistant.instructionsassistant.created_atassistant.descriptionclient.ai.assistants.chat()POST /ai/assistants/{assistant_id}/chat| Parameter | Type | Required | Description |
|---|---|---|---|
| string | Yes | The message content sent by the client to the assistant |
| string (UUID) | Yes | A unique identifier for the conversation thread, used to mai... |
| string (UUID) | Yes | |
| string | No | The optional display name of the user sending the message |
response = client.ai.assistants.chat(
assistant_id="550e8400-e29b-41d4-a716-446655440000",
content="Tell me a joke about cats",
conversation_id="42b20469-1215-4a9a-8964-c36f66b406f4",
)
print(response.content)response.contentclient.ai.assistants.chat()POST /ai/assistants/{assistant_id}/chat| 参数 | 类型 | 必填 | 描述 |
|---|---|---|---|
| string | 是 | 客户端发送给助手的消息内容 |
| string (UUID) | 是 | 对话线程的唯一标识符,用于维护上下文... |
| string (UUID) | 是 | |
| string | 否 | 发送消息的用户的可选显示名称 |
response = client.ai.assistants.chat(
assistant_id="550e8400-e29b-41d4-a716-446655440000",
content="Tell me a joke about cats",
conversation_id="42b20469-1215-4a9a-8964-c36f66b406f4",
)
print(response.content)response.contentclient.ai.assistants.tests.create()POST /ai/assistants/tests| Parameter | Type | Required | Description |
|---|---|---|---|
| string | Yes | A descriptive name for the assistant test. |
| string | Yes | The target destination for the test conversation. |
| string | Yes | Detailed instructions that define the test scenario and what... |
| array[object] | Yes | Evaluation criteria used to assess the assistant's performan... |
| string | No | Optional detailed description of what this test evaluates an... |
| object | No | The communication channel through which the test will be con... |
| integer | No | Maximum duration in seconds that the test conversation shoul... |
| ... | +1 optional params in references/api-details.md |
assistant_test = client.ai.assistants.tests.create(
destination="+15551234567",
instructions="Act as a frustrated customer who received a damaged product. Ask for a refund and escalate if not satisfied with the initial response.",
name="Customer Support Bot Test",
rubric=[{
"criteria": "Assistant responds within 30 seconds",
"name": "Response Time",
}, {
"criteria": "Provides correct product information",
"name": "Accuracy",
}],
)
print(assistant_test.test_id)assistant_test.test_idassistant_test.nameassistant_test.destinationassistant_test.created_atassistant_test.instructionsassistant_test.descriptionclient.ai.assistants.tests.create()POST /ai/assistants/tests| 参数 | 类型 | 必填 | 描述 |
|---|---|---|---|
| string | 是 | 助手测试的描述性名称。 |
| string | 是 | 测试对话的目标地址。 |
| string | 是 | 定义测试场景和测试规则的详细指令... |
| array[object] | 是 | 评估助手表现的评价标准... |
| string | 否 | 可选的详细描述,说明该测试评估的内容... |
| object | 否 | 执行测试使用的通信渠道... |
| integer | 否 | 测试对话的最大持续时长(秒)... |
| ... | 还有1个可选参数,详见references/api-details.md |
assistant_test = client.ai.assistants.tests.create(
destination="+15551234567",
instructions="Act as a frustrated customer who received a damaged product. Ask for a refund and escalate if not satisfied with the initial response.",
name="Customer Support Bot Test",
rubric=[{
"criteria": "Assistant responds within 30 seconds",
"name": "Response Time",
}, {
"criteria": "Provides correct product information",
"name": "Accuracy",
}],
)
print(assistant_test.test_id)assistant_test.test_idassistant_test.nameassistant_test.destinationassistant_test.created_atassistant_test.instructionsassistant_test.descriptionclient.ai.assistants.retrieve()GET /ai/assistants/{assistant_id}| Parameter | Type | Required | Description |
|---|---|---|---|
| string (UUID) | Yes | |
| string (UUID) | No | |
| boolean | No | |
| string (E.164) | No | |
| ... | +1 optional params in references/api-details.md |
assistant = client.ai.assistants.retrieve(
assistant_id="550e8400-e29b-41d4-a716-446655440000",
)
print(assistant.id)assistant.idassistant.nameassistant.created_atassistant.descriptionassistant.dynamic_variablesassistant.dynamic_variables_webhook_urlclient.ai.assistants.retrieve()GET /ai/assistants/{assistant_id}| 参数 | 类型 | 必填 | 描述 |
|---|---|---|---|
| string (UUID) | 是 | |
| string (UUID) | 否 | |
| boolean | 否 | |
| string (E.164) | 否 | |
| ... | 还有1个可选参数,详见references/api-details.md |
assistant = client.ai.assistants.retrieve(
assistant_id="550e8400-e29b-41d4-a716-446655440000",
)
print(assistant.id)assistant.idassistant.nameassistant.created_atassistant.descriptionassistant.dynamic_variablesassistant.dynamic_variables_webhook_urlclient.ai.assistants.update()POST /ai/assistants/{assistant_id}| Parameter | Type | Required | Description |
|---|---|---|---|
| string (UUID) | Yes | |
| string | No | |
| string | No | ID of the model to use. |
| string | No | System instructions for the assistant. |
| ... | +16 optional params in references/api-details.md |
assistant = client.ai.assistants.update(
assistant_id="550e8400-e29b-41d4-a716-446655440000",
)
print(assistant.id)assistant.idassistant.nameassistant.created_atassistant.descriptionassistant.dynamic_variablesassistant.dynamic_variables_webhook_urlclient.ai.assistants.update()POST /ai/assistants/{assistant_id}| 参数 | 类型 | 必填 | 描述 |
|---|---|---|---|
| string (UUID) | 是 | |
| string | 否 | |
| string | 否 | 要使用的模型ID。 |
| string | 否 | 给助手的系统指令。 |
| ... | 还有16个可选参数,详见references/api-details.md |
assistant = client.ai.assistants.update(
assistant_id="550e8400-e29b-41d4-a716-446655440000",
)
print(assistant.id)assistant.idassistant.nameassistant.created_atassistant.descriptionassistant.dynamic_variablesassistant.dynamic_variables_webhook_urlclient.ai.assistants.list()GET /ai/assistantsassistants_list = client.ai.assistants.list()
print(assistants_list.data)assistants_list.dataidnamecreated_atdescriptiondynamic_variablesdynamic_variables_webhook_urlclient.ai.assistants.list()GET /ai/assistantsassistants_list = client.ai.assistants.list()
print(assistants_list.data)assistants_list.dataidnamecreated_atdescriptiondynamic_variablesdynamic_variables_webhook_urlclient.ai.assistants.imports()POST /ai/assistants/import| Parameter | Type | Required | Description |
|---|---|---|---|
| enum (elevenlabs, vapi, retell) | Yes | The external provider to import assistants from. |
| string | Yes | Integration secret pointer that refers to the API key for th... |
| array[string] | No | Optional list of assistant IDs to import from the external p... |
assistants_list = client.ai.assistants.imports(
api_key_ref="my-openai-key",
provider="elevenlabs",
)
print(assistants_list.data)assistants_list.dataidnamecreated_atdescriptiondynamic_variablesdynamic_variables_webhook_urlclient.ai.assistants.imports()POST /ai/assistants/import| 参数 | 类型 | 必填 | 描述 |
|---|---|---|---|
| enum (elevenlabs, vapi, retell) | 是 | 要导入助手的外部提供商。 |
| string | 是 | 指向外部提供商API密钥的集成密钥指针... |
| array[string] | 否 | 可选的要从外部提供商导入的助手ID列表... |
assistants_list = client.ai.assistants.imports(
api_key_ref="my-openai-key",
provider="elevenlabs",
)
print(assistants_list.data)assistants_list.dataidnamecreated_atdescriptiondynamic_variablesdynamic_variables_webhook_urlclient.ai.assistants.tags.list()GET /ai/assistants/tagstags = client.ai.assistants.tags.list()
print(tags.tags)tags.tagsclient.ai.assistants.tags.list()GET /ai/assistants/tagstags = client.ai.assistants.tags.list()
print(tags.tags)tags.tagsclient.ai.assistants.tests.list()GET /ai/assistants/tests| Parameter | Type | Required | Description |
|---|---|---|---|
| string | No | Filter tests by test suite name |
| string | No | Filter tests by communication channel (e.g., 'web_chat', 'sm... |
| string | No | Filter tests by destination (phone number, webhook URL, etc.... |
| ... | +1 optional params in references/api-details.md |
page = client.ai.assistants.tests.list()
page = page.data[0]
print(page.test_id)page.datapage.metanamecreated_atdescriptiondestinationinstructionsmax_duration_secondsclient.ai.assistants.tests.list()GET /ai/assistants/tests| 参数 | 类型 | 必填 | 描述 |
|---|---|---|---|
| string | 否 | 按测试套件名称筛选测试 |
| string | 否 | 按通信渠道筛选测试(例如'web_chat'、'sm...) |
| string | 否 | 按目标地址筛选测试(电话号码、Webhook URL等...) |
| ... | 还有1个可选参数,详见references/api-details.md |
page = client.ai.assistants.tests.list()
page = page.data[0]
print(page.test_id)page.datapage.metanamecreated_atdescriptiondestinationinstructionsmax_duration_secondsclient.ai.assistants.tests.test_suites.list()GET /ai/assistants/tests/test-suitestest_suites = client.ai.assistants.tests.test_suites.list()
print(test_suites.data)test_suites.datadataclient.ai.assistants.tests.test_suites.list()GET /ai/assistants/tests/test-suitestest_suites = client.ai.assistants.tests.test_suites.list()
print(test_suites.data)test_suites.datadataclient.ai.assistants.tests.test_suites.runs.list()GET /ai/assistants/tests/test-suites/{suite_name}/runs| Parameter | Type | Required | Description |
|---|---|---|---|
| string | Yes | |
| string (UUID) | No | Filter runs by specific suite execution batch ID |
| string | No | Filter runs by execution status (pending, running, completed... |
| object | No | Consolidated page parameter (deepObject style). |
page = client.ai.assistants.tests.test_suites.runs.list(
suite_name="my-test-suite",
)
page = page.data[0]
print(page.run_id)page.datapage.metastatuscreated_atupdated_atcompleted_atconversation_idconversation_insights_idclient.ai.assistants.tests.test_suites.runs.list()GET /ai/assistants/tests/test-suites/{suite_name}/runs| 参数 | 类型 | 必填 | 描述 |
|---|---|---|---|
| string | 是 | |
| string (UUID) | 否 | 按特定套件执行批次ID筛选运行记录 |
| string | 否 | 按执行状态筛选运行记录(pending、running、completed...) |
| object | 否 | 统一分页参数(deepObject格式)。 |
page = client.ai.assistants.tests.test_suites.runs.list(
suite_name="my-test-suite",
)
page = page.data[0]
print(page.run_id)page.datapage.metastatuscreated_atupdated_atcompleted_atconversation_idconversation_insights_id| Operation | SDK method | Endpoint | Use when | Required params |
|---|---|---|---|---|
| Trigger test suite execution | | | Trigger a follow-up action in an existing workflow rather than creating a new top-level resource. | |
| Get assistant test by ID | | | Fetch the current state before updating, deleting, or making control-flow decisions. | |
| Update an assistant test | | | Modify an existing resource without recreating it. | |
| Delete an assistant test | | | Remove, detach, or clean up an existing resource. | |
| Get test run history for a specific test | | | Fetch the current state before updating, deleting, or making control-flow decisions. | |
| Trigger a manual test run | | | Trigger a follow-up action in an existing workflow rather than creating a new top-level resource. | |
| Get specific test run details | | | Fetch the current state before updating, deleting, or making control-flow decisions. | |
| Delete an assistant | | | Remove, detach, or clean up an existing resource. | |
| Get Canary Deploy | | | Fetch the current state before updating, deleting, or making control-flow decisions. | |
| Create Canary Deploy | | | Create or provision an additional resource when the core tasks do not cover this flow. | |
| Update Canary Deploy | | | Modify an existing resource without recreating it. | |
| Delete Canary Deploy | | | Remove, detach, or clean up an existing resource. | |
| Assistant Sms Chat | | | Run assistant chat over SMS instead of direct API chat. | |
| Clone Assistant | | | Trigger a follow-up action in an existing workflow rather than creating a new top-level resource. | |
| List scheduled events | | | Fetch the current state before updating, deleting, or making control-flow decisions. | |
| Create a scheduled event | | | Create or provision an additional resource when the core tasks do not cover this flow. | |
| Get a scheduled event | | | Fetch the current state before updating, deleting, or making control-flow decisions. | |
| Delete a scheduled event | | | Remove, detach, or clean up an existing resource. | |
| Add Assistant Tag | | | Create or provision an additional resource when the core tasks do not cover this flow. | |
| Remove Assistant Tag | | | Remove, detach, or clean up an existing resource. | |
| Get assistant texml | | | Fetch the current state before updating, deleting, or making control-flow decisions. | |
| Add Assistant Tool | | | Modify an existing resource without recreating it. | |
| Remove Assistant Tool | | | Remove, detach, or clean up an existing resource. | |
| Test Assistant Tool | | | Trigger a follow-up action in an existing workflow rather than creating a new top-level resource. | |
| Get all versions of an assistant | | | Fetch the current state before updating, deleting, or making control-flow decisions. | |
| Get a specific assistant version | | | Fetch the current state before updating, deleting, or making control-flow decisions. | |
| Update a specific assistant version | | | Create or provision an additional resource when the core tasks do not cover this flow. | |
| Delete a specific assistant version | | | Remove, detach, or clean up an existing resource. | |
| Promote an assistant version to main | | | Trigger a follow-up action in an existing workflow rather than creating a new top-level resource. | |
| List MCP Servers | | | Inspect available resources or choose an existing resource before mutating it. | None |
| Create MCP Server | | | Create or provision an additional resource when the core tasks do not cover this flow. | |
| Get MCP Server | | | Fetch the current state before updating, deleting, or making control-flow decisions. | |
| Update MCP Server | | | Modify an existing resource without recreating it. | |
| Delete MCP Server | | | Remove, detach, or clean up an existing resource. | |
| List Tools | | | Inspect available resources or choose an existing resource before mutating it. | None |
| Create Tool | | | Create or provision an additional resource when the core tasks do not cover this flow. | |
| Get Tool | | | Fetch the current state before updating, deleting, or making control-flow decisions. | |
| Update Tool | | | Modify an existing resource without recreating it. | |
| Delete Tool | | | Remove, detach, or clean up an existing resource. | |
| 操作 | SDK方法 | 端点 | 适用场景 | 必填参数 |
|---|---|---|---|---|
| 触发测试套件执行 | | | 在现有工作流中触发后续操作,而非创建新的顶层资源。 | |
| 根据ID获取助手测试 | | | 在更新、删除或做出控制流决策前获取当前状态。 | |
| 更新助手测试 | | | 修改现有资源,无需重新创建。 | |
| 删除助手测试 | | | 移除、解绑或清理现有资源。 | |
| 获取特定测试的运行历史 | | | 在更新、删除或做出控制流决策前获取当前状态。 | |
| 触发手动测试运行 | | | 在现有工作流中触发后续操作,而非创建新的顶层资源。 | |
| 获取特定测试运行的详情 | | | 在更新、删除或做出控制流决策前获取当前状态。 | |
| 删除助手 | | | 移除、解绑或清理现有资源。 | |
| 获取金丝雀发布配置 | | | 在更新、删除或做出控制流决策前获取当前状态。 | |
| 创建金丝雀发布配置 | | | 当核心任务未覆盖该流程时,创建或配置额外资源。 | |
| 更新金丝雀发布配置 | | | 修改现有资源,无需重新创建。 | |
| 删除金丝雀发布配置 | | | 移除、解绑或清理现有资源。 | |
| 助手短信对话 | | | 通过SMS而非直接API调用运行助手对话。 | |
| 克隆助手 | | | 在现有工作流中触发后续操作,而非创建新的顶层资源。 | |
| 列出计划事件 | | | 在更新、删除或做出控制流决策前获取当前状态。 | |
| 创建计划事件 | | | 当核心任务未覆盖该流程时,创建或配置额外资源。 | |
| 获取计划事件 | | | 在更新、删除或做出控制流决策前获取当前状态。 | |
| 删除计划事件 | | | 移除、解绑或清理现有资源。 | |
| 添加助手标签 | | | 当核心任务未覆盖该流程时,创建或配置额外资源。 | |
| 移除助手标签 | | | 移除、解绑或清理现有资源。 | |
| 获取助手TexML | | | 在更新、删除或做出控制流决策前获取当前状态。 | |
| 添加助手工具 | | | 修改现有资源,无需重新创建。 | |
| 移除助手工具 | | | 移除、解绑或清理现有资源。 | |
| 测试助手工具 | | | 在现有工作流中触发后续操作,而非创建新的顶层资源。 | |
| 获取助手的所有版本 | | | 在更新、删除或做出控制流决策前获取当前状态。 | |
| 获取特定助手版本 | | | 在更新、删除或做出控制流决策前获取当前状态。 | |
| 更新特定助手版本 | | | 当核心任务未覆盖该流程时,创建或配置额外资源。 | |
| 删除特定助手版本 | | | 移除、解绑或清理现有资源。 | |
| 将助手版本升级为正式版 | | | 在现有工作流中触发后续操作,而非创建新的顶层资源。 | |
| 列出MCP服务器 | | | 在修改资源前查看可用资源或选择现有资源。 | 无 |
| 创建MCP服务器 | | | 当核心任务未覆盖该流程时,创建或配置额外资源。 | |
| 获取MCP服务器 | | | 在更新、删除或做出控制流决策前获取当前状态。 | |
| 更新MCP服务器 | | | 修改现有资源,无需重新创建。 | |
| 删除MCP服务器 | | | 移除、解绑或清理现有资源。 | |
| 列出工具 | | | 在修改资源前查看可用资源或选择现有资源。 | 无 |
| 创建工具 | | | 当核心任务未覆盖该流程时,创建或配置额外资源。 | |
| 获取工具 | | | 在更新、删除或做出控制流决策前获取当前状态。 | |
| 更新工具 | | | 修改现有资源,无需重新创建。 | |
| 删除工具 | | | 移除、解绑或清理现有资源。 | |