Skip to main content
Generaldvcrn

amernet-ai-saas

Connect your AI SaaS intelligent agent to any messaging channel via OpenClaw (WhatsApp, Telegram, Slack, Discord, iMessage, and more)

Stars
15
Source
dvcrn/openclaw-skills-marketplace
Updated
2026-05-29
Slug
dvcrn--openclaw-skills-marketplace--amernet-ai-saas
View on GitHubRaw SKILL.md

// install — copy + paste into any project

mkdir -p .claude/skills && curl -fsSL https://raw.githubusercontent.com/dvcrn/openclaw-skills-marketplace/HEAD/plugins/amernet--amernet-ai-saas/skills/amernet-ai-saas/SKILL.md -o .claude/skills/amernet-ai-saas.md

Drops the SKILL.md into .claude/skills/amernet-ai-saas.md. Works with Claude Code, Cursor, and any agent that loads SKILL.md files from .claude/skills/.

AI SaaS Chatbot

This skill forwards user messages to an AI SaaS chatbot and returns its response. It maintains conversation context per user by using their channel and user identifier as a session key.

Required Configuration

These environment variables must be set in your ~/.openclaw/openclaw.json under skills.entries.amernet-ai-saas.env:

Variable Description
AI_SAAS_API_KEY Your API key from the portal (Settings → API Keys). Needs all permission.
AI_SAAS_CHATBOT_ID The chatbot ID to route all messages to (copy from the Chatbots page).
AI_SAAS_BASE_URL Base URL of your AI SaaS instance. Default: https://saas.salesbay.ai

Message Routing

When the user sends ANY message through any connected channel:

  1. Identify the current channel name (e.g. whatsapp, telegram, slack, discord) and the user's identifier on that channel (phone number, user ID, or username).

  2. Construct a sender_id combining both: <channel>:<user_identifier>

    • WhatsApp example: whatsapp:+15551234567
    • Telegram example: telegram:123456789
    • Slack example: slack:U012AB3CD
    • Discord example: discord:123456789012345678
  3. Send a POST request to the chatbot API:

POST ${AI_SAAS_BASE_URL}/api/v1/chatbots/${AI_SAAS_CHATBOT_ID}/chat
Authorization: Bearer ${AI_SAAS_API_KEY}
Content-Type: application/json

{
  "sender_id": "<constructed sender_id>",
  "message": "<user message text>"
}
  1. Parse data.responses from the JSON response. Return each item's text field as a separate message to the user. If multiple responses exist, send them in order.

  2. If the API returns an error or is unreachable, reply: "Sorry, the AI assistant is temporarily unavailable. Please try again in a moment."

Conversation Reset

If the user explicitly says "reset", "start over", "clear chat", or "/reset":

DELETE ${AI_SAAS_BASE_URL}/api/v1/chatbots/${AI_SAAS_CHATBOT_ID}/conversations/<sender_id>
Authorization: Bearer ${AI_SAAS_API_KEY}

Then confirm: "Conversation cleared. How can I help you?"

Status Check

If the user says "/status" or "/ping":

GET ${AI_SAAS_BASE_URL}/api/v1/chatbots/${AI_SAAS_CHATBOT_ID}
Authorization: Bearer ${AI_SAAS_API_KEY}

Report the chatbot name and whether it is active.