# Native Code > برنامه نویسی در Delphi > کامپوننت های سایر شرکت ها، و توسعه کامپوننت >  تشخیص برداشتن گوشی تلفن با kdtele

## aradsystem

دوستان سلام.

من میخوام وقتی که گوشی برداشته میشه یه پیامی پخش بشه. از کجا بفهمم گوشی برداشته شده؟ از csconnect که نمیشه. لطف کنید راهنمایی بفرمایید.

----------


## Hsimple11

دوست گرامی در این مورد هم مقاله هایی در سایت هست هم بحث شده. هم خود KDTele مثال کاملی دارد. اگر آن را ندارید برایتان آن را آپلود کردم :

----------


## Hsimple11

شما قسمت Answering Machine را در همین مثال Enabled کنید. بعد از تعداد زنگ مشخص گوشی برداشته میشه و فایل صوتی شما پخش میشه.

----------


## aradsystem

من میخوام عکس این کار رو انجام بدم. یعنی بفهمم که طرفی که وقتی من بهش زنگ می زنم بفهمم گوشی رو برداشته بعد براش پیغام را پخش کنم.

----------


## Touska

هیچ راهی فعلا برای Kdtele وجود نداره ، برای تشخیصش 

یک راه :  آنکه بعد از CsConnected شما بطور مرتب صدا را پخش کنید ، تا وقتی کاربر

کوشی را بر می دارد ، صدا رو گوش دهد ، وقتی هم گوشی را گذاشت ، قطعش کنید.

موفق باشید :)

----------


## aradsystem

با تشکر از راهنمایی شما.

من همین کار رو کردم ولی وقتی خاصیت autorepeat مربوط به kdvoice رو true می کنم . صدا با تکرار پخش میشه ولی وقتی طرف گوشی رو قطع میکنه نمیفهمه که ارتباط قطع شده. یعنی فقط صدارو با تکرار پخش میکنه. disconnect نمیشه.

----------


## Touska

شما باید خودتون باید با استفاده از رویداد OnDisconnect یا OnBusy پخش صدا را Stop نمایید.

موفق باشید :)

----------


## aradsystem

دوست عزیز وقتی صدا داره با تکرار پخش میشه اصلا رویداد onbusy یا ondisconnect اجرا نمیشه.

----------


## javidtaheri

سلام من در یک برنامه کالر آی دی با kdtele کار میکنم
گوشی تلفن اپراتور به مودم متصل است ولی وقتی زنگ میخورد و اپراتور گوشی را (که با مودم موازی است) بر میدارد مودم تغییر نمیکند و csConnect اجرا نمیشود 
آیا راه حلی وجود دارد:

----------


## Shadow Dancer

فکر میکنم csConnected فقط مخصوص وقتیه که از طریق مودم به تماس پاسخ داده بشه(با استفاده از متد Answer) چون ما در واقع مودم رو به عنوان ابزار ارتباطی مون انتخاب میکنیم. اگه یه مقدار بیشتر با این کامپوننت کار کنید متوجه میشید اونقدر امکانات وسیعی داره که اصلا نیازی به گوشی تلفن برای انجام کارهای اپراتور نیست

----------


## javidtaheri

میتوانید بیشتر توضیح بدهید؟

----------


## عقاب سیاه

مگه می شود وجود نداشته باشد
من دو تا نرم افزار می شناسم که با همین کامپوننت است و درست کار می کند.

----------


## khazaie01

کامپوننتهای دیگه چی ؟ کسی کار کرده ؟

----------


## mazgal2009

بابا KDTele خیلی ضعیف عمل کرده در این مورد من خودم در به در دنبال Event برای این کار میگشتم . OnAnswered یعنی وقتی گوشی برداشته شد !!! نه OnConnected !!!!  :اشتباه: 
کی میگه به درد نمی خوره !!؟؟ الان برای برنامه های تماس اتوماتیک یا برنامه ای که با شماره ها تماس بگیره و پیغام تبلیغاتی بده به درد میخوره ... من خودم این برنامه رو با Delphi و VB نوشتم ... 
کسی خواست خبر بده :
ecom65@yahoo.com

راستی فقط یه کامپوننت هست که باهاش میشه این کار رو کرد که اونم اگه کسی میخواد ایمیل بزنه راهنمایش می کنم ... 
کامپوننت Registered شدش رو من دارم و  برنامه کاملش رو ...  :لبخند:

----------


## Valadi

با سلام 



> بابا KDTele خیلی ضعیف عمل کرده در این مورد من خودم در به در دنبال Event برای این کار میگشتم . OnAnswered یعنی وقتی گوشی برداشته شد !!! نه OnConnected !!!!


