首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> VC >> 關於VC++

基於 TurboWay 電話卡的語音服務系統開發實戰

     編輯:關於VC++

將電腦與電話系統整合形成無人值守自動語音服務,在現今社會已相當普及。使用者撥打電話,依語音提示按鍵操作即可完成各項服務。本文以筆者過往使用 VC 開發的「投訴搶修管理系統」為例,詳細說明基於 TurboWay TW8A 電話卡的語音服務系統實作細節。

硬體安裝與驅動設定

  1. 將 TW8A 電話卡插入擴充槽,設定跳線使其佔用 C800-EF00 擴充記憶體區塊中 2KB 空間,驅動程式會自動偵測正確位址。(注意:若使用 EMM386 等佔用擴充記憶體的軟體,需在 CONFIG.SYS 中預留對應位址空間,否則驅動程式會回報找不到卡錯誤。TW8A 出廠預設位址為 D000。)
  2. Windows 95:將 TW8A.VXD 與 TW8A.DLL 複製至 \SYSTEM 目錄。
    Windows NT 4.0:將 TW8A.SYS 複製至 \SYSTEM32\DRIVERS,TW8A.DLL 複製至 \SYSTEM32,並執行 REGINI TW8A.INI 註冊驅動。
  3. VC 專案中加入 TW8A.H 標頭檔,連結 TW8A.LIB 匯入庫,即可使用 TW8A 提供的語音介面開發各類電話語音服務程式。

核心功能模組與程式碼實作

系統主要功能包含投訴受理、資訊查詢、特殊管理功能,以下節錄關鍵程式碼片段:

1. 投訴受理流程(按 1-4 鍵)

使用者按鍵後進入對應投訴類型,系統播放提示並同步錄音,掛機後自動外撥投訴處理;30 秒無人接聽則轉撥主管號碼。

else if (inputchar[i] == APPEAL) {
    switch (dtmf) {
    case '1': case '2': case '3': case '4':
        if (inputchar[i] == LEAVEWORD) dtmf = '0';
        filenamestr = GetFileName(dtmf, i);
        strcpy(filename[i], filenamestr);
        fail = TW_StartRecordFile(i, filename[i], 0, LONG_MAX);
        if (fail == -1) {
            MessageBox("初始錄音失敗!", "錯誤", MB_OK | MB_ICONSTOP);
            strcpy(filename[i], welcomfile);
            TW_StartPlayFile(i, filename[i], 0, LONG_MAX);
            TW_StartPlayFile(3, filename[i], 0, LONG_MAX);  // 放音模組播放
            CS[i] = WS_PLAY;
            inputchar[i] = START;
        } else {
            CS[i] = WS_RECORD;
        }
        break;
    }
}

2. 資訊查詢功能(按 3 鍵進入)

提供水費、電費、氣費查詢,播放完成後自動返回歡迎語音。

else if (inputchar[i] == INQUIRE) {
    switch (dtmf) {
    case '1': strcpy(filename[i], INFORMATION1); CS[i] = WS_PLAYINF; break;
    case '2': strcpy(filename[i], INFORMATION2); CS[i] = WS_PLAYINF; break;
    case '3': strcpy(filename[i], INFORMATION3); CS[i] = WS_PLAYINF; break;
    default:  strcpy(filename[i], chooseinf); break;
    }
    TW_StartPlayFile(i, filename[i], 0, LONG_MAX);
    TW_StartPlayFile(3, filename[i], 0, LONG_MAX);  // 放音模組
    while (TW_PlayFileRest(i) > 0 && TW_PlayFileRest(3) > 0);
}

3. 特殊管理功能(按 0 鍵,需密碼驗證)

  • 密碼 1999:查詢留言與各類投訴記錄(支援 * 查最新留言、# 查最新投訴)。
  • 密碼 2000:錄製資訊查詢語音檔(水/電/氣費),任意鍵結束錄音。
  • 密碼錯誤或 15 秒無輸入則自動掛機。
else if (inputchar[i] == PARTICULAR) {
    passwordpointer = 0;
    password[passwordpointer++] = dtmf;
    TW_StartTimer(i, 30);
    CS[i] = WS_WAITFORPASSWORD;
}
case WS_WAITFORPASSWORD:
// ... 密碼驗證邏輯

總結

TurboWay TW8A 電話卡搭配 VC 開發,可快速建構功能完整的電話語音服務系統。完整原始碼與詳細文件請參考本文配套源碼下載。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved