6

を使用して基本的な Skype ボットを作成しようとしてSkype4Pyいますが、かなり深刻なエラーが発生しました。私は32ビットのPython 2.7.8で64ビットのWindows 7に取り組んでいます。Skype4Py の最新バージョンと共にインストールされます。

私の主な要求は、ボットが5さまざまな Skype チャットの概要を持っていることです。4 人のユーザーとの 4 つの個別のチャットと、4 人のユーザー全員が参加する 1 つの共通のチャットです。そのために、個々の応答とグループ チャットを処理する 2 つの異なる関数を作成しました。

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()

上記のコード (他にもたくさんありますが、その核心は書き留められています) は、ユーザーがプライベートまたはグループ チャットで送信する各メッセージに応答することになっています。

ただし、問題があります。通常、このコードは問題なく動作します。ボットは、個々のユーザーとグループ チャットに応答します。その後、時々 (10 チャットごとに 1 回)、ボットは個々のメッセージへの応答を停止します。この関数MessageStatusは単純に起動しないため、キャッチする必要があるイベントが他にもあるのではないかと考えました。そこで、一般的なイベント キャッチャーを 1 つボットに追加しました。

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

このコードの唯一の目的は、イベントが欠落しているかどうかを確認することでした。それでしばらく待って、ボットが応答しないときは、関数の出力を確認しました。

  • 通常、メッセージが到着すると、ボットはいくつかの通知を受け取ります。チャット メッセージの受信通知、チャット アクティビティのタイムスタンプ通知などがあります。チャットメッセージの受信通知は、最終的にMessageStatusイベントをトリガーするものです。
  • ボットが応答しなかった場合、通知が 1 つだけ届きました。お知らせでしたCHAT **** ACTIVITY_TIMESTAMP ******。チャットメッセージが受信されたという通知はなかったので、応答するメッセージはありません。

Skype クライアントを手動でクリックし、受信したメッセージにウィンドウのフォーカスを合わせたところ、MessageStatus最終的にイベントが発生し、ボットが応答しましたが、それでは遅すぎました。


私の質問にはいくつかの部分があります:

  • 私の一般的なコードは正しいですか?Skype4Py問題なく動作する場合、コードは正常に動作するはずですか?
  • 特定のイベントが発生しなかったこのエラーに遭遇した人はいますか?
  • 同様のエラーが発生した場合、解決しましたか? そうでない場合、少なくともこの問題を一貫して再現する方法を発見しましたか? 突然どこからともなく現れるので、デバッグすることさえできません...
4

1 に答える 1

1

残念ながら、これはおそらく Skype API のバグです。このヘルプ投稿は、API のサポートが取り消されることを示しており、次のように述べています。

重要: このブログ投稿でお知らせしたように、Skype エクスペリエンスに加えているテクノロジの改善により、API の一部の機能がデスクトップ用 Skype で動作しなくなります。たとえば、API を使用したチャット メッセージの配信は機能しなくなります。ただし、代替オプションを決定するか、現在のソリューションを廃止するまで、最も広く使用されている 2 つの機能 (通話録音とハードウェア デバイスとの互換性) のサポートを延長します。

于 2015-02-28T01:41:02.997 に答える