Skip to Content
Руководство для пользователейВозможностиКаналыDingTalk

DingTalk (Dingtalk)

В этом руководстве описана настройка канала Qwen Code в DingTalk (钉钉).

Предварительные требования

  • Учётная запись организации DingTalk
  • Приложение-бот DingTalk с AppKey и AppSecret (см. ниже)

Создание бота

  1. Перейдите на Портал разработчика DingTalk 
  2. Создайте новое приложение (или используйте существующее)
  3. В приложении включите возможность Robot (робот)
  4. В настройках робота включите Stream Mode (机器人协议 → Stream 模式)
  5. Запишите AppKey (Client ID) и AppSecret (Client Secret) со страницы учётных данных приложения

Stream Mode

Режим Stream в DingTalk использует исходящее WebSocket-соединение — не требуется публичный URL или сервер. Бот подключается к серверам DingTalk, которые отправляют сообщения через WebSocket. Это самая простая модель развёртывания.

Конфигурация

Добавьте канал в ~/.qwen/settings.json:

{ "channels": { "my-dingtalk": { "type": "dingtalk", "clientId": "$DINGTALK_CLIENT_ID", "clientSecret": "$DINGTALK_CLIENT_SECRET", "senderPolicy": "open", "sessionScope": "user", "cwd": "/path/to/your/project", "instructions": "Вы — лаконичный ассистент по программированию, отвечающий через DingTalk.", "groupPolicy": "open", "groups": { "*": { "requireMention": true } } } } }

Установите учётные данные как переменные окружения:

export DINGTALK_CLIENT_ID=<your-app-key> export DINGTALK_CLIENT_SECRET=<your-app-secret>

Или определите их в секции env файла settings.json:

{ "env": { "DINGTALK_CLIENT_ID": "your-app-key", "DINGTALK_CLIENT_SECRET": "your-app-secret" } }

Запуск

# Запустить только канал DingTalk qwen channel start my-dingtalk # Или запустить все настроенные каналы вместе qwen channel start

Откройте DingTalk и отправьте сообщение боту. Вы увидите реакцию в виде эмодзи 👀, пока агент обрабатывает запрос, после чего придёт ответ.

Групповые чаты

Боты DingTalk работают как в личных сообщениях, так и в групповых чатах. Чтобы включить поддержку групп:

  1. Установите groupPolicy в "allowlist" или "open" в конфигурации канала
  2. Добавьте бота в группу DingTalk
  3. Упомяните бота с помощью @ в группе, чтобы вызвать ответ

По умолчанию бот требует упоминания @ в групповых чатах (requireMention: true). Установите "requireMention": false для конкретной группы, чтобы бот отвечал на все сообщения. Подробнее см. в разделе Групповые чаты.

Поиск ID беседы группы

DingTalk использует conversationId для идентификации групп. Вы можете найти его в логах службы канала, когда кто-то отправляет сообщение в группу — ищите поле conversationId в выводе логов.

Изображения и файлы

Вы можете отправлять боту фотографии и документы, а не только текст.

Фотографии: Отправьте изображение (снимок экрана, диаграмму и т.д.), и агент проанализирует его с помощью возможностей зрения. Для этого требуется мультимодальная модель — добавьте "model": "qwen3.5-plus" (или другую модель с поддержкой зрения) в конфигурацию канала. DingTalk поддерживает отправку изображений напрямую или как часть форматированного текста (текст + изображения).

Файлы: Отправьте PDF, файл с кодом или любой документ. Бот загружает его с серверов DingTalk и сохраняет локально, чтобы агент мог прочитать его с помощью своих файловых инструментов. Аудио- и видеофайлы также поддерживаются. Это работает с любой моделью.

Ключевые отличия от Telegram

  • Аутентификация: AppKey + AppSecret вместо статического токена бота. SDK автоматически обновляет токен доступа.
  • Подключение: WebSocket-поток вместо опроса — не требуется публичный IP или URL вебхука.
  • Форматирование: Ответы используют диалект Markdown от DingTalk (ограниченное подмножество). Таблицы автоматически преобразуются в обычный текст, так как DingTalk их не отображает. Длинные сообщения разбиваются на части примерно по 3800 символов.
  • Индикатор работы: К сообщению пользователя добавляется реакция в виде эмодзи 👀 во время обработки, затем она удаляется при отправке ответа.
  • Загрузка медиа: Двухэтапный процесс — downloadCode из сообщения обменивается на временный URL для загрузки через API DingTalk.
  • Группы: DingTalk использует isInAtList для обнаружения упоминаний @ вместо анализа сущностей сообщения.

Советы

  • Используйте инструкции, учитывающие Markdown DingTalk — DingTalk поддерживает ограниченное подмножество Markdown (заголовки, жирный текст, ссылки, блоки кода, но не таблицы). Добавление инструкций вроде “Используйте Markdown DingTalk. Избегайте таблиц.” помогает агенту правильно форматировать ответы.
  • Ограничьте доступ — В контексте организации senderPolicy: "open" может быть приемлемо. Для более строгого контроля используйте "allowlist" или "pairing". Подробнее см. в разделе Личное сопряжение (DM Pairing).
  • Цитируемые сообщения — Цитирование (ответ на) сообщения пользователя включает цитируемый текст как контекст для агента. Цитирование ответов бота пока не поддерживается.

Устранение неполадок

Бот не подключается

  • Проверьте правильность AppKey и AppSecret
  • Убедитесь, что переменные окружения установлены перед запуском qwen channel start
  • Убедитесь, что Stream Mode включён в настройках бота на портале разработчика DingTalk
  • Проверьте вывод терминала на наличие ошибок подключения

Бот не отвечает в группах

  • Проверьте, что groupPolicy установлен в "allowlist" или "open" (по умолчанию "disabled")
  • Убедитесь, что вы упомянули бота с помощью @ в групповом сообщении
  • Проверьте, что бот добавлен в группу

”No sessionWebhook in message”

Это означает, что DingTalk не включил конечную точку ответа в callback сообщения. Такое может произойти, если разрешения бота настроены неправильно. Проверьте настройки бота на портале разработчика.

”Sorry, something went wrong processing your message”

Обычно это означает, что агент столкнулся с ошибкой. Проверьте вывод терминала для получения подробной информации.

Last updated on