Donc, à Im essayant de faire un système CMS qui utilise le SDK yahoo messenger. L'idée est d'avoir un robot d'auto-assistance capable de guider les clients à travers certains problèmes. La conversation est exécutée par deux méthodes. Un script existe pour répondre avec une réponse générique. Dans chaque message reçu par le client, le programme recherchera des mots-clés et des questions certan qui déclencheront une réponse à partir d'un fichier XML. S'il en trouve un, il continue avec le script. Le programme fonctionne mais a un coût. C'est un énorme porc de ressources. Dans le programme, j'ai une classe qui gère toutes les fonctions de messagerie yahoo comme connexion, déconnexion, recevoir et envoyer des messages. J'ai aussi une classe que j'appelle des conversations. Cela permet de savoir où le message est arrivé, à qui il s'adressait et dans quelle position il se trouvait dans la conversation scriptée. Dans mon programme principal, j'initise X quantité de la classe client en fonction du nombre de sites différents qui aident les comptes que j'utilise. Chaque fois qu'il reçoit un message, il crée une nouvelle classe de conversation car il existe ou il vérifie la conversation existante et trouve la position sripted. Il fait évidemment tous les contrôles pour les mots-clés sur le message entrant aussi bien. C'est mon code pour le gestionnaire d'événements partagés pour recevoir des messages. Ma question est la suivante: y a-t-il un moyen de rendre cela plus efficace?Ressources et efficacité
Private Sub yahooclients_OnRec(ByVal sender As Object, ByVal buddy As String, ByVal message As String)
TotalRec = TotalRec + 1
Try
Dim c As YahooClient = CType(sender, YahooClient) 'Yahoo Client To Send Message From
showLog("From:" & buddy & " To:" & c.Account & " Message:" & message)
Dim msgSplit As String()
Dim retmsg As String
Dim smsg As String()
Dim n1 As XmlNode
Dim sran As New Random 'Random SPlit Message
Dim domran As New Random 'Random Domain ID
Dim Found1 As Boolean = False
Dim FoundIt As Integer = 0
Dim i As Integer = 0 'Keyword Counter
'Check Message For KeyWords By Splitting Each phrase by spaces
msgSplit = Split(message, " ")
For Each word In msgSplit
For Each value In KeywordInd
If value = word Then
n1 = m_nodelist.Item(i)
retmsg = n1.InnerText
GoTo ScrubMessage
End If
i = i + 1
Next
i = 0
Next
'Check For Conversations
If convos.Count = 0 Then
convos.Add(New Conversation(c.Account, buddy, 0))
retmsg = Script(0)
GoTo ScrubMessage
Else
For A As Integer = 0 To (convos.Count - 1)
If InStr(convos(A).TUser, c.Account) > 0 And InStr(convos(A).FUser, buddy) > 0 Then
Found1 = True
Exit For
End If
FoundIt = FoundIt + 1
Next
If Found1 = True Then
convos(FoundIt).SPosition = convos(FoundIt).SPosition + 1
'Send Next Position In Script
If convos(FoundIt).SPosition > (Script.Length - 1) Then
If convos(FoundIt).SPosition = Script.Length Then
TotalScript = TotalScript + 1
ToolStripStatusLabel10.Text = TotalScript
End If
Exit Sub
End If
retmsg = Script(convos(FoundIt).SPosition)
GoTo ScrubMessage
Else
convos.Add(New Conversation(c.Account, buddy, 0))
retmsg = Script(0)
GoTo ScrubMessage
End If
End If
ScrubMessage: « dépouilleront | SMSG = de Split (retmsg, "|")
'Pull A Random Response
If smsg.Length > 1 Then
retmsg = smsg(sran.Next(0, (smsg.Length) - 1))
Else
retmsg = smsg(0)
End If
'Check For Domain Indicator
If InStr(retmsg, "%") > 0 Then
TotalLink = TotalLink + 1
End If
retmsg = Replace(retmsg, "%s", Domains(domran.Next(0, (Domains.Length - 1))))
If CheckBox2.Checked = True Then 'send Message With Font and Color
retmsg = "<font face=" & """" & fname & """" & ">" & "[#FF80C0m" & retmsg & "</font>"
End If
showLog(("Sending Message: " & retmsg & " To: " & buddy & " From: " & c.Account))
c.SendMessage(buddy, retmsg)
TotalSent = TotalSent + 1
ToolStripStatusLabel4.Text = TotalSent 'Updates Sent Counter
ToolStripStatusLabel6.Text = TotalRec 'Updates Rec Counter
ToolStripStatusLabel8.Text = TotalLink 'Updates Links counter
Catch ex As Exception
showLog(ex.ToString)
End Try
End Sub
Le programme devient vraiment pas resonsive avec beaucoup de comptes sont poser des questions, etc.
Merci beaucoup pour les conseils !! –