#!/bin/bash # send_message.sh - 快速发送飞书消息 (使用 Python 处理 JSON) set -e CHAT_ID="$1" MESSAGE="$2" MSG_TYPE="${3:-text}" if [ -z "$CHAT_ID" ] || [ -z "$MESSAGE" ]; then echo "Usage: $0 [msg_type]" echo " msg_type: text (default), post" exit 1 fi # 获取 token APP_ID="${FEISHU_APP_ID:-cli_a91b01debab81cd1}" APP_SECRET="${FEISHU_APP_SECRET}" if [ -z "$APP_SECRET" ] && [ -f "$HOME/.hermes/.env" ]; then APP_SECRET=$(grep "FEISHU_APP_SECRET" "$HOME/.hermes/.env" | cut -d'=' -f2) fi if [ -z "$APP_SECRET" ]; then echo "Error: FEISHU_APP_SECRET not set" exit 1 fi # 获取 token RESPONSE=$(curl -s -X POST \ https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal \ -H "Content-Type: application/json" \ -d "{\"app_id\":\"$APP_ID\",\"app_secret\":\"$APP_SECRET\"}") TOKEN=$(echo "$RESPONSE" | grep -o '"tenant_access_token":"[^"]*"' | cut -d'"' -f4) if [ -z "$TOKEN" ]; then echo "Error: Failed to get token" echo "$RESPONSE" exit 1 fi # 使用 Python 构建正确的 JSON 并发送 python3 -c " import json import urllib.request # 构建 content (JSON 字符串) if '$MSG_TYPE' == 'text': content = json.dumps({'text': '$MESSAGE'}) elif '$MSG_TYPE' == 'post': content = json.dumps({'zh_cn': {'title': '$MESSAGE', 'content': [[{'tag': 'text', 'text': '$MESSAGE'}]]}}) else: print('Unsupported msg_type') exit(1) # 构建请求体 request_body = { 'receive_id': '$CHAT_ID', 'msg_type': '$MSG_TYPE', 'content': content } # 发送请求 req = urllib.request.Request( 'https://open.feishu.cn/open-apis/im/v1/messages?receive_id_type=chat_id', data=json.dumps(request_body).encode('utf-8'), headers={ 'Authorization': 'Bearer $TOKEN', 'Content-Type': 'application/json' }, method='POST' ) try: with urllib.request.urlopen(req, timeout=30) as response: result = json.loads(response.read().decode('utf-8')) print(json.dumps(result, indent=2, ensure_ascii=False)) if result.get('code') == 0: print('Message sent successfully!') else: print(f'Error: {result.get(\"msg\")}') except Exception as e: print(f'Error: {e}') "