Skip to main content
This topic describes how to send group chat messages with an app bot.

API call description

This API supports internal app bots. For more information, see Create an internal app bot.

Request

Basic information

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

Request headers

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

Request body

NameTypeRequiredDescription
msgParamStringYesThe message template parameters. For more information, see Message types for enterprise bots. The length must not exceed 15,000 bytes.
msgKeyStringYesThe message template key. For more information, see Message types for enterprise bots.
openConversationIdStringYesThe chat ID: - For an internal group - To obtain the ID of a newly created internal group, internal apps can call the Create an internal group API. To obtain the ID of an existing internal group, call chooseChat. - For a scenario group - Internal apps can call the Create a scenario group API. To obtain the ID of an existing scenario group, use the chooseChat JSAPI.
robotCodeStringYesThe bot code. For more information, see Bot ID.
coolAppCodeStringNoThe group chat cool app code. For more information, see Group chat cool app. This parameter is required when the bot is installed through a group chat cool app.

Request example

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

{
  "msgParam" : "{\"content\":\"DingTalk, make progress happen\"}",
  "msgKey" : "sampleText",
  "openConversationId" : "cid6KeBBLoveMJOGXoYKF5x7EeiodoA==",
  "robotCode" : "dingue4kfzdxbynxxxxxx",
  "coolAppCode" : "COOLAPP-1-10182EEDD1AC0BA600D9000J"
}
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.OrgGroupSendHeaders orgGroupSendHeaders = new com.aliyun.dingtalkrobot_1_0.models.OrgGroupSendHeaders();
        orgGroupSendHeaders.xAcsDingtalkAccessToken = "<your access token>";
        com.aliyun.dingtalkrobot_1_0.models.OrgGroupSendRequest orgGroupSendRequest = new com.aliyun.dingtalkrobot_1_0.models.OrgGroupSendRequest()
                .setMsgParam("{\"content\":\"DingTalk, make progress happen\"}")
                .setMsgKey("sampleText")
                .setOpenConversationId("cid6KeBBLoveMJOGXoYKF5x7EeiodoA==")
                .setRobotCode("dingue4kfzdxbynxxxxxx")
                .setCoolAppCode("COOLAPP-1-10182EEDD1AC0BA600D9000J");
        try {
            client.orgGroupSendWithOptions(orgGroupSendRequest, orgGroupSendHeaders, new com.aliyun.teautil.models.RuntimeOptions());
        } catch (TeaException err) {
            if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
                // err contains the code and message attributes that help 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)) {
                // err contains the code and message attributes that help 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()
        org_group_send_headers = dingtalkrobot__1__0_models.OrgGroupSendHeaders()
        org_group_send_headers.x_acs_dingtalk_access_token = '<your access token>'
        org_group_send_request = dingtalkrobot__1__0_models.OrgGroupSendRequest(
            msg_param='{"content":"DingTalk, make progress happen"}',
            msg_key='sampleText',
            open_conversation_id='cid6KeBBLoveMJOGXoYKF5x7EeiodoA==',
            robot_code='dingue4kfzdxbynxxxxxx',
            cool_app_code='COOLAPP-1-10182EEDD1AC0BA600D9000J'
        )
        try:
            client.org_group_send_with_options(org_group_send_request, org_group_send_headers, util_models.RuntimeOptions())
        except Exception as err:
            if not UtilClient.empty(err.code) and not UtilClient.empty(err.message):
                # err contains the code and message attributes that help locate the issue
                pass

    @staticmethod
    async def main_async(
        args: List[str],
    ) -> None:
        client = Sample.create_client()
        org_group_send_headers = dingtalkrobot__1__0_models.OrgGroupSendHeaders()
        org_group_send_headers.x_acs_dingtalk_access_token = '<your access token>'
        org_group_send_request = dingtalkrobot__1__0_models.OrgGroupSendRequest(
            msg_param='{"content":"DingTalk, make progress happen"}',
            msg_key='sampleText',
            open_conversation_id='cid6KeBBLoveMJOGXoYKF5x7EeiodoA==',
            robot_code='dingue4kfzdxbynxxxxxx',
            cool_app_code='COOLAPP-1-10182EEDD1AC0BA600D9000J'
        )
        try:
            await client.org_group_send_with_options_async(org_group_send_request, org_group_send_headers, util_models.RuntimeOptions())
        except Exception as err:
            if not UtilClient.empty(err.code) and not UtilClient.empty(err.message):
                # err contains the code and message attributes that help 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\OrgGroupSendHeaders;
use AlibabaCloud\SDK\Dingtalk\Vrobot_1_0\Models\OrgGroupSendRequest;
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();
        $orgGroupSendHeaders = new OrgGroupSendHeaders([]);
        $orgGroupSendHeaders->xAcsDingtalkAccessToken = "<your access token>";
        $orgGroupSendRequest = new OrgGroupSendRequest([
            "msgParam" => "{\"content\":\"DingTalk, make progress happen\"}",
            "msgKey" => "sampleText",
            "openConversationId" => "cid6KeBBLoveMJOGXoYKF5x7EeiodoA==",
            "robotCode" => "dingue4kfzdxbynxxxxxx",
            "coolAppCode" => "COOLAPP-1-10182EEDD1AC0BA600D9000J"
        ]);
        try {
            $client->orgGroupSendWithOptions($orgGroupSendRequest, $orgGroupSendHeaders, 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)) {
                // err contains the code and message attributes that help 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
  }

  orgGroupSendHeaders := &dingtalkrobot_1_0.OrgGroupSendHeaders{}
  orgGroupSendHeaders.XAcsDingtalkAccessToken = tea.String("<your access token>")
  orgGroupSendRequest := &dingtalkrobot_1_0.OrgGroupSendRequest{
    MsgParam: tea.String("{\"content\":\"DingTalk, make progress happen\"}"),
    MsgKey: tea.String("sampleText"),
    OpenConversationId: tea.String("cid6KeBBLoveMJOGXoYKF5x7EeiodoA=="),
    RobotCode: tea.String("dingue4kfzdxbynxxxxxx"),
    CoolAppCode: tea.String("COOLAPP-1-10182EEDD1AC0BA600D9000J"),
  }
  tryErr := func()(_e error) {
    defer func() {
      if r := tea.Recover(recover()); r != nil {
        _e = r
      }
    }()
    _, _err = client.OrgGroupSendWithOptions(orgGroupSendRequest, orgGroupSendHeaders, &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)) {
      // err contains the code and message attributes that help 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 orgGroupSendHeaders = new $dingtalkrobot_1_0.OrgGroupSendHeaders({ });
    orgGroupSendHeaders.xAcsDingtalkAccessToken = "<your access token>";
    let orgGroupSendRequest = new $dingtalkrobot_1_0.OrgGroupSendRequest({
      msgParam: "{\"content\":\"DingTalk, make progress happen\"}",
      msgKey: "sampleText",
      openConversationId: "cid6KeBBLoveMJOGXoYKF5x7EeiodoA==",
      robotCode: "dingue4kfzdxbynxxxxxx",
      coolAppCode: "COOLAPP-1-10182EEDD1AC0BA600D9000J",
    });
    try {
      await client.orgGroupSendWithOptions(orgGroupSendRequest, orgGroupSendHeaders, new $Util.RuntimeOptions({ }));
    } catch (err) {
      if (!Util.empty(err.code) && !Util.empty(err.message)) {
        // err contains the code and message attributes that help 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.OrgGroupSendHeaders orgGroupSendHeaders = new AlibabaCloud.SDK.Dingtalkrobot_1_0.Models.OrgGroupSendHeaders();
            orgGroupSendHeaders.XAcsDingtalkAccessToken = "<your access token>";
            AlibabaCloud.SDK.Dingtalkrobot_1_0.Models.OrgGroupSendRequest orgGroupSendRequest = new AlibabaCloud.SDK.Dingtalkrobot_1_0.Models.OrgGroupSendRequest
            {
                MsgParam = "{\"content\":\"DingTalk, make progress happen\"}",
                MsgKey = "sampleText",
                OpenConversationId = "cid6KeBBLoveMJOGXoYKF5x7EeiodoA==",
                RobotCode = "dingue4kfzdxbynxxxxxx",
                CoolAppCode = "COOLAPP-1-10182EEDD1AC0BA600D9000J",
            };
            try
            {
                client.OrgGroupSendWithOptions(orgGroupSendRequest, orgGroupSendHeaders, new AlibabaCloud.TeaUtil.Models.RuntimeOptions());
            }
            catch (TeaException err)
            {
                if (!AlibabaCloud.TeaUtil.Common.Empty(err.Code) && !AlibabaCloud.TeaUtil.Common.Empty(err.Message))
                {
                    // err contains the code and message attributes that help 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))
                {
                    // err contains the code and message attributes that help locate the issue
                }
            }
        }

    }
}

Response

Response body

NameTypeDescription
processQueryKeyStringThe encrypted message ID. Use this ID to query the read status of the message and recall the message by calling the Query the read list of bot messages in person-to-person chats and Recall internal group messages sent by an enterprise bot APIs.

Response body example

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

{
  "processQueryKey" : "jkasdfb8va9hndjksnvzkj"
}

Error codes

If an error occurs when you call this API, find the solution in the Global error codes topic 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.authThe app appkey does not match the bot robotCode. Use the appkey of the bot’s app.The app appkey does not match the bot robotCode. Use the appkey of the bot’s app.
400invalidParameter.robotCode.authThe app suiteKey does not match the bot. Use the suiteKey of the ISV app bound to the bot to send messages.The app suiteKey does not match the bot. Use the suiteKey of the ISV app bound to the bot to send messages.
400invalidParameter.robotCode.coolAppThe cool app code is invalid.The cool app code is invalid.
400invalidParameter.robotCode.coolAppThe cool app code does not match the bot. Use the bot bound to this cool app to send messages.The cool app code does not match the bot. Use the bot bound to this cool app to send messages.
400invalidParameter.robotCode.coolAppThe cool app bound to this bot is not used in the group.The cool app bound to this bot is not used in the group.
400invalidParameter.robotCode.authOnly the cool app identity can use this bot.Only the cool app 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.emptymsgKey is missing.msgKey is missing.
400invalidParameter.msgKey.invalidmsgKey is invalid.msgKey is invalid.
400invalidParameter.msgParam.invalidmsgParam must be in JSON format.msgParam must be in JSON format.
400invalidParameter.param.invalidInvalid parameter.Invalid parameter.
400invalidParameter.msg.unsupportUnsupported message type.Unsupported message type.
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.missingrobotCode is missing.robotCode is missing.
400invalidParameter.userId.emptystaffId is missing.staffId is missing.
400invalidParameter.token.invalidUnauthorized token.Unauthorized token.
400invalidParameter.processQueryKey.missingprocessQueryKey is missing.processQueryKey is missing.
400invalidParameter.robotCode.invalidInvalid robotCode.Invalid robotCode.
400invalid.processQueryKeyInvalid processQueryKey.Invalid processQueryKey.
400miss.openConversationIdopenConversationId is missing.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 deactivated.The group bot has been deactivated.
400template.not.existedThe bot template does not exist.The bot template does not exist.
400template.stoppedThe bot template has been deactivated.The bot template has been deactivated.
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.matchKeywords do not match.Keywords do not match.
400sign.not.matchThe signature does not match.The signature does not match.
400contain.unsafe.urlContains an unsafe external link.Contains an unsafe external link.
400contain.notAllowed.textContains inappropriate text.Contains inappropriate text.
400contain.notAllowed.pictureContains an inappropriate image.Contains an inappropriate image.
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 limit due to frequent sending.Rate limit due to frequent sending.
400too.many.peopleRate limit due to frequent sending.Rate limit 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.notExistedstaffId does not exist.staffId does not exist.
400chatbotId.notAllow.sendOTOProactively sending direct messages is not allowed.Proactively sending direct messages is not allowed.
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.Confirm whether the token has permission to operate 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 be deactivated, or the cool app may not be installed in the chat.
500system.errorUnknown system error.Unknown system error.
500send.ding.exceptionError sending DING message.Error sending DING message.