fix(bms): improve logging and response parsing

- bms-logging.sh: fixed brace expansion bug, JSON compaction, dynamic log path, single-line JSONL entries
- bms-tickets.sh: support {success:true,result:{...}} responses; fixed ID extraction for create/note; updated update fetch

Tested full lifecycle with logging: create → note → delete note → close → delete
This commit is contained in:
OpenClaw Agent
2026-04-08 01:37:15 +00:00
parent 2bfda7b788
commit 891711e690
2 changed files with 27 additions and 23 deletions

10
scripts/bms-tickets.sh Executable file → Normal file
View File

@@ -269,8 +269,8 @@ cmd_create() {
response=$(bms_curl POST "/v2/servicedesk/tickets" -d "$body")
success=$(echo "$response" | jq -r '.success // .Success // empty')
ticket_id=$(echo "$response" | jq -r '.Data.Id // .Id // empty')
ticket_number=$(echo "$response" | jq -r '.Data.TicketNumber // .TicketNumber // empty')
ticket_id=$(echo "$response" | jq -r '.Data.Id // .Id // .result.id // .result.id // empty')
ticket_number=$(echo "$response" | jq -r '.Data.TicketNumber // .TicketNumber // .result.ticketNumber // empty')
if [[ "$success" != "true" ]] || [[ -z "$ticket_id" ]] || [[ "$ticket_id" == "null" ]]; then
echo "Create ticket failed or returned ambiguous response:" >&2
@@ -321,7 +321,7 @@ cmd_update() {
# Fetch current ticket first so we can do a full PUT with changes merged
local current
current=$(bms_curl GET "/v2/servicedesk/tickets/${ticket_id}" | jq '.Data // .')
current=$(bms_curl GET "/v2/servicedesk/tickets/${ticket_id}" | jq '.Data // .result // .')
local patch="{}"
while [[ $# -gt 0 ]]; do
@@ -358,7 +358,7 @@ cmd_update() {
local response
response=$(bms_curl PUT "/v2/servicedesk/tickets/${ticket_id}" -d "$body")
echo "$response" | jq -r '"Updated ticket \(.Data.Id // .Id // "'"$ticket_id"'")"'
echo "$response" | jq -r '"Updated ticket \(.Data.Id // .Id // .result.id // "'"$ticket_id"'")"'
# Log success
local args_json result_json
args_json=$(jq -n --argjson ticket_id "$ticket_id" --argjson patch "$patch" '{ticket_id: $ticket_id, patch: $patch}')
@@ -404,7 +404,7 @@ cmd_note() {
local response
response=$(bms_curl POST "/v2/servicedesk/tickets/${ticket_id}/notes" -d "$body")
local note_id
note_id=$(echo "$response" | jq -r '.Data.Id // .Id // empty')
note_id=$(echo "$response" | jq -r '.Data.Id // .Id // .result.id // .result.id // empty')
if [[ -z "$note_id" || "$note_id" == "null" ]]; then
echo "Note add failed or returned ambiguous response:" >&2
echo "$response" | jq . >&2