如何用Node.js与WATI API在WhatsApp发送内嵌地图预览
实现WhatsApp内嵌地图预览的方案(基于Node.js + WATI API)
核心方案:使用WATI的位置消息接口
直接通过WATI API发送位置消息,WhatsApp会自动渲染内嵌地图预览(即你期望的效果),无需额外生成地图图片或链接。
步骤1:调用WATI Send Location接口(Node.js示例)
使用axios发送POST请求,传入经纬度和地址信息即可:
const axios = require('axios'); // 发送位置消息的工具函数 async function sendWhatsAppLocation(phoneNumber, latitude, longitude, addressText) { const watiApiUrl = 'https://api.wati.io/v1/sendLocation'; const authToken = 'YOUR_WATI_API_TOKEN'; // 替换为你的WATI API令牌 try { await axios.post(watiApiUrl, { phoneNumber: phoneNumber, // 格式:+国家代码手机号,如+8613800000000 latitude: latitude, longitude: longitude, address: addressText // 可选,显示在地图下方的地址描述文本 }, { headers: { 'Authorization': `Bearer ${authToken}`, 'Content-Type': 'application/json' } }); console.log('内嵌地图已成功发送'); } catch (err) { console.error('发送失败:', err.response?.data || err.message); } } // 调用示例:发送纽约曼哈顿的位置 sendWhatsAppLocation('+12125551234', 40.7128, -74.0060, '纽约市曼哈顿区');
步骤2:地址转坐标(如果只有地址没有经纬度)
如果仅持有场所名称/地址,可先通过地理编码服务转换为经纬度,再调用上述函数。以谷歌地理编码为例:
async function getCoordsFromAddress(address) { const googleApiKey = 'YOUR_GOOGLE_GEOCODING_API_KEY'; const geoUrl = 'https://maps.googleapis.com/maps/api/geocode/json'; const res = await axios.get(geoUrl, { params: { address: address, key: googleApiKey } }); if (res.data.results.length === 0) { throw new Error('未找到对应地址的坐标'); } const { lat, lng } = res.data.results[0].geometry.location; return { lat, lng }; } // 组合调用:通过地址直接发送内嵌地图 async function sendLocationByAddress(phoneNumber, address) { const { lat, lng } = await getCoordsFromAddress(address); await sendWhatsAppLocation(phoneNumber, lat, lng, address); } // 示例:发送"北京故宫博物院"的位置 sendLocationByAddress('+8613800000000', '北京故宫博物院');
关键注意事项
- WATI API令牌需从你的WATI后台获取,确保账号已开通位置消息权限(默认支持)
- 谷歌地理编码需要API密钥,注意配额限制和计费规则
- 手机号必须严格遵循国际格式(带+号和国家代码),否则WATI无法识别目标用户
内容的提问来源于stack exchange,提问作者Dummy Cron
相关产品推荐
相关产品推荐

