0

0

在 Telegram 消息中实现可点击电话号码链接

碧海醫心

碧海醫心

发布时间:2025-10-29 09:30:16

|

469人浏览过

|

来源于php中文网

原创

在 telegram 消息中实现可点击电话号码链接

本文介绍了如何通过 Telegram Bot API 的 `sendContact` 方法,在消息中创建可点击的电话号码链接。重点讲解了使用 `sendMessage` 方法设置 `phone_number` 实体失败的原因,并提供了使用 `sendContact` 方法的解决方案,以及该方法的具体使用示例和注意事项。

在 Telegram Bot 开发中,有时我们需要在消息中包含电话号码,并希望用户能够直接点击该号码进行拨号。虽然 Telegram Bot API 的 sendMessage 方法支持使用 entities 字段来格式化消息,但并非所有类型的实体都受支持。phone_number 实体就是一个例外。

为什么 sendMessage 方法的 phone_number 实体不起作用?

根据 Telegram Bot API 的文档和实践经验,sendMessage 方法虽然支持多种实体类型(如 text_link 和 pre),但对 phone_number 实体类型的支持并不完整或已弃用。因此,尝试通过 sendMessage 方法设置 phone_number 实体,通常不会达到预期的效果。

解决方案:使用 sendContact 方法

要实现可点击的电话号码,推荐使用 Telegram Bot API 提供的 sendContact 方法。该方法专门用于发送联系人信息,包括电话号码。

sendContact 方法的使用示例:

Thiings
Thiings

免费的拟物化图标库

下载

以下是一个使用 GuzzleHttp 客户端发送联系人信息的示例代码:

 $apiURL]);

try {
    $response = $client->post('sendContact', [
        'multipart' => [
            [
                'name' => 'chat_id',
                'contents' => $chatID
            ],
            [
                'name' => 'phone_number',
                'contents' => $phoneNumber
            ],
            [
                'name' => 'first_name',
                'contents' => $firstName
            ],
            [
                'name' => 'last_name',
                'contents' => $lastName
            ],
        ]
    ]);

    // 处理响应
    $body = $response->getBody();
    $data = json_decode($body, true);

    if ($data['ok']) {
        echo "联系人信息发送成功!\n";
    } else {
        echo "联系人信息发送失败: " . $data['description'] . "\n";
    }

} catch (\Exception $e) {
    echo "发生错误: " . $e->getMessage() . "\n";
}

?>

代码解释:

  1. 引入 GuzzleHttp 客户端: 首先,确保你的项目中已经安装了 GuzzleHttp 客户端。
  2. 设置 API 密钥和 Chat ID: 将 YOUR_BOT_API_KEY 替换为你的 Telegram Bot API 密钥,YOUR_CHAT_ID 替换为目标聊天 ID。
  3. 定义联系人信息: 设置电话号码 (phone_number),必须使用国际格式(例如:+15551234567)。 还可以设置联系人的名字 (first_name) 和姓氏 (last_name),这些是可选的。
  4. 构建请求: 使用 multipart 格式构建 POST 请求,包含 chat_id、phone_number、first_name 和 last_name 字段。
  5. 发送请求: 使用 GuzzleHttp 客户端发送 sendContact 请求。
  6. 处理响应: 解析响应,检查 ok 字段是否为 true。如果发送成功,输出成功消息;否则,输出错误信息。
  7. 错误处理: 使用 try-catch 块捕获可能发生的异常,并输出错误信息。

注意事项:

  • 电话号码格式: phone_number 字段必须使用国际格式,以 + 开头,后跟国家代码和电话号码。
  • 权限: 确保你的 Bot 具有向目标聊天发送消息的权限。
  • 错误处理: 始终进行错误处理,以便在发送失败时能够及时发现问题。
  • 其他参数: sendContact 方法还支持其他可选参数,例如 vcard,用于发送完整的 vCard 格式的联系人信息。

总结:

虽然 sendMessage 方法的 phone_number 实体可能无法正常工作,但通过使用 sendContact 方法,你可以轻松地在 Telegram 消息中创建可点击的电话号码链接。 记住使用国际格式的电话号码,并进行适当的错误处理,以确保消息发送成功。 这种方法为用户提供了更便捷的交互体验,提升了 Telegram Bot 的实用性。

相关专题

更多
Java编译相关教程合集
Java编译相关教程合集

本专题整合了Java编译相关教程,阅读专题下面的文章了解更多详细内容。

11

2026.01.21

C++多线程相关合集
C++多线程相关合集

本专题整合了C++多线程相关教程,阅读专题下面的的文章了解更多详细内容。

4

2026.01.21

无人机驾驶证报考 uom民用无人机综合管理平台官网
无人机驾驶证报考 uom民用无人机综合管理平台官网

无人机驾驶证(CAAC执照)报考需年满16周岁,初中以上学历,身体健康(矫正视力1.0以上,无严重疾病),且无犯罪记录。个人需通过民航局授权的训练机构报名,经理论(法规、原理)、模拟飞行、实操(GPS/姿态模式)及地面站训练后考试合格,通常15-25天拿证。

16

2026.01.21

Python多线程合集
Python多线程合集

本专题整合了Python多线程相关教程,阅读专题下面的文章了解更多详细内容。

1

2026.01.21

java多线程相关教程合集
java多线程相关教程合集

本专题整合了java多线程相关教程,阅读专题下面的文章了解更多详细内容。

4

2026.01.21

windows激活码分享 windows一键激活教程指南
windows激活码分享 windows一键激活教程指南

Windows 10/11一键激活可以通过PowerShell脚本或KMS工具实现永久或长期激活。最推荐的简便方法是打开PowerShell(管理员),运行 irm https://get.activated.win | iex 脚本,按提示选择数字激活(选项1)。其他方法包括使用HEU KMS Activator工具进行智能激活。

2

2026.01.21

excel表格操作技巧大全 表格制作excel教程
excel表格操作技巧大全 表格制作excel教程

Excel表格操作的核心技巧在于 熟练使用快捷键、数据处理函数及视图工具,如Ctrl+C/V(复制粘贴)、Alt+=(自动求和)、条件格式、数据验证及数据透视表。掌握这些可大幅提升数据分析与办公效率,实现快速录入、查找、筛选和汇总。

6

2026.01.21

毒蘑菇显卡测试网站入口 毒蘑菇测试官网volumeshader_bm
毒蘑菇显卡测试网站入口 毒蘑菇测试官网volumeshader_bm

毒蘑菇VOLUMESHADER_BM测试网站网址为https://toolwa.com/vsbm/,该平台基于WebGL技术通过渲染高复杂度三维分形图形评估设备图形处理能力,用户可通过拖动彩色物体观察画面流畅度判断GPU与CPU协同性能;测试兼容多种设备,但中低端手机易卡顿或崩溃,高端机型可能因发热降频影响表现,桌面端需启用独立显卡并使用支持WebGL的主流浏览器以确保准确结果

25

2026.01.21

github中文官网入口 github中文版官网网页进入
github中文官网入口 github中文版官网网页进入

github中文官网入口https://docs.github.com/zh/get-started,GitHub 是一种基于云的平台,可在其中存储、共享并与他人一起编写代码。 通过将代码存储在GitHub 上的“存储库”中,你可以: “展示或共享”你的工作。 持续“跟踪和管理”对代码的更改。

7

2026.01.21

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PHP课程
PHP课程

共137课时 | 9万人学习

JavaScript ES5基础线上课程教学
JavaScript ES5基础线上课程教学

共6课时 | 9.3万人学习

PHP新手语法线上课程教学
PHP新手语法线上课程教学

共13课时 | 0.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号