2014-11-20 20 views
6

Skype4Py'u kullanarak temel bir Skype botu yapmaya çalışıyorum ve oldukça ciddi bir hatayla karşılaştım. Ben 32bit Python 2.7.8 ile 64 bit Windows 7 üzerinde çalışıyorum. Skype4Py'nin son sürümü ile birlikte yüklenir. Dört kullanıcı ve dört kullanıcıların katılacağı bir ortak sohbet ile dört ayrı sohbetler:Skype4Py MessageStatus sürekli olarak ateş etmiyor

Benim asıl talep bot 5 farklı Skype sohbetler genel bir bakış olmasıdır. Bu amaçla, ben tek tek yanıtları ve grup sohbeti ele iki farklı fonksiyon yazdım:

class SkypeBot(object): 
    def __init__(self): 
     self.skype = Skype4Py.Skype(Events=self) 
     self.skype.Attach() 
     self.active_chat = find_conference_chat() 

    def MessageStatus(self, msg, status): 
     if status == Skype4Py.cmsReceived: 
      if msg.Chat.Name == self.active_chat.Name: 
       msg.Chat.SendMessage(respond_to_group(msg)) 
      else: 
       msg.Chat.SendMessage(respond_to_individual(msg)) 
bot = SkypeBot() 

yukarıdaki kodu (orada kendisine çok daha fazla, ama bunun çekirdek aşağı yazılır) her mesajı cevaplamak gerekiyordu Herhangi bir kullanıcı özel olarak veya grup sohbetinde gönderir. Ancak, bir sorun var. Genellikle bu kod çalışır. Bot, her bireysel kullanıcıya ve grup sohbetine cevap verir. Sonra, her seferinde bir kere (her 10 sohbetde bir kere), bot bireysel mesajlara cevap vermiyor. MessageStatus fonksiyonu sadece ateş etmiyor, bu da beni yakalamam gereken başka bir olay olabileceğini düşündü.

def Notify(self, notification): 
     print "NOTIFICATION:" 
     print notification 
     print "==========================" 

Bu kodun tek amacı herhangi bir olay eksik olup olmadığını anlamaktı: Ben bota bir genel olay yakalayıcı ekledi. Bu yüzden biraz bekledim ve bot cevap vermediğinde, fonksiyonun çıktısını kontrol ettim.

  • Genellikle, bir ileti geldiğinde bot birkaç bildirim alır: sohbet bildirimi alma bildirimi, sohbet etkinliği zaman damgası bildirimi ve diğerleri. Chatmessage alınan bildirim, sonunda MessageStatus olayını tetikleyen olaydır.
  • Botun yanıt vermediği durumlarda, yalnızca bir bildirim geldi. Bu bildirim CHAT **** ACTIVITY_TIMESTAMP ****** idi. Bir chatmessage'ın alındığına dair bir bildirim yoktu, bu yüzden yanıtlanacak bir mesaj yok.

el benim Skype müşteri tıkladım ve mesaj alınan benim pencere odaklı MessageStatus evend nihayet ateş ve bot yanıt verdi, ancak bu şekilde çok geçti.

  • benim genel kod doğru mu:


    Sorum birkaç bölümden oluşur? Skype4Py kusursuz çalıştıysa, kodum işe yarıyor mu?

  • Belirli bir olayın tetiklenmediği başka bir kişi bu hatayla karşılaştı mı?
  • Benzer bir hatayla karşılaşırsanız, çözdünüz mü? Değilse, en azından bu sorunu sürekli olarak nasıl yeniden üreteceğinizi keşfettiniz mi? Ben bile hata ayıklayamıyorum çünkü aniden ve hiçbir yerde görünmüyor ...

cevap

1

Ne yazık ki, bu muhtemelen Skype API'sinde bir hatadır.

Önemli: Bu help post diyerek API için destek iptal olduğunu belirtir nedeniyle teknolojiye, bu blog yayınında biz Skype deneyimine yapıyoruz iyileştirmeler, API bazı özelliklerini bildirildiği gibi olacak Masaüstü için Skype ile çalışmayı bırakın.Örneğin, API kullanarak sohbet iletilerinin yayınlanması işe yaramaz. Ancak, , alternatif seçenekleri belirleyene veya geçerli çözümü emekli edene kadar, en yaygın kullanılan iki özellik olan - donanım kayıtlarını ve donanımları aramayı destekliyoruz.

İlgili konular