OpenClaw

OpenClaw DingTalk チャンネル

エンタープライズ
普通

コミュニティプラグインを使用して OpenClaw を DingTalk(钉钉)に接続します。この統合は DingTalk の Stream モード(WebSocket ロングコネクション)を使用するため、パブリック IP やドメインは不要です。個人チャット、グループチャット、テキスト/画像/音声/動画/ファイルなどのメッセージタイプ、および AI Card ストリーミング返信をサポートしています。プラグインをインストールし、DingTalk 企業内部アプリを作成して認証情報を入力するだけで起動できます。

基本情報
難易度普通
カテゴリエンタープライズ
対応機能数4 / 6

DingTalk 対応機能

テキストメッセージ

対応

メディア・ファイル

対応

リアクション

非対応

スレッド

非対応

音声メッセージ

対応

グループチャット

対応

DingTalk 前提条件

  • DingTalk 組織の管理者権限またはアプリ開発権限
  • DingTalk プラグインのインストール:openclaw plugins install @soimy/dingtalk
  • OpenClaw Gateway が実行中で設定済みであること
  • サーバーに Node.js 18+ がインストール済みであること

DingTalk クイックセットアップ

1

DingTalk プラグインをインストール

ターミナルで 'openclaw plugins install @soimy/dingtalk' を実行してコミュニティ DingTalk プラグインをインストールします。AI Card ストリーミング返信が必要な場合は、'@dingtalk-real-ai/dingtalk-connector' プラグインも選択できます。

2

DingTalk 企業内部アプリを作成

DingTalk オープンプラットフォーム(open-dev.dingtalk.com)にログインし、企業内部アプリを作成します。アプリ認証情報ページで ClientID(AppKey)と ClientSecret(AppSecret)をコピーします。アプリ機能で「ボット」機能を追加し、メッセージ受信モードで Stream モードを選択します。

3

権限を設定して公開

権限管理で必要な権限を付与します:Card.Instance.Write、Card.Streaming.Write、ボットメッセージ送信、メディアファイルアップロードなど。完了後、アプリを公開し、承認を待ちます。

4

OpenClaw を設定してテスト

~/.openclaw/openclaw.json に DingTalk チャンネル設定を追加し、clientId と clientSecret を入力します。'openclaw gateway restart' で Gateway を再起動し、DingTalk でボットにメッセージを送信してテストします。

DingTalk 設定例

config.json
{
  "channels": {
    "dingtalk": {
      "enabled": true,
      "clientId": "dingXXXXXX",
      "clientSecret": "your-app-secret",
      "robotCode": "dingXXXXXX",
      "corpId": "dingXXXXXX",
      "dmPolicy": "open",
      "groupPolicy": "open",
      "messageType": "markdown"
    }
  }
}

DingTalk 統合ガイド

アーキテクチャ概要

OpenClaw は DingTalk オープンプラットフォームの Stream モード(WebSocket ロングコネクション)で DingTalk に接続します。従来の Webhook とは異なり、Stream モードでは Gateway が DingTalk サーバーへの WebSocket 接続を能動的に開始し、リアルタイムでイベントプッシュを受信するため、パブリック IP やドメインは不要です。 メッセージフロー:ユーザーが DingTalk でメッセージを送信 → DingTalk オープンプラットフォーム → Stream で Gateway にプッシュ → OpenClaw が AI で処理 → DingTalk Bot API 経由で返信 → DingTalk でメッセージが配信。 このアーキテクチャは NAT や企業ファイアウォールの背後にあるセルフホストデプロイに最適です。Gateway は自動的に接続を維持し、切断時には指数バックオフ戦略で再接続を処理します。
Stream モードはパブリック IP 不要、SSL 証明書不要で、企業内ネットワークや家庭ネットワークでも正常に動作します。
DingTalk プラグインはコミュニティによるメンテナンスで、OpenClaw コアとは分離してインストールされるため、Gateway を軽量に保てます。

プラグインの選択

DingTalk 接続には2つの主要なコミュニティプラグインがあります: • @soimy/dingtalk — 最も人気のあるプラグインで、コミュニティが活発にメンテナンスしています。Markdown と AI Card の両方の返信形式をサポートし、機能が充実して安定しています。 • @dingtalk-real-ai/dingtalk-connector — DingTalk 公式関連プロジェクトで、AI Card ストリーミング返信に特化しています。マルチエージェントルーティングと非同期モードをサポートし、OpenClaw v0.7.7+ が必要です。 両方のプラグインとも Stream モードで接続し、コア体験は同じです。選択の目安:初心者は @soimy 版(資料が豊富)、マルチエージェントや非同期処理が必要な場合は @dingtalk-real-ai 版をお勧めします。
terminal
# @soimy 版をインストール(推奨)
openclaw plugins install @soimy/dingtalk

