Files
EP-Hub-Skill/.agents/skills/dingtalk-misc/references/dev/recipes.md
T
2026-09-02 11:44:52 +08:00

4.1 KiB
Raw Blame History

端到端链路(recipes)

dev 的端到端任务都是「定ä½åº”用,改容器æŸèŠ‚ç‚¹ï¼ŒæŒ‰å®¡æ‰¹éœ€è¦èµ°ç‰ˆæœ¬ç”Ÿæ•ˆï¼Œæœ€åŽå›žè¯»éªŒè¯ã€ã€‚æ¯æ­¥å…ˆ --dry-run ç¡®è®¤å† --yesï¼Œå‚æ•°ç”¨å¯¹åº”命令的 --help 查询,¼Œç»†èŠ‚è¿›å¯¹åº” reference。

建一个钉钉里打开的网页应用

  1. dev app create --name <å> 建应用,拿 unifiedAppId
  2. dev app webapp config é…移动端/PC é¦–é¡µï¼ˆè§ webapp.md)
  3. dev app version create 建版本
  4. dev app version check-approval 预检是å¦éœ€å®¡æ‰¹
  5. dev app version publish å‘布(需审批时让用户选审批人)
  6. 回读 dev app version status 到 RELEASE æ‰ç®—生效

æƒé™ä»Žç”³è¯·åˆ°ç”Ÿæ•ˆ

  1. dev app permission list 选 scopeValue(选择顺åºè§ permission.md)
  2. dev app permission add --scope-values <值> 申请
  3. 若是 requiredApproval çš„æƒé™ï¼Œèµ°ç‰ˆæœ¬ï¼šversion createï¼Œå† check-approvalï¼Œå† publish --approver-user-id <用户选的>ï¼Œæœ€åŽ version status
  4. å…审æƒé™ç›´æŽ¥å¼€é€šï¼Œä¸å¿…å‘版本

åšä¸€ä¸ªç­”疑机器人并接到本地调试

  1. dev app create --name <å> 创建应用,拿明确 unifiedAppId
  2. dev app robot config --unified-app-id <unifiedAppId> é…置机器人能力;需è¦å¯ç”¨æ—¶å† robot enable
  3. 线上使用闭环:version create → check-approval → publish → version statusï¼›SELECT_APPROVER 时必须等用户选择审批人,ä¸é»˜è®¤å–第一个
  4. 本地调试/值守:dev connect --unified-app-id <unifiedAppId> 把机器人接到本地 agentï¼ˆè§ connect.md);注æ„订阅事件å‰è¦å…ˆå»ºè”é•¿è¿žï¼ˆè§ event.md)
  5. 若走无绑定的 robot submit/resultï¼Œåªæœ‰ç»“果返回明确 unifiedAppId æ‰èƒ½ç»§ç»­ç‰ˆæœ¬å‘布
  6. å®Œæˆæ€ä¸Žç¼º unifiedAppIdã€SELECT_APPROVER 等门ç¦åˆ¤å®šè§ devapp.md「核心规则ã€ï¼šå»ºè”æˆåŠŸ + 版本进入 RELEASE/AUDIT/UNDER_REVIEW æ‰ç®—完æˆ

é‡å¯å®ˆæŠ¤è¿›ç¨‹è¿žæŽ¥å™¨ï¼ˆä¸å­˜å¯†é’¥ï¼‰

守护进程被 stop / kill / 崩溃åŽï¼Œé€šè¿‡æŒä¹…化的 unifiedAppId 釿–°æ‹‰å–密钥并é‡å¯ï¼Œæ— éœ€æœ¬åœ°ä¿å­˜ AppSecret。

  1. dev connect --daemon --unified-app-id <id> --channel <channel> 首次å¯åŠ¨ï¼ˆunifiedAppId å’Œ channel 会写入 ~/.dws/connect/<key>/daemon.pid)
  2. dev connect restart --unified-app-id <id> é‡å¯ï¼šè‡ªåЍ stop 旧进程 → 从 dev 平尿‹‰å– AppKey/Secret → 釿–°å»ºè
  3. dev connect status --unified-app-id <id> 确认æ¢å¤ healthy
  4. è‹¥ daemon.pid 未æŒä¹…化 unifiedAppId(如用 --robot-client-id 直接å¯åŠ¨çš„ï¼‰ï¼Œrestart 会æç¤ºæ”¹ç”¨ --unified-app-id å¯åЍ

注æ„:密钥ä¸è½ç›˜ï¼Œæ¯æ¬¡ restart 动æ€ä»Žå¼€å‘者平å°èŽ·å–ï¼›daemon.pid åªå­˜ unifiedAppIdã€channelã€clientId(公开值)。

上传图片拿 mediaId(应用图标 / 机器人图标)

åº”ç”¨å›¾æ ‡ã€æœºå™¨äººå›¾æ ‡éƒ½é  mediaId 指定,但 dev 命令集ä¸å«ä¸Šä¼ â€”—mediaId è¦è°ƒé’‰é’‰ OpenAPI 拿到:

  1. 拿凭è¯ï¼šdev app credentials get --unified-app-id <id> å appKey/appSecret(secret æŒ‰æ•æ„Ÿå¤„ç†ï¼Œä¸å†™è¿›å›žç­”)

  2. æ¢ access_token:GET https://oapi.dingtalk.com/gettoken?appkey=<appKey>&appsecret=<appSecret>,å–返回的 access_token(有效期约 7200 ç§’ã€gettoken 有频控,缓存å¤ç”¨åˆ«æ¯æ¬¡ä¸Šä¼ éƒ½æ¢ï¼‰

  3. 上传图片:POST https://oapi.dingtalk.com/media/upload?access_token=<token>&type=image,multipart 表å•字段å media,返回 media_id(形如 @lA...)。图标用方形图(如 256×256 çš„ jpg/png)

    curl -F "media=@/path/to/img.png;type=image/png" \
      "https://oapi.dingtalk.com/media/upload?access_token=<token>&type=image"
    
  4. 用 mediaId 更新:机器人图标 dev app robot config --unified-app-id <id> --icon-media-id <media_id>;应用图标 dev app update --unified-app-id <id> --icon-media-id <media_id>。写æ“作先 --dry-run å† --yes

  5. 回读:dev app robot get 看 iconMediaId å˜ä¸ºæ–°å€¼ï¼ˆåº”用图标看 app get çš„ icon)

查「为什么没生效 / 机器人æœä¸åˆ° / æƒé™åŠ äº†è¿˜æŠ¥é”™ã€

å…ˆ dev app version status——改é…ç½®ä¸ç­‰äºŽç”Ÿæ•ˆï¼Œæœªå‘到 RELEASE å°±ä¸ç”Ÿæ•ˆã€‚