exotel-cli
来自终端的Exotel,为编码代理而建。一个命令连接Claude Code, Cursor, Codex, vscode, Windsurf或Claude Desktop到您的Exotel帐户,并教代理Exotel工作流程。
npx exotel-cli init
init 询问您的帐户SID, API密钥和API令牌(my.exotel.com→设置→API设置),
检查它们,保存到 ~/.config/exotel/credentials.json (模式600),注册Exotel MCP
在它找到的每个代理中安装服务器(备份每个配置文件),并安装Exotel技能。
要求Node.js 18+。没有依赖关系。
安装
| 如何 | 命令 | 需要 |
|---|---|---|
| npm | npm install -g exotel-cli (或运行一次: npx exotel-cli init) | node . js 18 + |
| Homebrew (macOS, Linux) | brew install exotel/tap/exotel | 没有别的,包括选项卡补全 |
| 单独的文件 | 下载 exotel-<version>-<os>-<arch> 从GitHub发布,放 exotel 在你的路上 | 没有其他的 |
选项卡完成npm安装: exotel completion zsh > "${fpath[1]}/_exotel" (或 bash, fish;看到 exotel help completion).
自己构建二进制文件: npm run build:binary → dist/exotel (构建Node 25.5+;结果不需要Node)。
你的第一次呼叫是一次命令
npm install -g exotel-cli
exotel init # paste Account SID, API key, API token once
exotel call # asks what should answer (VoiceBot, App Bazaar flow or your wss bot), who to call, then follows the call live
exotel call 从你的VoiceBots和exophone中挑选,记住你的电话号码和来电显示
(exotel config),在结账之前询问,并以发生的事情和下一个命令结束
(笔录、通话记录、 exotel explain <status>). 每个提示都有一个标志,所以脚本和代理
永远不要被问到: exotel call +9198XXXXXXXX --bot-id Asha --caller-id <ExoPhone> --yes。
输出在终端中是一个可读的表,在管道或带有时是JSON --json。拼写错误得到解决
“你的意思是?” NO_COLOR=1 关闭颜色; --quiet 隐藏的进步。
不确定是哪个API?
exotel ask "connect my OpenAI bot to a phone call" # recommended API, command, gotchas + docs from both portals
exotel docs search warm transfer # search developer.exotel.com + docs.exotel.com (1,200+ pages)
exotel docs show https://developer.exotel.com/docs/agentstream/connect-voice-ai # read a page as Markdown
你能做什么
| 产品 | 命令 | 文档 |
|---|---|---|
| 账户 | exotel balance | Voice v1→Balance |
| 电话号码(ExoPhones) | exotel numbers available | buy | list | get | update | release | ExoPhones API |
| SIP中继 | exotel trunk setup (所有的步骤同时),或者 create | map-number | set-number-mode | whitelist-ip | destination | credentials add|list|delete | caller-id | delete | 动态SIP中继 |
| 您自己的语音机器人(标准) | exotel voice-ai connect --to … --stream-url wss://…,或 --app-id <app_id> 一个带有Voicebot小程序的App Bazaar流 | 连接语音AI API |
| Exotel VoiceBot | exotel voicebot list | test-call | transcript | VoiceBot |
| 实时呼叫控制(需要通过Exotel支持实现) | exotel leg create | get | events | action, exotel bridge …, exotel events listen | scaffold | 腿API |
| ExoML | exotel exoml validate flow.xml (和 leg action 发送前验证) | ExoML |
| 流人 | exotel applet test connect|gather|dial|passthru|stream <url> | 连接/收集/ Passthru /流应用程序 |
| 短信、WhatsApp、电话、CQA、AI辅助…… | exotel mcp tools, exotel mcp call <tool> key=value… | MCP服务器工具 |
| 别的 | exotel api <METHOD> </path/with/{sid}> | 任何Exotel REST API |
exotel <command> --help 列出每个标志(例如 exotel trunk --help).
未覆盖:Voice v3 (/v3/accounts/{sid}/calls). 使用 exotel api 如果需要的话。
代理技能
| 技能 | 为 |
|---|---|
exotel-setup | 从这里开始:连接、验证并选择合适的技能 |
exotel-phone-numbers | 看到和路线号码;余额(购买:通过Exotel支持) |
exotel-messaging-and-calls | 短信(印度DLT), WhatsApp,简单的电话,点击呼叫 |
exotel-voicebot-quickstart | exotel托管AI语音机器人:创建→测试呼叫→记录→修复 |
exotel-connect-voice-ai | 你自己的语音机器人(OpenAI, ElevenLabs, Gemini, Sarvam, Pipecat… |
exotel-sip-trunking | 通过SIP连接PBX / SBC / Voice AI平台;SIP错误码 |
exotel-call-control | 实时呼叫的腿部、桥接和ExoML操作(需求实现) |
exotel-flow-webhooks | 为流小程序编写和测试动态URL处理程序 |
exotel-call-debugging | 为什么呼叫或信息失败 |
exotel-conversation-quality | 会话智力评分 |
exotel skill list
exotel skill install all # detected agents, user-wide
exotel skill install exotel-sip-trunking --agent claude --project
exotel skill install all --dir ./my-agent/skills
技能也活在 /skills,所以 npx skills add exotel/ExotelMCP 作品。
安全,专为特工打造
- JSON输出 用管子吹或用
--json,错误包括(与Exotel的错误)code,message和一个hint). --dry-run对于发送、调用或写入的每个命令:打印准确的请求,而不是凭据。- 确认有帐单的东西或真正的电话响的东西
$),任何不可逆的(!), 任何改变实时呼叫路由(~)需要--yes或者一个交互式的“y”。没有它 CLI退出时显示代码3,并打印出它应该执行的操作。 - 退出代码: 0 ok, 1错误,2使用,3确认,4未登录。
- 在argv中没有秘密: API令牌和SIP密码来自一个隐藏的提示,一个env变量或
--…-stdin。whoami和mcp config掩盖秘密,除非你通过--reveal。
两个界面,一个登录
CLI直接调用Exotel的REST api。MCP服务器(https://mcp.exotel.com/mcp)给予代理人
VoiceBot, SMS, WhatsApp,会话智能等工具。 exotel init 设置两者
相同的证书;技能说明了每个任务使用哪个。
CI /非交互式
export EXOTEL_ACCOUNT_SID=… EXOTEL_API_KEY=… EXOTEL_API_TOKEN=… EXOTEL_API_BASE_URL=https://api.in.exotel.com
exotel numbers list --json
exotel trunk setup --name ci_trunk --number +91… --ip 203.0.113.10 --dry-run
环境变量覆盖保存的文件。 EXOTEL_AUTH_JSON 传递完整的MCP报头对象;
EXOTEL_MCP_URL 指向自托管的MCP服务器。
开发
cd cli && npm test # unit + CLI tests, no network
node bin/exotel.js doctor # live checks
npm pack # bundles ../skills into the package
安全笔记
- 事件接收者(
events listen,voice-ai … --listen,voice-ai inbound):收听127.0.0.1只有。集EXOTEL_EVENTS_USER/EXOTEL_EVENTS_PASS要求基本认证,并要求Exotel支持发送这些凭证 在事件端点上;否则任何拥有你的隧道URL的人都可以发布虚假事件。 - 你的机器人的公共wss URL:添加一个共享的秘密(
BOT_TOKEN在examples/exotel-voice-agent). exotel calls recording将您的Exotel凭据仅发送到*.exotel.com/*.exotel.in在HTTPS。exotel integrate elevenlabs setup给ElevenLabs您的Exotel API密钥和令牌(ElevenLabs需要他们的地方 调用);它先问。为它使用单独的API密钥,以便您可以自行撤销它。claude mcp add期间暂时接收MCP授权头作为命令参数exotel init; 其他客户端的配置文件以600模式编写。