Telegram机器人如何发送联系人名片?从API调用到实操示例

本文详细讲解Telegram机器人通过Bot API发送联系人名片的方法,包括sendContact接口参数、代码示例、注意事项等,帮助你快速实现联系人分享功能。

阅读提示涉及账号和安全设置时,请边阅读边核对当前设备界面。

引言

在Telegram中,联系人名片是一种轻量级分享联系方式的方式,用户无需手动输入号码即可一键保存。对于企业客服、社群管理或自动化应用场景,机器人主动发送联系人名片可以显著提升效率。本文将带你深入了解Telegram Bot API中用于发送联系人名片的sendContact方法,从参数说明到完整代码示例,手把手教你实现这一功能。

一、Telegram机器人发送联系人名片的应用场景

联系人名片可以被用于多种实际场景:

  • 客服机器人:自动推送客服专员或销售代表的联系方式。
  • 社群运营:在用户入群时自动发送管理员或指定成员的名片。
  • 商务对接:作为业务系统与Telegram的桥梁,向用户发送合作方联系人信息。
  • 个人助理:定时或触发式分享自己的电子名片,省去手动输入。

掌握这项功能后,你的机器人将拥有更丰富的交互能力。

二、sendContact方法详解(参数说明)

sendContact是Telegram Bot API中的一个方法,用于发送联系人名片。它支持以下核心参数:

参数类型必选说明
chat_idInteger/String接收消息的聊天ID,可以是用户ID或群组/频道ID。
phone_numberString联系人的手机号码,需带国际区号,例如+8613800000000。
first_nameString联系人的名字。
last_nameString联系人的姓氏。
vcardString可选的联系人vCard 3.0格式字符串。若提供,Telegram客户端将展示完整的名片卡片。

此外,还支持reply_to_message_idreply_markup等辅助参数,用于引用回复或附加内联键盘。

三、调用sendContact的完整步骤

  1. 获取Bot Token:在Telegram中与@BotFather对话,创建机器人并获得API Token,格式如123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11
  2. 确定接收者chat_id:如果接收者是用户,可通过给机器人发送任意消息后获取update中的chat.id;如果是群组,在群中添加机器人后从update中解析。
  3. 构造请求URL:基础URL为https://api.telegram.org/bot<token>/sendContact,然后以POST方式提交参数。
  4. 发送请求:使用HTTP客户端(如cURL、Python requests)提交数据。
  5. 处理响应:检查ok字段,若为true则说明发送成功。

下面提供两种常用语言的实现示例。

四、代码示例(Python + requests / cURL)

Python示例(使用requests)

import requests

TOKEN = "YOUR_BOT_TOKEN"
CHAT_ID = "123456789"  # 替换为接收者的chat_id
phone = "+8613800000000"
first_name = "张三"
last_name = "李四"

url = f"https://api.telegram.org/bot/sendContact"
data = {
    "chat_id": CHAT_ID,
    "phone_number": phone,
    "first_name": first_name,
    "last_name": last_name
}
response = requests.post(url, data=data)
print(response.json())

cURL命令示例

curl -X POST "https://api.telegram.org/botYOUR_BOT_TOKEN/sendContact" \
  -d "chat_id=123456789" \
  -d "phone_number=+8613800000000" \
  -d "first_name=张三" \
  -d "last_name=李四"

执行后,接收方会看到一张联系人卡片,点击即可保存或转发。

五、发送带vCard格式的联系人名片

若希望名片更丰富(如包含组织、邮箱、网址),可以使用vcard参数。Telegram支持vCard 3.0标准,示例:

VCARD = """BEGIN:VCARD
VERSION:3.0
N:李四;张三;;;
FN:张三 李四
ORG:Example Corp
TEL;TYPE=WORK,VOICE:+8613800000000
EMAIL:zhangsan@example.com
URL:https://example.com
END:VCARD"""

data = {
    "chat_id": CHAT_ID,
    "phone_number": "+8613800000000",
    "first_name": "张三",
    "last_name": "李四",
    "vcard": VCARD
}

注意:phone_numberfirst_name仍然必须提供,但Telegram客户端会优先展示vcard中的完整信息。

六、注意事项与常见错误

  • 手机号格式:必须包含国际区号,且不带空格或短横线。发送到群组时,对方可能无法直接添加,除非通过vCard提供更多信息。
  • 隐私保护:确保你有权分享该联系人的信息,避免侵犯隐私。
  • 机器人权限:机器人必须能够向目标聊天发送消息,若在群组中需先被授权。
  • 错误的chat_id:常见错误为400 Bad Request: chat not found,请检查ID是否正确。
  • vCard兼容性:如果vCard格式不正确,可能被客户端忽略或报错,建议使用标准格式并转义换行符。

总结

通过本文,你已了解Telegram机器人发送联系人名片的完整流程。sendContact方法简单易用,配合vCard可扩展出丰富的联系人展示。无论你是开发客服机器人还是辅助工具,这一功能都能让用户获得更流畅的分享体验。接下来,不妨实际动手测试一下,结合其他Bot API特性,打造属于你自己的高效机器人。

FAQ

下载与安装

常见问题

机器人发送的联系人名片会显示哪些信息?

通常显示手机号码、名字、姓氏。如果提供了vCard,还会显示组织、邮箱、网址等额外字段。用户可以点击保存到通讯录。

能否通过机器人发送自己的名片?

可以,您只需把phone_number和first_name设置为您自己的信息,甚至加上vCard,就像分享电子名片一样。

发送联系人时报错'chat not found'怎么办?

请确认填写的chat_id是否正确,且机器人已经与目标聊天建立会话。如果是群组,需先将机器人拉入群中,并通过getUpdates获取准确ID。