Deskripsi panggilan API
API ini mendukung bot dari aplikasi internal. Untuk informasi lebih lanjut, lihat Konfigurasikan Bot perusahaan.Permintaan
Informasi dasar
| Bidang | Nilai |
|---|---|
| URL HTTP | https://api.dingtalk.io/v1.0/robot/oToMessages/batchSend |
| Metode HTTP | POST |
| Tipe aplikasi yang didukung | appType-Aplikasi internal appType-Aplikasi perusahaan pihak ketiga |
| Izin | permission-qyapi_robot_sendmsg-Izin untuk mengirim pesan dengan bot di Organisasi Anda |
Header permintaan
| Nama | Tipe | Wajib | Deskripsi |
|---|---|---|---|
| x-acs-dingtalk-access-token | String | Ya | Kredensial akses yang digunakan untuk memanggil API ini. Peroleh dengan cara berikut: - Untuk aplikasi internal, panggil API Mendapatkan access token aplikasi internal. - Untuk aplikasi perusahaan pihak ketiga, panggil API Mendapatkan access token organisasi yang diberi otorisasi ke aplikasi pihak ketiga. |
Isi permintaan
| Nama | Tipe | Wajib | Deskripsi |
|---|---|---|---|
| robotCode | String | Ya | Kode bot. Parameter ini harus menggunakan robotCode dari bot aplikasi internal. Untuk informasi lebih lanjut, lihat ID Bot. |
| userIds | Array of String | Ya | Daftar ID pengguna yang menerima pesan. Anda dapat mengirim hingga 20 ID pengguna sekaligus. Anda dapat memperoleh ID pengguna dengan memanggil API Query detail pengguna atau API Mendapatkan daftar ID pengguna dalam departemen. |
| msgKey | String | Ya | Key templat pesan. Untuk informasi lebih lanjut, lihat Tipe pesan yang didukung oleh Bot perusahaan. |
| msgParam | String | Ya | Parameter templat pesan. Untuk informasi lebih lanjut, lihat Tipe pesan yang didukung oleh Bot perusahaan. |
Contoh permintaan
HTTPPOST /v1.0/robot/oToMessages/batchSend HTTP/1.1
Host:api.dingtalk.io
x-acs-dingtalk-access-token:asdasdasdasd
Content-Type:application/json
{
"robotCode" : "dingxxxxxx",
"userIds" : [ "manager1234" ],
"msgKey" : "sampleMarkdown",
"msgParam" : "{\"text\": \"hello text\",\"title\": \"hello title\"}"
}
// This file is auto-generated, don't edit it. Thanks.
package com.aliyun.sample;
import com.aliyun.tea.*;
import com.aliyun.teautil.*;
import com.aliyun.teautil.models.*;
import com.aliyun.dingtalkrobot_1_0.*;
import com.aliyun.dingtalkrobot_1_0.models.*;
import com.aliyun.teaopenapi.*;
import com.aliyun.teaopenapi.models.*;
public class Sample {
/**
* Inisialisasi klien akun dengan Token
* @return Client
* @throws Exception
*/
public static com.aliyun.dingtalkrobot_1_0.Client createClient() throws Exception {
Config config = new 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();
BatchSendOTOHeaders batchSendOTOHeaders = new BatchSendOTOHeaders();
batchSendOTOHeaders.xAcsDingtalkAccessToken = "<your access token>";
BatchSendOTORequest batchSendOTORequest = new BatchSendOTORequest()
.setRobotCode("dingxxxxxx")
.setUserIds(java.util.Arrays.asList(
"manager1234"
))
.setMsgKey("sampleMarkdown")
.setMsgParam("{\"text\": \"hello text\",\"title\": \"hello title\"}");
try {
client.batchSendOTOWithOptions(batchSendOTORequest, batchSendOTOHeaders, new RuntimeOptions());
} catch (TeaException err) {
if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
// err berisi atribut code dan message, yang membantu menemukan 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 berisi atribut code dan message, yang membantu menemukan issue
}
}
}
}
# -*- 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:
"""
Inisialisasi klien akun dengan 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()
batch_send_otoheaders = dingtalkrobot__1__0_models.BatchSendOTOHeaders()
batch_send_otoheaders.x_acs_dingtalk_access_token = '<your access token>'
batch_send_otorequest = dingtalkrobot__1__0_models.BatchSendOTORequest(
robot_code='dingxxxxxx',
user_ids=[
'manager1234'
],
msg_key='sampleMarkdown',
msg_param='{"text": "hello text","title": "hello title"}'
)
try:
client.batch_send_otowith_options(batch_send_otorequest, batch_send_otoheaders, util_models.RuntimeOptions())
except Exception as err:
if not UtilClient.empty(err.code) and not UtilClient.empty(err.message):
# err berisi atribut code dan message, yang membantu menemukan issue
pass
@staticmethod
async def main_async(
args: List[str],
) -> None:
client = Sample.create_client()
batch_send_otoheaders = dingtalkrobot__1__0_models.BatchSendOTOHeaders()
batch_send_otoheaders.x_acs_dingtalk_access_token = '<your access token>'
batch_send_otorequest = dingtalkrobot__1__0_models.BatchSendOTORequest(
robot_code='dingxxxxxx',
user_ids=[
'manager1234'
],
msg_key='sampleMarkdown',
msg_param='{"text": "hello text","title": "hello title"}'
)
try:
await client.batch_send_otowith_options_async(batch_send_otorequest, batch_send_otoheaders, util_models.RuntimeOptions())
except Exception as err:
if not UtilClient.empty(err.code) and not UtilClient.empty(err.message):
# err berisi atribut code dan message, yang membantu menemukan issue
pass
if __name__ == '__main__':
Sample.main(sys.argv[1:])
<?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\BatchSendOTOHeaders;
use AlibabaCloud\SDK\Dingtalk\Vrobot_1_0\Models\BatchSendOTORequest;
use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions;
class Sample {
/**
* Inisialisasi klien akun dengan 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();
$batchSendOTOHeaders = new BatchSendOTOHeaders([]);
$batchSendOTOHeaders->xAcsDingtalkAccessToken = "<your access token>";
$batchSendOTORequest = new BatchSendOTORequest([
"robotCode" => "dingxxxxxx",
"userIds" => [
"manager1234"
],
"msgKey" => "sampleMarkdown",
"msgParam" => "{\"text\": \"hello text\",\"title\": \"hello title\"}"
]);
try {
$client->batchSendOTOWithOptions($batchSendOTORequest, $batchSendOTOHeaders, 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 berisi atribut code dan message, yang membantu menemukan 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));
// This file is auto-generated, don't edit it. Thanks.
package main
import (
"os"
util "github.com/alibabacloud-go/tea-utils/service"
dingtalkrobot_1_0 "github.com/alibabacloud-go/dingtalk/robot_1_0"
openapi "github.com/alibabacloud-go/darabonba-openapi/client"
"github.com/alibabacloud-go/tea/tea"
)
/**
* Inisialisasi klien akun dengan 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
}
batchSendOTOHeaders := &dingtalkrobot_1_0.BatchSendOTOHeaders{}
batchSendOTOHeaders.XAcsDingtalkAccessToken = tea.String("<your access token>")
batchSendOTORequest := &dingtalkrobot_1_0.BatchSendOTORequest{
RobotCode: tea.String("dingxxxxxx"),
UserIds: []*string{tea.String("manager1234")},
MsgKey: tea.String("sampleMarkdown"),
MsgParam: tea.String("{\"text\": \"hello text\",\"title\": \"hello title\"}"),
}
tryErr := func()(_e error) {
defer func() {
if r := tea.Recover(recover()); r != nil {
_e = r
}
}()
_, _err = client.BatchSendOTOWithOptions(batchSendOTORequest, batchSendOTOHeaders, &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 berisi atribut code dan message, yang membantu menemukan issue
}
}
return _err
}
func main() {
err := _main(tea.StringSlice(os.Args[1:]))
if err != nil {
panic(err)
}
}
// 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 {
/**
* Inisialisasi klien akun dengan 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 batchSendOTOHeaders = new $dingtalkrobot_1_0.BatchSendOTOHeaders({ });
batchSendOTOHeaders.xAcsDingtalkAccessToken = "<your access token>";
let batchSendOTORequest = new $dingtalkrobot_1_0.BatchSendOTORequest({
robotCode: "dingxxxxxx",
userIds: [
"manager1234"
],
msgKey: "sampleMarkdown",
msgParam: "{\"text\": \"hello text\",\"title\": \"hello title\"}",
});
try {
await client.batchSendOTOWithOptions(batchSendOTORequest, batchSendOTOHeaders, new $Util.RuntimeOptions({ }));
} catch (err) {
if (!Util.empty(err.code) && !Util.empty(err.message)) {
// err berisi atribut code dan message, yang membantu menemukan issue
}
}
}
}
Client.main(process.argv.slice(2));
// 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
{
/**
* Inisialisasi klien akun dengan 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.BatchSendOTOHeaders batchSendOTOHeaders = new AlibabaCloud.SDK.Dingtalkrobot_1_0.Models.BatchSendOTOHeaders();
batchSendOTOHeaders.XAcsDingtalkAccessToken = "<your access token>";
AlibabaCloud.SDK.Dingtalkrobot_1_0.Models.BatchSendOTORequest batchSendOTORequest = new AlibabaCloud.SDK.Dingtalkrobot_1_0.Models.BatchSendOTORequest
{
RobotCode = "dingxxxxxx",
UserIds = new List<string>
{
"manager1234"
},
MsgKey = "sampleMarkdown",
MsgParam = "{\"text\": \"hello text\",\"title\": \"hello title\"}",
};
try
{
client.BatchSendOTOWithOptions(batchSendOTORequest, batchSendOTOHeaders, new AlibabaCloud.TeaUtil.Models.RuntimeOptions());
}
catch (TeaException err)
{
if (!AlibabaCloud.TeaUtil.Common.Empty(err.Code) && !AlibabaCloud.TeaUtil.Common.Empty(err.Message))
{
// err berisi atribut code dan message, yang membantu menemukan 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 berisi atribut code dan message, yang membantu menemukan issue
}
}
}
}
}
// This file is auto-generated, don't edit it. Thanks.
#include <alibabacloud/dingtalkrobot__1__0.hpp>
#include <alibabacloud/open_api.hpp>
#include <boost/any.hpp>
#include <darabonba/core.hpp>
#include <darabonba/util.hpp>
#include <iostream>
#include <map>
using namespace std;
Alibabacloud_Dingtalkrobot_1_0::Client createClient() {
shared_ptr<Alibabacloud_OpenApi::Config> config = make_shared<Alibabacloud_OpenApi::Config>();
config->protocol = make_shared<string>("https");
config->regionId = make_shared<string>("central");
return Alibabacloud_Dingtalkrobot_1_0::Client(config);
}
int main(int argc, char *args[]) {
args;
shared_ptr<Alibabacloud_Dingtalkrobot_1_0::Client> client = make_shared<Alibabacloud_Dingtalkrobot_1_0::Client>(createClient());
shared_ptr<Alibabacloud_Dingtalkrobot_1_0::BatchSendOTOHeaders> batchSendOTOHeaders = make_shared<Alibabacloud_Dingtalkrobot_1_0::BatchSendOTOHeaders>();
batchSendOTOHeaders->xAcsDingtalkAccessToken = make_shared<string>("<your access token>");
shared_ptr<Alibabacloud_Dingtalkrobot_1_0::BatchSendOTORequest> batchSendOTORequest = make_shared<Alibabacloud_Dingtalkrobot_1_0::BatchSendOTORequest>(map<string, boost::any>({
{"robotCode", boost::any(string("dingxxxxxx"))},
{"userIds", boost::any(vector<string>({
"manager1234"
}))},
{"msgKey", boost::any(string("sampleMarkdown"))},
{"msgParam", boost::any(string("{"text": "hello text","title": "hello title"}"))}
}));
try {
client->batchSendOTOWithOptions(batchSendOTORequest, batchSendOTOHeaders, make_shared<Darabonba_Util::RuntimeOptions>(Darabonba_Util::RuntimeOptions()));
}
catch (std::exception &err) {
if (!Darabonba_Util::Client::empty(err.code) && !Darabonba_Util::Client::empty(err.message)) {
// err berisi atribut code dan message, yang membantu menemukan issue
}
}
}
Respons
Isi respons
| Nama | Tipe | Deskripsi |
|---|---|---|
| processQueryKey | String | ID pesan. Anda dapat menggunakannya di API Query status baca pesan bot dalam obrolan Person-to-Bot secara massal dan API Tarik kembali pesan bot dalam obrolan Person-to-Bot secara massal untuk menanyakan apakah pesan telah dibaca dan untuk menarik kembali pesan. |
| invalidStaffIdList | Array of String | Daftar ID pengguna yang tidak valid. |
| flowControlledStaffIdList | Array of String | Daftar ID pengguna yang terkena batas laju. |
Contoh isi respons
HTTP/1.1 200 OK
Content-Type:application/json
{
"processQueryKey" : "zcxxczasdafasd",
"invalidStaffIdList" : [ "manage25231" ],
"flowControlledStaffIdList" : [ "manage25232" ]
}
Kode error
Jika error dikembalikan saat Anda memanggil API ini, temukan solusinya di dokumen Kode error global berdasarkan Pesan error.| HttpCode | Kode error | Pesan error | Deskripsi |
|---|---|---|---|
| 400 | invalidParameter.robotCode.empty | %s | robotCode tidak valid. |
| 400 | invalidParameter.userIds.empty | %s | Daftar ID pengguna kosong. |
| 400 | invalidParameter.userIds.overMax | %s | Daftar ID pengguna melebihi batas maksimum 100. Bagi ID pengguna menjadi beberapa array dengan panjang tidak lebih dari 100 dan panggil API ini secara batch. |
| 400 | invalidParameter.msgKey.empty | %s | msgKey kosong. |
| 400 | invalidParameter.msgKey.invalid | %s | msgKey tidak valid. Kirim msgKey yang benar. |
| 400 | invalidParameter.msgParam.invalid | %s | Format msgParam tidak valid. Harus dalam format JSON. |
| 400 | invalidParameter.param.invalid | %s | Parameter tidak valid. Periksa apakah ada parameter yang kosong. |
| 400 | invalidParameter.msg.unsupport | %s | Tipe pesan tidak didukung. |
| 400 | invalidParameter.msgParam.tooLong | %s | Konten pesan terlalu panjang. Kurangi panjang konten. |
| 400 | invalidParameter.robotCode.notExsit | %s | Bot tidak ada. Periksa apakah bot yang sesuai dengan robotCode telah diinstal di Organisasi Anda. |
| 400 | invalidParameter.msgBody.invalid | %s | Isi pesan harus dalam format JSON. |
| 400 | invalidParameter.userId.empty | %s | staffId tidak ada. |
| 400 | invalidParameter.token.invalid | %s | token tidak diberi otorisasi. |
| 400 | invalidParameter.robotCode.invalid | %s | robotCode tidak valid. |
| 400 | token.notExisted | %s | TOKEN tidak ada. |
| 400 | template.not.existed | %s | Templat bot tidak ada. Periksa apakah robotCode benar. |
| 400 | template.stopped | %s | Templat bot telah dinonaktifkan. Periksa status bot. |
| 400 | miss.param.text | %s | Konten pesan tidak valid. Atribut text wajib diisi. |
| 400 | miss.param.contentOfText | %s | Konten pesan tidak valid. Atribut text->content wajib diisi. |
| 400 | miss.param.link | %s | Konten pesan tidak valid. Atribut link wajib diisi. |
| 400 | miss.param.textOfLink | %s | Konten pesan tidak valid. Atribut link->text wajib diisi. |
| 400 | miss.param.titleOfLink | %s | Konten pesan tidak valid. Atribut link->title wajib diisi. |
| 400 | miss.param.messageUrlOfLink | %s | Konten pesan tidak valid. Atribut link->messageUrl wajib diisi. |
| 400 | miss.param.markdown | %s | Konten pesan tidak valid. Atribut markdown wajib diisi. |
| 400 | miss.param.markdownTotitle | %s | Konten pesan tidak valid. Atribut markdown->text wajib diisi. |
| 400 | miss.param.markdownTotext | %s | Konten pesan tidak valid. Atribut markdown->text wajib diisi. |
| 400 | miss.param.actionCard | %s | Konten pesan tidak valid. Atribut actionCard wajib diisi. |
| 400 | miss.param.actionCardTotitle | %s | Konten pesan tidak valid. Atribut actionCard->title wajib diisi. |
| 400 | miss.param.actionCardTotext | %s | Konten pesan tidak valid. Atribut actionCard->text wajib diisi. |
| 400 | miss.param.actionCardTosingleTitle | %s | Konten pesan tidak valid. Atribut actionCard->singleTitle wajib diisi. |
| 400 | miss.param.actionCardTosingleUrl | %s | Konten pesan tidak valid. Atribut actionCard->singleURL wajib diisi. |
| 400 | miss.param.actionCardTobtns | %s | Konten pesan tidak valid. Atribut actionCard->btns wajib diisi. |
| 400 | miss.param.actionCardTobtnsTotitle | %s | Konten pesan tidak valid. Atribut actionCard->btns->title wajib diisi. |
| 400 | miss.param.actionCardTobtnsToactionUrl | %s | Konten pesan tidak valid. Atribut actionCard->btns->actionURL wajib diisi. |
| 400 | invalid.param.actionCardTobtnOrientation | %s | Konten pesan tidak valid. Nilai actionCard->btnOrientation tidak benar. |
| 400 | invalid.param.actionCardTocanForward | %s | Konten pesan tidak valid. Nilai actionCard->canForward tidak benar. |
| 400 | miss.param.feedCard | %s | Konten pesan tidak valid. Atribut feedCard wajib diisi. |
| 400 | miss.param.feedCardTolinks | %s | Konten pesan tidak valid. Atribut feedCard->links wajib diisi. |
| 400 | miss.param.feedCardTolinksTotitle | %s | Konten pesan tidak valid. Atribut feedCard->links->title wajib diisi. |
| 400 | miss.param.feedCardTolinksTomessageUrl | %s | Konten pesan tidak valid. Atribut feedCard->links->messageURL wajib diisi. |
| 400 | miss.param.feedCardTolinksTopicUrl | %s | Konten pesan tidak valid. Atribut feedCard->links->picURL wajib diisi. |
| 400 | miss.param.photo | %s | Konten pesan tidak valid. Atribut photo wajib diisi. |
| 400 | miss.param.photoTophotoUrl | %s | Konten pesan tidak valid. Atribut photo->photoURL wajib diisi. |
| 400 | miss.param.image | %s | Konten pesan tidak valid. Atribut image wajib diisi. |
| 400 | miss.param.imageTopicUrl | %s | Konten pesan tidak valid. Atribut image->picURL wajib diisi. |
| 400 | miss.param.beautifulCard | %s | Konten pesan tidak valid. Atribut beautifulCard wajib diisi. |
| 400 | miss.param.beautifulCardToimage | %s | Konten pesan tidak valid. Atribut beautifulCard->image wajib diisi. |
| 400 | miss.param.beautifulCardTotitle | %s | Konten pesan tidak valid. Atribut beautifulCard->title wajib diisi. |
| 400 | miss.param.beautifulCardToactionUrl | %s | Konten pesan tidak valid. Atribut beautifulCard->actionUrl wajib diisi. |
| 400 | miss.param.beautifulCardTointroduction | %s | Konten pesan tidak valid. Atribut beautifulCard->introduction wajib diisi. |
| 400 | send.byToken.tooFast | %s | Error batas laju terjadi saat mengirim dengan TOKEN. Coba lagi nanti. |
| 400 | send.too.fast | %s | Pesan dikirim terlalu sering. Coba lagi nanti. |
| 400 | send.forbidden | %s | Bot ini dilarang mengirim pesan. |
| 400 | ip.not.match | %s | IP tidak cocok. Anda tidak memiliki izin untuk mengirim pesan dengan bot ini. |
| 400 | keywords.not.match | %s | Kata kunci untuk bot mengirim pesan tidak cocok. |
| 400 | sign.not.match | %s | Tanda tangan tidak cocok. Anda tidak memiliki izin untuk mengirim pesan. |
| 400 | contain.unsafe.url | %s | Konten berisi tautan eksternal yang tidak aman. |
| 400 | contain.notAllowed.text | %s | Konten berisi teks yang tidak pantas. |
| 400 | contain.notAllowed.picture | %s | Konten berisi gambar yang tidak pantas. |
| 400 | contain.notAllowed.content | %s | Konten berisi konten yang tidak pantas. |
| 400 | illegal.receivers | %s | Daftar penerima tidak valid. |
| 400 | receivers.exceed | %s | Daftar penerima melebihi batas. |
| 400 | illegal.excludes | %s | Daftar pengecualian tidak valid. |
| 400 | too.many.group | %s | Pengiriman terkena batas laju karena frekuensi tinggi. |
| 400 | too.many.people | %s | Pengiriman terkena batas laju karena frekuensi tinggi. |
| 400 | bot.forbidden.sendMessage | %s | Akun telah dibisukan. |
| 400 | session.notExisted | %s | Sesi tidak ada. |
| 400 | session.expired | %s | Sesi telah kedaluwarsa. |
| 400 | staffId.notExisted | %s | staffId tidak ada. |
| 400 | chatbotId.notAllow.sendOTO | %s | Memulai Pesan Langsung tidak diizinkan. Periksa apakah status bot diaktifkan. |
| 400 | robot.oto.notExist | %s | Tidak ada obrolan Pesan Langsung bot yang valid. |
| 400 | sendMessage.model.notMatch | %s | Tidak ada model pesan yang cocok. |
| 400 | miss.param.file | %s | Konten pesan tidak valid. Atribut file wajib diisi. |
| 400 | miss.param.video | %s | Konten pesan tidak valid. Atribut video->videoMediaId wajib diisi. |
| 400 | miss.param.audio | %s | Konten pesan tidak valid. Atribut audio wajib diisi. |
| 500 | system.error | %s | Error sistem tidak diketahui. |