Skip to content

メッセージプラットフォームアダプターの実装

この記事では、aiocqhttpアダプターを例として、LangBotの新しいメッセージプラットフォームアダプターを実装し、WhatsAppやDiscordなどの新しいメッセージプラットフォームプロトコルを統合する方法を説明します。

登録

text
新しいメッセージプラットフォームアダプターを追加します。例: WhatsApp、Discordなどを統合

- 基底クラス: `pkg.platform.adapter.MessageSourceAdapter`
- デコレーター: `pkg.platform.adapter.adapter_class(name: str)`
- 参考実装: `pkg.platform.sources/`

メッセージプラットフォームアダプターを実装するには、基本的に基底クラスを継承するクラスを実装し、デコレーターを使用して登録する必要があります。最後に、実行時にユーザーが選択して使用できるようになります。

メインリポジトリへの貢献

pkg/platform/sources/ディレクトリに新しいファイルaiocqhttp.pyを作成します:

python
from .. import adapter

@adapter.adapter_class("aiocqhttp")
class AiocqhttpAdapter(adapter.MessageSourceAdapter):
    pass

また、pkg/platform/manager.pyの40行目でこのモジュールをインポートします:

python
        from .sources import nakuru, aiocqhttp, qqbotpy

最後に、他のアダプターのマニフェストファイルを参考にして、独自のマニフェストファイルを作成します。

イベントとメッセージコンバーター

メッセージプラットフォームアダプターの主な作業は、メッセージプラットフォームプロトコルからイベントを受信し、LangBotの形式に変換することです。これをコアコンポーネントに渡し、LangBotのコアコンポーネントが処理した後、返信する必要のあるコンテンツをメッセージプラットフォームアダプターに渡します。次に、コンテンツをプラットフォームプロトコル形式に変換してメッセージプラットフォームに送信します

次の図は、2つのシナリオの処理パターンを示しています: SDKのないメッセージプラットフォームプロトコルと成熟したSDKを持つプロトコル。最初のケースでは、メッセージプラットフォームプロトコルのドキュメントに従って、接続管理とネットワーク形式データのLBメッセージPythonオブジェクトへの変換を実装する必要があります。2番目のケースでは、メッセージプラットフォームに成熟したSDKがあり、SDKドキュメントに従って接続を作成し、イベントリスナーを登録し、メッセージコンバーターを実装するだけです。

alt text

pkg.platform.sources.aiocqhttpファイルでは、AiocqhttpAdapterだけでなく、class AiocqhttpMessageConverter(adapter.MessageConverter):class AiocqhttpEventConverter(adapter.EventConverter):も確認できます。

  • MessageConverterは、LangBotメッセージとプラットフォームメッセージ間の変換に使用されます。
  • EventConverterは、LangBotイベントとプラットフォームイベント間の変換に使用されます。

TBC...