KDTele خیلی قویه باید کامل بشناسیش 
اما در مورد کامپونت شما که می گید رویداد OnAnswered داره من این کامپونت با کلی زحمت کرک کردم ( بدون هیچ گونه محدودیت زمانی و نمایش نسخه دمو ) اما در ایران با خطهای فعلی و نبود زیر فرکانس (که بحث فنی مخابراتیه ) جواب نمی ده  و دقیق نیست 
ضمنا اسم اون اکتیو ایکس که این آقا برای نسخه دمو و تریال بازار سیاه باز کرده (لااقل میفروشی نسخه فولش بفروش نه اینکه نسخه که در خود سایت و تریال هست  ) VTapi ActiveX Control

در مورد KDTele با یک کم تغییر در سورس و یک کار میشه  و من این کار کردم و  100 درصد جواب گرفتم   (هم نسخه VCL و هم ActiveX Control)البته نسخه 4 این کامپونت

----------


## mazgal2009

سلام

نسخه فول آماده فروشه ... خیلی هم دقیقه و جواب هم میده . 
بیش از 30 مرکز مخابراتی رو خوده بنده تست کردم . البته بعضی مکان ها جواب نداده ولی مهم اینه که بیشتر جاها جواب بده نه همه جا !!!
البته شما هم درست میفرمائین ولی مشکل OnAnswered در KDtele پیاده سازی نشده ( اصلا ) ولی شما که با ( تغییر ) این کارو کردین واقعا شاهکار کردین  :قهقهه:  .

----------


## Javad_raouf

> در مورد KDTele با یک کم تغییر در سورس و یک کار میشه و من این کار کردم و 100 درصد جواب گرفتم (هم نسخه VCL و هم ActiveX Control)البته نسخه 4 این کامپونت


سلام میشه بگید چطوری این کار رو انجام دادید؟

----------


## Meysam Arab

سلام بزرگواران،ظاهرا خیلی وقته کسی به این قسمت نیامده،در هر صورت من سوالم را می پرسم،کسی مودمی سراغ داره که بتونه تمامی امکانات KDTele را پشتیبانی کند؟فکر می کنم این سوال را خیلی ها داشته باشند!لطفا ما را هم در تجربیات خود سهیم کنید!!!!متشکرم

----------


## Vahid.Shatery

سلام

در مورد مشکل شما باید عرض کنم که مشکل از مودم نیست . مشکل از سوئیچینگ مخابرات است که امکان تشخیص برداشتن گوشی وجود ندارد که این مورد در تمام ایران متاسفانه به این گونه است .
و اما راه حل : شما باید به جای پیام اولی پیغامی شبیه این پیغام را قرار دهید : ( لطفا جهت شنیدن پیام کلید ستاره را فشار دهید ) . که این پیام تکرار می شود .
لذا شما باید در برنامه از یک DTMF استفاده کنید که به محض فشردن ستاره پیام شما پخش شود که این کار چند مزیت داره .
1 : در گزارش گیری شما مطمئن هستید که طرف مقایل کلید ستاره را فشرده و شما تماس را موفق ثبت می کنید که در حات قبلی تمام تماس های شما موفق در نظر گرفته می شد در حالیکه شخص مقایل اصلا گوشی را برنداشته .
2: مطمئن هستید که شخصی عاقل و بالغ و با سواد گوشی را برداشته ، که این مورد خیلی مهمه که پیام های حساس مانند اعلام بدهی و ... حتما شخص عاقل و بالغ و با سواد گوشی را جواب بده ، نه یک بچه .

نکته ای که هست اینه که شما برای DTMF ستاره زمان 30 ثانیه را میتونین تنطیم کنید که در صورتیکه شخص بعد از گذشت 30 ثانیه ستاره را فشار نداد پیام " از تلفن شما هیچ علائمی دریافت نشد " پخش و تماس خانمه پیدا کند و در صورت نیاز با شخص دوم و یا اشخاص بعدی تماس بگیرد .

امیدوارم مفید بوده باشد.
موفق باشید

----------


## benyaminrahimi

1 شما باید رو kdvoice پراپرتیه detect voice کنی 
2 تو قسمت on callsate=csconected اینو بنویسی

 KDVoice.ListenStart(KDPhone.WaveRecID);بعد تو kdvoice 



procedure Tfm_payam_tel.KDVoiceVoiceDetected(Sender: TObject;
  TypeOfVoice: TTypeOfVoice);
begin
  inherited;
  if TypeOfVoice = tvAnyVoice then
  begin
    KDVoice.ListenStop;
    lvRet := KDVoice.Play(KDPhone.WavePlayID,
      aplayfile, 0, -1);
    if lvRet <> 0 then
    begin
      status.lines.add('خطا: ' + KDPhone.GetErrorMsg(lvRet));
      KDPhone.Hangup;
    end;
  end;
end;

----------


## benyaminrahimi

همیشه راه داره یکمی هلپشو بخوننین بد نیست ...

البتته نظر من به وحید هم نزدیکتر است


به اون دوستمونم عرض کنم مودم zoltrix 3chip turbo
با ضمانت زولتریکس کیش

----------

