如何通过Twilio发送带预览的Google Maps定位Pin?是否需用MMS API?
问题解答
可以通过Twilio实现带预览的定位Pin功能,必须使用MMS API(或对应渠道的富消息能力,比如WhatsApp的位置消息接口),普通SMS仅支持纯文本链接,无法生成预览效果。
原因说明
你当前发送的短链属于纯文本内容,SMS协议本身不支持富内容预览,只会显示为可点击的链接;而定位Pin的预览效果属于富消息范畴,需要依赖MMS、RCS或WhatsApp等支持富媒体的消息渠道实现。
具体实现方案(基于Twilio Serverless JS)
1. 通用MMS方案(适配支持MMS的手机号)
通过MMS发送静态地图图片+位置链接,接收方会看到图片预览,点击链接可启动地图应用。示例代码如下:
exports.handler = async function(context, event, callback) { const twilioClient = context.getTwilioClient(); try { // 替换为实际的经纬度、Twilio号码和接收方号码 const latitude = "37.7749"; const longitude = "-122.4194"; const staticMapUrl = `https://maps.googleapis.com/maps/api/staticmap?center=${latitude},${longitude}&zoom=15&size=600x400&markers=color:red%7Clabel:P%7C${latitude},${longitude}&key=${context.GOOGLE_MAPS_API_KEY}`; const message = await twilioClient.messages.create({ body: "点击查看我的位置:https://maps.app.goo.gl/9s8sdsiuGPitgT6?g_st=ic", from: context.TWILIO_PHONE_NUMBER, to: event.to, mediaUrl: [staticMapUrl] }); callback(null, { success: true, messageSid: message.sid }); } catch (error) { callback(error); } };
- 注意:需要提前在Twilio环境变量中配置
GOOGLE_MAPS_API_KEY(需开通Google Maps Static API权限),且你的Twilio号码需支持MMS功能。
2. WhatsApp专属方案(适配WhatsApp用户)
如果是给WhatsApp用户发送,Twilio支持直接发送结构化位置消息,无需短链,接收方会直接显示原生定位Pin预览。示例代码如下:
exports.handler = async function(context, event, callback) { const twilioClient = context.getTwilioClient(); try { const message = await twilioClient.messages.create({ from: `whatsapp:${context.TWILIO_WHATSAPP_NUMBER}`, to: `whatsapp:${event.to}`, contentSid: "HXxxxxxx", // 替换为Twilio Content Studio中创建的位置模板SID contentVariables: JSON.stringify({ "latitude": "37.7749", "longitude": "-122.4194", "label": "我的位置" }) }); callback(null, { success: true, messageSid: message.sid }); } catch (error) { callback(error); } };
- 注意:需先在Twilio Content Studio创建符合WhatsApp规范的位置消息模板并通过审核。
关键注意点
- 接收方设备和运营商需支持MMS(或对应富消息渠道)才能正常显示预览。
- MMS会产生额外的计费,需参考Twilio的MMS定价规则。
内容的提问来源于stack exchange,提问作者user2402616
相关产品推荐
相关产品推荐

