东进语音卡,取得按键值的问题

knife_s 2010-06-06 01:28:08
我根据东进语音卡的例程写的,总是不能修改数据库
工作流程就是拔打列表中的电话,接通后,播放一段录音,取得用户按键后,改写数据库


procedure dowork(channelno:integer);//业务流程
var
dialnum:pchar;
result:integer;
code:integer;
tel :string;
begin
case channel[channelno].step of
0:begin
if (channel[channelno].channeltype =trunk) and ( channel[channelno].state=free) then
begin
if main.telebox.Items.Count>=1 then
begin
channel[channelno].dtmf :=main.telebox.Items.Strings[0];
main.telebox.Items.Delete(0);//从表中取走号码,防止另外一个通道也拨同一个号码
main.stategrid.cells[3,channelno+1]:='拨打电话:'+channel[channelno].dtmf;
startsigcheck(channelno);//开始新的信号音检测
dialnum:=pchar(channel[channelno].dtmf );
offhook(channelno);//摘机
channel[channelno].state:=occupy;
starttimer(channelno,4);//开启计时器
sig_startdial(channelno,dialnum,',,',0);//外拨
channel[channelno].step:=100;
end
end
end;
100:begin
if ElapseTime(channelno,4)>=2000 then //超时处理
begin
main.telebox.Items.Add(channel[channelno].dtmf);//把号码加入到电话表中,留待下次呼出
resetchannel(channelno);//复位通道
end;
result:=sig_checkdial(channelno);
case result of
//S_NORESULT:;//还没有检测到结果
S_BUSY,S_NOBODY,S_NOSIGNAL://遇忙、没人接听,没有信号
begin
main.telebox.Items.Add(channel[channelno].dtmf);//把号码加入到电话表中,留待下次呼出
resetchannel(channelno);//复位通道
end;
S_CONNECT:begin
tel := channel[channelno].dtmf;
initdtmfbuf(channelno); //清空掉电话号码信息

main.stategrid.cells[3,channelno+1]:=main.stategrid.cells[3,channelno+1]+'..对方摘机,开始放音';
startplayfile(channelno,'voc\111.pcm',0);//文件放音
channel[channelno].step:=101;
end

end// end of case
end;
101:begin
if checkplayend(channelno) then //本程序判断呼叫成功的条件是声音放完完毕
begin

code := GetDtmfCode(channelno); //将按键存入

main.qry.First;
while not main.qry.Eof do
begin
if main.qry.FieldByName('Mobile').AsString = tel then
begin
FormRandom.qryS.Edit;
if code = 1 then
main.qry.FieldByName('state').AsString := '同意
else
main.qry.FieldByName('state').AsString := '没时间';
main.qry.Post;
end;
main.qry.Next;
end;
resetchannel(channelno);
end;
end
end;// end of case
end;//end of dowork
...全文
1894 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
福禄小胸弟 2011-04-18
  • 打赏
  • 举报
回复
楼主要注意语法规范哦呵呵~看着轻松些~~
学习了~~
英雄111888 2010-06-07
  • 打赏
  • 举报
回复
学习下
不担心 2010-06-07
  • 打赏
  • 举报
回复
在code := GetDtmfCode(channelno);获取按键信息之前先调用InitDtmfBuf函数;

procedure InitDtmfBuf(wChnlNo: WORD); stdcall; far external 'Tc08a32.dll';
SuperTitan002 2010-06-06
  • 打赏
  • 举报
回复
如果只是存不了盘,应该在程序中调试下
返回的电话号码有可能后面带了回车符之类的
亮剑_ 2010-06-06
  • 打赏
  • 举报
回复
1、调试一下,看有没有执行到Post提交的地方
2、如果发现是语音卡API的原因,最好是咨询厂家
SQLDebug_Fan 2010-06-06
  • 打赏
  • 举报
回复
咨询一下东进的技术部门。

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