Skip to main content
Call this API to send a plain message from a bot in a one-on-one chat.

API call description

This API can only be used in the direct message coolapp scenario. For details, see Direct message coolapp.

Request

Basic information

FieldValue
HTTP URLhttps://api.dingtalk.io/v1.0/robot/privateChatMessages/send
HTTP MethodPOST
Supported app typesappType-Internal app appType-Third-party enterprise app
Permission requirementspermission-qyapi_robot_sendmsg-Permission for bots in your organization to send messages

Request header

NameTypeRequiredDescription
x-acs-dingtalk-access-tokenStringYesThe access credential used to call this API. Obtain it as follows: - For an internal app, call the Obtain the access token of an internal app API. - For a third-party enterprise app, call the Obtain the access token of an organization that has authorized a third-party app API.

Request body

NameTypeRequiredDescription
msgParamStringYesThe message template parameters. For details, see Message types sent by enterprise bots.
msgKeyStringYesThe message template key. For details, see Message types sent by enterprise bots.
openConversationIdStringYesThe chat ID. Obtain the value of OpenConversationId by calling Batch install a coolapp to direct message chats or by listening to the Direct message coolapp event.
robotCodeStringYesThe bot code. Use the robotCode of the enterprise bot for this parameter. For details, see Bot ID.
coolAppCodeStringYesThe coolapp code.

Request example

HTTP
POST /v1.0/robot/privateChatMessages/send HTTP/1.1
Host:api.dingtalk.io
x-acs-dingtalk-access-token:8ca04016xxx
Content-Type:application/json

{
  "msgParam" : "{\"content\":\"DingTalk, where progress happens\"}",
  "msgKey" : "sampleText",
  "openConversationId" : "cid6******==",
  "robotCode" : "dingue4kfzdxbyn0pjqd",
  "coolAppCode" : "COOLAPP-1-******9000J"
}
Java
// This file is auto-generated, don't edit it. Thanks.
package com.aliyun.sample;

import com.aliyun.tea.*;

public class Sample {

    /**
     * Initialize the account client using a token.
     * @return Client
     * @throws Exception
     */
    public static com.aliyun.dingtalkrobot_1_0.Client createClient() throws Exception {
        com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config();
        config.protocol = "https";
        config.regionId = "central";
        return new com.aliyun.dingtalkrobot_1_0.Client(config);
    }

    public static void main(String[] args_) throws Exception {
        java.util.List<String> args = java.util.Arrays.asList(args_);
        com.aliyun.dingtalkrobot_1_0.Client client = Sample.createClient();
        com.aliyun.dingtalkrobot_1_0.models.PrivateChatSendHeaders privateChatSendHeaders = new com.aliyun.dingtalkrobot_1_0.models.PrivateChatSendHeaders();
        privateChatSendHeaders.xAcsDingtalkAccessToken = "<your access token>";
        com.aliyun.dingtalkrobot_1_0.models.PrivateChatSendRequest privateChatSendRequest = new com.aliyun.dingtalkrobot_1_0.models.PrivateChatSendRequest()
                .setMsgParam("{\"content\":\"DingTalk, where progress happens\"}")
                .setMsgKey("sampleText")
                .setOpenConversationId("cid6******==")
                .setRobotCode("dingue4kfzdxbyn0pjqd")
                .setCoolAppCode("COOLAPP-1-******9000J");
        try {
            client.privateChatSendWithOptions(privateChatSendRequest, privateChatSendHeaders, new com.aliyun.teautil.models.RuntimeOptions());
        } catch (TeaException err) {
            if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
                // The err object contains the code and message attributes, which help you locate the issue.
            }

        } catch (Exception _err) {
            TeaException err = new TeaException(_err.getMessage(), _err);
            if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
                // The err object contains the code and message attributes, which help you locate the issue.
            }

        }        
    }
}
Python
# -*- coding: utf-8 -*-
# This file is auto-generated, don't edit it. Thanks.
import sys

from typing import List

from alibabacloud_dingtalk.robot_1_0.client import Client as dingtalkrobot_1_0Client
from alibabacloud_tea_openapi import models as open_api_models
from alibabacloud_dingtalk.robot_1_0 import models as dingtalkrobot__1__0_models
from alibabacloud_tea_util import models as util_models
from alibabacloud_tea_util.client import Client as UtilClient

