direct_sdk

MoonBit SDK for Direct4B WebSocket API with MessagePack RPC

direct
websocket
rpc
msgpack
chat
api
moon add f4ah6o/direct_sdk@0.11.1
Download zip
Author
Version
0.11.1
License
Apache-2.0
Last updated
5 months ago
Downloads
26
README

#Direct SDK for Moonbit

moonbit

MoonBit用のDirect4B WebSocket API SDKです。direct-go-sdkを移植したものです。

#Features

  • WebSocket通信: MessagePack RPCプロトコルによる非同期通信
  • 完全なAPIカバレッジ: 69個のRPCメソッド、40種類のイベント
  • 型安全: MoonBitの型システムによる静的型チェック
  • イベント駆動: サーバー通知のハンドラー登録
  • 非同期I/O: async/awaitによる効率的な並行処理

#Installation

{ "dependencies": { "moonbitlang/async": "*", "f4ah6o/direct_sdk": "*" } }

#Quick Start

// クライアント作成
let client = @rpc_client.new_client_with_token("your-access-token")

@async.with_task_group(fn(tasks) {
// 接続
match @rpc_client.connect(client, tasks) {
| Ok(_) => println("Connected!")
| Err(e) => {
println("Failed: \${@errors.direct_error_to_string(e)}")
return
}
}

// ユーザー情報取得
match @api_users.get_me(client) {
| Ok(user) => println("Hello, \${user.display_name}!")
| Err(e) => ()
}

// トーク一覧取得
match @api_talks.get_talks(client) {
| Ok(talks) => {
for talk in talks {
println("Talk: \${talk.name}")
}
}
| Err(e) => ()
}

// メッセージ送信
let content = @types.JsonObject(Map::from_array([
("text", @types.JsonString("Hello, World!"))
]))
let params = [
@types.id_to_json(@types.IDString("talk-id")),
@types.JsonNumber(@types.msg_type_to_wire(@types.MsgTypeText).to_float()),
content,
]
match @rpc_client.call(client, "create_message", params) {
| Ok(_) => println("Message sent!")
| Err(e) => ()
}
})

#Event Handling

// メッセージ受信ハンドラー
@rpc_client.on_message(client, fn(msg) {
println("Received: \${msg.text}")
})

// トークイベントハンドラー
@rpc_client.on_talk(client, fn(talk) {
println("New talk: \${talk.name}")
})

// 汎用イベントハンドラー
@rpc_client.on(client, "session_created", fn(data) {
println("Session created!")
})

#API Modules

ModuleDescription
rpc/clientメインクライアント、接続、RPC呼び出し
api/usersユーザー情報、プロフィール、フレンド
api/talksトーク/部屋の管理
api/messagesメッセージ送受信、検索
api/domainsドメイン/組織の管理
api/filesファイルのアップロード/ダウンロード認証、添付ファイル
api/conference会議/通話機能
api/announcementsお知らせ機能
api/departments組織図/部門
events/handlerイベントディスパッチャー

#Configuration

///|
let client = rpc /
client /
new_client(
(config / default_config())
|> config / with_token("your-token")
|> config / with_endpoint("wss://custom.example.com/api")
|> config / with_proxy("http://proxy:8080")
|> config / with_timeout(60000),
)

#Examples

  • examples/basic_usage.mbt - 基本的な使用方法
  • examples/bot_example.mbt - ボット実装パターン

#CLI (daab)

# Login to obtain access token daab login # Or save a token directly daab login --token <token> # Initialize a new bot project daab init my-bot # Create a new bot project from a template daab create my-bot --template ping-bot # Run the bot cd my-bot daab run # Show available commands daab --help

Environment variables used by daab login:

  • DIRECT4B_BOT_USER_ID (optional, with DIRECT4B_USER_PASSWORD)
  • DIRECT4B_USER_PASSWORD (optional, with DIRECT4B_BOT_USER_ID)
  • HUBOT_DIRECT_ENDPOINT (optional)
  • HUBOT_DIRECT_PROXY_URL (optional)
  • HTTPS_PROXY / HTTP_PROXY (fallback)

#Development

# チェック moon check # ビルド moon build # テスト moon test

#License

Apache-2.0

#References