PDA

View Full Version : کار با kdtele



msoleiman
پنج شنبه 17 دی 1388, 22:30 عصر
سلام به همه دوستان و عزیزان میخواهم یک برنامه تلفن گویا بنویسم و به یک مشکل برخورد کردم
از کامپوننت Kdtele استفاده میکنم مشکل من این است که در صورتی که سیستم قادر به تشخیص یک شماره تلفن نبود یک پیغامی پخش میشود که تلفن کننده میبایستی شماره تلفن خود را وارد نماید من در رویداد ondigitdetection این عملیات را نوشته ام ولی مشکل اینجاست که در صورتی که من در شرایط برنامه گفته باشم اگر .. کلید 1 را فشار دهید وشخص نیز که تلفن خود را وارد کرد دارای عدد 1 بود آن شرط اجرا میشود یعنی هنوز نتوانسته ام که تعدادی کلید فشرده شده را شناسایی کنم ..
حالا اگر دوستان کسی این کار را انجام داده است راهنمایی کند بسیار ممنون میشوم ....
email:mohammad.soleiman@gmail.com

شاد باشید و شاد زندگی کنید ...

benyaminrahimi
جمعه 18 دی 1388, 01:32 صبح
معمولا تو اين تيپ کارا با يک متغيير مرحله بندي مي کنند
و از کليد ستاره يا مربع * # براي رفتن به مراحل بعدي يا تصميم گيري استفاده ميکنند

msoleiman
شنبه 19 دی 1388, 17:25 عصر
عزیزم این که یا با کاراکتر * و یا # این کار ر را انجام دهم میدانم فقط مشکل اینجاست که event مربوطه ondigitdetction هر کاراکتر را به تنهایی میشناسد یعنی اگر شخص بخواهد 913 را واردکند یکبار digit برابر 9 و یک بار 1 و یکبار 3 میشود . البته این کار که یک متغیر رشته ای نیز تعریف کنم و اینها را داخل آن بریزم نیز انجام دادم که هنوز نشده است .... هم اکنون به یاری سبزتان و اندیشه بازتان نیازمندم...

همیشه شاد باشید و شاد زندگی کنید ...

benyaminrahimi
شنبه 19 دی 1388, 22:22 عصر
عزیزم این که یا با کاراکتر * و یا # این کار ر را انجام دهم میدانم فقط مشکل اینجاست که event مربوطه ondigitdetction هر کاراکتر را به تنهایی میشناسد یعنی اگر شخص بخواهد 913 را واردکند یکبار digit برابر 9 و یک بار 1 و یکبار 3 میشود . البته این کار که یک متغیر رشته ای نیز تعریف کنم و اینها را داخل آن بریزم نیز انجام دادم که هنوز نشده است .... هم اکنون به یاری سبزتان و اندیشه بازتان نیازمندم...

همیشه شاد باشید و شاد زندگی کنید ...


من نفهمیدیم میدونی یا نه در هرصورت این کدی که برات گذاشتم فکر کنم همه سوالات رو جواب بده


///by benyamin rahimi on 87/06/21
procedure Tfmain.KDPhoneDigitDetected(Sender: TObject; Digit: Char;
CallHandle: Integer);
begin
if step =1 then
begin
if digit<>'*' then eshomare.Text := eshomare.Text+Digit;
//////////////////


if digit='*' then
begin
KDVoice.PlayStop;
shomare:=eshomare.Text;
mdf.Active := false ;
mdf.CommandText := 'select * from tbl_mdf where telno='+''''+shomare+'''';
mdf.Active := true ;
if mdf.RecordCount >0 then
begin
lvret := kdvoice.PlayMultipleFiles(KDPhone.WavePlayID,appdi r+'payam.wav',lvTotalBytes);
step :=2;
exit;
end else
begin
lvret := kdvoice.PlayMultipleFiles(KDPhone.WavePlayID,appdi r+'incorrect.wav',lvTotalBytes);
step:=3 ;
exit;
end;
end;
end;
//////////////////


if step = 2 then
begin
if digit='*' then
begin
lvDevNumber:=KDPhone.WavePlayID;
KDVoice.PlayStop;
lvRet:=KDVoice.Rec(lvDevNumber,appdir+'rec.wav');
end;
if digit='#' then
begin
KDVoice.RecStop;
lvret := kdvoice.PlayMultipleFiles(KDPhone.WavePlayID,appdi r+'bye.wav',lvTotalBytes);
///////////////////////////
elam_kharabi.Append;
elam_kharabigen.Value := false;
elam_kharabitarikh.Value := ShDateToStr(tarikh.Date);
elam_kharabizaman.Value := timetostr(time);
elam_kharabishomare.Value := shomare;
elam_kharabivoice.LoadFromFile(appdir+'rec.wav');
elam_kharabi.Post;
///////////////////
DeleteFile(appdir+'rec.wav') ;

///////////////////////
step:= 3;
end;

end;
//////////////////

msoleiman
جمعه 25 دی 1388, 16:21 عصر
مشکل پیاده سازی من کجاست
مورد این است که هنگامی که تلفن شخص شناسایی نمی شود و یا شخص با موبایل تماس میگیرد میبایستی وی تلفن خود را به صورت دستی وارد کند حال مشکل این جاست که هنگام ورود شماره توسط وی شرایط دیگر اجرا میشود یعنی if digit = '1' , و غیره




procedure TForm1.KDPhone1DigitDetected(Sender: TObject; Digit: Char;
CallHandle: Integer);
var
Press_botton :string;
total,lvr,lvr_rec,i,number_Of_Agent,Counter_of_Age nt,totalbytes:integer;
Code_Of_City ,Telecom_Code,Number,Sum_Of_Digites,str :string;
Check_Position : integer;
begin

if ((digit = '1' )or (digit = '2')or (digit = '3')or (digit = '4')or (digit = '5')or (digit = '6')) then
begin // 1 ya 2 3 4 5

if (digit = '1' ) and (Caller_Number = '') and (Check_Position =0)or (copy (Caller_Number , 1,1 )= '9') then
begin///////////\/\/\/\ Daryaft Shomareh neyandegan
//if Check_Position = True then
if ((Caller_Number = '') or(copy (Caller_Number , 1,1 )= '9')) then
begin // شماره تماس گیرنده مشخص نیست یا با موبایل تماس گرفته شده است
{
یک تابع صدا زده میشود که دران به کاربر
میگوید لطفن تلفن خود را وارد کنید
چون تلفن شخص شناسایی نشده است یا اینکه
با موبایل تماس گرفته شده است}
end// شماره تماس گیرنده مشخص نیست یا با موبایل تماس گرفته شده است
end ///////////\/\/\/\ Daryaft Shomareh neyandegan
else // digit <> 1
begin //digit <> 1
if (digit = '2' )and(Check_Position = 0) then
begin // digit = 2
// if Check_Position = True then

end// digit = 2
else // digit <> 1 , <> 2
if digit = '3' then
begin
// if Check_Position = False then
end
else //digit <> 1 <> 2<> 3
if digit='4' then
begin

end
else
if digit = '5' then
begin

end
else
if digit = '6' then
begin
Caption := str + digit;
end;

end // digit <> 1
end;//1 ya 2 3 4 6

msoleiman
جمعه 25 دی 1388, 16:52 عصر
یعنی کسی نیست به این مشکل من برخورد کرده باشه ؟
ر