將電腦與電話系統整合形成無人值守自動語音服務,在現今社會已相當普及。使用者撥打電話,依語音提示按鍵操作即可完成各項服務。本文以筆者過往使用 VC 開發的「投訴搶修管理系統」為例,詳細說明基於 TurboWay TW8A 電話卡的語音服務系統實作細節。
TW8A.VXD 與 TW8A.DLL 複製至 \SYSTEM 目錄。TW8A.SYS 複製至 \SYSTEM32\DRIVERS,TW8A.DLL 複製至 \SYSTEM32,並執行 REGINI TW8A.INI 註冊驅動。TW8A.H 標頭檔,連結 TW8A.LIB 匯入庫,即可使用 TW8A 提供的語音介面開發各類電話語音服務程式。系統主要功能包含投訴受理、資訊查詢、特殊管理功能,以下節錄關鍵程式碼片段:
使用者按鍵後進入對應投訴類型,系統播放提示並同步錄音,掛機後自動外撥投訴處理;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;
}
}
提供水費、電費、氣費查詢,播放完成後自動返回歡迎語音。
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);
}
else if (inputchar[i] == PARTICULAR) {
passwordpointer = 0;
password[passwordpointer++] = dtmf;
TW_StartTimer(i, 30);
CS[i] = WS_WAITFORPASSWORD;
}
case WS_WAITFORPASSWORD:
// ... 密碼驗證邏輯
TurboWay TW8A 電話卡搭配 VC 開發,可快速建構功能完整的電話語音服務系統。完整原始碼與詳細文件請參考本文配套源碼下載。