通常用户信息和拨号计划都是写道XML文件中的,我们可以让freeswitch使用接口调用信息,这样二次开发就方便得多
在 FreeSWITCH 使用 mod_xml_curl 模块调用远程服务器时,验证用户的过程在远程服务器(接口部分)完成。FreeSWITCH 会发送一个 HTTP GET 请求到你配置的 URL,请求中包含一些参数,如用户 ID、域名等。
请求的参数是 URL-encoded 格式的,不是 JSON。参数的具体内容取决于请求的类型。例如,对于目录(用户注册)请求,FreeSWITCH 会发送以下参数:
section:请求的类型,对于目录请求,这个值是 “directory”。tag_name:请求的标签名,对于目录请求,这个值是 “domain”。key_name:请求的键名,对于目录请求,这个值是 “name”。key_value:请求的键值,这是你的域名。
所以,一个完整的请求可能看起来像这样:
http://yourserver.com/directory.php?section=directory&tag_name=domain&key_name=name&key_value=example.com
然后,你的服务器需要解析这些参数,查询数据库,并返回一个 XML 格式的响应,包含用户的注册信息。
在我之前的示例中,密码是在返回的XML响应中提供的。当FreeSWITCH需要验证用户时,它会向你的服务器发送一个请求,包含用户的ID和域名。然后,你的服务器需要查询数据库,找到对应的用户,并将用户的密码和其他信息包含在返回的XML中。
例如,以下是一个可能的XML响应:
<document type="freeswitch/xml">
<section name="directory">
<domain name="example.com">
<user id="1000">
<params>
<param name="password" value="1234"/>
</params>
</user>
</domain>
</section>
</document>
在这个例子中,用户1000的密码被设置为1234。当FreeSWITCH收到这个响应时,它会使用这个密码来验证用户。
所以,验证用户的过程实际上是在FreeSWITCH中完成的,但是密码和其他用户信息是从你的服务器获取的。这样,你可以在你的服务器上管理用户信息,而不需要直接在FreeSWITCH中设置。密码不在服务里校验,就必须以明文返回,但是一般我们的服务会部署在内网,这样稍微好一些,我们可以使用https和白名单的形式来传输提高安全性。