class Sample:
    def __init__(self):
        pass

    @staticmethod
    def create_client() -> dingtalkrobot_1_0Client:
        """
        Initialize the account client using a token.
        @return: Client
        @throws Exception
        """
        config = open_api_models.Config()
        config.protocol = 'https'
        config.region_id = 'central'
        return dingtalkrobot_1_0Client(config)

    @staticmethod
    def main(
        args: List[str],
    ) -> None:
        client = Sample.create_client()
        private_chat_send_headers = dingtalkrobot__1__0_models.PrivateChatSendHeaders()
        private_chat_send_headers.x_acs_dingtalk_access_token = '<your access token>'
        private_chat_send_request = dingtalkrobot__1__0_models.PrivateChatSendRequest(
            msg_param='{"content":"DingTalk, where progress happens"}',
            msg_key='sampleText',
            open_conversation_id='cid6******==',
            robot_code='dingue4kfzdxbyn0pjqd',
            cool_app_code='COOLAPP-1-******9000J'
        )
        try:
            client.private_chat_send_with_options(private_chat_send_request, private_chat_send_headers, util_models.RuntimeOptions())
        except Exception as err:
            if not UtilClient.empty(err.code) and not UtilClient.empty(err.message):
                # The err object contains the code and message attributes, which help you locate the issue.
                pass

    @staticmethod
    async def main_async(
        args: List[str],
    ) -> None:
        client = Sample.create_client()
        private_chat_send_headers = dingtalkrobot__1__0_models.PrivateChatSendHeaders()
        private_chat_send_headers.x_acs_dingtalk_access_token = '<your access token>'
        private_chat_send_request = dingtalkrobot__1__0_models.PrivateChatSendRequest(
            msg_param='{"content":"DingTalk, where progress happens"}',
            msg_key='sampleText',
            open_conversation_id='cid6******==',
            robot_code='dingue4kfzdxbyn0pjqd',
            cool_app_code='COOLAPP-1-******9000J'
        )
        try:
            await client.private_chat_send_with_options_async(private_chat_send_request, private_chat_send_headers, util_models.RuntimeOptions())
        except Exception as err:
            if not UtilClient.empty(err.code) and not UtilClient.empty(err.message):
                # The err object contains the code and message attributes, which help you locate the issue.
                pass

if __name__ == '__main__':
    Sample.main(sys.argv[1:])
PHP
<?php

// This file is auto-generated, don't edit it. Thanks.
namespace AlibabaCloud\SDK\Sample;

use AlibabaCloud\SDK\Dingtalk\Vrobot_1_0\Dingtalk;
use \Exception;
use AlibabaCloud\Tea\Exception\TeaError;
use AlibabaCloud\Tea\Utils\Utils;

use Darabonba\OpenApi\Models\Config;
use AlibabaCloud\SDK\Dingtalk\Vrobot_1_0\Models\PrivateChatSendHeaders;
use AlibabaCloud\SDK\Dingtalk\Vrobot_1_0\Models\PrivateChatSendRequest;
use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions;

class Sample {

    /**
     * Initialize the account client using a token.
     * @return Dingtalk Client
     */
    public static function createClient(){
        $config = new Config([]);
        $config->protocol = "https";
        $config->regionId = "central";
        return new Dingtalk($config);
    }

    /**
     * @param string[] $args
     * @return void
     */
    public static function main($args){
        $client = self::createClient();
        $privateChatSendHeaders = new PrivateChatSendHeaders([]);
        $privateChatSendHeaders->xAcsDingtalkAccessToken = "<your access token>";
        $privateChatSendRequest = new PrivateChatSendRequest([
            "msgParam" => "{\"content\":\"DingTalk, where progress happens\"}",
            "msgKey" => "sampleText",
            "openConversationId" => "cid6******==",
            "robotCode" => "dingue4kfzdxbyn0pjqd",
            "coolAppCode" => "COOLAPP-1-******9000J"
        ]);
        try {
            $client->privateChatSendWithOptions($privateChatSendRequest, $privateChatSendHeaders, new RuntimeOptions([]));
        }
        catch (Exception $err) {
            if (!($err instanceof TeaError)) {
                $err = new TeaError([], $err->getMessage(), $err->getCode(), $err);
            }
            if (!Utils::empty_($err->code) && !Utils::empty_($err->message)) {
                // The err object contains the code and message attributes, which help you locate the issue.
            }
        }
    }
}
$path = __DIR__ . \DIRECTORY_SEPARATOR . '..' . \DIRECTORY_SEPARATOR . 'vendor' . \DIRECTORY_SEPARATOR . 'autoload.php';
if (file_exists($path)) {
    require_once $path;
}
Sample::main(array_slice($argv, 1));
Go
// This file is auto-generated, don't edit it. Thanks.
package main

