Integrating OpenClaw with Google Assistant (Step-by-Step)

Clawpedia · For Humans

Connect OpenClaw to Google Assistant for voice-activated AI agent control in your smart home.

Integrating OpenClaw with Google Assistant (Step-by-Step)

By connecting OpenClaw to Google Assistant, you can control your AI agent through voice commands on Google Home devices, Nest speakers, and any device running Google Assistant. This gives you hands-free access to OpenClaw's full capabilities.

How It Works


Voice Command → Google Assistant → Webhook → OpenClaw Gateway → Response → Speaker

Google Assistant forwards your voice commands to OpenClaw via a webhook, and OpenClaw sends the response back to be spoken aloud.

Prerequisites

RequirementDetails
Google accountWith Google Cloud Console access
OpenClaw runningGateway accessible from the internet (HTTPS)
Google Cloud projectFor Actions Console and Dialogflow

Step 1: Set Up Public Access


# For testing: use ngrok to expose your local OpenClaw
ngrok http 3000
# → Forwarding: https://abc123.ngrok.io → http://localhost:3000

# For production: configure your reverse proxy
# Your OpenClaw endpoint will be:
# https://your-domain.com/api/google-assistant/webhook

Step 2: Install the Google Assistant Skill


openclaw skill install google-assistant
openclaw skill setup google-assistant
# → Public webhook URL: https://your-domain.com/api/google-assistant/webhook
# → Invocation name: open claw
# → Language: English
# → Configured!

Step 3: Create a Google Actions Project

Public URLngrok (testing) or domain with HTTPS (production)

Step 4: Configure Dialogflow (or Actions Builder)


// Webhook configuration
{
  "webhook": {
    "url": "https://your-domain.com/api/google-assistant/webhook",
    "headers": {
      "Authorization": "Bearer ${GOOGLE_WEBHOOK_SECRET}"
    }
  }
}

Step 5: Define Intents

Set up a catch-all intent that forwards everything to OpenClaw:


{
  "intent": "openclaw.query",
  "trainingPhrases": [
    "Ask OpenClaw *",
    "Tell OpenClaw *",
    "OpenClaw *"
  ],
  "fulfillment": {
    "webhook": true
  }
}

OpenClaw Configuration


# ~/.openclaw/skills/google-assistant/config.yaml
google_assistant:
  webhook:
    path: /api/google-assistant/webhook
    secret: ${GOOGLE_WEBHOOK_SECRET}
    
  voice:
    response_format: ssml        # ssml or plain
    max_response_length: 640     # Characters (Google limit)
    speaking_rate: medium
    
  behavior:
    greeting: "Hi! How can I help?"
    error_message: "Sorry, I couldn't process that. Try again."
    timeout_message: "I'm taking too long. Let me try a simpler answer."
    
  permissions:
    location: true               # Access user's location
    name: true                   # Access user's name
    
  responses:
    include_suggestions: true    # Show suggestion chips on screens
    max_suggestions: 3

Voice Interaction Examples


"Hey Google, talk to Open Claw"
Google: "Hi! How can I help?"

"What's on my calendar today?"
Google: "You have 3 events: A standup at 9, a product review at 11,
         and a 1-on-1 at 2 PM."

"Set a reminder to buy groceries at 5 PM"
Google: "Done! I've set a reminder for 5 PM to buy groceries."

"Send a message to Alex saying I'll be late"
Google: "I'll send Alex a message saying you'll be late. Should I
         send it now?"
"Yes"
Google: "Message sent to Alex."

SSML Response Formatting

OpenClaw can send rich voice responses using SSML:


<speak>
  You have <say-as interpret-as="cardinal">3</say-as> meetings today.
  <break time="500ms"/>
  The first one is at <say-as interpret-as="time">09:00</say-as>,
  a standup meeting.
</speak>

Multi-Device Support

DeviceFeaturesNotes
Google Home / NestVoice onlyKeep responses concise
Nest Hub (screen)Voice + visualSuggestion chips, cards
Android phoneVoice + visual + touchFull interaction

Testing


# Test the webhook locally
curl -X POST https://your-domain.com/api/google-assistant/webhook \
  -H "Authorization: Bearer $GOOGLE_WEBHOOK_SECRET" \
  -H "Content-Type: application/json" \
  -d '{
    "handler": {"name": "openclaw.query"},
    "intent": {"query": "What is the weather today?"}
  }'

# Test in Actions Console
# Go to Test tab → Type or speak your query

Troubleshooting

Smart displaysVoice + visualRich card layouts
ProblemSolution
"I don't know how to help"Check invocation name matches config
Webhook timeoutReduce response length or use a faster model
No response from OpenClawVerify gateway is running and publicly accessible
"Sorry, this action is not available"Deploy the action in Actions Console
Voice too fast/slowAdjust speaking_rate in config
Responses cut offReduce max_response_length (Google limit: 640 chars)

Tip: Voice responses need to be much shorter than text responses. Configure OpenClaw to give concise answers when the request comes from Google Assistant. A good rule of thumb is under 3 sentences for routine queries.

Related Articles