# Connect Dify to DingTalk

Source: https://langbot.app/docs/en/recipes/dify/dingtalk

Step-by-step guide to running your Dify app as a DingTalk bot with LangBot: Dify setup, bot credentials, networking, testing and troubleshooting.

This recipe puts your Dify app behind a DingTalk bot. LangBot receives messages from DingTalk, runs them through a pipeline, and sends the answer back, so you do not write any platform code.

Dify builds chat assistants, Chatflows, Agents and Workflows. LangBot calls the published app through its Service API, so prompts, tools and knowledge stay in Dify.

## What you need

- A running LangBot instance: [LangBot Cloud](https://space.langbot.app/cloud) (no server needed) or a [self-hosted deployment](https://langbot.app/docs/en/deploy/langbot/docker.md) with Docker or `uvx langbot`.
- A Dify account or instance that LangBot can reach over the network.
- A DingTalk app robot (**Client ID** and **Client Secret**). The one-click setup fills both after you authorize on your phone.

## Networking

In Stream Mode LangBot connects out to DingTalk, so no public callback URL is needed.

## 1. Prepare Dify

1. Build and **publish** a Chat Assistant (including Chatflow), Agent or Workflow app in Dify.
2. Open the app's **Access API** page and create an API key.
3. For a Workflow app, output the answer under the key `summary`.

## 2. Create a pipeline

Open **Pipelines** in the LangBot WebUI, create a pipeline (or edit the default one) and set **AI** as follows. If the runner is not listed, install the official runner plugin from **Plugins** or the [LangBot Space marketplace](https://space.langbot.app/market).

| Field    | Value                                                                                 |
| -------- | ------------------------------------------------------------------------------------- |
| Runner   | **Dify** (official Dify Agent runner plugin)                                          |
| Base URL | `https://api.dify.ai/v1` for Dify Cloud, or your own Dify address with `/v1` appended |
| API Key  | The key from the app's Access API page                                                |

## 3. Create the DingTalk bot

1. Create a bot with the **DingTalk** adapter and use **One-Click Setup**, or create the robot manually and enter its credentials.
2. Use **Stream Mode** for event delivery. For streaming replies, import LangBot's `dingtalk_stream_card.json` card template, enable **Use Card Replies** and paste the Card Template ID.

## 4. Bind and test

Open the bot, select the pipeline you created, save and make sure the bot is enabled.

Message the robot directly, then add it to a group and @mention it.

## Troubleshooting

- Self-hosted Dify in Docker on the same host: put both stacks on a shared Docker network and use the container address (for example `http://dify-nginx/v1`), not `localhost`.
- Chatflow apps only return what the Answer node outputs.
- Replies arrive as plain text instead of streaming: the card template is not imported or **Use Card Replies** is off.
- Messages do not arrive: publish the app version and check that Stream Mode is selected under event subscriptions.
- Check **Monitoring** in the WebUI: every message, pipeline run and error is recorded there.

## FAQ

### Do I need a server with a public IP for DingTalk?

No. In Stream Mode LangBot connects out to DingTalk, so no public callback URL is needed.

### Does the DingTalk bot support streaming replies?

Yes. Enable streaming on the bot; the AI back end must also stream. See the [platform feature matrix](https://langbot.app/docs/en/insight/platform-features.md) for details.

### Can the same Dify setup serve other platforms too?

Yes. A pipeline can be bound to many bots, so one configuration can answer on several platforms at once.

## Related guides

- [Full DingTalk setup guide](https://langbot.app/docs/en/usage/platforms/dingtalk.md)
- [Full Dify runner guide](https://langbot.app/docs/en/usage/pipelines/dify.md)
- Other AI back ends on DingTalk: [n8n](https://langbot.app/docs/en/recipes/n8n/dingtalk.md) · [Coze](https://langbot.app/docs/en/recipes/coze/dingtalk.md) · [Langflow](https://langbot.app/docs/en/recipes/langflow/dingtalk.md) · [DeepSeek](https://langbot.app/docs/en/recipes/deepseek/dingtalk.md) · [OpenAI (ChatGPT models)](https://langbot.app/docs/en/recipes/openai/dingtalk.md)
- Dify on other platforms: [Telegram](https://langbot.app/docs/en/recipes/dify/telegram.md) · [Discord](https://langbot.app/docs/en/recipes/dify/discord.md) · [Slack](https://langbot.app/docs/en/recipes/dify/slack.md) · [Lark (Feishu)](https://langbot.app/docs/en/recipes/dify/lark.md) · [WeCom (internal app)](https://langbot.app/docs/en/recipes/dify/wecom.md) · [WeCom Intelligent Bot](https://langbot.app/docs/en/recipes/dify/wecombot.md)
