我们呼叫一个目标分机,并向给本次呼叫指定一个自定义的uuid,应该是这样:
originate {origination_uuid=xxxxxx-xxxxxx-xxxxxxx-xxxxx}user/1001 &park
在freeswitch的wiki和freeswitch权威指南中,都可以找到相关说明
但是两个分机相互拨打,那么每个分机的uuid都是系统生成的,默认情况下是这样的。
如果想要分机相互拨打,每个分机的uuid也都使用我们自己指定的uuid,应该如何修改呢?
经过追踪freeswitch的源代码,查明,呼叫产生的时候,会从switch_core_session.c中的switch_core_session_request_xml开始创建session,然后创建channel
创建session时,读取xml配置文件,并从配置文件中查找uuid变量,将uuid参数传递给创建channel的函数。
创建channel时,如果配置文件提供了uuid值,则使用该uuid,如果不存在,则系统自己生产一个uuid(权威指南中有写)。
根据这些描述,我修改了分机的配置文件(lua脚本动态生成的配置文件),当然也可以在conf/directory/default目录下修改分机的配置文件
重新注册分机后,再次拨打,就是我们指定的uuid了,并且不用在呼叫的时候,使用origination_uuid特别指定uuid