import (
  "os"
  util  "github.com/alibabacloud-go/tea-utils/v2/service"
  dingtalkrobot_1_0  "github.com/alibabacloud-go/dingtalk/robot_1_0"
  openapi  "github.com/alibabacloud-go/darabonba-openapi/v2/client"
  "github.com/alibabacloud-go/tea/tea"
)

/**
 * Initialize the account client using a token.
 * @return Client
 * @throws Exception
 */
func CreateClient () (_result *dingtalkrobot_1_0.Client, _err error) {
  config := &openapi.Config{}
  config.Protocol = tea.String("https")
  config.RegionId = tea.String("central")
  _result = &dingtalkrobot_1_0.Client{}
  _result, _err = dingtalkrobot_1_0.NewClient(config)
  return _result, _err
}

func _main (args []*string) (_err error) {
  client, _err := CreateClient()
  if _err != nil {
    return _err
  }

  privateChatSendHeaders := &dingtalkrobot_1_0.PrivateChatSendHeaders{}
  privateChatSendHeaders.XAcsDingtalkAccessToken = tea.String("<your access token>")
  privateChatSendRequest := &dingtalkrobot_1_0.PrivateChatSendRequest{
    MsgParam: tea.String("{\"content\":\"DingTalk, where progress happens\"}"),
    MsgKey: tea.String("sampleText"),
    OpenConversationId: tea.String("cid6******=="),
    RobotCode: tea.String("dingue4kfzdxbyn0pjqd"),
    CoolAppCode: tea.String("COOLAPP-1-******9000J"),
  }
  tryErr := func()(_e error) {
    defer func() {
      if r := tea.Recover(recover()); r != nil {
        _e = r
      }
    }()
    _, _err = client.PrivateChatSendWithOptions(privateChatSendRequest, privateChatSendHeaders, &util.RuntimeOptions{})
    if _err != nil {
      return _err
    }

    return nil
  }()

  if tryErr != nil {
    var err = &tea.SDKError{}
    if _t, ok := tryErr.(*tea.SDKError); ok {
      err = _t
    } else {
      err.Message = tea.String(tryErr.Error())
    }
    if !tea.BoolValue(util.Empty(err.Code)) && !tea.BoolValue(util.Empty(err.Message)) {
      // The err object contains the code and message attributes, which help you locate the issue.
    }

  }
  return _err
}

func main() {
  err := _main(tea.StringSlice(os.Args[1:]))
  if err != nil {
    panic(err)
  }
}
Node.js
// This file is auto-generated, don't edit it
import Util, * as $Util from '@alicloud/tea-util';
import dingtalkrobot_1_0, * as $dingtalkrobot_1_0 from '@alicloud/dingtalk/robot_1_0';
import OpenApi, * as $OpenApi from '@alicloud/openapi-client';
import * as $tea from '@alicloud/tea-typescript';

export default class Client {

  /**
   * Initialize the account client using a token.
   * @return Client
   * @throws Exception
   */
  static createClient(): dingtalkrobot_1_0 {
    let config = new $OpenApi.Config({ });
    config.protocol = "https";
    config.regionId = "central";
    return new dingtalkrobot_1_0(config);
  }

  static async main(args: string[]): Promise<void> {
    let client = Client.createClient();
    let privateChatSendHeaders = new $dingtalkrobot_1_0.PrivateChatSendHeaders({ });
    privateChatSendHeaders.xAcsDingtalkAccessToken = "<your access token>";
    let privateChatSendRequest = new $dingtalkrobot_1_0.PrivateChatSendRequest({
      msgParam: "{\"content\":\"DingTalk, where progress happens\"}",
      msgKey: "sampleText",
      openConversationId: "cid6******==",
      robotCode: "dingue4kfzdxbyn0pjqd",
      coolAppCode: "COOLAPP-1-******9000J",
    });
    try {
      await client.privateChatSendWithOptions(privateChatSendRequest, privateChatSendHeaders, new $Util.RuntimeOptions({ }));
    } catch (err) {
      if (!Util.empty(err.code) && !Util.empty(err.message)) {
        // The err object contains the code and message attributes, which help you locate the issue.
      }

    }    
  }

}

