34 lines
1.5 KiB
Bash
34 lines
1.5 KiB
Bash
#!/usr/bin/env bash
|
|
set -u
|
|
URLS=("http://192.168.68.123/api/mcp" "http://192.168.68.137/api/mcp")
|
|
post() {
|
|
local url="$1" payload="$2"
|
|
curl -fsS -m 8 -X POST "$url" -H 'Content-Type: application/json' --data "$payload"
|
|
}
|
|
for URL in "${URLS[@]}"; do
|
|
echo "Trying $URL"
|
|
tools=$(post "$URL" '{"jsonrpc":"2.0","id":"tools","method":"tools/list","params":{}}' 2>&1) || { echo "tools/list failed: $tools"; continue; }
|
|
echo "tools/list ok: ${tools:0:600}"
|
|
# Try common text-to-speech/speak-style tools first, since user said say hi.
|
|
for name in speak text_to_speech say play_text; do
|
|
payload=$(printf '{"jsonrpc":"2.0","id":"%s","method":"tools/call","params":{"name":"%s","arguments":{"text":"hi","message":"hi","volume":70}}}' "$name" "$name")
|
|
out=$(post "$URL" "$payload" 2>&1)
|
|
rc=$?
|
|
echo "$name rc=$rc: ${out:0:300}"
|
|
if [ $rc -eq 0 ] && ! echo "$out" | grep -qi 'error'; then
|
|
echo "Success: asked $URL to say hi using $name"
|
|
exit 0
|
|
fi
|
|
done
|
|
# Fallback: draw hi on the screen.
|
|
post "$URL" '{"jsonrpc":"2.0","id":"clear","method":"tools/call","params":{"name":"clear_screen","arguments":{"color":0}}}' >/dev/null 2>&1 || true
|
|
out=$(post "$URL" '{"jsonrpc":"2.0","id":"draw","method":"tools/call","params":{"name":"draw_text","arguments":{"text":"hi","x":120,"y":105,"size":4}}}' 2>&1)
|
|
rc=$?
|
|
echo "draw_text rc=$rc: ${out:0:300}"
|
|
if [ $rc -eq 0 ] && ! echo "$out" | grep -qi 'error'; then
|
|
echo "Fallback success: displayed hi on $URL"
|
|
exit 0
|
|
fi
|
|
done
|
|
exit 1
|