Описание
Используйте этот метод для отправки телефонных контактов. При успешном выполнении возвращается отправленное Message.
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
| business_connection_id | String | Опционально | Уникальный идентификатор бизнес-подключения, от имени которого будет отправлено сообщение |
| chat_id | Integer или String | Да | Уникальный идентификатор целевого чата или имя пользователя целевого канала (в формате @channelusername) |
| message_thread_id | Integer | Опционально | Уникальный идентификатор целевой ветки сообщений (темы) форума; только для супергрупп-форумов |
| direct_messages_topic_id | Integer | Опционально | Идентификатор темы прямых сообщений, в которую будет отправлено сообщение; требуется, если сообщение отправляется в чат прямых сообщений |
| phone_number | String | Да | Номер телефона контакта |
| first_name | String | Да | Имя контакта |
| last_name | String | Опционально | Фамилия контакта |
| vcard | String | Опционально | Дополнительные данные о контакте в формате vCard, 0-2048 байт |
| disable_notification | Boolean | Опционально | Отправляет сообщение беззвучно. Пользователи получат уведомление без звука. |
| protect_content | Boolean | Опционально | Защищает содержимое отправленного сообщения от пересылки и сохранения |
| allow_paid_broadcast | Boolean | Опционально | Передайте True, чтобы разрешить до 1000 сообщений в секунду, игнорируя ограничения рассылки за плату 0,1 Telegram Stars за сообщение. Соответствующие Stars будут списаны с баланса бота |
| message_effect_id | String | Опционально | Уникальный идентификатор эффекта сообщения, который будет добавлен к сообщению; только для личных чатов |
| suggested_post_parameters | SuggestedPostParameters | Опционально | JSON-сериализованный объект, содержащий параметры предлагаемой публикации для отправки; только для чатов прямых сообщений. Если сообщение отправляется как ответ на другую предлагаемую публикацию, то эта предлагаемая публикация автоматически отклоняется. |
| reply_parameters | ReplyParameters | Опционально | Описание сообщения, на которое нужно ответить |
| reply_markup | InlineKeyboardMarkup или ReplyKeyboardMarkup или ReplyKeyboardRemove или ForceReply | Опционально | Дополнительные параметры интерфейса. JSON-сериализованный объект для встроенной клавиатуры, пользовательской клавиатуры ответа, инструкций по удалению клавиатуры ответа или принудительному ответу от пользователя |
Примеры
php
<?php
$botToken = 'YOUR_BOT_TOKEN';
$apiUrl = "https://api.telegram.org/bot{$botToken}/sendContact";
$chatId = 123456789; // или '@channelusername'
$phoneNumber = '+1234567890';
$firstName = 'John';
// Опциональные параметры
$lastName = 'Doe';
$vcard = "BEGIN:VCARD\nVERSION:3.0\nFN:John Doe\nTEL:+1234567890\nEND:VCARD";
$disableNotification = true;
$protectContent = false;
$messageThreadId = 456; // для тем форума
$replyParameters = [
'message_id' => 123,
'chat_id' => $chatId,
'allow_sending_without_reply' => true
];
$replyMarkup = [
'inline_keyboard' => [
[
['text' => 'Позвонить', 'callback_data' => 'call_contact']
]
]
];
$data = [
'chat_id' => $chatId,
'phone_number' => $phoneNumber,
'first_name' => $firstName,
'last_name' => $lastName,
'vcard' => $vcard,
'disable_notification' => $disableNotification,
'protect_content' => $protectContent,
'message_thread_id' => $messageThreadId,
'reply_parameters' => json_encode($replyParameters),
'reply_markup' => json_encode($replyMarkup)
];
// Удаляем пустые значения
$data = array_filter($data, function($value) {
return $value !== null && $value !== '';
});
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $apiUrl);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // Отключить для локального тестирования
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ($response === false) {
echo 'Ошибка cURL: ' . curl_error($ch);
} else {
$responseData = json_decode($response, true);
if ($responseData['ok']) {
echo "Контакт отправлен! ID сообщения: " . $responseData['result']['message_id'];
} else {
echo "Ошибка: " . $responseData['description'];
}
}
curl_close($ch);
// Альтернативный вариант с использованием file_get_contents
/*
$options = [
'http' => [
'header' => "Content-type: application/x-www-form-urlencoded\r\n",
'method' => 'POST',
'content' => http_build_query($data)
]
];
$context = stream_context_create($options);
$result = file_get_contents($apiUrl, false, $context);
echo $result;
*/
?>
python
import requests
def send_contact(bot_token, chat_id, phone_number, first_name, **kwargs):
"""
Отправляет контакт в Telegram чат.
Обязательные параметры:
- bot_token: Токен вашего бота
- chat_id: ID чата или username канала
- phone_number: Номер телефона контакта
- first_name: Имя контакта
Дополнительные параметры (kwargs):
- business_connection_id: ID бизнес-соединения
- message_thread_id: ID темы форума
- direct_messages_topic_id: ID темы прямых сообщений
- last_name: Фамилия контакта
- vcard: vCard данные (0-2048 байт)
- disable_notification: Отключить уведомление (True/False)
- protect_content: Защитить содержимое (True/False)
- allow_paid_broadcast: Разрешить платную рассылку (True/False)
- message_effect_id: ID эффекта сообщения
- suggested_post_parameters: Параметры предложенного поста (dict)
- reply_parameters: Параметры ответа (dict)
- reply_markup: Разметка клавиатуры (dict)
"""
url = f"https://api.telegram.org/bot{bot_token}/sendContact"
payload = {
'chat_id': chat_id,
'phone_number': phone_number,
'first_name': first_name
}
# Добавляем опциональные параметры если они переданы
optional_params = [
'business_connection_id', 'message_thread_id', 'direct_messages_topic_id',
'last_name', 'vcard', 'disable_notification', 'protect_content',
'allow_paid_broadcast', 'message_effect_id', 'suggested_post_parameters',
'reply_parameters', 'reply_markup'
]
for param in optional_params:
if param in kwargs and kwargs[param] is not None:
payload[param] = kwargs[param]
response = requests.post(url, json=payload)
return response.json()
# Пример использования:
if __name__ == "__main__":
# Конфигурация
BOT_TOKEN = "YOUR_BOT_TOKEN"
CHAT_ID = 123456789 # или "@channelusername"
# Пример 1: Простая отправка контакта
result = send_contact(
bot_token=BOT_TOKEN,
chat_id=CHAT_ID,
phone_number="+1234567890",
first_name="John"
)
print(result)
# Пример 2: Отправка с дополнительными параметрами
result = send_contact(
bot_token=BOT_TOKEN,
chat_id=CHAT_ID,
phone_number="+1234567890",
first_name="John",
last_name="Doe",
vcard="BEGIN:VCARD\nVERSION:3.0\nFN:John Doe\nTEL:+1234567890\nEND:VCARD",
disable_notification=True,
protect_content=True,
reply_markup={
'inline_keyboard': [[
{'text': 'Позвонить', 'callback_data': 'call_contact'}
]]
}
)
print(result)
История изменений
- API 2.0. Добавлен метод sendContact
- API 4.0. Обновлен метод sendContact: Добавлен параметр vcard
- API 5.0. Обновлен метод sendContact: Добавлено поле allow_sending_without_reply
- API 5.6. Обновлен метод sendContact: Добавлено поле protect_content
- API 6.3. Обновлен метод sendContact: Добавлен параметр message_thread_id
- API 7.0. Обновлен метод sendContact: Заменены параметры reply_to_message_id и allow_sending_without_reply на reply_parameters
- API 7.4. Обновлен метод sendContact: Добавлен параметр message_effect_id
- API 7.11. Обновлен метод sendContact: Добавлен параметр allow_paid_broadcast
- API 9.2. Обновлен метод sendContact: Добавлен параметр direct_messages_topic_id
- API 9.3. Обновлен метод sendContact: Поддержан параметр message_thread_id в личных чатах с темами для отправки сообщения в конкретную тему.
Дополнительно
- Message - Это основной объект, представляющий сообщение в Telegram, который содержит информацию об отправителе, чате, контенте (текст, медиа, служебные данные) и различные метаданные.
- SuggestedPostParameters - Объект содержит параметры публикации, предлагаемой ботом, включая цену и дату отправки.
- ReplyParameters - Объект, описывающий параметры для ответа на сообщение, включая идентификатор сообщения, чат, цитирование и дополнительные настройки.
- InlineKeyboardMarkup - Объект для создания встроенной клавиатуры, которая отображается непосредственно в сообщении.
- ReplyKeyboardMarkup - Объект, представляющий пользовательскую клавиатуру с вариантами ответа для ботов Telegram.
- ReplyKeyboardRemove - Объект для удаления пользовательской клавиатуры и возврата к стандартной буквенной клавиатуре в клиентах Telegram.
- ForceReply - Объект ForceReply принудительно отображает интерфейс ответа в клиентах Telegram, упрощая создание пошаговых диалогов с ботом.