FreeSwitch模塊mod_unimrcp配置數據庫化初探
在我們使用FreeSwitch對接mrcp時,最常用的方式就是mod_unimrcp模塊,但mod_unimrcp模塊需要對conf/mrcp_profiles/這里進行對應的mrcp配置,在這里一定要記住,這里的unimrcp是作為client去和其它第三方的mrcp server對接,由mrcp server和asr/tts打交道。
不管是asr還是tts,對于unimrcp的配置都差不多,只是在一些參數調整上會存在一定的差別。以下示例為一個使用科大訊飛的mrcp v2的unimrcp在FreeSwitch中的配置示例:
1. <include>
2. <profile name="xfmrcpv2asr" version="2">
3. <param name="client-ip" value="172.100.0.217"/>
4. <param name="client-port" value="8101"/>
5. <param name="server-ip" value="172.100.0.200"/>
6. <param name="server-port" value="5070"/>
7. <param name="sip-transport" value="udp"/>
8. <param name="rtp-ip" value="172.100.0.200"/>
9. <param name="rtp-port-min" value="30000"/>
10. <param name="rtp-port-max" value="58000"/>
11. <param name="rtcp" value="1"/>
12. <param name="rtcp-bye" value="2"/>
13. <param name="rtcp-tx-interval" value="5000"/>
14. <param name="rtcp-rx-resolution" value="1000"/>
15. <param name="codecs" value="PCMU PCMA L16/96/8000"/>
16. <synthparams>
17. </synthparams>
18. <recogparams>
19. </recogparams>
20. </profile>
21.</include>
但這樣存在一個問題,每增加一個服務器對接,都需要去在conf/mrcp_profiles下做類似的配置,那么可不可以直接配置到數據庫中呢?肯定可以啦。
問題在mod_unimrcp.c這個實現中去對以下幾個函數進行數據庫化的處理:
process_profile_config
process_rtp_config
process_mrcpv1_config ,只有version為1才調用
process_mrcpv2_config , 只有version為2才調用
mod_unimrcp_do_config
把這些函數按我們數據庫結構進行查詢,然后一一對應匹配,那么就把這些內容給數據庫化了。