Send a Response to the imbot.command.answer Command
Scope:
imbotWho can execute the method: a user of the application that registered the chatbot
The method imbot.command.answer publishes a response to a chatbot command.
Method Parameters
Required parameters are marked with *
|
Name |
Description |
|
COMMAND_ID* |
Command identifier. Required if |
|
COMMAND* |
Text of the command. Required if |
|
MESSAGE_ID* |
Identifier of the message to which the response is sent. The identifier can be obtained from the incoming event ONIMCOMMANDADD |
|
MESSAGE* |
Text of the response |
|
ATTACH |
Object with an attachment to the message. Minimum format:
|
|
KEYBOARD |
Message keyboard. Minimum format:
|
|
MENU |
Context menu of the message. Minimum format:
|
|
SYSTEM |
Type of message:
Default - |
|
URL_PREVIEW |
Link transformation into rich links:
Default - Works for links provided in the |
|
CLIENT_ID |
This parameter is required only for webhooks. Pass the same CLIENT_ID that was specified during the chatbot registration |
Code Examples
How to Use Examples in Documentation
curl -X POST \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{"COMMAND_ID":99,"MESSAGE_ID":33871,"MESSAGE":"Received. Executing command.","SYSTEM":"N","URL_PREVIEW":"Y","ATTACH":{"BLOCKS":[{"MESSAGE":"Task details"},{"DELIMITER":true},{"LINK":{"NAME":"Open","LINK":"https://example.com"}}]},"KEYBOARD":{"BUTTONS":[{"TEXT":"Repeat","COMMAND":"echo repeat"}]},"MENU":[{"TEXT":"bitrix24","LINK":"https://bitrix24.com"}],"CLIENT_ID":"**put_your_client_id_here**"}' \
https://**put_your_bitrix24_address**/rest/**put_your_user_id_here**/**put_your_webhook_here**/imbot.command.answer
curl -X POST \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{"COMMAND_ID":99,"MESSAGE_ID":33871,"MESSAGE":"Received. Executing command.","SYSTEM":"N","URL_PREVIEW":"Y","ATTACH":{"BLOCKS":[{"MESSAGE":"Task details"},{"DELIMITER":true},{"LINK":{"NAME":"Open","LINK":"https://example.com"}}]},"KEYBOARD":{"BUTTONS":[{"TEXT":"Repeat","COMMAND":"echo repeat"}]},"MENU":[{"TEXT":"bitrix24","LINK":"https://bitrix24.com"}],"auth":"**put_access_token_here**"}' \
https://**put_your_bitrix24_address**/rest/imbot.command.answer
try
{
const response = await $b24.callMethod(
'imbot.command.answer',
{
COMMAND_ID: 99,
MESSAGE_ID: 33871,
MESSAGE: 'Received. Executing command.',
SYSTEM: 'N',
URL_PREVIEW: 'Y',
ATTACH: {
BLOCKS: [
{MESSAGE: 'Task details'},
{DELIMITER: true},
{LINK: {NAME: 'Open', LINK: 'https://example.com'}}
]
},
KEYBOARD: {
BUTTONS: [
{TEXT: 'Repeat', COMMAND: 'echo repeat'}
]
},
MENU: [
{TEXT: 'bitrix24', LINK: 'https://bitrix24.com'}
]
}
);
const result = response.getData().result;
console.log('Answered command with ID:', result);
processResult(result);
}
catch( error )
{
console.error('Error:', error);
}
try {
$response = $b24Service
->core
->call(
'imbot.command.answer',
[
'COMMAND_ID' => 99,
'MESSAGE_ID' => 33871,
'MESSAGE' => 'Received. Executing command.',
'SYSTEM' => 'N',
'URL_PREVIEW' => 'Y',
'ATTACH' => [
'BLOCKS' => [
['MESSAGE' => 'Task details'],
['DELIMITER' => true],
['LINK' => ['NAME' => 'Open', 'LINK' => 'https://example.com']]
]
],
'KEYBOARD' => [
'BUTTONS' => [
['TEXT' => 'Repeat', 'COMMAND' => 'echo repeat']
]
],
'MENU' => [
['TEXT' => 'bitrix24', 'LINK' => 'https://bitrix24.com']
]
]
);
$result = $response
->getResponseData()
->getResult();
echo 'Success: ' . print_r($result, true);
processData($result);
} catch (Throwable $e) {
error_log($e->getMessage());
echo 'Error answering command: ' . $e->getMessage();
}
BX24.callMethod(
'imbot.command.answer',
{
COMMAND_ID: 99,
MESSAGE_ID: 33871,
MESSAGE: 'Received. Executing command.',
SYSTEM: 'N',
URL_PREVIEW: 'Y',
ATTACH: {
BLOCKS: [
{MESSAGE: 'Task details'},
{DELIMITER: true},
{LINK: {NAME: 'Open', LINK: 'https://example.com'}}
]
},
KEYBOARD: {
BUTTONS: [
{TEXT: 'Repeat', COMMAND: 'echo repeat'}
]
},
MENU: [
{TEXT: 'bitrix24', LINK: 'https://bitrix24.com'}
]
},
function(result)
{
if (result.error())
console.error(result.error());
else
console.dir(result.data());
}
);
require_once('crest.php');
$result = CRest::call(
'imbot.command.answer',
[
'COMMAND_ID' => 99,
'MESSAGE_ID' => 33871,
'MESSAGE' => 'Received. Executing command.',
'SYSTEM' => 'N',
'URL_PREVIEW' => 'Y',
'ATTACH' => [
'BLOCKS' => [
['MESSAGE' => 'Task details'],
['DELIMITER' => true],
['LINK' => ['NAME' => 'Open', 'LINK' => 'https://example.com']]
]
],
'KEYBOARD' => [
'BUTTONS' => [
['TEXT' => 'Repeat', 'COMMAND' => 'echo repeat']
]
],
'MENU' => [
['TEXT' => 'bitrix24', 'LINK' => 'https://bitrix24.com']
]
]
);
echo '<PRE>';
print_r($result);
echo '</PRE>';
Response Handling
HTTP Status: 200
{
"result": 33879,
"time": {
"start": 1772102358,
"finish": 1772102359.061859,
"duration": 1.061858892440796,
"processing": 1,
"date_start": "2026-02-26T13:39:18+02:00",
"date_finish": "2026-02-26T13:39:19+02:00",
"operating_reset_at": 1772102958,
"operating": 0
}
}
Returned Data
|
Name |
Description |
|
result |
Identifier of the sent response message |
|
time |
Information about the request execution time |
Error Handling
HTTP Status: 400
{
"error": "MESSAGE_EMPTY",
"error_description": "Message can't be empty"
}
|
Name |
Description |
|
error |
String error code. It may consist of digits, Latin letters, and underscores |
|
error_description |
Textual description of the error. The description is not intended to be shown to the end user in its raw form |
Possible Error Codes
|
Code |
Description |
Value |
|
|
Command not found |
Command not found |
|
|
Command was installed by another rest application |
Command registered by another application |
|
|
Message ID can't be empty |
|
|
|
Message can't be empty |
Message text not provided |
|
|
Incorrect attach params |
Invalid |
|
|
You have exceeded the maximum allowable size of attach |
|
|
|
Incorrect keyboard params |
Invalid |
|
|
You have exceeded the maximum allowable size of keyboard |
|
|
|
Incorrect menu params |
Invalid |
|
|
Message isn't added |
Failed to send message |
Statuses and System Error Codes
HTTP Status: 20x, 40x, 50x
The errors described below may occur when calling any method.
|
Status |
Code |
Description |
|
|
|
An internal server error has occurred, please contact the server administrator or Bitrix24 technical support |
|
|
|
An internal server error has occurred, please contact the server administrator or Bitrix24 technical support |
|
|
|
The request intensity limit has been exceeded |
|
|
|
The current method is not allowed to be called using batch |
|
|
|
The maximum length of parameters passed to the batch method has been exceeded |
|
|
|
Invalid access token or webhook code |
|
|
|
The methods must be called using the HTTPS protocol |
|
|
|
The REST API is blocked due to overload. This is a manual individual block, to remove it you need to contact Bitrix24 technical support |
|
|
|
The REST API is available only on commercial plans |
|
|
|
The user whose access token or webhook was used to call the method lacks permissions |
|
|
|
The manifest is not available |
|
|
|
The request requires higher privileges than those provided by the webhook token |
|
|
|
The provided access token has expired |
|
|
|
The user does not have access to the application. This means that the application is installed, but the account administrator has allowed access to this application only for specific users |
|
|
|
The public part of the site is closed. To open the public part of the site on an on-premise installation, disable the option "Temporary closure of the public part of the site". Path to the setting: Desktop > Settings > Product Settings > Module Settings > Main Module > Temporary closure of the public part of the site |
Continue Learning
- Add the imbot.command.register Command
- Update the imbot.command.update
- Remove the imbot.command.unregister Command
- Event Triggered by the Chat Bot Command ONIMCOMMANDADD
- Working with Keyboards
- Attachments in Messages ATTACH
- Working with the Context Menu