Java+JHipster开发的Telegram机器人如何无需第三方URL呼叫用户手机
可行实现方案
方案1:调用Telegram原生呼叫接口(最优)
- 你当前使用的TelegramBots依赖升级到6.8及以上版本,即可直接调用官方封装的发起呼叫接口
- 调用
SendCall方法传入目标用户的chatId发起呼叫,无需传入任何语音流参数,Telegram服务端会自动向用户客户端推送来电通知,触发手机响铃,发起请求后可直接调用结束呼叫接口,无需维持通话链路 - 前置要求:目标用户此前和机器人有过主动交互(发送过消息/点击过「开始」按钮),无需额外申请权限
方案2:高优先级通知模拟响铃(兼容性最高)
- 无需调用呼叫类接口,直接发送高优先级消息触发用户端响铃,发送完成后立即删除消息,用户仅会收到响铃提醒,看不到任何消息内容,完全符合需求
- Java代码参考:
// 构造高优先级空消息 SendMessage notifyMsg = SendMessage.builder() .chatId(目标用户chatId) .text("") .disableNotification(false) .build(); // 发送消息 Message sentMsg = telegramBot.execute(notifyMsg); // 立即删除消息 DeleteMessage deleteMsg = DeleteMessage.builder() .chatId(目标用户chatId) .messageId(sentMsg.getMessageId()) .build(); telegramBot.execute(deleteMsg);
- 不需要用户额外授权,只要机器人可向该用户发送消息即可正常触发
方案3:运营商语音通知渠道(适用于非Telegram场景)
- 如果允许走Telegram之外的渠道,可对接国内/海外运营商的语音通知接口,仅发起呼叫触发用户响铃后立即挂断,不需要传输任何语音内容,该方案需要对应运营商的接入资质,会产生少量呼叫资费
内容的提问来源于stack exchange,提问作者Federremu
相关产品推荐
相关产品推荐

