> ## Documentation Index
> Fetch the complete documentation index at: https://help.dingtalk.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Menarik kembali pesan grup internal yang dikirim oleh bot perusahaan

> Panggil API ini untuk menarik kembali pesan yang dikirim bot perusahaan di grup internal DingTalk, cocok untuk menarik kembali pesan bot yang salah kirim secara massal.

Panggil API ini untuk menarik kembali pesan grup internal yang dikirim oleh bot perusahaan. Fitur ini berguna untuk menarik kembali pesan bot obrolan grup yang salah kirim secara massal.

## Permintaan

### Informasi dasar

| Bidang                      | Nilai                                                                                                              |
| --------------------------- | ------------------------------------------------------------------------------------------------------------------ |
| URL HTTP                    | [https://api.dingtalk.io/v1.0/robot/groupMessages/recall](https://api.dingtalk.io/v1.0/robot/groupMessages/recall) |
| Metode HTTP                 | POST                                                                                                               |
| Tipe aplikasi yang didukung | appType-Aplikasi internal　appType-Aplikasi perusahaan pihak ketiga                                                 |
| Izin yang diperlukan        | permission-qyapi\_robot\_sendmsg-Izin bagi bot untuk mengirim pesan di dalam organisasi Anda                       |

### Header permintaan

| Nama                        | Tipe   | Wajib | Deskripsi                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| --------------------------- | ------ | ----- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| x-acs-dingtalk-access-token | String | Ya    | Kredensial akses untuk memanggil API ini. Dapatkan sebagai berikut:   - Untuk aplikasi internal, panggil API [Dapatkan access token aplikasi internal](/id/open/development/obtain-the-access-token-of-an-internal-app#). - Untuk aplikasi perusahaan pihak ketiga, panggil API [Dapatkan access token perusahaan yang diberi otorisasi untuk aplikasi pihak ketiga](https://open.dingtalk.com/document/development/obtain-the-access-token-of-the-authorized-enterprise-1#). |

### Isi permintaan

| Nama               | Tipe            | Wajib | Deskripsi                                                                                                                                                                                                                                                                                                                                 |
| ------------------ | --------------- | ----- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| openConversationId | String          | Ya    | ID grup. Dapatkan openConversationId obrolan grup di sisi klien melalui [chooseChat](https://open.dingtalk.com/document/development/jsapi-choose-chat#).  Nilai ini harus cocok dengan openConversationId yang digunakan saat memanggil API [Kirim pesan obrolan grup dengan bot](/id/open/development/the-robot-sends-a-group-message#). |
| robotCode          | String          | Ya    | Kode bot. Lihat [ID Bot](https://open.dingtalk.com/document/development/robot-overview#) untuk detailnya.  Nilai ini harus cocok dengan robotCode yang digunakan saat memanggil API [Kirim pesan obrolan grup dengan bot](/id/open/development/the-robot-sends-a-group-message#).                                                         |
| processQueryKeys   | Array of String | Ya    | Daftar ID pesan. Dapatkan nilai-nilai ini dari bidang processQueryKey yang dikembalikan oleh API [Kirim pesan obrolan grup dengan bot](/id/open/development/the-robot-sends-a-group-message#).                                                                                                                                            |

### Contoh permintaan

HTTP

```http theme={"theme":{"light":"github-light","dark":"github-dark"}}
POST /v1.0/robot/groupMessages/recall HTTP/1.1
Host:api.dingtalk.io
x-acs-dingtalk-access-token:e9d6cxxx
Content-Type:application/json

{
  "openConversationId" : "cidfCSxxxx",
  "robotCode" : "dingxxxx",
  "processQueryKeys" : [ "b5fe11095fxxxx" ]
}
```

Java

```java theme={"theme":{"light":"github-light","dark":"github-dark"}}
// 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 Client akun menggunakan 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();
        OrgGroupRecallHeaders orgGroupRecallHeaders = new OrgGroupRecallHeaders();
        orgGroupRecallHeaders.xAcsDingtalkAccessToken = "<your access token>";
        OrgGroupRecallRequest orgGroupRecallRequest = new OrgGroupRecallRequest()
                .setOpenConversationId("cidfCSxxxx")
                .setRobotCode("dingxxxx")
                .setProcessQueryKeys(java.util.Arrays.asList(
                    "b5fe11095fxxxx"
                ));
        try {
            client.orgGroupRecallWithOptions(orgGroupRecallRequest, orgGroupRecallHeaders, 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 masalah
            }

        } 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 masalah
            }

        }        
    }
}
```

Python

```python theme={"theme":{"light":"github-light","dark":"github-dark"}}
# -*- 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 Client akun menggunakan 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_recall_headers = dingtalkrobot__1__0_models.OrgGroupRecallHeaders()
        org_group_recall_headers.x_acs_dingtalk_access_token = '<your access token>'
        org_group_recall_request = dingtalkrobot__1__0_models.OrgGroupRecallRequest(
            open_conversation_id='cidfCSxxxx',
            robot_code='dingxxxx',
            process_query_keys=[
                'b5fe11095fxxxx'
            ]
        )
        try:
            client.org_group_recall_with_options(org_group_recall_request, org_group_recall_headers, 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 masalah
                pass

    @staticmethod
    async def main_async(
        args: List[str],
    ) -> None:
        client = Sample.create_client()
        org_group_recall_headers = dingtalkrobot__1__0_models.OrgGroupRecallHeaders()
        org_group_recall_headers.x_acs_dingtalk_access_token = '<your access token>'
        org_group_recall_request = dingtalkrobot__1__0_models.OrgGroupRecallRequest(
            open_conversation_id='cidfCSxxxx',
            robot_code='dingxxxx',
            process_query_keys=[
                'b5fe11095fxxxx'
            ]
        )
        try:
            await client.org_group_recall_with_options_async(org_group_recall_request, org_group_recall_headers, 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 masalah
                pass

if __name__ == '__main__':
    Sample.main(sys.argv[1:])
```

PHP

```java theme={"theme":{"light":"github-light","dark":"github-dark"}}
<?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\OrgGroupRecallHeaders;
use AlibabaCloud\SDK\Dingtalk\Vrobot_1_0\Models\OrgGroupRecallRequest;
use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions;

class Sample {

    /**
     * Inisialisasi Client akun menggunakan 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();
        $orgGroupRecallHeaders = new OrgGroupRecallHeaders([]);
        $orgGroupRecallHeaders->xAcsDingtalkAccessToken = "<your access token>";
        $orgGroupRecallRequest = new OrgGroupRecallRequest([
            "openConversationId" => "cidfCSxxxx",
            "robotCode" => "dingxxxx",
            "processQueryKeys" => [
                "b5fe11095fxxxx"
            ]
        ]);
        try {
            $client->orgGroupRecallWithOptions($orgGroupRecallRequest, $orgGroupRecallHeaders, 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 masalah
            }
        }
    }
}
$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

```go theme={"theme":{"light":"github-light","dark":"github-dark"}}
// 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 Client akun menggunakan 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
  }

  orgGroupRecallHeaders := &dingtalkrobot_1_0.OrgGroupRecallHeaders{}
  orgGroupRecallHeaders.XAcsDingtalkAccessToken = tea.String("<your access token>")
  orgGroupRecallRequest := &dingtalkrobot_1_0.OrgGroupRecallRequest{
    OpenConversationId: tea.String("cidfCSxxxx"),
    RobotCode: tea.String("dingxxxx"),
    ProcessQueryKeys: []*string{tea.String("b5fe11095fxxxx")},
  }
  tryErr := func()(_e error) {
    defer func() {
      if r := tea.Recover(recover()); r != nil {
        _e = r
      }
    }()
    _, _err = client.OrgGroupRecallWithOptions(orgGroupRecallRequest, orgGroupRecallHeaders, &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 masalah
    }

  }
  return _err
}

func main() {
  err := _main(tea.StringSlice(os.Args[1:]))
  if err != nil {
    panic(err)
  }
}
```

Node.js

```python theme={"theme":{"light":"github-light","dark":"github-dark"}}
// 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 Client akun menggunakan 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 orgGroupRecallHeaders = new $dingtalkrobot_1_0.OrgGroupRecallHeaders({ });
    orgGroupRecallHeaders.xAcsDingtalkAccessToken = "<your access token>";
    let orgGroupRecallRequest = new $dingtalkrobot_1_0.OrgGroupRecallRequest({
      openConversationId: "cidfCSxxxx",
      robotCode: "dingxxxx",
      processQueryKeys: [
        "b5fe11095fxxxx"
      ],
    });
    try {
      await client.orgGroupRecallWithOptions(orgGroupRecallRequest, orgGroupRecallHeaders, new $Util.RuntimeOptions({ }));
    } catch (err) {
      if (!Util.empty(err.code) && !Util.empty(err.message)) {
        // err berisi atribut code dan message yang membantu menemukan masalah
      }

    }    
  }

}

Client.main(process.argv.slice(2));
```

C#

```java theme={"theme":{"light":"github-light","dark":"github-dark"}}
// 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 Client akun menggunakan 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.OrgGroupRecallHeaders orgGroupRecallHeaders = new AlibabaCloud.SDK.Dingtalkrobot_1_0.Models.OrgGroupRecallHeaders();
            orgGroupRecallHeaders.XAcsDingtalkAccessToken = "<your access token>";
            AlibabaCloud.SDK.Dingtalkrobot_1_0.Models.OrgGroupRecallRequest orgGroupRecallRequest = new AlibabaCloud.SDK.Dingtalkrobot_1_0.Models.OrgGroupRecallRequest
            {
                OpenConversationId = "cidfCSxxxx",
                RobotCode = "dingxxxx",
                ProcessQueryKeys = new List<string>
                {
                    "b5fe11095fxxxx"
                },
            };
            try
            {
                client.OrgGroupRecallWithOptions(orgGroupRecallRequest, orgGroupRecallHeaders, 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 masalah
                }
            }
            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 masalah
                }
            }
        }

    }
}
```

## Respons

### Isi respons

| Nama          | Tipe                  | Deskripsi                                                                                                                                        |
| ------------- | --------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------ |
| successResult | Array of String       | Daftar ID pesan yang berhasil ditarik kembali.  **Catatan**  Tidak ada notifikasi yang muncul di jendela obrolan saat pesan bot ditarik kembali. |
| failedResult  | `Map<String, String>` | Daftar ID pesan yang gagal ditarik kembali, beserta alasan setiap kegagalan.                                                                     |

### Contoh isi respons

```text theme={"theme":{"light":"github-light","dark":"github-dark"}}
HTTP/1.1 200 OK
Content-Type:application/json

