PDA

View Full Version : آموزش: سیستم های تلفن گویای حرفه ای مبتنی بر VB 6.0



hamed_basic
چهارشنبه 02 اسفند 1391, 12:54 عصر
سلام خدمت همه دوستان
من یه مدت پیش یه برنامه تلفن گویای کامل نوشتم و از اون موقع حدود 20 تا سازمان دولتی و شرکت و موسسه خصوصی هم فروختمش .

چند روز پیش داشتم توی تالار برنامه نویس میگشتم دیدم آموزش های این بحث به زبان وی بی وجود نداره و تو کل نت هم آموزش کامل و بدرد بخوری نیست ، از طرفی کسی رو هم ندیدم که بتونم مشکلاتی که پیش میاد رو باهاش مطرح کنم لذا تصمیم گرفتم این مبحث رو اینجا شروع کنم ، چند تا پست هم توی بقیه قسمت ها گذاشتم که اونا رو هم میارم اینجا ، البته باید دید که اصلا کسی متقاضی دریافت این آموزش ها هست یا نه ، چون اصلا دوست ندارم در حال حاضر که کلی کار رو سرم ریخته وقت بزارم و آموزشی بدم که کسی نیازی بهش نداشته باشه.

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

اگه اصرار دارم که مخاطبی داشته باشم من رو ببخشید چون الان فوق العاده گرفتارم و دلیلی نداره تو این موقعیت این بحث رو بزارم اگه کسی نبود بعداً سر فرصت انجام می دم .

با تشکر از همه دوستان

hamed_basic
چهارشنبه 02 اسفند 1391, 13:10 عصر
نکاتی در مورد طراحی سیستم های تلفن گویا با VB6


سلام به همه
من یه مدت پیش یه برنامه با KD نوشتم (ورژن 4)
یه چند جایی مشکل داشتم که به بدبختی حلش کردم
حالا می خوام یه چند تا از تجربیات اون رو بزارم که اگه کسی مشکل مشابهی داشت مشکلش حل شه

اول یه سری اطلاعات:
من تو محیط vb6 برنامه رو نوشتم
واسه 16 خط
از کارت های دیالوجیک که میشه گفت بهترین انتخاب واسه سیستم تلفن گویاست استفاده کردم (البته کارتها الان خیلی گرون شدن)
مدل کارتهای من D/4PCI & D/4PCIU هست البته میشه از هرجور کارتی حتی مودم استفاده کرد اما فکر نکنم هیچ ...ی بخواد 8 یا 16 تا مودم روی کامپیوترش نصب کنه

اگه از کارت های دیالوجیک استفاده می کنید :
به ترتیب کارای زیر رو انجام بدید
1 - نصب کارت ها روی مادربرد
2 - نصب برنامه Dialogic System Release 5.1.1 (الان ورژن 6 هم هست اما از TAPI پشتیبانی نمی کنه و باید فقط همین ورژن نصب شه)
3 - نصب برنامه Dialogic System Release 5.1.1 Feature Pack 149
4 - نصب Dialogic Point Release For D/4PCIUF
5 - نصب Dialogic System Release 5.1.1 Service Pack 1
6 - تنظیم برنامه DCM برای لود شدن در استارت آپ ویندوز و نصب Dialogic Wav Driver For TAPI
7 - .... یه سری تنظیمات دیگه هم داره که اگه نتونستید پیداشون کنید بگید اونا رو هم بزارم
8 - نصب KDTELE Tools V4.0.33 و کرک آن

نکته ها :
تحت هیچ شرایطی از ریموت واسه نوشتن این برنامه استفاده نکنید ، من برد ها رو روی دسکتاپ نصب کرده بودم و سعی میکردم با لپ تاپ و Remote Desktop Connection این برنامه رو بنویسم ولی پیغام Invalid Sound Device ID was passed as argumentرو می گرفتم که مشخص شد با اینکه ریموته ولی واسه پخش صدا می خواد از روی لپتاپ درایور Dialogic wav Driver رو بیاره که خطا می داد . البته کلی بدبختی دیگه توی ریموت داره و از این سیستم استفاده نکنید .

