ShengShengBuXi/ShengShengBuXi.ConsoleApp
2025-03-27 23:30:20 +08:00
..
Models 添加项目文件。 2025-03-27 23:30:20 +08:00
mp3 添加项目文件。 2025-03-27 23:30:20 +08:00
Services 添加项目文件。 2025-03-27 23:30:20 +08:00
appsettings.json 添加项目文件。 2025-03-27 23:30:20 +08:00
config.json 添加项目文件。 2025-03-27 23:30:20 +08:00
old 添加项目文件。 2025-03-27 23:30:20 +08:00
Program.cs 添加项目文件。 2025-03-27 23:30:20 +08:00
README.md 添加项目文件。 2025-03-27 23:30:20 +08:00
ShengShengBuXi.ConsoleApp.csproj 添加项目文件。 2025-03-27 23:30:20 +08:00

生生不息电话亭

项目介绍

这是一个模拟电话亭的应用程序允许用户通过数字键盘进行拨号并录制语音。系统支持通过SignalR与服务器进行实时通信实现配置的远程更新和音频文件的传输。

项目配置

1. 应用程序设置 (appsettings.json)

{
  "SignalRHubUrl": "http://localhost:5000/phonehub",  // SignalR hub的URL
  "ConfigBackupPath": "config.json",                  // 配置文件备份路径
  "AutoConnectToServer": true                         // 是否自动连接到服务器
}

2. 电话亭配置 (config.json)

{
  "AudioFiles": {
    "AudioBasePath": "mp3",                       // 音频文件基础路径
    "WaitingToneFile": "等待嘟音.wav",             // 等待嘟音文件
    "WaitForPickupFile": "等待接电话.mp3",          // 等待接电话音频文件
    "PhonePickupFile": "电话接起.mp3",              // 电话接起音频文件
    "PromptUserRecordFile": "提示用户录音.mp3",       // 提示用户录音音频文件
    "BeepPromptFile": "滴提示音.wav",               // 滴提示音文件
    "DigitToneFileTemplate": "{0}.mp3"            // 数字按键音频文件模板
  },
  "Dial": {
    "MinDigitsToDialOut": 8,                      // 拨号所需的最小位数
    "AutoDialOutAfterSeconds": 5,                 // 无新按键后自动拨出的等待秒数
    "ResetTimeoutSeconds": 10                     // 位数不足时,无操作重置的等待秒数
  },
  "Recording": {
    "RecordingFolder": "recordings",              // 录音保存文件夹
    "RecordingDeviceNumber": 0,                   // 录音设备编号
    "SampleRate": 16000,                          // 录音采样率
    "Channels": 1,                                // 录音通道数1=单声道2=立体声)
    "BufferMilliseconds": 100,                    // 录音缓冲区大小(毫秒)
    "SilenceThreshold": 0.02,                     // 静音检测阈值
    "SilenceTimeoutSeconds": 30,                  // 无声音自动挂断的时间(秒)
    "AllowUserHangup": true                       // 是否允许用户手动挂断(按回车键)
  },
  "CallFlow": {
    "WaitForPickupMinSeconds": 3,                 // 等待接电话音频的最小持续时间(秒)
    "WaitForPickupMaxSeconds": 6,                 // 等待接电话音频的最大持续时间(秒)
    "PlayPickupProbability": 0.15                 // 播放电话接起音频的概率0-1之间的小数
  }
}

使用方法

  1. 确保音频文件夹默认为mp3中包含所有必要的音频文件。
  2. 运行应用程序它将自动连接到配置的SignalR服务器如果启用
  3. 使用数字键盘0-9输入数字达到配置的位数后会自动拨出。
  4. 也可以按回车键手动拨出。
  5. 录音过程中,可以通过回车键手动挂断(如果配置允许)。
  6. 系统也会在检测到指定时间无声音后自动挂断。
  7. 录音完成后将尝试上传到服务器并保存在本地的recordings文件夹中。

SignalR服务器接口

服务器需要提供以下方法:

  1. GetLatestConfig - 获取最新配置
  2. UploadRecording - 上传录音文件

客户端监听以下方法:

  1. ReceiveConfigUpdate - 接收配置更新
  2. ReceiveAudioFile - 接收音频文件更新

实时更新

系统支持实时更新以下内容:

  1. 所有的配置项 - 通过SignalR的ReceiveConfigUpdate方法
  2. 音频文件 - 通过SignalR的ReceiveAudioFile方法

更新会即时生效,不需要重启应用程序。