Client.main(process.argv.slice(2));
C#
// This file is auto-generated, don't edit it. Thanks.

using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Threading.Tasks;

using Tea;
using Tea.Utils;

namespace AlibabaCloud.SDK.Sample
{
    public class Sample 
    {

        /**
         * Initialize the account client using a token.
         * @return Client
         * @throws Exception
         */
        public static AlibabaCloud.SDK.Dingtalkrobot_1_0.Client CreateClient()
        {
            AlibabaCloud.OpenApiClient.Models.Config config = new AlibabaCloud.OpenApiClient.Models.Config();
            config.Protocol = "https";
            config.RegionId = "central";
            return new AlibabaCloud.SDK.Dingtalkrobot_1_0.Client(config);
        }

        public static void Main(string[] args)
        {
            AlibabaCloud.SDK.Dingtalkrobot_1_0.Client client = CreateClient();
            AlibabaCloud.SDK.Dingtalkrobot_1_0.Models.PrivateChatSendHeaders privateChatSendHeaders = new AlibabaCloud.SDK.Dingtalkrobot_1_0.Models.PrivateChatSendHeaders();
            privateChatSendHeaders.XAcsDingtalkAccessToken = "<your access token>";
            AlibabaCloud.SDK.Dingtalkrobot_1_0.Models.PrivateChatSendRequest privateChatSendRequest = new AlibabaCloud.SDK.Dingtalkrobot_1_0.Models.PrivateChatSendRequest
            {
                MsgParam = "{\"content\":\"DingTalk, where progress happens\"}",
                MsgKey = "sampleText",
                OpenConversationId = "cid6******==",
                RobotCode = "dingue4kfzdxbyn0pjqd",
                CoolAppCode = "COOLAPP-1-******9000J",
            };
            try
            {
                client.PrivateChatSendWithOptions(privateChatSendRequest, privateChatSendHeaders, new AlibabaCloud.TeaUtil.Models.RuntimeOptions());
            }
            catch (TeaException err)
            {
                if (!AlibabaCloud.TeaUtil.Common.Empty(err.Code) && !AlibabaCloud.TeaUtil.Common.Empty(err.Message))
                {
                    // The err object contains the code and message attributes, which help you locate the issue.
                }
            }
            catch (Exception _err)
            {
                TeaException err = new TeaException(new Dictionary<string, object>
                {
                    { "message", _err.Message }
                });
                if (!AlibabaCloud.TeaUtil.Common.Empty(err.Code) && !AlibabaCloud.TeaUtil.Common.Empty(err.Message))
                {
                    // The err object contains the code and message attributes, which help you locate the issue.
                }
            }
        }

    }
}

Response

Response body

NameTypeDescription
processQueryKeyStringThe encrypted message ID. Use this ID to query the read list of a message or to recall a message by calling the Query the read list of bot messages in a one-on-one chat and Batch recall bot messages in a one-on-one chat APIs.

Response body example

HTTP/1.1 200 OK
Content-Type:application/json

{
  "processQueryKey" : "63w9tt3IRri/6mbDMiguoSXWX0vWkWZ******lg="
}

Error codes

