上一节说了Jitsi会议的基本安装,现在我们希望别人用手机打入会议,或者在会议里面去呼叫某个人的手机号码。
那么我们需要安装jigasi,这个东西相当于一个SIP的网关,先说一下我们的结构
JitsiMeet------Jigasi---------Freeswitch(IVR)---------(E1)---------ChinaTelecom
也就是服务器安装了Jigasi网关,网关注册到Freeswitch这个SIP服务器,而我们的SIP服务器有两个作用,一个是自动话务台的功能,如果输入特定的房间号码,才将外部呼叫转入相应的Jitsi会议。另一个功能是通过E1线路和中国电信的PSTN对接。
准备工作:
1,中国电信的线路和Freeswitch对接。(这个是Freeswtich相关的知识,这里先不说)
2,在Freeswitch上面建一个SIP账号: 1111@192.168.0.1 密码:1234 (192.168.0.1是Freeswitch的地址)
其实在freeswitch的directory目录下面就有默认的账号,用里面的就好,最好改改密码。
3, Freeswitch里面5060端口是针对注册用户,5080端口针对非注册用户。所以在dialplan的default.xml文件里面增加下面拨号计划
<extension name="Jitsi Meet">
<condition field="destination_number" expression="^(36\d{8})$">
<action application="export" data="dialed_extension=$1"/>
<action application="set" data="ringback=${us-ring}"/>
<action application="set" data="sip_h_Jitsi-Conference-Room=$1"/>
<action application="set" data="call_timeout=30"/>
<action application="set" data="hangup_after_bridge=true"/>
<action application="bridge" data="{absolute_codec_string=OPUS}user/1111"/>
</condition>
</extension>
上面意思是说以36开头的10位数Jitsi会议, 比如会议名字为 3611111111,3612345678等。因为Jiasi网关是通过1111这个账号注册上来的,我们只需要呼叫1111就可以到达Jitsi。
但是多个Jitsi会议怎么区分,那就看 <action application="set" data="sip_h_Jitsi-Conference-Room=$1"/> , 这里将Jitsi会议的名字写入了SDP当初,Jigasi根据SDP当中的sip_h_Jitsi-Conference-Room这个信息的变量,然后将呼叫转入不同的会议。(不需要疑虑多个不同会议的呼叫用一个账号,可以并发的)
4,上面的做法有两个问题,1就是不检查合法用户,也就是任何人拨打了会议的房间名字,就转入了相应的房间。2就是限制了会议使用数字名字,不能用字母。其实很好解决,就是房间名字用字母单词,设置一个识别用的PIN码。
例如房间名字是 “ATestMeeting” ,PIN码是“3612345678”。当然这个信息你要放到你自己的数据库里面,然后自己设计一个UI来预订会议(会议名字,会议PIN码,发起人,参与人,时间,发邮件通知等等),这些弄好后,在第三步当中使用lua脚本来控制,用户呼叫某个特定主机号码,然后送入LUA脚本,提示输入PIN码,然后根据用户的PIN码去查询对应的会议房间名字,然后向Jigasi发起呼叫的时候,将查询到的房间名放入sip_h_Jitsi-Conference-Room就可以了。
5,上面基本处理完了Freeswitch端的工作,然后安装Jigasi
apt-get -y install jigasi
安装过程当中要求填写账号密码 ,账号格式是1111@192.168.0.1 密码:1234
装完后再/etc/jitsi/jigasi/下面有两个文件,config更多负责呼出(如果Freeswitch给了1111这个用户权限),sip-communicator.properties更多负责呼入。
在sip-communicator.properties当中看下这几个地方是否设定,否则会有一些奇怪的问题。
org.jitsi.jigasi.ENABLE_SIP=true
net.java.sip.communicator.service.gui.ALWAYS_TRUST_MODE_ENABLED=true
6,上面的配置基本能让你的电话能打进打出了。
但Jigasi还负责实时的语音转文字的功能,还有实行Jwt验证后,Jigasi无法直接和服务器通讯,所以以后还有一些额外的设置。