编辑 /usr/local/freeswitch/conf/autoload_configs/xml_rpc.conf.xml
<configuration name="xml_rpc.conf" description="XML RPC">
<settings>
<param name="http-port" value="8889"/>
<param name="commands-to-log" value=".*"/>
</settings>
</configuration>
fs_cli -x 'load mod_xml_rpc'
fs_cli -x 'load mod_curl'
fs_cli -x 'curl http://127.0.0.1:8889/xmlapi/status'
哈哈,结果不错
api 要带参数怎么弄?
fs_cli -x 'curl http://127.0.0.1:8889/xmlapi/uuid_kill?735cc8f4-758a-4efd-b110-c0840e721ce8'
-ERR No such channel!
2025-06-13 16:19:35.493126 98.43% [DEBUG] mod_curl.c:209 method: get, url: http://127.0.0.1:8889/xmlapi/uuid_kill?735cc8f4-758a-4efd-b110-c0840e721ce8, content-type: (null)
2025-06-13 16:19:35.513144 98.43% [INFO] mod_xml_rpc.c:1088 Executed HTTP request command: [uuid_kill 735cc8f4-758a-4efd-b110-c0840e721ce8].
带 http 头要怎么弄?
fs_cli -x "curl http://127.0.0.1:8889/xmlapi/uuid_kill?735cc8f4-758a-4efd-b110-c0840e721ce8 append_headers 'k1:v111' append_headers 'k2:v222'"
抓包, 用 wireshark 看,如下
GET /xmlapi/uuid_kill?735cc8f4-758a-4efd-b110-c0840e721ce8 HTTP/1.1
Host: 127.0.0.1:8889
User-Agent: freeswitch-curl/1.0
Accept: */*
k1:v111
k2:v222
增加 basic 认证
<configuration name="xml_rpc.conf" description="XML RPC">
<settings>
<param name="http-port" value="8889"/>
<param name="auth-realm" value="freeswitch"/>
<param name="auth-user" value="freeswitch"/>
<param name="auth-pass" value="works"/>
<param name="commands-to-log" value=".*"/>
</settings>
</configuration>
按 mod_curl 文档
fs_cli -x 'curl http://freeswitch:work@127.0.0.1:8889/xmlapi/status'
但实际上,得到 401,不灵
下面是文档片段
If you want to pass basic authentication credentials then do this:
local auth_url = "http://username:password@mysecure_web_service.com"
local response = api:execute("curl", auth_url)
是不是我的做法有问题?