If an error is returned when you call this API, find a solution in the Global error codes document based on the error message.
HttpCodeError codeError messageDescription
400invalidParameter.robotCode.emptyThe bot robotCode is empty.The bot robotCode is invalid. Check whether the bot is in the group.
400invalidParameter.robotCode.authThis app’s appkey does not match the bot’s robotCode. Use the appkey of the bot’s app.This app’s appkey does not match the bot’s robotCode. Use the appkey of the bot’s app.
400invalidParameter.robotCode.authThis app’s suiteKey does not match the bot. Use the suiteKey of the ISV app bound to the bot to send the message.This app’s suiteKey does not match the bot. Use the suiteKey of the ISV app bound to the bot to send the message.
400invalidParameter.robotCode.coolAppThe coolapp code is invalid.The coolapp code is invalid.
400invalidParameter.robotCode.coolAppThe coolapp code does not match the bot. Use the bot bound to this coolapp to send the message.The coolapp code does not match the bot. Use the bot bound to this coolapp to send the message.
400invalidParameter.robotCode.coolAppThe coolapp bound to this bot is not used in any one-on-one chat.The coolapp bound to this bot is not used in any one-on-one chat.
400invalidParameter.robotCode.authOnly a coolapp identity can use this bot.Only a coolapp identity can use this bot.
400invalidParameter.userIds.emptyThe user userId list is empty.The user userId list is empty.
400invalidParameter.userIds.overMaxThe user userId list exceeds the maximum limit.The user userId list exceeds the maximum limit.
400invalidParameter.msgKey.emptyThe msgKey is missing.The msgKey is missing.
400invalidParameter.msgKey.invalidThe msgKey is invalid.The msgKey is invalid.
400invalidParameter.msgParam.invalidThe msgParam must be in JSON format.The msgParam must be in JSON format.
400invalidParameter.param.invalidThe parameter is invalid.The parameter is invalid.
400invalidParameter.msg.unsupportThe message type is not supported.The message type is not supported.
400invalidParameter.msgParam.tooLongThe message content is too long.The message content is too long.
400invalidParameter.robotCode.notExsitThe bot does not exist.The bot does not exist.
400unknown.send.resultUnknown send result.Unknown send result.
400invalidParameter.msgBody.invalidThe body must be JSON.The body must be JSON.
400invalidParameter.robotCode.missingThe robotCode is missing.The robotCode is missing.
400invalidParameter.userId.emptyThe staffId is missing.The staffId is missing.
400invalidParameter.token.invalidUnauthorized token.Unauthorized token.
400invalidParameter.processQueryKey.missingThe processQueryKey is missing.The processQueryKey is missing.
400invalidParameter.robotCode.invalidInvalid robotCode.Invalid robotCode.
400invalid.processQueryKeyInvalid processQueryKey.Invalid processQueryKey.
400miss.openConversationIdThe openConversationId is missing.The openConversationId is missing.
400invalid.openConversationIdInvalid openConversationId.Invalid openConversationId.
400group.disbandedThe group has been disbanded.The group has been disbanded.
400token.notExistedThe TOKEN does not exist.The TOKEN does not exist.
400bot.stoppedThe group bot has been disabled.The group bot has been disabled.
400template.not.existedThe bot template does not exist.The bot template does not exist.
400template.stoppedThe bot template has been disabled.The bot template has been disabled.
400miss.param.textThe text attribute is required.The text attribute is required.
400miss.param.contentOfTextThe text->content attribute is required.The text->content attribute is required.
400miss.param.linkThe link attribute is required.The link attribute is required.
400miss.param.textOfLinkThe link->text attribute is required.The link->text attribute is required.
400miss.param.titleOfLinkThe link->title attribute is required.The link->title attribute is required.
400miss.param.messageUrlOfLinkThe link->messageUrl attribute is required.The link->messageUrl attribute is required.
400miss.param.markdownThe markdown attribute is required.The markdown attribute is required.
400miss.param.markdownTotitleThe markdown->text attribute is required.The markdown->text attribute is required.
400miss.param.markdownTotextThe markdown->text attribute is required.The markdown->text attribute is required.
400miss.param.actionCardThe actionCard attribute is required.The actionCard attribute is required.
400miss.param.actionCardTotitleThe actionCard->title attribute is required.The actionCard->title attribute is required.
400miss.param.actionCardTotextThe actionCard->text attribute is required.The actionCard->text attribute is required.
400miss.param.actionCardTosingleTitleThe actionCard->singleTitle attribute is required.The actionCard->singleTitle attribute is required.
400miss.param.actionCardTosingleUrlThe actionCard->singleURL attribute is required.The actionCard->singleURL attribute is required.
400miss.param.actionCardTobtnsThe actionCard->btns attribute is required.The actionCard->btns attribute is required.
400miss.param.actionCardTobtnsTotitleThe actionCard->btns->title attribute is required.The actionCard->btns->title attribute is required.
400miss.param.actionCardTobtnsToactionUrlThe actionCard->btns->actionURL attribute is required.The actionCard->btns->actionURL attribute is required.
400invalid.param.actionCardTobtnOrientationInvalid actionCard->btnOrientation.Invalid actionCard->btnOrientation.
400invalid.param.actionCardTocanForwardInvalid actionCard->canForward.Invalid actionCard->canForward.
400miss.param.feedCardThe feedCard attribute is required.The feedCard attribute is required.
400miss.param.feedCardTolinksThe feedCard->links attribute is required.The feedCard->links attribute is required.
400miss.param.feedCardTolinksTotitleThe feedCard->links->title attribute is required.The feedCard->links->title attribute is required.
400miss.param.feedCardTolinksTomessageUrlThe feedCard->links->messageURL attribute is required.The feedCard->links->messageURL attribute is required.
400miss.param.feedCardTolinksTopicUrlThe feedCard->links->picURL attribute is required.The feedCard->links->picURL attribute is required.
400miss.param.photoThe photo attribute is required.The photo attribute is required.
400miss.param.photoTophotoUrlThe photo->photoURL attribute is required.The photo->photoURL attribute is required.
400miss.param.imageThe image attribute is required.The image attribute is required.
400miss.param.imageTopicUrlThe image->picURL attribute is required.The image->picURL attribute is required.
400miss.param.beautifulCardThe beautifulCard attribute is required.The beautifulCard attribute is required.
400miss.param.beautifulCardToimageThe beautifulCard->image attribute is required.The beautifulCard->image attribute is required.
400miss.param.beautifulCardTotitleThe beautifulCard->title attribute is required.The beautifulCard->title attribute is required.
400miss.param.beautifulCardToactionUrlThe beautifulCard->actionUrl attribute is required.The beautifulCard->actionUrl attribute is required.
400miss.param.beautifulCardTointroductionThe beautifulCard->introduction attribute is required.The beautifulCard->introduction attribute is required.
400send.byToken.tooFastRate limit error when sending with TOKEN.Rate limit error when sending with TOKEN.
400send.too.fastRate limit error.Rate limit error.
400send.forbiddenSending is forbidden.Sending is forbidden.
400ip.not.matchThe IP does not match.The IP does not match.
400keywords.not.matchThe keywords do not match.The keywords do not match.
400sign.not.matchThe signature does not match.The signature does not match.
400contain.unsafe.urlContains unsafe external links.Contains unsafe external links.
400contain.notAllowed.textContains inappropriate text.Contains inappropriate text.
400contain.notAllowed.pictureContains inappropriate images.Contains inappropriate images.
400contain.notAllowed.contentContains inappropriate content.Contains inappropriate content.
400illegal.receiversThe recipient list is invalid.The recipient list is invalid.
400receivers.exceedThe recipient list exceeds the limit.The recipient list exceeds the limit.
400illegal.excludesThe excluded recipient list is invalid.The excluded recipient list is invalid.
400too.many.groupRate limited due to frequent sending.Rate limited due to frequent sending.
400too.many.peopleRate limited due to frequent sending.Rate limited due to frequent sending.
400only.groupAdmin.canAtAllOnly the group owner can @Everyone.Only the group owner can @Everyone.
400bot.forbidden.sendMessageThe account is muted.The account is muted.
400session.notExistedThe session does not exist.The session does not exist.
400session.expiredThe session has expired.The session has expired.
400staffId.notExistedThe staffId does not exist.The staffId does not exist.
400chatbotId.notAllow.sendOTONot allowed to actively send direct messages.Not allowed to actively send direct messages.
400robot.oto.notExistNo valid bot direct message chat exists.No valid bot direct message chat exists.
400sendMessage.model.notMatchNo matching message model.No matching message model.
400miss.param.file%sInvalid message content. The file attribute is required.
400miss.param.video%sInvalid message content. The video->videoMediaId attribute is required.
400miss.param.audio%sInvalid message content. The audio attribute is required.
400conversation.org.notMatchThe organization information of the chat does not match.Verify whether the token has permission to perform operations on this chat.
400resource.not.found%sThe resource does not exist. The bot may not exist.
400unauthorized%sUnauthorized.
400auth.error%sInsufficient permissions. The operation is not allowed.
400resource.unavailable%sThe resource is unavailable. The bot may have been disabled, or the coolapp may not be installed in the chat.
500system.errorUnknown system error.Unknown system error.
500send.ding.exceptionAn error occurred while sending the DING message.An error occurred while sending the DING message.