Yz2022
1
背景
在emqx(v5.x)中配置了一个http服务连接器,关联了一个动作,功能是当设备连接时触发规则调用emqx api订阅某个topic,该api需要在url path中填充clientid。
需求
希望在动作的url使用占位符,是否支持该功能?该如何配置?
问题
连接器、动作均配置成功,并且规则也成功命中,但是没有实现效果。
配置截图:
你这个想法很棒,我第一次看这么干的,天才!
把{$clientid}改成${clientid}就可以了。上面的文档提示应该也是错了,改一下。
Yz2022
3
首先感谢答复!
按照提示修改为${clientid}后,可以触发规则,并且从emqx日志中可以看到正确的替换占位符后的url。但是动作触发结果还是失败。
从日志中排查后,有以下猜想
1.header中的Auth导致了问题,日志中加密了所以无法确认
2.连接器配置为localhost:port,这种写法触发了某些异常,日志中没有更详细的信息无法确认
贴上相关日志
这里应该是需要先在 EMQX 里创建 REST api 的 app keys 来调用这些 apis
可以看下这个文档:
Yz2022
5
感谢回复。
我已在dashboard->系统设置->api keys中配置了key,并通过basic auth的方式生成了auth信息,添加在动作的header中了。
那就应该是 ok 的了,你直接用裸的 curl 加上头,请求一下试试能不能成功,上面显示你的 header 的格式不对,你得 base64 一下。base64(api_key:api_secret)
上面的rest api里面有详细写的。
Yz2022
7
是的,使用http客户端工具直接发起请求是成功的,但同样的内容使用动作发起就失败了。我在动作中的http请求header中添加的key是Authorization,value是key:secret的base64值,完整的内容是Basic base64(apikey:apisecret)值。
配置的header截图
我在 v5.8.3 上的 connector 和 action 上都试了(加上 authorization),是可以的。
Yz2022
9
好的,那可能还是我的某些配置有问题,我再仔细排查下。非常感谢!