Multi-platform Push: a Tokeny case study
Push important notifications simultaneously to DingTalk, WeChat Work, Lark, and other platforms. Follow the recorded task, execution screenshots, actual files and verification notes.
By the Tokeny team · Windows · Tokeny 1.7.8 · gpt-6-sol
Prepare the inputs
Create a separate workspace in Tokeny, download and unpack the sample inputs, then select a model that supports tools. The sample uses synthetic data or the public sources named in the article.
- notice.json
Send the task to Tokeny
The original task was executed in Chinese. Copying these instructions reproduces the same task; the results below include an English report.
将同一通知分别转为钉钉、企业微信、飞书的文本 webhook JSON,发送到三个本地 HTTP 接收路径并记录请求和响应。只验证适配格式与本地投递,不连接真实企业群。 交付文件:notify.py、receiver.py、delivery-log.json、payloads.json。 验收要点: - 三个本地接收路径实际收到 POST - 三种 payload 结构分别保存 - 不声称完成平台鉴权或群消息送达 这是使用合成演示输入或指定公开资料的真实操作案例。请先读取工作空间输入,再实际生成文件并自检。所有写入、脚本与临时服务限于当前工作空间;临时服务只监听 127.0.0.1,执行后关闭;不触达外部收件人、不发布、不付款、不更改系统设置,不调用子智能体。需要公开资料时可读取给定 URL。只启用完成任务必需的工具。另写 report.md(中文)和 report.en.md(英文),简洁、完整,包含输入、处理步骤、真实结果、检查方式和局限;失败或未验证部分如实记录,不能宣称成功。最终回复用中文列出产物、关键结果与待核实项。 排版检查:Word 主标题仅出现一次,标题为黑色且与后续正文或表格保持同页;表格的标题、表头和第一条数据保持同页,单行不要跨页拆分;Excel 表头和长文字不能被窄列截断,合理设置列宽、换行、行高;HTML 在 390px 视口不能整页横向溢出。临时网络服务请用系统分配端口(0),记录实际端口,不使用固定端口,避免并发案例互相访问。报告没有固定字数要求,不要为字数反复改写。
Follow-up instructions after review (1)
独立复核发现飞书自定义机器人 webhook 格式不正确:payloads.feishu.content 当前是 JSON 字符串。机器人 webhook 文本消息需要 {"msg_type":"text","content":{"text":"通知内容"}},content 为对象;不要混用应用消息发送 API 的字符串字段。请修正 notify.py 和 payloads.json,并让本地 receiver 对三种路径分别验证结构,错误格式应返回400。重新实际执行三个本地POST验证正确请求200、错误飞书字符串content被拒绝;保存真实收件记录、响应和清理结果,更新两份报告,仍明确未验证外部平台鉴权与送达。The recorded run used an isolated demonstration workspace. Review the commands and file paths before approving operations in your own workspace.
What actually ran
The task was submitted through the Tokeny input box. An online model read the inputs and executed tools. Three message formats are posted to local HTTP receivers. Real DingTalk, WeCom and Feishu authentication and group delivery are outside this test.
Results and verification
Input
The workspace input notice.json was read. It contains the synthetic demo notice titled “演示日报” with the text “订单汇总已生成,合计 5064 元。” and note “本地联调数据”.
Processing
notify.pyread the input and built text webhook JSON for DingTalk, WeCom, and Feishu.receiver.pystarted an HTTP service bound only to127.0.0.1, using a system-assigned port, with/dingtalk,/wecom, and/feishuendpoints.notify.pysent one correct POST to each local endpoint and an additional Feishu request with string-valuedcontentas a negative test.receiver.pyvalidated each platform-specific structure; correct requests were expected to return 200 and the malformed Feishu request 400.- Actual received records, all responses, and temporary-service cleanup status were saved.
Actual Results
The run used system-assigned port 62073. Each of the three correct payloads was actually received and returned HTTP 200. The malformed Feishu payload with string-valued content was also received and rejected with HTTP 400; the validation response states that content must be an object. Four received records were saved with statuses 200, 200, 200, and 400. The temporary service stopped successfully (process_stopped: true); the Windows termination return code was recorded as 1. The corrected Feishu structure is saved as content: {"text": "..."}.
Verification
Check that summary.validated_http_200 is 3 and summary.invalid_feishu_http_400 is true in delivery-log.json. Review all four records under receiver_records, including request bodies, responses, and the validation error. Confirm that payloads.feishu.content in payloads.json is an object rather than a string.
Limitations
This test validates only payload formatting and local HTTP delivery. It did not connect to real enterprise groups and did not perform platform authentication, signature verification, rate-limit handling, or real group-message delivery verification. It therefore does not claim platform authentication or group-message delivery.
Download and inspect the outputs
The archive contains the files created during this run. Use these checks when adapting the example to your own data.
- Reconcile the reported results against the downloadable sample inputs.
- Open the generated files and check the contents relevant to your task.
- Review the limitations and any unverified steps in the report.
