Chainlink
sendChainlinkRequest 似乎沒有返回 requestId
我正在嘗試使用 Chainlink 從 API 獲取數據。他們提供的範常式式碼工作正常,但不太適合我的需要,所以我正在嘗試調整它。
我想儲存 requestId 以便我知道回調中正在處理哪個請求,但是當我嘗試保存它時,我只得到 0 作為 requestId。
我只是添加這個:
// added to Contract object bytes32 public requestId . . . // store response instead of just disregarding like in sample code requestId = sendChainlinkRequest(req, fee);
此處提供的範常式式碼: https ://docs.chain.link/docs/api-array-response/
文件說保存 requestId 很好,但通常不需要,所以我認為這段程式碼應該可以工作。
任何幫助,將不勝感激。
使用最新版本的 ChainlinkClient 合約,當您呼叫 sendChainlinkRequest 函式時會生成 requestID,但它不會返回,因此您在發送請求後會得到零。
如果您在 v0.8 Chainlink 客戶端中跟踪函式呼叫,您可以看到請求 id 已生成並在rawRequest 函式中使用,但不再返回(即沒有返回語句)。
您仍然可以在您的合約回調函式中訪問生成的請求 ID,因為它會被發送回那裡。您只需要將它添加到您的函式定義中
function fulfill(bytes32 _requestId, uint256 _volume) public recordChainlinkFulfillment(_requestId) { emit RequestVolume(_requestId, _volume); volume = _volume; }