سعی کنید اگه امکانش رو دارید غیر از این برد ها یک مودم معمولی هم نصب کنید چون واسه تنظیمات صدا راحت تر باهاش کار می کنید
فرمت فایل های wav باید این ها باشه و نه چیز دیگه :
"PCM 8,000 Hz - 16 bit - Mono" format or the "KDPCM 8,000 Hz - 16 bit - Mono"
wave format compatible with most of Dialogic cards is the "PCM 11,025 Hz - 8 bit - Mono" فقط مخصوص دیالوجیک
"KDPCM 11,025 Hz - 8 bit - Mono", and "KDPCM 8,000 Hz - 8 bit - Mono"

سعی کنید یه WAVE EDITOR داخل برنامه داشته باشید که اگه خواستید از چند نوع فرمت استفاده کنه خود برنامه تون انجامش بده
باز هم اگه پیغام خطای WAV_BAD_FORMAT رو دیدید یه صدا از طریق تلفن ضبط کنید و مشخصات اون رو از برنامه wav editor در بیارید و بقیه صداهاتون رو طبق اون مشخصات ضبط کنید
حتما توی CALL LOG برنامه تون (البته اگه داشته باشید) از CALLHANDLE استفاده کنید .

اگه تعداد خطوط برنامه تون ثابت نیست و میخواید واسه هر مشتری تعداد خط به خصوصی استفاده کنید از Dynamic Creation استفاده کنید (مثال این رو توی EXCELETELمیتونید پیدا کنید )
اگه می خواید خطوط تون توی دیتابیس ذخیره بشه و واسه هر بار اجرای برنامه قرار نباشه Line Selection انجام بدید حتما دو گزینه LineDeviceName و LineID رو ذخیره کنید .

واسه تست برنامه می تونید از شبیه ساز های نرم افزاری استفاده کنید (قرار نیست من من خنگ با موبایلتون تست کنید که بعدش کلی قبض واستون بیاد ):بامزه:
شبیه ساز ها رو توی یه تاپیک مجزا توضیح دادم

من نکته دیگه ای به ذهنم نمی رسه اما اگه سوالی بود در خدمتم
ولی خودمونیم تا این سیستم تموم شد پدرم دراومد حتی رفتم VC++‎‎ یاد گرفتم و باهاش DLL درست کردم که بعدش فهمیدم اصلا نیاز نبود .
یه مجموعه کامل از صداهای ضبط شده به صورت wav هم دارم که حجمش خیلی زیاده اگه خواستید یه جوری بهتون می رسونم

امیدوارم این پست مفید باشه ، اگه مشکلتون حل شد لایک فراموش نشه !!! همون تشکر


----------------------------------------------------------------------------------------------------------------------
Hamed Mirzaei
MCSE 2003
MCSD/MCAD 2000
MCDBA 2000
CIW Webmaster
msws{DOT}biz{AT}gmail{DOT}com

hamed_basic
چهارشنبه 02 اسفند 1391, 13:14 عصر
این هم لینک KDTele 4.0.33 با کرک
http://s1.picofile.com/file/67819748...2_UST.rar.html (http://s1.picofile.com/file/6781974844/KDTele_Tools_VCL_Component_And_Activex_4_0_Build_3 2_UST.rar.html)

hamed_basic
چهارشنبه 02 اسفند 1391, 13:27 عصر
من فقط یه موضوعی رو روشن کنم ،
اگه برنامه تلفن گویا که می خواهید بنویسید صرفا جنبه آموزشی داره که خوب KDTELE و ... مشکلی ندارند اما اگه تجاری باشه دیگه نمیشه که مودم زولتریکس گذاشت واسه مشتری ، حداقلش باید از یک برد چهار خط دیالوجیک استفاده کنید و در این صورت باید کلا مقوله TAPI رو فراموش کنید و وقتی TAPI در کار نباشه KD و بقیه اکتیو ایکس ها بی مصرف میشن و اصلا خط هاتون رو لود نمی کنند .

من نمی دونم هدف این پست چیه ، ادمین عزیز اگه در مورد برنامه ها تجاری و سیستم هایی غیر مبتنی TAPI اینجا میخواید بحث کنید بگید تا شروع کنیم اگه نه که یک تاپیک جدید بسازید
ولی پیشنهاد من ! برای ساخت برنامه تجاری اصلاااااااً به TAPI و اکتیو ایکس هاش متکی نشید که اعصابتون رو خورد می کنه . واسه نوشتن یک برنامه تجاری باید سیستم قابلیت اطمینان و صحت عملکرد بالایی داشته باشه
من یه کارای خوبی در مورد سیستم های غیر TAPI دارم اگه خواستید بگید بحثش رو شروع کنیم

