این هم کد برنامه ی من
توضیحاتم رو کاملتر بیان میکنم .
1. برنامه به زبان وی بی دات نته
2. من یه خط تلفن دارم که هم به مودو وصله و هم به تلفن .
3. حالا میخام یه دستوری بدم که اگه کاربری که پشت خطه مثلا دکمه 0 رو فشار داد دوباره تلفنم زنگ بخوره و این بار خودم گوشی رو بر دارم ، یعنی پیام " لطفا برای برقراری ارتباط با اپراتور کلید 0 را فشار دهید" رو پخش کنه و اگه کاربر کلید 0 رو فشار داد تلفن من زنگ بخوره و من بتونم جواب بدم .
Imports TAPIEXLib
Public Class frmMain
Dim tp As New TAPIExCtl 'ساختن یک نمونه از کنترل تپیکس
Dim temp As Integer
' int temp = 0;
Dim selectedLine As ITAPILine
Private Sub btnGetLine_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnGetLine.Click
Dim tmpline As ITAPILine
For Each tmpline In tp.Lines
If ((tmpline.Caps.Media_Modes & LINEMEDIAMODE.MEDIAMODE_INTERACTIVEVOICE) > 0 Or
(tmpline.Caps.Media_Modes & LINEMEDIAMODE.MEDIAMODE_AUTOMATEDVOICE) > 0) Then
cmbAllLine.Items.Add(tmpline.Name)
End If
Next
If (cmbAllLine.Items.Count > 0) Then
lstLog.Items.Add("Getting Line Done! Select line.")
cmbAllLine.Text = "Select the Line"
End If
End Sub
Private Sub frmMain_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
tp.initialize()
temp = 0
AddHandler tp.OnRing, New _ITAPIExEvents_OnRingEventHandler(AddressOf tp_OnRing)
AddHandler tp.OnDTMF, New _ITAPIExEvents_OnDTMFEventHandler(AddressOf tp_OnDTMF)
AddHandler tp.onNewCall, New _ITAPIExEvents_OnNewCallEventHandler(AddressOf tp_OnNewCall)
AddHandler tp.OnConnected, New _ITAPIExEvents_OnConnectedEventHandler(AddressOf tp_OnConnected)
AddHandler tp.OnDisConnected, New _ITAPIExEvents_OnDisConnectedEventHandler(AddressO f tp_OnDisConnected)
AddHandler tp.OnCallerID, New _ITAPIExEvents_OnCallerIDEventHandler(AddressOf tp_OnCaller)
AddHandler tp.OnBusy, New _ITAPIExEvents_OnBusyEventHandler(AddressOf tp_OnBusy)
lstLog.Items.Add(" ------------------------------------ IVR Log ------------------------------------ ")
End Sub
Private Sub btnOpenLine_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOpenLine.Click
Dim i As Integer
Try
For i = 0 To tp.Lines.Count - 1
If (tp.Lines.Item(i).Name = cmbAllLine.SelectedItem.ToString()) Then
selectedLine = tp.Lines.Item(i)
End If
Next
If (Not selectedLine.Open()) Then
selectedLine.Open()
lstLog.Items.Add("Line Opened!")
End If
Catch ex As Exception
lstLog.Items.Add("Error in opening Line : " + selectedLine.Name + " ~SYSTEM ERROR: " + ex.Message)
End Try
If (selectedLine.DevStatus.OpenMediaModes.ToString() = "MEDIAMODE_INTERACTIVEVOICE") Then
txtMediaMode.Text = "Interactive"
txtMediaMode.ForeColor = Color.Lime
ElseIf (selectedLine.DevStatus.OpenMediaModes.ToString() = "MEDIAMODE_DATAMODEM") Then
txtMediaMode.Text = "Data"
txtMediaMode.ForeColor = Color.Red
Else
txtMediaMode.Text = "Other"
txtMediaMode.ForeColor = Color.Pink
End If
End Sub
Private Sub btnDial_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDial.Click
Try
selectedLine.MakeCall(txtDialNumber.Text)
lstLog.Items.Add("Dial: " + txtDialNumber.Text)
Catch ex As Exception
End Try
End Sub
Private Sub btnCloseLine_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCloseLine.Click
selectedLine.Close()
lstLog.Items.Add("Line Closed!")
End Sub
Dim key As String
Dim meno As String = "0"
Sub tp_OnDTMF(ByVal m_Call As ITAPICall, ByVal KeyCode As Integer, ByVal DigitMode As TAPI_DIGITMODE, ByVal TickCount As Integer)
key = "0"
Dim code_paziresh As String = ""
lblBeep.Text += Chr(KeyCode)
key = Chr(KeyCode)
If key = "1" And meno = "0" Then
meno = "1"
m_Call.StopPlayBack()
m_Call.PlaybackFile(Application.StartupPath + "\\pls_enter_number.wav")
ElseIf key = "2" And meno = "0" Then
meno = "2"
m_Call.StopPlayBack()
m_Call.PlaybackFile(Application.StartupPath + "\\pls_enter_number.wav")
ElseIf key = "3" And meno = "0" Then
meno = "3"
m_Call.StopPlayBack()
m_Call.PlaybackFile(Application.StartupPath + "\\pls_enter_number.wav")
ElseIf key = "*" And meno = "0" Then
meno = "0"
m_Call.StopPlayBack()
m_Call.PlaybackFile(Application.StartupPath + "\\meno0.wav") ''''///////\پیام مربوط به منوی 0
ElseIf (key = "0" Or key = "1" Or key = "2" Or key = "3" Or key = "4" Or key = "5" Or key = "6" Or key = "7" Or key = "8" Or key = "9") And (meno = "1" Or meno = "2" Or meno = "3") Then
TextBox1.Text += key
'''''''''''''''''''''''''''''''''''''''''''
ElseIf meno = "3" And key = "#" Then
meno = 1
Dim id As Integer
id = Me.Tbl_karshenasiTableAdapter.akharin_id_in_shomar e_paziresh(Val(TextBox1.Text)).GetValueOrDefault
Me.Tbl_karshenasiTableAdapter.id_sear_filter(KHADA MATDataSet.tbl_karshenasi, id)
If Vaziat_taemirTextBox.Text = "آماده برای تحویل" And Vaziate_tahvilTextBox.Text = "تحویل داده نشده" Then
m_Call.StopPlayBack()
m_Call.PlaybackFile(Application.StartupPath + "\\madeh_baraye_tahvil.wav")
ElseIf Vaziat_taemirTextBox.Text = "آماده برای تحویل" And Vaziate_tahvilTextBox.Text = "تحویل داده شده" Then
m_Call.StopPlayBack()
m_Call.PlaybackFile(Application.StartupPath + "\\taemir_va tahvil_shod.wav")
ElseIf Vaziat_taemirTextBox.Text = "تایید موقت" And Vaziate_tahvilTextBox.Text = "تحویل داده نشده" Then
m_Call.StopPlayBack()
m_Call.PlaybackFile(Application.StartupPath + "\\taeid_movaghat.wav")
ElseIf Vaziat_taemirTextBox.Text = "غیر قابل تعمیر" And Vaziate_tahvilTextBox.Text = "تحویل داده نشده" Then
m_Call.StopPlayBack()
m_Call.PlaybackFile(Application.StartupPath + "\\gheir_ghabel_nashodeh.wav")
ElseIf Vaziat_taemirTextBox.Text = "فقط پذیرش شده" And Vaziate_tahvilTextBox.Text = "تحویل داده نشده" Then
m_Call.StopPlayBack()
m_Call.PlaybackFile(Application.StartupPath + "\\faqat paziresh shode.wav")
Else
m_Call.StopPlayBack()
m_Call.PlaybackFile(Application.StartupPath + "\\invalid the number.wav")
End If
empty()
''''''''''''''''''''''''''''''''''''''''''''''''''
ElseIf meno = "2" And key = "#" Then
meno = 2
Dim id As Integer
id = Me.KARSHENASI_BARGASHTYTableAdapter.find_max_id_ka rshenasi_bargashty_in_id_paziresh(Val(TextBox1.Tex t)).GetValueOrDefault
Me.KARSHENASI_BARGASHTYTableAdapter.find_record_wi th_id_karshenasi_bargashty(KHADAMATDataSet.KARSHEN ASI_BARGASHTY, id)
If VASIAT_TAEMIRTextBox.Text = "آماده برای تحویل" And VAZIAT_TAHVILTextBox.Text = "تحویل داده نشده" Then
m_Call.StopPlayBack()
m_Call.PlaybackFile(Application.StartupPath + "\\madeh_baraye_tahvil.wav")
ElseIf VASIAT_TAEMIRTextBox.Text = "آماده برای تحویل" And VAZIAT_TAHVILTextBox.Text = "تحویل داده شده" Then
m_Call.StopPlayBack()
m_Call.PlaybackFile(Application.StartupPath + "\\taemir_va_tahvil_shod.wav")
ElseIf VASIAT_TAEMIRTextBox.Text = "تایید موقت" And VAZIAT_TAHVILTextBox.Text = "تحویل داده نشده" Then
m_Call.StopPlayBack()
m_Call.PlaybackFile(Application.StartupPath + "\\taeid_movaghat.wav")
ElseIf VASIAT_TAEMIRTextBox.Text = "غیر قابل تعمیر" And VAZIAT_TAHVILTextBox.Text = "تحویل داده نشده" Then
m_Call.StopPlayBack()
m_Call.PlaybackFile(Application.StartupPath + "\\gheir_ghabel_nashodeh.wav")
ElseIf VASIAT_TAEMIRTextBox.Text = "فقط پذیرش شده" And VAZIAT_TAHVILTextBox.Text = "تحویل داده نشده" Then
m_Call.StopPlayBack()
m_Call.PlaybackFile(Application.StartupPath + "\\faqat paziresh shode.wav")
Else
m_Call.StopPlayBack()
m_Call.PlaybackFile(Application.StartupPath + "\\invalid the number.wav")
End If
empty()
'''''''''''''''''''''''''''''''''''''''''''
Else
meno = 0
empty()
End If
End Sub
Sub tp_OnDisConnected(ByVal m_Call As ITAPICall, ByVal DisconnectedMode As LINEDISCONNECTMODE)
m_Call.Drop()
lblStatus.Text = "End Call!"
lstLog.Items.Add("KayCode: " + lblBeep.Text)
lstLog.Items.Add("DicConnected!")
lblRing.Text = ""
lblBeep.Text = ""
End Sub
Sub tp_OnConnected(ByVal m_Call As ITAPICall, ByVal ConnectedMode As LINECONNECTEDMODE)
m_Call.PlaybackFile(Application.StartupPath + "\\meno0.wav")
lblStatus.Text = "Play menu!"
lstLog.Items.Add(lblStatus.Text)
End Sub
Sub tp_OnNewCall(ByVal m_Call As ITAPICall)
Dim m As Integer = m_Call.CalledIDNumber
lstLog.Items.Add("m: " + m.ToString)
temp = 0
lblRing.Text = ""
lblBeep.Text = ""
lstLog.Items.Add("New Call!")
End Sub
Sub tp_OnRing(ByVal m_Call As ITAPICall, ByVal RingCount As Integer)
temp = temp + 1
lblRing.Text = temp.ToString()
If (temp > 1) Then
m_Call.Answer()
End If
End Sub
Sub yaftane_paziresh_bargashty(ByRef code As Integer)
End Sub
Private Sub tp_OnCaller(ByVal m_Call As ITAPICall, ByVal CallerName As String, ByVal CallerNumber As String)
lstLog.Items.Add(CallerNumber)
End Sub
Private Sub tp_OnBusy(ByVal m_Call As ITAPICall, ByVal buzy_mode As TAPIEXLib.LINEBUSYMODE)
If buzy_mode = 0 Then
lstLog.Items.Add("buzy")
m_Call.Drop()
Else
lstLog.Items.Add(buzy_mode)
End If
End Sub
Sub empty()
TextBox1.Text = ""
ID_KARSHENASI_BARGASHTYTextBox.Text = ""
IdTextBox.Text = ""
CODE_PAZIRESH_BARGASHTYTextBox.Text = ""
Code_pazireshTextBox.Text = ""
VASIAT_TAEMIRTextBox.Text = ""
Vaziat_taemirTextBox.Text = ""
VAZIAT_TAHVILTextBox.Text = ""
Vaziate_tahvilTextBox.Text = ""
End Sub
End Class