提交报名
submit_signup【需要登录】【何时用】用户说「帮我报这场」时调它。只传这次要新填/要改的答案即可:handler 自己会先读一遍我在这场活动的全部现值(上一版提交 + 跨表单复用的资料覆盖层 + 主页/公司/产品推导),打上你的补丁后提交全集。
【组合链】get_signup_activity(slug) 看 viewer.missingRequired → 照 label/hint/options 问用户 → 本工具 answers=[{key,value}] 提交 → 返回的 submission.reviewStatus 之后用 list_my_signups 跟进。撞「已截止」时返回体自带还能报的替代场次(照 exits[].detail.alternatives 里的 slug 再走一遍 get_signup_activity)。
【口径/坑】① 省略 ≠ 清空:这是 agent 通道相对客户端的刻意差异——客户端有确认页(用户亲眼看着自己清掉了微信号),agent 没有,所以这里不继承服务层「传了 answers 就以 answers 为全集、没传的一律置空」那条语义。要真的清空某题,把 key 放进 clearKeys(它会连跨表单复用层里那一行一起删掉——否则下次报别的表又会被解析回来;文件行不删)。② type=file 的附件题(BP/营业执照)agent 传不了,会被整键省略以保住用户此前传过的文件——绝不许把文件名或一个链接当答案填进去。③ 合并后仍缺必填项时不会提交,直接返回 error=missing_required_fields + 逐条「要问用户什么」,把这些问完再调一次。④ 返回 delivery.kind='webview' 时报名还没投到主办方源站,站内只存了留资和代填答案——此时逐字禁止对用户说「已报名成功」,必须说「站内已留档,还要在主办方表单上完成提交」,并把 delivery.url 给他。⑤ 重新提交会以合并后的全集覆盖上一版。证件号这类敏感题的明文是加密存的、读不回来:上一版填过而这次没给值时会直接拒绝提交(sensitive_answer_would_be_wiped),因为提交上去就会把它覆盖成空且不可恢复——按返回里的 exits 让用户重说一遍,或者明确不要了就放进 clearKeys。⑥ channel 恒为 'agent',主办方在报名单里看得见这笔是 agent 代提的。
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | 活动 slug | |
| answers | No | 这次要新填/要改的答案。没传的题**不会被清空**(自动沿用现值) | |
| clearKeys | No | 要显式清空的题目 key(用户明说「把微信号删掉」才用;不传就一个都不清) |