اما در حال حاضر که می خوایم آموزش بدیم و ببینیم با همون KDTELE TOOLS v4.0.33 کار می کنیم ، نه اینکه نشه ازش استفاده کرد و جالبه که یکی دوتا از شرکتهای بزرگ که تلفن گویا و محصولات مشابه رو مینویسن از این کامپوننت استفاده کردند . KD یه مشکل بزرگی که داره اینه که خیلی زیاد از منابع سیستم استفاده می کنه و توی یه برنامه که از 60 خط یا خطوط E1 استفاده کنید باید یه سرور HP حداقل 380 با دوتا CPUو 24 گیگ رم بزارید . اما این کامپوننت واسه استفاده از 4 - 8 خط مناسبه و روی همون PC معمولی میشه باهاش خوب کار کرد .

قبلاً هم اشاره کردم که فقط فقط فقط روی همون کامپیوتری برنامه رو بنویسید که برد ها یا مودم نصبه . اگه بخواید از روی لپ تاپ یا هر کامپیوتر دیگه به صورت ریموت یا Server Application و یا ... استفاده کنید بعداً یه سری خطاهایی رو میبینید که به هیچ جا مربوط نمیشه.
از تبدیل هم استفاده نکنید مثل PCMCA و ....


----------------------------------------------
HAMED MIRZAEI
MCSD 2000 - MCDBA 2000 - MCSE 2003 - CIW WEBMASTER

hamed_basic
چهارشنبه 02 اسفند 1391, 13:41 عصر
در ضمن احتمالاً به MSDN 2000 نیاز پیدا می کنید (احتمالا)
من مجموعه کامل Visaul Studio 6.0 به همراه MSDN و مجموعه Add-In های ویژوال استودیو و کلی چیز مفید دیگه رو در قالب 8 تا CD در آوردم و تو شرکتم دارم میفروشم ، اگه خواستید بگید تا بهتون بدم ، چون باید رایت بشه و پست بشه یه هزینه جزئی داره که باید پرداخت کنید .

من تقریباً 11 -12 ساله که شغلم برنامه نویسی هست و از این راه دارم زندگیم رو میچرخونم و توی این مدت مجموعه کاملی واسه خودم جمع کردم که مطمئنم بدرد هم مبتدی ها و هم خیلی حرفه ای ها می خوره .

در مورد بقیه قسمت های ویژوال بیسیک ، SQL Server , ASP Classic(VBScript-JAVA Script) l و ... اگه بتونم خوشحال میشم کمکی کرده باشم . مخصوصا اون دسته از عزیزان که واقعاً می خوان این شغل رو انتخاب کنند.
امیدوارم بتونم با این آموزشها و امکاناتی که در اختیارتون قرار می دم در جهت نوشتن برنامه های خوب و مفید بهتون کمک کرده باشم .

m2011kh
چهارشنبه 02 اسفند 1391, 13:49 عصر
سلام آقا حامد.

درسته همون طور که گفتید این آموزش تو نت برای VB6 خیلی خیلی کم یاب یه بهتر بگم نایابه.خودم بهش نیاز دارم.

آموزش هایی که میدید تا اینجا عالیه و اگه این رو ادامه بدین من خودم شخصا خیلی ازتون ممنون میشم.

موفق و موید باشید

MMD

hamed_basic
چهارشنبه 02 اسفند 1391, 13:51 عصر
سلام
مجموعه کامل Connection String ها برای همه بانک های اطلاعاتی
دانلود کنید حالش رو ببرید .:لبخند:

hamed_basic
چهارشنبه 02 اسفند 1391, 13:54 عصر
سلام آقا حامد.

درسته همون طور که گفتید این آموزش تو نت برای VB6 خیلی خیلی کم یاب یه بهتر بگم نایابه.خودم بهش نیاز دارم.

آموزش هایی که میدید تا اینجا عالیه و اگه این رو ادامه بدین من خودم شخصا خیلی ازتون ممنون میشم.

موفق و موید باشید

MMD

خواهش ، چشم حتما ادامه میدم و سعی می کنم از اون تاپیک هایی نشه که به هدف رها میشه و امیدوارم مفید باشه .

hamed_basic
پنج شنبه 03 اسفند 1391, 11:48 صبح
با سلام مجدد خدمت همه اساتید گرامی
داشتم توی فروم می گشتم دیدم توی یک تاپیک مشابه کاربران از ادامه ندادن تاپیک ها شکایت داشتند و اون شخصی که تاپیک رو ایجاد کرده بود رو کلا شسته بودن :لبخند: . راستش من این تاپیک رو ایجاد کردم نه واسه اینکه بیام و کلاس درس بزارم بلکه میخواستم محلی باشه که هر کدوم از دوستان که در این زمینه تخصصی دارند بیان و تجریباتشون رو منتقل کنند و به اشتراک بزارند تا منم بتونم مثل بقیه از تجربیات دوستان استفاده کنم.

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

از قضای روزگار کامپایلر VB 6.0 در مورد کار با سخت افزار ها یکی از ضعیف ترین هاست و از اونجایی که در مورد مقوله تلفن گویا و TAPI صرفا از منابع ویندوز استفاده می کنه نه منابع سیستم ، یعنی اگه به دلیل ویروس عملکرد ویندوزتون پایین بیاد برنامه دچار خطاهای ناخواسته ای میشه که قبلا وجود نداشته به عنوان مثال پیغام "KSERROR_TIMER_UNABLE 50 Unable to allocate system resources to create a timer."
که وقتی میاد که سیستم توانایی این رو نداره تایمر واسه Recording و Listening ایجاد کنه . جالبتر اینه که من این مشکل رو جوری حل کردم که شاید باور نکنید !!! با نصب درایور کارت گرافیک !!! دیگه موقع ضبط پیام این خطا رو نداشتم .

بهر حال تاپیکمون زمانی موفق خواهد بود که همه دوستان همکاری کنند ، و این جور مسائل رو Share کنند . از همه دوستان می خوام اگه مشغول نوشتن چنین برنامه ای هستند صرفا خواننده و مشاهده کننده متن ها نباشند و بیان مشکلاتی که دارند رو مطرح کنند ، مسلما وقتی مشکل حل شد همه دوستان اون رو توی پروژه هاشون اعمال می کنند تا در آینده مشکلات پیشبینی نشده و باگ های کمتری داشته باشند .

با تــــــــــــــــشکر از همه دوستان


---------------------------------------
Hamed Mirzaei
MCSD/MCAD 2000
MCDBA 2000
msws.biz@gmail.com

hamed_basic
پنج شنبه 03 اسفند 1391, 12:00 عصر
در مورد لود کردن لیست خطوط باید بگم من که از دیتا بیس استفاده کردم با ذخیره چند تا پارامتر از یک خط و همچنین کانفیگ اولیه دیگه لازم بعد از هر بار بستن و باز کردن برنامه خط رو انتخاب کنید .

من توی برنامه کاری کردم که پس از استارت ویندوز برنامه می ره توی System Tray میشینه و کلیه خطوطی که از قبل انتخاب شدن اتوماتیک فعال میشند

به این شکل :



Private Sub LoadLines()
Dim RecCount As Long
Dim lvRet As Long
Dim lvLineDeviceName, NumLine As String

NumLine = Get_Settings("NumLine")
Adodc2.RecordSource = "Select * From tblLines"
Adodc2.Refresh
Debug.Print "Start Detection >" & NumLine
For i = 1 To NumLine

Debug.Print "Line :" & i & " , Value = " & Val(Adodc2.Recordset.Fields("linindex").Value & "")
If Adodc2.Recordset.BOF = False Then
If Adodc2.Recordset.Fields("linIndex").Value > 0 Then

lvRet = KDPhone(i).LineActive(Adodc2.Recordset.Fields("linIndex").Value, True)
If lvRet <> 0 Then

fLogAdd i, "ÎØ ÛíÑ ÝÚÇá ÇÓÊ."
lstLinesState i, "ÎØ ÛíÑ ÝÚÇá ÇÓÊ.(III)", 0, ""
Debug.Print "Line " & i & " , Not Configed"
Else
'
fLogAdd i, "ÎØ ÝÚÇá ÇÓÊ."
lstLinesState i, "ÎØ ÝÚÇá ÇÓÊ.", 0, ""

Debug.Print "Line Index Is OK"
KDPhone(i).GetLineName KDPhone(i).LineID, lvLineDeviceName & ""

LabelLineName(i).Caption = lvLineDeviceName
End If

Else
Debug.Print "Line " & i & " , Not Configed"
fLogAdd i, "ÎØ ÛíÑ ÝÚÇá ÇÓÊ."
lstLinesState i, "ÎØ ÛíÑ ÝÚÇá ÇÓÊ.(I)", 0, ""


' End If
End If
Else
fLogAdd i, "ÎØ ÛíÑ ÝÚÇá ÇÓÊ."
lstLinesState i, "ÎØ ÛíÑ ÝÚÇá ÇÓÊ.(II)", 0, ""

End If
Adodc2.Recordset.MoveNext
Next i
End Sub





اون پیغام هایی که Code Page شون عوض شده فارسی هستند

hamed_basic
پنج شنبه 03 اسفند 1391, 12:09 عصر
من فکر کنم قبلا توضیح داده باشم حالا باز دوباره میگم :
در مورد تست برنامه من اولا از چند تا خط شهری استفاده می کردم اما بعد از اون یه دستگاه سانترال پاناسونیک 3 به 8 گرفتم و از اون هم کمک میگیرم .

در آینده وارد بحث Transfer کردن یا Confrance کردن خط ورودی میشیم که البته نا گفته نمونه واسه اون دیگه حتما به دستگاه سانترال نیاز دارید .

البته من کد هاش رو اینجا می زارم ولی فکر نکنم شما دوستان حرفه ای بخواید بدون تست کردن برنامه پروژتون رو ارائه کنید . حتی ممکنه نیاز باشه یه چیزایی اضافه یا کم بشه .

hamed_basic
پنج شنبه 03 اسفند 1391, 15:11 عصر
به هم ریختن حروف و کرکترهای فارسی در ادیتور یا کد ویژوال بیسیک 6
یه نکته ای که به ذهنم رسید بگم ،
ممکنه در حین نوشتن برنامه و یا اینکه از همون اول کد پیج ادیتور ویژوال بیسیک عوض شه . این کار ممکنه با رفرنس کردن یک ماژول هم اتفاق بیفته . که مثالش رو در زیر مشاهده می کنید . واسه حل مشکل مراحل زیر رو انجام بدید .
مثال :
متن ادیتور > "ÎØ ÛíÑ ÝÚÇá ÇÓÊ.(I)"
عبارت واقعی > " خط غیر فعال است.(I)"

راه حل :
در قسمت ادیتور (کد ) ویژوال بیسیک روی منوی Tools کلیک کنید .
Option رو انتخاب کنید
تب Editor Format رو کلیک کنید
فونت ادیتور را Arial Unicode MS@ انتخاب کنید .
پروژه رو ذخیره کنید ، ببندید و دوباره باز کنید .

یه نکته دیگه هم بگم ، سعی کنید عادت کنید پروژه ویژوال بیسیک رو با دابل کلیک بر روی خود فایل پروژه باز کنید نه اینکه اول ویژوال بیسیک رو از Start Menu یا Desktop باز کنید و بعدش پروژه رو Open کنید . اگه شد بعداً می گم دلیلش چیه ، به خدا واسه دلیل همین باید کلی بنویسم .:لبخند:

------
دوستان اگه احساس میکنید مطالبی که گذاشته میشه صرفا باید در زمینه پروژه تلفن گویا باشه تذکر بدید تا دیگه از این نکته ها نذارم .:خجالت:

erfan1391
جمعه 17 آبان 1392, 19:16 عصر
سلام دوستان
ایا میتوان کارت دایالوجیک ایوان را به انالوگ لینک کرد
یه کارت دایالوجیک ۲ ایوان رو یه سیستم تلفن گویا که به منظور خرید مشتریان از طریق تلفن گویا طراحی شده و در حال کار است میخایم با نصب یه کارت انالوگ ۱۲ خط تعدادی از خط ها را به اپراتور وصل کنیم
ایا این کار امان پذیر هست
:متفکر:

m.4.r.m
جمعه 17 آبان 1392, 19:18 عصر
عزیز دنبال زیر خاکی ؟ تاریخ پست هارو نگاه کن