# または @dingtalk-real-ai 版をインストール
openclaw plugins install @dingtalk-real-ai/dingtalk-connector

DingTalk アプリの作成と認証情報の取得

DingTalk 統合のセットアップには DingTalk オープンプラットフォームでアプリを作成する必要があります: 1. DingTalk オープンプラットフォーム open-dev.dingtalk.com にログインし、開発者ダッシュボードに入ります。 2. 「アプリを作成」をクリックし、「企業内部開発」→「ボット」タイプを選択します。 3. アプリ名と説明を入力し、作成完了後「認証情報と基本情報」ページで ClientID(AppKey、形式 dingXXX)と ClientSecret(AppSecret)をコピーします。 4. 「ボット設定」でメッセージ受信モードを **Stream モード**(HTTP モードではなく)に設定します。 5. 権限管理で必要な権限を追加します。主要な権限: - qyapi_robot_sendmsg(ボットメッセージ送信) - Card.Instance.Write(カードインスタンス書き込み) - Card.Streaming.Write(ストリーミングカード書き込み) - mediaId.download と mediaId.upload(メディアファイルのアップロード/ダウンロード) 6. アプリを公開し、組織管理者の承認を待ちます。
terminal
# 環境変数経由
export DINGTALK_CLIENT_ID="dingXXXXXX"
export DINGTALK_CLIENT_SECRET="your_app_secret"

# または CLI 経由
openclaw channels add
ClientSecret は安全に保管してください。バージョン管理システムにコミットしないでください。本番環境では環境変数を使用してください。漏洩した場合は、DingTalk オープンプラットフォームコンソールで直ちにリセットしてください。

個人チャットとグループチャットのポリシー

DingTalk プラグインは柔軟なメッセージポリシー設定をサポートしています: **個人チャットポリシー(dmPolicy)**: • open — 誰でもボットに個人チャットで返信を受け取れます • disabled — 個人チャット機能を無効にします **グループチャットポリシー(groupPolicy)**: • open — グループ内の誰でも @ボットでトリガーできます • disabled — グループチャットメッセージを完全に無視します グループチャットではデフォルトで @ボットが必要で、アクティブなグループで全メッセージに返信することを避けます。
openclaw.json
{
  "channels": {
    "dingtalk": {
      "dmPolicy": "open",
      "groupPolicy": "open"
    }
  }
}
グループチャットで @ボット名でトリガーでき、追加の設定は不要です。
セッションは会話単位で分離され、異なるチャットにはそれぞれ独立したコンテキストがあります。30分間操作がないとセッションが自動リセットされます。

返信形式と AI Card ストリーミング出力

DingTalk プラグインは複数の返信形式をサポートしています: • **テキスト(text)** — 最も基本的なプレーンテキスト返信 • **Markdown** — 見出し、リスト、リンクなどのフォーマットされたコンテンツをサポート。デフォルト推奨 • **AI Card(ストリーミング)** — ChatGPT のようなタイピングエフェクトで、メッセージがカード内で段階的に更新されます AI Card ストリーミング出力は最高のユーザー体験を提供し、メッセージはその場で更新され、複数のメッセージが送信されることはありません。DingTalk アプリで Card 関連の権限を付与する必要があります。
openclaw.json
{
  "channels": {
    "dingtalk": {
      "messageType": "markdown",
      "streaming": true
    }
  }
}
AI Card ストリーミング出力には Card.Instance.Write と Card.Streaming.Write 権限の付与が必要です。
ストリーミングエフェクトが不要な場合は、messageType を markdown に設定し、streaming を無効にしてください。

メッセージタイプとメディアサポート

OpenClaw DingTalk プラグインは様々なメッセージタイプを処理します: **受信サポート**:テキスト、画像、音声(自動音声認識)、動画、ファイル **ファイル解析**:.docx、.pdf、.txt、.md、.json、.xlsx、.pptx、.zip などの形式を AI が読み取り分析可能 **送信サポート**:テキスト、Markdown、AI Card、画像、ファイル 音声メッセージは自動的にテキストに変換されてから AI に渡されます。追加の設定は不要です。
大きなファイルを送信する前に、DingTalk アプリにメディアアップロード権限が付与されていることを確認してください。
音声メッセージは自動的にテキストに認識されます。

マルチエージェントルーティング

