openclaw - 💡(How to fix) Fix Nextcloud Talk bot replies fail with 401 (signature mismatch) on Talk 23.x [1 comments, 2 participants]

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…
GitHub stats
openclaw/openclaw#48837Fetched 2026-04-08 00:51:59
View on GitHub
Comments
1
Participants
2
Timeline
1
Reactions
0
Participants
Timeline (top)
commented ×1

Error Message

No explicit error in Gateway logs, but replies are not sent to Nextcloud Talk room.

Code Example

occ talk:bot:install "OpenClaw" "<secret>" "http://<gateway>:8788/nextcloud-talk-webhook" --feature webhook --feature reaction
RAW_BUFFERClick to expand / collapse

Environment

  • OpenClaw version: 2026.3.13
  • Nextcloud version: 33.0.0.16
  • Nextcloud Talk (spreed) version: 23.0.1
  • Deployment: Docker

Problem

The Nextcloud Talk plugin successfully receives webhook messages from Nextcloud, but sending responses fails with HTTP 401 (Unauthorized).

Steps to reproduce

  1. Install bot on Nextcloud:
    occ talk:bot:install "OpenClaw" "<secret>" "http://<gateway>:8788/nextcloud-talk-webhook" --feature webhook --feature reaction
  2. Enable bot in a room
  3. Send message in room → OpenClaw receives it via webhook ✅
  4. OpenClaw tries to respond → 401 error ❌

Investigation

  • Webhook signature verification works (incoming messages received)
  • Response uses same secret with HMAC-SHA256
  • Bot is correctly configured with apiUser and apiPassword

Related

  • PR #4507 (closed but not merged) - same issue with signature format
  • Issue #6174 - similar issue on Talk 22.x
  • Issue #27611 - mentions baseUrl matching requirements

Error

No explicit error in Gateway logs, but replies are not sent to Nextcloud Talk room.

Suggested fix

As mentioned in PR #4507, the signature body format may need to be plain text instead of { "message": message }.

extent analysis

Fix Plan

To resolve the HTTP 401 (Unauthorized) error when sending responses, we need to adjust the signature body format in the OpenClaw webhook response.

Here are the concrete steps:

  • Modify the response signature generation to use plain text instead of JSON format.
  • Ensure the HMAC-SHA256 signature is calculated correctly using the provided secret.

Example code snippet ( Node.js ):

const crypto = require('crypto');

// Assuming 'message' is the response message and 'secret' is the shared secret
const message = 'Response message';
const secret = '<secret>';

// Generate signature with plain text body
const signature = crypto.createHmac('sha256', secret).update(message).digest('hex');

// Set the signature in the response headers
const headers = {
  'X-Signature': `sha256=${signature}`,
  'Content-Type': 'text/plain' // Use plain text instead of application/json
};

// Send the response with the modified headers and body

Verification

To verify the fix, repeat the steps to reproduce the issue and check if the response is successfully sent to the Nextcloud Talk room. You can also inspect the Gateway logs for any explicit errors or check the Nextcloud Talk room for the received response.

Extra Tips

  • Ensure the baseUrl matches the requirements mentioned in Issue #27611.
  • Review PR #4507 and related issues for additional insights into the signature format and potential pitfalls.

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING