扣子集成高德API:周边商户精准查询实战指南
在扣子中实现用户输入地点名称、自动解析坐标、精准搜索周边商户的完整闭环,关键在于绕过原生插件自带的模糊匹配缺陷——直接对接高德地图Web服务API,并对请求参数与地理编码链路进行精细控制。下面逐一拆解核心判断与操作步骤。
获取高德地图Web服务API Key
登录高德开放平台控制台,使用手机号完成注册并实名认证。创建新应用后,在“应用管理”中勾选“Web服务API”类型,提交审核。审核通过后复制生成的Key备用。
特别提醒:务必选择“Web服务API”类型,而非“JavaScript API”或“iOS/Android SDK”。选错将导致后续所有请求返回status=10008(非法key),导致流程卡死在第一步。
配置扣子HTTP请求插件
进入Bot编辑页面,点击左侧“插件”一栏,右上角“+添加插件”,选择“HTTP请求”,然后填写以下配置项:
• 请求URL:https://restapi.amap.com/v3/geocode/geo?address={address}&city=全国&key={your_key}
• 请求方法:GET
• 参数映射:将用户输入的原始地址绑定到{address},将上一步获取的Key粘贴至{your_key},city参数固定为“全国”,以避免因城市识别偏差遗漏跨市POI。
此步骤操作直观,只需将变量名填入URL模板,无需额外编写代码。
构建地理编码→周边搜索双链路
第一步:调用地理编码接口获取经纬度
• 在HTTP插件中设置响应体提取规则:json:geocodes[0].location
• 输出结果示例:116.481028,39.989643(经度在前,纬度在后,逗号为英文半角)
第二步:使用该坐标发起周边搜索请求
• 新增第二个HTTP插件,URL填写:https://restapi.amap.com/v3/place/around?location={location}&radius=500&keywords={keywords}&types={typecode}&offset=20&key={your_key}
• 关键参数说明:
– radius设为500(米),避免返回过多低相关结果;
– keywords留空,仅靠types精准过滤类别;
– types必须填写高德最新分类码(如餐饮填050000,咖啡馆填050101),不能使用汉字;
– offset=20确保单次最多拉取20条,防止超时失败。
一个容易被忽略的陷阱:若types填入汉字(例如“咖啡馆”),高德API会静默忽略该参数,返回全量POI,导致结果严重偏离预期。
结构化输出商户信息
第一种方法:用JSONPath提取关键字段
• 在第二个HTTP插件的“响应体提取”中依次配置:
– 名称:json:pois[0].name
– 地址:json:pois[0].address
– 距离:json:pois[0].distance
– 电话:json:pois[0].tel
第二种方法:启用“循环遍历”模式批量处理
• 开启插件高级设置中的“循环遍历”,路径填写json:pois;
• 每个循环项内分别提取name、address、distance;
• 系统自动拼接成带编号的列表,无需手动编写for循环。
完成此步后,Bot即可将原始JSON中杂乱的20条数据转换为清晰可读的结构化卡片。