@dingtalk-real-ai 版のプラグインを使用すると、マルチエージェントルーティングを設定して、異なる AI エージェントが異なるタイプの会話を処理できます。例えば、個人チャットは汎用アシスタント、特定のグループチャットは専門分野のエージェントに割り当てることができます。 OpenClaw の bindings 設定を通じて、各会話のエージェント割り当てを細かく制御できます。
openclaw.json
{
  "bindings": [
    { "agentId": "main", "match": { "channel": "dingtalk", "peer": { "kind": "direct" } } },
    { "agentId": "tech-support", "match": { "channel": "dingtalk", "peer": { "kind": "group" } } }
  ]
}
マルチエージェントルーティングは @dingtalk-real-ai 版のみサポートしており、@soimy 版では現在サポートされていません。

便利なコマンド

OpenClaw は DingTalk ボット管理用の複数のコマンドを提供します: • openclaw gateway status — Gateway の接続状態を確認 • openclaw gateway restart — Gateway サービスを再起動 • openclaw logs --follow — リアルタイムログを表示 • openclaw channels add — 対話式でチャンネルを追加 • openclaw plugins list — インストール済みプラグインを表示 • openclaw plugins update @soimy/dingtalk — DingTalk プラグインを更新 • openclaw doctor — 総合診断

DingTalk 設定リファレンス

enabled
Type: booleanDefault: true

DingTalk チャンネルの有効/無効

clientId
Type: stringDefault: ""

DingTalk アプリの ClientID(AppKey)、形式 dingXXX、DingTalk オープンプラットフォームから取得

clientSecret
Type: stringDefault: ""

DingTalk アプリの ClientSecret(AppSecret)、DingTalk オープンプラットフォームから取得

robotCode
Type: stringDefault: ""

ボットの一意識別コード、DingTalk オープンプラットフォームのボット設定ページから取得

corpId
Type: stringDefault: ""

企業の CorpId、形式 dingXXX、DingTalk 管理コンソールから取得

agentId
Type: stringDefault: ""

アプリの AgentId、DingTalk オープンプラットフォームから取得

dmPolicy
Type: stringDefault: "open"

個人チャットポリシー。オプション:open(開放)、disabled(無効)

groupPolicy
Type: stringDefault: "open"

グループチャットポリシー。オプション:open(開放)、disabled(無効)

messageType
Type: stringDefault: "markdown"

返信メッセージの形式。オプション:text(プレーンテキスト)、markdown、card(AI Card)

streaming
Type: booleanDefault: true

AI Card ストリーミング返信(タイピングエフェクト)を有効にする

debug
Type: booleanDefault: false

デバッグモードを有効にし、詳細な接続とメッセージのログを出力

DingTalk よくある質問

DingTalk トラブルシューティング

ボットが全く返信しない

アプリが公開されていない、Stream モードが有効になっていない、ClientID または ClientSecret が間違っている、またはプラグインが正しくインストールされていない可能性があります。

順番に確認してください:1) アプリが公開され承認されていること、2) メッセージ受信モードが Stream モードであること、3) ClientID と ClientSecret を再確認、4) openclaw plugins list でプラグインがインストールされていることを確認、5) openclaw gateway status で接続状態を確認。
メッセージは受信できるが AI が返信しない

OpenClaw バージョンアップグレード後の互換性の問題、または AI モデルの API Key が設定されていない可能性があります。

AI モデルの API Key が正しく設定されているか確認してください。DingTalk プラグインの更新を試してください:openclaw plugins update @soimy/dingtalk。openclaw logs --follow で詳細なエラー情報を確認。
Stream 接続が頻繁に切断される

ネットワークの不安定さ、または DingTalk Stream モードの既知のメッセージ消失問題。

Gateway は自動的に切断を再接続します(指数バックオフ戦略)。頻繁に切断される場合は、サーバーのネットワーク安定性を確認し、ファイアウォールがアウトバウンド WebSocket 接続を許可していることを確認してください。デバッグモードを有効にして詳細な接続ログを表示します。
グループファイルや DingTalk ドライブのファイルにアクセスできない

グループファイルや DingTalk ドライブの API には企業認証が必要な場合があり、未認証の組織ではこれらの機能が使用できないことがあります。

組織が企業認証を完了しているか確認してください。未認証の場合、一部の高度なファイル API は利用できません。DingTalk ドライブの共有ではなく、ファイルを直接送信することでこの制限を回避できます。
AI Card ストリーミング出力が動作しない

Card 関連の権限が不足しているか、messageType の設定が正しくありません。

DingTalk オープンプラットフォームで Card.Instance.Write と Card.Streaming.Write 権限が付与されていることを確認してください。設定で streaming が true になっているか確認してください。権限変更後はアプリを再公開する必要があります。