引言
在Telegram中,联系人名片是一种轻量级分享联系方式的方式,用户无需手动输入号码即可一键保存。对于企业客服、社群管理或自动化应用场景,机器人主动发送联系人名片可以显著提升效率。本文将带你深入了解Telegram Bot API中用于发送联系人名片的sendContact方法,从参数说明到完整代码示例,手把手教你实现这一功能。
一、Telegram机器人发送联系人名片的应用场景
联系人名片可以被用于多种实际场景:
- 客服机器人:自动推送客服专员或销售代表的联系方式。
- 社群运营:在用户入群时自动发送管理员或指定成员的名片。
- 商务对接:作为业务系统与Telegram的桥梁,向用户发送合作方联系人信息。
- 个人助理:定时或触发式分享自己的电子名片,省去手动输入。
掌握这项功能后,你的机器人将拥有更丰富的交互能力。
二、sendContact方法详解(参数说明)
sendContact是Telegram Bot API中的一个方法,用于发送联系人名片。它支持以下核心参数:
| 参数 | 类型 | 必选 | 说明 |
|---|---|---|---|
chat_id | Integer/String | 是 | 接收消息的聊天ID,可以是用户ID或群组/频道ID。 |
phone_number | String | 是 | 联系人的手机号码,需带国际区号,例如+8613800000000。 |
first_name | String | 是 | 联系人的名字。 |
last_name | String | 否 | 联系人的姓氏。 |
vcard | String | 否 | 可选的联系人vCard 3.0格式字符串。若提供,Telegram客户端将展示完整的名片卡片。 |
此外,还支持reply_to_message_id、reply_markup等辅助参数,用于引用回复或附加内联键盘。
三、调用sendContact的完整步骤
- 获取Bot Token:在Telegram中与@BotFather对话,创建机器人并获得API Token,格式如
123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11。 - 确定接收者chat_id:如果接收者是用户,可通过给机器人发送任意消息后获取
update中的chat.id;如果是群组,在群中添加机器人后从update中解析。 - 构造请求URL:基础URL为
https://api.telegram.org/bot<token>/sendContact,然后以POST方式提交参数。 - 发送请求:使用HTTP客户端(如cURL、Python requests)提交数据。
- 处理响应:检查
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_number和first_name仍然必须提供,但Telegram客户端会优先展示vcard中的完整信息。
六、注意事项与常见错误
- 手机号格式:必须包含国际区号,且不带空格或短横线。发送到群组时,对方可能无法直接添加,除非通过vCard提供更多信息。
- 隐私保护:确保你有权分享该联系人的信息,避免侵犯隐私。
- 机器人权限:机器人必须能够向目标聊天发送消息,若在群组中需先被授权。
- 错误的chat_id:常见错误为
400 Bad Request: chat not found,请检查ID是否正确。 - vCard兼容性:如果vCard格式不正确,可能被客户端忽略或报错,建议使用标准格式并转义换行符。
总结
通过本文,你已了解Telegram机器人发送联系人名片的完整流程。sendContact方法简单易用,配合vCard可扩展出丰富的联系人展示。无论你是开发客服机器人还是辅助工具,这一功能都能让用户获得更流畅的分享体验。接下来,不妨实际动手测试一下,结合其他Bot API特性,打造属于你自己的高效机器人。