129 lines
3.5 KiB
Markdown
129 lines
3.5 KiB
Markdown
# 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要具有使用智能语音交互的权限)。
|
||
|
||
## 使用方法
|
||
|
||
初次使用时,当确定满足系统要求和业务要求的情况下,直接执行
|
||
|
||
```sh
|
||
./install.sh
|
||
```
|
||
|
||
如果没有执行权限就手动加一下`chmod +x install.sh`。
|
||
|
||
安装过程中会要求填入阿里云的AccessKeyID、AccessKeySecret、appkey参数,这些参数以后可以在`sdm/data/nls-cloud-sdm/conf/`中的配置文件中修改。
|
||
|
||
安装过程会随机生成FreeSWITCH的ESL密码和默认SIP密码,这些参数以后可以在`switch/conf/`中的配置文件中修改。
|
||
|
||
安装程序会自动启动容器。
|
||
|
||
### 进入fs_cli
|
||
|
||
```sh
|
||
./fs_cli.sh
|
||
```
|
||
|
||
如果没有执行权限就手动加一下`chmod +x fs_cli.sh`。
|
||
|
||
如果执行后无法进入请检查:
|
||
|
||
- 检查switch容器是否启动;
|
||
- 检查.fs_cli_conf中的密码和端口是否与event_socket.conf.xml中一致;
|
||
- 也有可能是FreeSWITCH服务还没有完全启动好。
|
||
|
||
### 重启服务
|
||
|
||
无论修改sdm配置还是switch配置,都得在服务重启后才会生效(fs_cli中也有reloadxml等重载配置的命令)
|
||
|
||
```sh
|
||
# 重启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,执行下面的命令
|
||
|
||
```sh
|
||
bgapi originate user/1001 &lua(demo/tts.lua)
|
||
```
|
||
|
||
1001应该可以接到电话,电话接起来后可以听到“你好,我是机器人XXX,很高兴认识你……”。
|
||
|
||
### ASR演示
|
||
|
||
进入fs_cli,执行下面的命令
|
||
|
||
```sh
|
||
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文件可以节省一点磁盘空间。 |