google-search-api - Chainlink 请求未在后续路径返回整数
问题描述
我有一个非常简单的智能合约,它使用 get>uint256 作业创建并发送 Chainlink 请求到 Kovan Linkpool 节点。合约看起来像这样(API 私钥被移除)。
contract OracleChainlink is ChainlinkClient {
using Chainlink for Chainlink.Request;
uint256 public H_Index;
address private Oracle;
bytes32 private JobId;
uint256 private Fee = .1 * 10 ** 18; //kovan is .1 link per call
constructor() public {
setPublicChainlinkToken();
Oracle = 0x56dd6586DB0D08c6Ce7B2f2805af28616E082455; //Chainlink linkpool node on Kovan
JobId = "b6602d14e4734c49a5e1ce19d45a4632";
}
function getChainlinkToken() public view returns (address) {
return chainlinkTokenAddress();
}
function RequestH_index() public returns (bytes32 Reqid) {
Chainlink.Request memory Req = buildChainlinkRequest(JobId, address(this), this.fulfill.selector);
Req.add("get", "https://serpapi.com/.....");
Req.add("path", "cited_by.table.1.h_index.all");
return sendChainlinkRequestTo(Oracle, Req, Fee);
}
function fulfill(bytes32 Reqid, uint256 _Hindex) public recordChainlinkFulfillment(Reqid) {
H_Index = _Hindex;
}
Google Scholar Author API https://serpapi.com/google-scholar-author-api返回一个非常大的 json,如果向下滚动,可以在链接中看到。我需要遵循的片段/路径如下所示(cited_by 位于 json 的顶层)。
"cited_by": {
"table": [
{
"citations": {
"all": 23351,
"since_2016": 13660
}
},
{
"h_index": {
"all": 46,
"since_2016": 37
}
},
{
"i10_index": {
"all": 60,
"since_2016": 53
}
}
],
运行时,我得到了 Chainlink 请求事件的日志,但公共 H_Index 值仍然为 0。我是否遗漏了适配器方面的某些内容?我已经通过 JSON 尝试了各种路径格式,但没有运气。我也尝试过不同的节点和作业。有什么方法可以确保 API 甚至被调用?我错过了什么?
解决方案
您的 JSON 路径应如下所示:
Req.add("path", "cited_by.table.1.h_index.all");
查看 Etherscan 活动,您正在使用的节点看起来可能处于非活动状态。试试这个节点和jobId:
Oracle = 0xc57B33452b4F7BB189bB5AfaE9cc4aBa1f7a4FD8;
JobId = "d5270d1c311941d0b08bead21fea7747";
这些取自Chainlink 官方文档。
要检查节点是否正在运行,请在区块浏览器中查看预言机地址。您可以在这里看到您尝试使用的原始节点已经很长时间没有发布交易了。
如果一个节点处于非活动状态,您将需要找到一个新节点或自己托管一个。要查找更多节点和作业,您可以查看market.link或使用前面提到的文档中的那个。
推荐阅读
- python - pyqt5 使用 clicked.connect 加载小部件是否有限制?
- webdav - Nextcloud 定制
- angular - 注销后,用户可以使用返回按钮返回如何解决此问题
- visual-studio-2017 - 在 Visual Studio 中,您可以在解决方案中添加基于文件夹的项目吗?
- django - django 多对多字段保存
- regex - 字符串匹配的正则表达式 ****${****}***
- php - 这是什么意思...为什么视图前有一个 $ 符号。即@extends($master)
- prestashop - Prestashop 1.7 客户订单历史购物车问题
- python - 如何删除pyqt4中的整行(qtable小部件)
- google-chrome-extension - 清单包含不属于开发人员的无效搜索提供程序 url - chrome 扩展