|
||
---|---|---|
sdm | ||
switch | ||
docker-compose.yml | ||
fs_cli.sh | ||
install.sh | ||
README.md | ||
restart.sh |
docker一键运行阿里云SDM(MRCP)和FreeSWITCH
版本
- FreeSWITCH 1.10.10
- SDM单机版(支持100路asr并发+100路tts并发)
系统要求
- linux
- docker
- docker compose (安装docker engine时会自动安装好)
- lua5.1
- luarocks
- jq
- openssl
业务要求
在阿里云开通“智能语音交互”业务,完成创建项目并生成AccessKeyID和AccessKeySecret,需要得到AccessKeyID、AccessKeySecret和appkey这几个参数(注意AccessKey要具有使用智能语音交互的权限)。
使用方法
初次使用时,当确定满足系统要求和业务要求的情况下,直接执行
./install.sh
如果没有执行权限就手动加一下chmod +x install.sh
。
安装过程中会要求填入阿里云的AccessKeyID、AccessKeySecret、appkey参数,这些参数以后可以在sdm/data/nls-cloud-sdm/conf/
中的配置文件中修改。
安装过程会随机生成FreeSWITCH的ESL密码和默认SIP密码,这些参数以后可以在switch/conf/
中的配置文件中修改。
安装程序会自动启动容器。
进入fs_cli
./fs_cli.sh
如果没有执行权限就手动加一下chmod +x fs_cli.sh
。
如果执行后无法进入请检查:
- 检查switch容器是否启动;
- 检查.fs_cli_conf中的密码和端口是否与event_socket.conf.xml中一致;
- 也有可能是FreeSWITCH服务还没有完全启动好。
重启服务
无论修改sdm配置还是switch配置,都得在服务重启后才会生效(fs_cli中也有reloadxml等重载配置的命令)
# 重启sdm和switch
./restart.sh
# 重启sdm
./restart.sh sdm
# 重启switch
./restart.sh switch
在switch/scripts中写的lua脚本修改后不需要重启服务就能生效。
默认端口
这个包完全修改了FreeSWITCH的默认端口号,具体如下:
业务 | 端口号 |
---|---|
internal_sip_port | 62260 |
internal_tls_port | 62261 |
external_sip_port | 62280 |
external_tls_port | 62281 |
ws-binding | 62266 |
wss-binding | 62243 |
event_socket | 62221 |
rtp-start-port | 30000 |
rtp-end-port | 39999 |
(mrcp)rtp-port-min | 20000 |
(mrcp)rtp-port-max | 29999 |
除了FreeSWITCH外,SDM也是以host模式启动,其占用的端口都是阿里云出厂时的默认值:
业务 | 端口号 |
---|---|
SIP | 7010 |
MRCP | 1544、1554 |
RTP | 10000 - 20000 |
测试演示
分机注册
容器启动后,通过SIP端口使用1001-1019分机号和安装时生成的默认SIP密码,应该可以正确注册成功。
回声演示
分机注册成功后,用分机呼叫9196,应该可以启动回声应答(你说什么它同时给你放什么)。
TTS演示
进入fs_cli,执行下面的命令
bgapi originate user/1001 &lua(demo/tts.lua)
1001应该可以接到电话,电话接起来后可以听到“你好,我是机器人XXX,很高兴认识你……”。
ASR演示
进入fs_cli,执行下面的命令
bgapi originate user/1001 &lua(demo/asr.lua)
1001应该可以接到电话,电话接起来后可以跟机器人做“复读游戏”,你说一句,它用asr识别后再用tts给你复读一句。
如果asr.lua执行出错,请按照
switch/scripts/demo/asr.lua
中的注释安装lua依赖包再试试。
开发建议
请不要把业务代码提交到这个仓库里来,建议你把仓库接到你的业务目录中后直接删除.git目录,让你的业务仓库接管后面的代码管理工作。
安装成功后删除switch/sounds/sounds.tar.bz2文件可以节省一点磁盘空间。