{
  "schemaVersion": "1.0",
  "item": {
    "slug": "telnyx-voice-sip",
    "name": "Sip Voice Call Control",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/teamtelnyx/telnyx-voice-sip",
    "canonicalUrl": "https://clawhub.ai/teamtelnyx/telnyx-voice-sip",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/telnyx-voice-sip",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=telnyx-voice-sip",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md",
      "package.json",
      "setup.sh",
      "src/dev.ts",
      "src/tunnel.ts",
      "test.sh"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-05-07T17:22:31.273Z",
      "expiresAt": "2026-05-14T17:22:31.273Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=afrexai-annual-report",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=afrexai-annual-report",
        "contentDisposition": "attachment; filename=\"afrexai-annual-report-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/telnyx-voice-sip"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/telnyx-voice-sip",
    "agentPageUrl": "https://openagent3.xyz/skills/telnyx-voice-sip/agent",
    "manifestUrl": "https://openagent3.xyz/skills/telnyx-voice-sip/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/telnyx-voice-sip/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "SIP Voice Call Control",
        "body": "Voice interface for OpenClaw using Telnyx Call Control API. Call via SIP and have natural conversations with your AI assistant."
      },
      {
        "title": "How It Works",
        "body": "Your Phone (SIP) → Telnyx Call Control → Webhooks → This Server → Commands back\n                         ↓                              ↓\n                    STT/TTS/Media              LLM + Tool Execution\n\nThis is not WebRTC — it's server-side SIP call handling. Telnyx handles all audio; we just receive webhooks and send commands."
      },
      {
        "title": "1. Install Dependencies",
        "body": "cd skills/sip-voice-call-control\nnpm install"
      },
      {
        "title": "2. Configure",
        "body": "cp .env.example .env\n\nEdit .env:\n\nTELNYX_API_KEY=KEY_your_api_key_here"
      },
      {
        "title": "3. Start Server",
        "body": "npm run start\n\nConsole shows:\n\n🎙️  Assistant Voice Server ready on port 3000\n📞 Dial: sip:openclaw@yourconnection.sip.telnyx.com"
      },
      {
        "title": "Agent Setup Flow",
        "body": "When setting up for a user, agents should:"
      },
      {
        "title": "1. Collect Configuration",
        "body": "Ask for:\n\nTelnyx API Key (required)\n\nGet from: https://portal.telnyx.com/#/app/auth/v2\nNeeds Voice API + Inference permissions\n\n\n\nTTS Voice (optional)\n\nTelnyx.NaturalHD.astra — Female, warm and clear (default, recommended)\nTelnyx.NaturalHD.atlas — Male, deep and authoritative\nPolly.Amy-Neural — British female\nPolly.Brian-Neural — British male\nPolly.Joanna-Neural — American female\nPolly.Matthew-Neural — American male\nAzure.en-US-JennyNeural — American female\nAzure.en-GB-RyanNeural — British male\nSee .env.example for full list\n\n\n\nVoice Model (optional)\n\nQwen/Qwen3-235B-A22B — Best for function calling (default)\nmeta-llama/Meta-Llama-3.1-8B-Instruct — Fastest\nmeta-llama/Llama-3.3-70B-Instruct — Balanced\n\nPersonalization (assistant name, user name, timezone) is pulled automatically from workspace files (IDENTITY.md, USER.md)."
      },
      {
        "title": "2. Write .env File",
        "body": "cat > .env << 'EOF'\nTELNYX_API_KEY=<user_api_key>\nVOICE_MODEL=Qwen/Qwen3-235B-A22B\nTTS_VOICE=Telnyx.NaturalHD.astra\nEOF"
      },
      {
        "title": "3. Start in Background (Persistent)",
        "body": "The server must run persistently to receive calls. Use nohup to keep it alive:\n\ncd /path/to/sip-voice-call-control\nnohup npm run start > sip-voice-call-control.log 2>&1 &\n\nOr from an agent:\n\n// Use nohup to keep process alive after session ends\nexec({ \n  command: \"cd /path/to/sip-voice-call-control && nohup npm run start > sip-voice-call-control.log 2>&1 &\",\n  background: true \n})\n\nImportant: Without nohup, the process will die when the parent session ends. Always use nohup or a process manager for production.\n\nTo check if running:\n\nps aux | grep \"tsx.*dev\" | grep -v grep\n\nTo stop:\n\npkill -f \"tsx.*dev.ts\"\n\nTo view logs:\n\ntail -f /path/to/sip-voice-call-control/sip-voice-call-control.log"
      },
      {
        "title": "4. Extract SIP Address",
        "body": "Poll the process logs and give the user the SIP dial-in:\n\n📞 Dial: sip:openclaw@<connection>.sip.telnyx.com"
      },
      {
        "title": "Environment Variables",
        "body": "VariableRequiredDefaultDescriptionTELNYX_API_KEYYes—Telnyx API keyVOICE_MODELNoQwen/Qwen3-235B-A22BModel for inferenceTTS_VOICENoPolly.Amy-NeuralText-to-speech voicePORTNo3000Server portENABLE_TUNNELNotrueCreate Cloudflare tunnelWORKSPACE_DIRNo~/clawdFor memory search tool"
      },
      {
        "title": "Available Tools",
        "body": "ToolTrigger PhrasesWhat It Doeslist_cron_jobs\"what reminders\", \"my schedule\", \"cron jobs\"Lists scheduled tasksadd_reminder\"remind me\", \"set a reminder\"Creates new reminderremove_cron_job\"delete\", \"cancel\" + job nameRemoves a scheduled taskget_weather\"weather\", \"temperature\", \"forecast\"Gets current weathersearch_memory\"what have we been working on\", \"projects\"Searches workspace files"
      },
      {
        "title": "Features",
        "body": "Low-latency — 500ms-1.5s response time with enable_thinking: false\nBarge-in — Interrupt the assistant anytime by speaking\nFunction calling — Native tool support with Qwen\nAuto-setup — Cloudflare tunnel and Call Control app created automatically\nPersonalization — Reads IDENTITY.md and USER.md for context"
      },
      {
        "title": "Troubleshooting",
        "body": "No response after speaking:\n\nCheck Telnyx API key has Voice API + Inference permissions\nVerify webhook URL is reachable (tunnel must be active)\n\nSlow responses (>3s):\n\nEnsure using function-calling branch (not main)\nCheck model availability on your Telnyx account\n\nTool not executing:\n\nEnsure openclaw CLI is in PATH\nCheck WORKSPACE_DIR is set correctly\n\nPort already in use:\n\nKill existing server: pkill -f \"tsx.*dev.ts\"\nOr change PORT in .env"
      },
      {
        "title": "Resources",
        "body": "Telnyx Call Control: https://developers.telnyx.com/docs/voice/call-control\nTelnyx Inference: https://developers.telnyx.com/docs/inference\nSee ARCHITECTURE.md for technical details"
      }
    ],
    "body": "SIP Voice Call Control\n\nVoice interface for OpenClaw using Telnyx Call Control API. Call via SIP and have natural conversations with your AI assistant.\n\nHow It Works\nYour Phone (SIP) → Telnyx Call Control → Webhooks → This Server → Commands back\n                         ↓                              ↓\n                    STT/TTS/Media              LLM + Tool Execution\n\n\nThis is not WebRTC — it's server-side SIP call handling. Telnyx handles all audio; we just receive webhooks and send commands.\n\nSetup\n1. Install Dependencies\ncd skills/sip-voice-call-control\nnpm install\n\n2. Configure\ncp .env.example .env\n\n\nEdit .env:\n\nTELNYX_API_KEY=KEY_your_api_key_here\n\n3. Start Server\nnpm run start\n\n\nConsole shows:\n\n🎙️  Assistant Voice Server ready on port 3000\n📞 Dial: sip:openclaw@yourconnection.sip.telnyx.com\n\nAgent Setup Flow\n\nWhen setting up for a user, agents should:\n\n1. Collect Configuration\n\nAsk for:\n\nTelnyx API Key (required)\n\nGet from: https://portal.telnyx.com/#/app/auth/v2\nNeeds Voice API + Inference permissions\n\nTTS Voice (optional)\n\nTelnyx.NaturalHD.astra — Female, warm and clear (default, recommended)\nTelnyx.NaturalHD.atlas — Male, deep and authoritative\nPolly.Amy-Neural — British female\nPolly.Brian-Neural — British male\nPolly.Joanna-Neural — American female\nPolly.Matthew-Neural — American male\nAzure.en-US-JennyNeural — American female\nAzure.en-GB-RyanNeural — British male\nSee .env.example for full list\n\nVoice Model (optional)\n\nQwen/Qwen3-235B-A22B — Best for function calling (default)\nmeta-llama/Meta-Llama-3.1-8B-Instruct — Fastest\nmeta-llama/Llama-3.3-70B-Instruct — Balanced\n\nPersonalization (assistant name, user name, timezone) is pulled automatically from workspace files (IDENTITY.md, USER.md).\n\n2. Write .env File\ncat > .env << 'EOF'\nTELNYX_API_KEY=<user_api_key>\nVOICE_MODEL=Qwen/Qwen3-235B-A22B\nTTS_VOICE=Telnyx.NaturalHD.astra\nEOF\n\n3. Start in Background (Persistent)\n\nThe server must run persistently to receive calls. Use nohup to keep it alive:\n\ncd /path/to/sip-voice-call-control\nnohup npm run start > sip-voice-call-control.log 2>&1 &\n\n\nOr from an agent:\n\n// Use nohup to keep process alive after session ends\nexec({ \n  command: \"cd /path/to/sip-voice-call-control && nohup npm run start > sip-voice-call-control.log 2>&1 &\",\n  background: true \n})\n\n\nImportant: Without nohup, the process will die when the parent session ends. Always use nohup or a process manager for production.\n\nTo check if running:\n\nps aux | grep \"tsx.*dev\" | grep -v grep\n\n\nTo stop:\n\npkill -f \"tsx.*dev.ts\"\n\n\nTo view logs:\n\ntail -f /path/to/sip-voice-call-control/sip-voice-call-control.log\n\n4. Extract SIP Address\n\nPoll the process logs and give the user the SIP dial-in:\n\n📞 Dial: sip:openclaw@<connection>.sip.telnyx.com\n\nEnvironment Variables\nVariable\tRequired\tDefault\tDescription\nTELNYX_API_KEY\tYes\t—\tTelnyx API key\nVOICE_MODEL\tNo\tQwen/Qwen3-235B-A22B\tModel for inference\nTTS_VOICE\tNo\tPolly.Amy-Neural\tText-to-speech voice\nPORT\tNo\t3000\tServer port\nENABLE_TUNNEL\tNo\ttrue\tCreate Cloudflare tunnel\nWORKSPACE_DIR\tNo\t~/clawd\tFor memory search tool\nAvailable Tools\nTool\tTrigger Phrases\tWhat It Does\nlist_cron_jobs\t\"what reminders\", \"my schedule\", \"cron jobs\"\tLists scheduled tasks\nadd_reminder\t\"remind me\", \"set a reminder\"\tCreates new reminder\nremove_cron_job\t\"delete\", \"cancel\" + job name\tRemoves a scheduled task\nget_weather\t\"weather\", \"temperature\", \"forecast\"\tGets current weather\nsearch_memory\t\"what have we been working on\", \"projects\"\tSearches workspace files\nFeatures\nLow-latency — 500ms-1.5s response time with enable_thinking: false\nBarge-in — Interrupt the assistant anytime by speaking\nFunction calling — Native tool support with Qwen\nAuto-setup — Cloudflare tunnel and Call Control app created automatically\nPersonalization — Reads IDENTITY.md and USER.md for context\nTroubleshooting\n\nNo response after speaking:\n\nCheck Telnyx API key has Voice API + Inference permissions\nVerify webhook URL is reachable (tunnel must be active)\n\nSlow responses (>3s):\n\nEnsure using function-calling branch (not main)\nCheck model availability on your Telnyx account\n\nTool not executing:\n\nEnsure openclaw CLI is in PATH\nCheck WORKSPACE_DIR is set correctly\n\nPort already in use:\n\nKill existing server: pkill -f \"tsx.*dev.ts\"\nOr change PORT in .env\nResources\nTelnyx Call Control: https://developers.telnyx.com/docs/voice/call-control\nTelnyx Inference: https://developers.telnyx.com/docs/inference\nSee ARCHITECTURE.md for technical details"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/teamtelnyx/telnyx-voice-sip",
    "publisherUrl": "https://clawhub.ai/teamtelnyx/telnyx-voice-sip",
    "owner": "teamtelnyx",
    "version": "1.0.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/telnyx-voice-sip",
    "downloadUrl": "https://openagent3.xyz/downloads/telnyx-voice-sip",
    "agentUrl": "https://openagent3.xyz/skills/telnyx-voice-sip/agent",
    "manifestUrl": "https://openagent3.xyz/skills/telnyx-voice-sip/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/telnyx-voice-sip/agent.md"
  }
}