Метод sendContact

Метод для отправки телефонного контакта в чат с возможностью настройки параметров уведомлений, защиты контента и дополнительных опций интерфейса.

Описание

Используйте этот метод для отправки телефонных контактов. При успешном выполнении возвращается отправленное 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, упрощая создание пошаговых диалогов с ботом.
Комментарии