{
  "successResult" : [ "b5fe11095fxxxx" ],
  "failedResult" : { }
}
```

### Kode error

Jika panggilan API mengembalikan error, cari solusinya di dokumen [Kode error global](/id/open/development/server-api-error-codes-1) berdasarkan pesan error.

| HttpCode | Kode error                                | Pesan error | Deskripsi                                                                                                                                                                   |
| -------- | ----------------------------------------- | ----------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 400      | invalid.openConversationId                | %s          | openConversationId tidak valid. Pastikan openConversationId benar.                                                                                                          |
| 400      | invalidParameter.robotCode                | %s          | robotCode tidak valid. Pastikan bot ada di dalam grup.                                                                                                                      |
| 400      | invalidParameter.processQueryKeys.overMax | %s          | processQueryKeys melebihi batas maksimum 20. Bagi processQueryKeys menjadi beberapa array yang masing-masing tidak lebih dari 20 entri dan panggil API ini secara bertahap. |
| 400      | not.allowed.robotCode                     | %s          | robotCode tidak diizinkan.                                                                                                                                                  |
| 400      | invalidParameter.param.invalid            | %s          | Parameter tidak valid. Pastikan tidak ada parameter yang kosong.                                                                                                            |
| 400      | invalidParameter.robotCode.notExsit       | %s          | Bot tidak ada. Pastikan bot yang sesuai dengan robotCode terpasang di obrolan.                                                                                              |
| 400      | miss.chatbotId                            | %s          | robotCode tidak ada.                                                                                                                                                        |
| 400      | invalidParameter.processQueryKey.missing  | %s          | processQueryKey tidak ada.                                                                                                                                                  |
| 400      | invalid.processQueryKey                   | %s          | processQueryKey tidak valid. Pastikan processQueryKey benar.                                                                                                                |
| 400      | miss.openConversationId                   | %s          | openConversationId tidak ada.                                                                                                                                               |
| 400      | bot.stopped                               | %s          | Bot grup telah dinonaktifkan.                                                                                                                                               |
| 400      | template.not.existed                      | %s          | Templat bot tidak ada.                                                                                                                                                      |
| 400      | template.stopped                          | %s          | Templat bot telah dinonaktifkan.                                                                                                                                            |
| 500      | system.error                              | %s          | Error sistem tidak dikenal.                                                                                                                                                 |
